Skip to main content

ScoreConfig

Struct ScoreConfig 

Source
pub struct ScoreConfig {
Show 28 fields pub matrix_joint_agreement: bool, pub matrix_joint_cell_quality: bool, pub matrix_joint_cell_counts: bool, pub matrix_joint_cell_q: bool, pub matrix_joint_alternative_groups: bool, pub diagnostic_peptides_path: Option<String>, pub matrix_recurrence: bool, pub top_k: usize, pub n_folds: usize, pub calibration_fdr: f64, pub bootstrap_rounds: usize, pub iterations: usize, pub max_depth: u32, pub shrinkage: f32, pub max_train_rows: usize, pub seed_min_runs_frac: f64, pub seed: u64, pub rt_seed: Option<u64>, pub cv_seed: Option<u64>, pub classifier_seed: Option<u64>, pub mass_anchor_ppm: f64, pub discriminant: String, pub ondata_rt: bool, pub ondata_rt_lambda: f64, pub ondata_rt_finetune: bool, pub mass_anchor: bool, pub rt_calibrated: bool, pub ml_rescore: bool,
}

Fields§

§matrix_joint_agreement: bool

Joint-input ablation: use candidate-specific observations but disable cross-run agreement descriptors in the discriminant.

§matrix_joint_cell_quality: bool

Experimental row-level MBR/extraction-q descriptors in joint searches.

§matrix_joint_cell_counts: bool

Keep fill-count descriptors when cell-quality scoring is enabled.

§matrix_joint_cell_q: bool

Keep q-derived descriptors when cell-quality scoring is enabled.

§matrix_joint_alternative_groups: bool

Let coherent alternate matrix rows preserve a peptide during competition.

§diagnostic_peptides_path: Option<String>

Optional diagnostic export from the selected calibration only.

§matrix_recurrence: bool

Ablate only run-recurrence classifier columns; preserve quantities and rows.

§top_k: usize

Keep this many best-mass-error targets and decoys per feature. This caps the candidate set the discriminant sees, so setting it too low silently drops real peptides before RT can rescue them. Entrapment (human+yeast on single-run HeLa) showed 25 identified only ~half of what the search honestly supports: 25→105 IDs, 50→208, 100→275, all at ~1% entrapment FDP. 50 is the default (≈2× IDs over 25 at negligible cost); raise toward 100 for maximum depth at a runtime cost.

§n_folds: usize§calibration_fdr: f64

FDR used to select the provisional set for RT calibration.

§bootstrap_rounds: usize

Number of re-score rounds after the first calibration.

§iterations: usize§max_depth: u32§shrinkage: f32§max_train_rows: usize

Cap on training rows per fold-model (0 = no cap). Bounds training time.

§seed_min_runs_frac: f64

Seed features must appear in at least this fraction of samples. Lower for many-sample designs (e.g. dose-response) where a peptide need not be in every run; the RANSAC seed tolerates the extra contamination.

§seed: u64

Fallback seed for scoring’s random components. 0 = the shipped default streams (see crate::seed_mix). uno --seed sets this value; explicit rt_seed, cv_seed, or classifier_seed values take precedence.

§rt_seed: Option<u64>

Override only RANSAC RT-calibration pair sampling. None uses seed.

§cv_seed: Option<u64>

Override only cross-validation fold assignment. None uses seed.

§classifier_seed: Option<u64>

Override classifier row/column sampling and LightGBM hyperparameter search. Applies to both Sequoia and LightGBM. None uses seed.

§mass_anchor_ppm: f64

Mass tolerance (ppm) the mass-anchor bootstrap starts at, and the ceiling it tightens toward as it recalibrates the per-run mass shift + sigma. Default 10 (Orbitrap). For lower-accuracy instruments (e.g. timsTOF) set this wider — e.g. 20 — plus [matching] ppm_tolerance = 20; the anchor then seeds wide and tightens to single-digit ppm once the mass error is recalibrated on-data.

§discriminant: String

Discriminant: “deviation” (robust orthogonal RT+IM consistency, ms1searchpy style — default) or “gbdt” (semi-supervised boosted trees). On the MS1-only/saturated-mass regime the gbdt washes out the weak RT+IM signal, so the deviation score is the default.

§ondata_rt: bool

Refit the RT predictor on this run’s observed RTs (ridge on composition features) using the confident set, each iteration. The DirectMS1 trick: the frozen DeepLC model only rank-correlates ~0.3 on an unseen gradient, but a model fit to the data makes RT a strong discriminator. Default on.

§ondata_rt_lambda: f64

Ridge penalty for the on-data RT fit.

§ondata_rt_finetune: bool

Fine-tune mode for the on-data RT fit (requires ondata_rt and an MLP RT model). Instead of fitting a fresh ridge on raw composition features (a weak linear model that discards the pretrained representation), refit the readout over the MLP’s frozen penultimate embedding — keeping its learned nonlinear RT structure while adapting offset/scale/shape to this run.

§mass_anchor: bool

Bootstrap the RT calibration from MASS-ONLY protein identifications (ms1searchpy stage-1) instead of the per-peptide RANSAC seed. On dense single-run data the per-peptide seed is ~99% contaminated; confident proteins (mass multiplicity) give far cleaner RT anchors.

§rt_calibrated: bool

The RT library is already calibrated to this run’s RT (e.g. DeepLC calibrate_preds). uno then uses rt_diff = obs - pred directly and does NOT apply its own calibration on top (which would double-calibrate and distort the predictions).

§ml_rescore: bool

CV-gbdt PFM peptide-quality ranking, fed through a 10-step cumulative qpred-bin ensemble protein score (ms1searchpy -ml 1 + final_iteration). VALIDATED (2026-07-07, PXD015669 human+yeast entrapment, native biosaur2 features with isoerror/isoerror2/rt_width): 223 real/4 yeast (deviation alone) -> 251 real/1 yeast with this on — deeper AND more honest. The per-PFM classifier itself still barely separates decoys from dim-real peptides on uno’s pure-Rust gbdt (dim_mean ~= DECOY_mean); the gain comes from the ENSEMBLE STRUCTURE (10 cumulative thresholds, averaged, like ms1searchpy’s final_iteration), not classifier quality. When a feature file lacks the quality columns it correctly no-ops (guarded by a strict better-than-baseline check).

ON by default (see ScoreConfig::default), and active in every benchmark reported in the manuscript. It costs a re-run of the protein engine per inclusion band, so it trades latency for depth. Set false for the plain deviation path.

Implementations§

Trait Implementations§

Source§

impl Clone for ScoreConfig

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ScoreConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ScoreConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for ScoreConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V