uno-ms 0.1.0

MS1-only peptide and protein identification from LC-MS features, with target-decoy FDR
# Bundled default config for uno's in-process koth feature finder (`--raw`).
#
# This is koth_ff's current-schema default config (koth writes this exact schema
# to `config.toml` after every run) with two overrides that bring koth's
# single-run feature depth to parity with biosaur2 for uno's MS1 search:
#   hills.min_scans        3 -> 2   (keep short low-abundance hills)
#   features.min_scan_overlap 3 -> 1 (don't drop the isotope pairs those hills form)
# The two interact — each alone underperforms (validated commit 27d1a9d, honest
# @1% on PXD015669 5-min HeLa). koth's config structs use `deny_unknown_fields`,
# so this file must track koth's schema exactly; regenerate from a `koth_ff` run's
# `config.toml` if koth adds/removes fields.

[file]
mz_tolerance = 8.0
mz_tolerance_type = "ppm"
im_tolerance = 0.05
im_tolerance_type = "relative"
global_min_mz = 0.0
global_max_mz = inf
intensity_coverage = 1.0
bruker_filter_mz_half_width = 2
bruker_filter_max_internal_gap = 1
bruker_filter_min_feature_length = 5
bruker_filter_min_window_intensity = 0
bruker_filter_min_feature_intensity = 0
bruker_filter_num_iterations = 1
bruker_watershed_box_scan = 10
bruker_watershed_box_mz_idx = 3
bruker_watershed_min_seed_intensity = 0
bruker_watershed_min_centroid_total = 0
bruker_watershed_max_tof_offset = 10
decoy_mode = false
ms2_hills_enabled = false
mz_recalibration = false
mz_recalibration_mz_bins = 20
mz_recalibration_rt_bins = 8
mz_recalibration_min_samples = 50
mz_recalibration_tol_sigma_mult = 4.0
mz_recalibration_tol_floor_ppm = 1.0

[hills]
min_scans = 2
max_gap = 0
split_hills = true
split_valley_ratio = 0.7
split_sigma_mult = 4.0
split_height_frac = 0.1
lfc_weight = 0.5
gap_fill_enabled = false
smoothing_enabled = false
smoothing_window = 1
filter_large_baseline_hills = false
large_hill_min_scans = 40
large_hill_peak_factor = 2.0
tic_norm_window = 0
tic_norm_min_scale = 0.5
tic_norm_max_scale = 3.0
tic_norm_mode = "median"

[features]
min_charge = 1
max_charge = 7
min_chain_cosine = 0.5
right_max_decrease = 0.05
max_isotopes = 6
max_isotope_log2_ratio = 1.5
chain_predicted_intensity_gate = true
min_scan_overlap = 1
exhaustive_min_isotope_score = 0.0
exhaustive_isotope_priority = false
isotope_evidence_ratio_sigma = 0.75
isotope_evidence_cosine_shape = 2.0
cosine_anchor = "seed"
neutron_mass = 1.003354835
min_isotope_score = 0.0
min_cosine_score = 0.0
min_combined_score = 0.0

[scoring]
isotope_offset_enabled = false
offset_zero_bonus = 0.15
min_isotope_score_for_offset = 0.5

[output]
format = "tsv"