pub struct HillsConfig {Show 17 fields
pub min_scans: usize,
pub max_gap: usize,
pub split_hills: bool,
pub split_valley_ratio: f64,
pub split_sigma_mult: f64,
pub split_height_frac: f64,
pub lfc_weight: f64,
pub gap_fill_enabled: bool,
pub smoothing_enabled: bool,
pub smoothing_window: usize,
pub filter_large_baseline_hills: bool,
pub large_hill_min_scans: usize,
pub large_hill_peak_factor: f64,
pub tic_norm_window: usize,
pub tic_norm_min_scale: f64,
pub tic_norm_max_scale: f64,
pub tic_norm_mode: String,
}Fields§
§min_scans: usize§max_gap: usize§split_hills: bool§split_valley_ratio: f64Persistence: a split between two adjacent peaks is kept only if the valley between them drops to <= this fraction of the SMALLER peak. Scale-free and immune to spike inflation. Default 0.60.
split_sigma_mult: f64Persistence: absolute notch-depth floor as a multiple of the estimated noise sigma (MAD of the trace’s first difference). Rejects shallow noise notches that the relative test alone would admit on a low baseline. Default 5.0.
split_height_frac: f64Persistence: minimum peak height as a fraction of the robust (95th-pct) max intensity. Lower catches faint minor co-eluting peaks (e.g. 10:1 duals); higher rejects baseline bumps. Default 0.10.
lfc_weight: f64Weight for the intensity LFC term in the hill-candidate distance score. 0.0 disables it. Default 0.3; ~0.5 gives intensity consistency roughly half the influence of m/z proximity when selecting which peak extends a hill.
gap_fill_enabled: boolLinear-interpolate intensity through internal zero-gap scans during
hill finalization. Independent of smoothing_enabled. Default false.
NOTE: turning this on can create artificial local maxima that the
split-hills logic picks up as new peaks — it materially increases
final hill count on data with many short gaps.
smoothing_enabled: boolApply a running-average filter to the intensity profile during hill
finalization. Independent of gap_fill_enabled. Default false.
smoothing_window: usizeHalf-width of the running-average window. Total window = 2*smoothing_window+1 scans. 0 = no averaging. Ignored when smoothing_enabled is false.
filter_large_baseline_hills: boolDrop “large baseline-like” hills before isotope chain assembly.
A hill is dropped when its scan length ≥ large_hill_min_scans AND
max(unsmoothed) / smoothed_endpoint < large_hill_peak_factor on
either end — i.e., the intensity profile lacks a clear apex.
Catches column-bleed contaminants, plasticizers, and baseline
drift centroids that masquerade as hills. Default false for
backward compatibility. Ported from AlphaPept’s filter_hills.
large_hill_min_scans: usizeMinimum scan span for a hill to be considered for the baseline-hill filter. Default 40.
large_hill_peak_factor: f64Required ratio of max(intensity_profile) to the smoothed
endpoint intensity. A clear chromatographic peak easily exceeds
this; a flat baseline trace fails. Default 2.0.
tic_norm_window: usizePre-detection anomaly normalisation. When > 0, peak intensities
in each MS1 scan are scaled by clamp(local_median(reference) / scan_reference, tic_norm_min_scale, tic_norm_max_scale) where
the local median is taken over a centred window of
tic_norm_window scans. The reference quantity is selected by
tic_norm_mode. Defaults to 0 = off.
Use case: brief ESI dropouts / sub-AGC-failure events that the
instrument’s automatic gain control didn’t fully compensate.
Choosing the window too small (≲ peak FWHM in scans) will
flatten real apices, especially in tic mode.
tic_norm_min_scale: f64§tic_norm_max_scale: f64§tic_norm_mode: StringWhich per-scan quantity to use as the normalisation reference. “tic” = total ion current (sum of all peak intensities). Heavy- tailed; dominated by a few intense peaks. Real elution apices spike the TIC and get scaled DOWN by the normaliser — apex shapes can be flattened. “median” = median peak intensity per scan. Robust to a few intense peaks: apex elution adds tall peaks but barely moves the median. Dropouts dim everything → median drops → scaling fires only when the whole scan is suppressed. Recommended.
Trait Implementations§
Source§impl Clone for HillsConfig
impl Clone for HillsConfig
Source§impl Debug for HillsConfig
impl Debug for HillsConfig
Source§impl Default for HillsConfig
impl Default for HillsConfig
Source§impl<'de> Deserialize<'de> for HillsConfigwhere
HillsConfig: Default,
impl<'de> Deserialize<'de> for HillsConfigwhere
HillsConfig: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for HillsConfig
impl RefUnwindSafe for HillsConfig
impl Send for HillsConfig
impl Sync for HillsConfig
impl Unpin for HillsConfig
impl UnsafeUnpin for HillsConfig
impl UnwindSafe for HillsConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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