MaldiAMRKit Documentation#
A Python toolkit for MALDI-TOF mass spectrometry preprocessing for antimicrobial resistance (AMR) prediction. Scikit-learn compatible transformers for seamless integration into machine learning pipelines.
Key Features#
Composable transformers (smoothing, baseline, trimming, normalization), multiple binning strategies, and peak detection. Serializable to JSON/YAML.
Scikit-learn compatible transformers. Drop into any Pipeline,
cross_val_score, or GridSearchCV workflow.
Shift, linear, piecewise, and DTW warping for both binned and raw full-resolution spectra.
VME, ME, sensitivity, specificity, and classification reports following EUCAST conventions. Species-drug stratified, case-based, and group-aware (replicate-safe) splitting to prevent data leakage.
MICEncoder and BreakpointTable turn raw MIC strings into
log2(MIC) regression targets and S/I/R categories, with bundled
EUCAST clinical breakpoints (v1.0-v16.0).
Per-bin resistant-vs-susceptible testing with multiple-testing correction, fold change, and effect size. Volcano, Manhattan, and multi-drug comparison plots.
DriftMonitor tracks temporal drift via reference similarity,
PCA centroid trajectory, and top-peak stability, with ready-made
trajectory plots.
Build and load DRIAMS-like dataset directories from raw spectra and metadata, with year-based subfolders, custom processing handlers, and technical-replicate collapsing.
SpeciesFilter, DrugFilter, QualityFilter, MetadataFilter
combinable with &, |, ~ operators.
Quick Example#
from maldiamrkit import MaldiSpectrum, MaldiSet
from maldiamrkit.alignment import Warping
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
# Load dataset (with parallel loading)
data = MaldiSet.from_directory(
"spectra/", "metadata.csv",
aggregate_by=dict(antibiotics="Ceftriaxone"),
n_jobs=-1 # Use all cores
)
# Create pipeline (with parallel warping)
pipe = Pipeline([
("warp", Warping(method="shift", n_jobs=-1)),
("scaler", StandardScaler()),
("clf", RandomForestClassifier())
])
# Train and evaluate
pipe.fit(data.X, data.get_y_single())