mioXpektron.analysis
Downstream statistical analysis for aligned peak matrices.
- class mioXpektron.analysis.AnalysisConfig(outdir='analysis_outputs', label_col='Group', sample_col='SampleName', group_a=None, group_b=None, reference_group=None, top_n_features=25, transform='log1p', random_state=0, embedding_methods=None, run_umap=False, run_tsne=False, umap_n_neighbors=15, umap_min_dist=0.1, tsne_perplexity=30.0, run_ml_benchmark=False, include_xgboost=True, ml_top_n_plot=10, run_ml_tuning=False, ml_tune_top_n=3, run_shap=False, run_cnmf=False, cnmf_k_list=None, cnmf_reps=30, cnmf_beta='frobenius', cnmf_top_features=15)[source]
Bases:
objectConfiguration for
AnalysisWorkflow.- Parameters:
outdir (str)
label_col (str)
sample_col (str)
group_a (str | None)
group_b (str | None)
reference_group (str | None)
top_n_features (int)
transform (str)
random_state (int)
run_umap (bool)
run_tsne (bool)
umap_n_neighbors (int)
umap_min_dist (float)
tsne_perplexity (float)
run_ml_benchmark (bool)
include_xgboost (bool)
ml_top_n_plot (int)
run_ml_tuning (bool)
ml_tune_top_n (int)
run_shap (bool)
run_cnmf (bool)
cnmf_reps (int)
cnmf_beta (str)
cnmf_top_features (int)
- class mioXpektron.analysis.AnalysisWorkflow(data, config=None, *, models=None)[source]
Bases:
objectOrchestrate univariate stats, embeddings, ML, and optional cNMF.
- Parameters:
data (pd.DataFrame)
config (Optional[AnalysisConfig])
models (Optional[Mapping[str, Any]])
- mioXpektron.analysis.analysis_capabilities()[source]
Report which extended analysis features are available.
- mioXpektron.analysis.bh_fdr(pvals)[source]
Benjamini–Hochberg FDR correction for a 1D array of p-values.
- mioXpektron.analysis.calculate_multiclass_metrics(y_true, y_pred, *, y_proba=None, class_names=None, data_dict=None)[source]
Compute overall and per-class classification metrics.
- mioXpektron.analysis.categorize_model(model_name)[source]
Assign a model name to a coarse family label.
- mioXpektron.analysis.compare_model_results(results_a, results_b, *, dataset_a='dataset_a', dataset_b='dataset_b')[source]
Merge two benchmark tables and compute accuracy deltas.
- mioXpektron.analysis.compute_pca(X_scaled, y, savepath, *, random_state=0)[source]
PCA embedding with variance ratio metadata.
- mioXpektron.analysis.compute_tsne(X_scaled, y, savepath, *, perplexity=30.0, learning_rate='auto', random_state=0)[source]
t-SNE embedding via scikit-learn.
- mioXpektron.analysis.compute_umap(X_scaled, y, savepath, *, n_neighbors=15, min_dist=0.1, random_state=0)[source]
UMAP embedding when umap-learn is installed.
- mioXpektron.analysis.compute_univariate_tests(X, y, *, group_a=None, group_b=None, reference_group=None, eps=1e-12)[source]
Welch t-test per feature with log2 fold-change (group_a / group_b).
When
group_aandgroup_bare omitted, the two largest groups by sample count are compared.reference_groupsets the denominator for log2 fold-change and defaults togroup_b.
- mioXpektron.analysis.evaluate_all_models(models, data_dict, *, dataset_name='dataset')[source]
Benchmark a mapping of classifiers and return a sorted results table.
- mioXpektron.analysis.evaluate_model(name, model, data_dict, *, cv_folds=5, max_train_time_for_cv=30.0)[source]
Fit one classifier and return hold-out and CV metrics.
- mioXpektron.analysis.explain_with_shap(model, data_dict, savepath, *, max_samples=100, max_background=200)[source]
SHAP beeswarm and bar plots when shap is installed.
- mioXpektron.analysis.get_benchmark_models(*, random_state=42, include_boosting=True)[source]
Return a compact set of classifiers suitable for m/z matrices.
- mioXpektron.analysis.get_class_names(*, data_dict=None, label_encoder=None, class_names=None, n_classes=None)[source]
Resolve human-readable class names for encoded labels.
- mioXpektron.analysis.get_tuning_grid(model_name)[source]
Return a parameter grid for supported model names.
- mioXpektron.analysis.infer_feature_columns(df, *, meta_cols=('SampleName', 'Group'))[source]
Return non-metadata columns, attempting to detect m/z-like headers.
- mioXpektron.analysis.model_needs_scaling(model)[source]
Return True when a classifier benefits from feature scaling.
- mioXpektron.analysis.plot_confusion_matrix(y_true, y_pred, savepath, *, class_names=None, data_dict=None, normalize=False, title='Confusion matrix')[source]
Plot and save a confusion matrix heatmap.
- mioXpektron.analysis.plot_dataset_model_comparison(comparison_df, savepath, *, dataset_a='dataset_a', dataset_b='dataset_b', top_n=15)[source]
Side-by-side accuracy bars for two datasets.
- mioXpektron.analysis.plot_family_comparison(results_df, savepath, *, dataset_name='dataset')[source]
Plot best and mean accuracy per model family.
- mioXpektron.analysis.plot_feature_importance(model, feature_names, savepath, *, title, top_n=15)[source]
Plot absolute LR coefficients or RF feature importances.
- mioXpektron.analysis.plot_heatmap_top_features(X, y, res, savepath, *, top_n=25, label_col='Group')[source]
Heatmap of top differential features (z-scored), samples ordered by group.
- mioXpektron.analysis.plot_model_comparison(results_df, savepath, *, dataset_name='dataset', top_n=10)[source]
Bar chart of top model accuracies.
- mioXpektron.analysis.plot_pac_vs_k(results, savepath)[source]
Plot PAC stability scores across candidate rank values.
- mioXpektron.analysis.plot_pca(X_scaled, y, savepath, *, random_state=0)[source]
PCA scatter plot coloured by group labels.
- mioXpektron.analysis.plot_roc_curves(results_df, data_dict, models, savepath, *, top_n=2)[source]
Plot ROC curves for the top-performing probabilistic models.
- mioXpektron.analysis.plot_tsne(X_scaled, y, savepath, *, perplexity=30.0, random_state=0)[source]
t-SNE scatter plot coloured by group labels.
- mioXpektron.analysis.plot_umap(X_scaled, y, savepath, *, n_neighbors=15, min_dist=0.1, random_state=0)[source]
UMAP embedding plot when umap-learn is installed.
- mioXpektron.analysis.plot_volcano(res, savepath, *, group_a=None, group_b=None, q_thresh=0.05, fc_thresh=1.0)[source]
Volcano plot of log2 fold-change versus -log10(p-value).
- mioXpektron.analysis.prepare_matrix(df, *, label_col='Group', sample_col='SampleName', meta_cols=None, feature_cols=None, coerce_numeric=True, fill_na=0.0)[source]
Build a sample-by-feature matrix and group labels from pipeline output.
Accepts either:
A long table with
SampleName/Groupcolumns and m/z feature columns (typical exported CSV), orAn aligned matrix from
align_peaks()whereSampleNameand optionallyGroupare index levels.
- Parameters:
df (DataFrame) – Input table or aligned feature matrix.
label_col (str) – Column or index level containing group labels.
sample_col (str) – Column or index level containing sample identifiers.
meta_cols (Sequence[str] | None) – Additional metadata columns to exclude from features. Defaults to
SampleNameandGrouponly.feature_cols (Sequence[str] | None) – Explicit feature column names. When omitted, all non-metadata columns are used.
coerce_numeric (bool) – If True, coerce feature columns to numeric (invalid values become NaN).
fill_na (float) – Value used to fill missing feature values after coercion.
- Returns:
X – Feature matrix (samples x m/z), index aligned with
meta.y – Group labels indexed like
X.meta – Metadata frame with at least
sample_colandlabel_col.
- Return type:
- mioXpektron.analysis.prepare_ml_data(data, *, label_col='Group', sample_col='SampleName', test_size=0.2, random_state=42, transform='log1p', scale_features=True, handle_missing='zero')[source]
Prepare an aligned matrix for supervised classification benchmarks.
- mioXpektron.analysis.resolve_embedding_methods(*, embedding_methods=None, run_umap=False, run_tsne=False)[source]
Resolve the list of embedding methods to compute.
- mioXpektron.analysis.run_analysis(data, *, config=None, **kwargs)[source]
Convenience wrapper around
AnalysisWorkflow.
- mioXpektron.analysis.run_cnmf(X_pos, k_list, *, R=30, max_iter=1000, beta='frobenius', random_seeds=None, outdir=None)[source]
Run consensus NMF across multiple rank values.
- mioXpektron.analysis.run_embeddings(X_scaled, y, outdir, *, methods=None, run_umap=False, run_tsne=False, random_state=0, umap_n_neighbors=15, umap_min_dist=0.1, tsne_perplexity=30.0)[source]
Compute and save requested embeddings; return coordinate arrays.
- mioXpektron.analysis.run_multi_dataset_comparison(datasets, *, outdir='comparison_outputs', config=None, run_ml_benchmark=True)[source]
Run analysis workflows on multiple datasets and compare ML benchmarks.
- mioXpektron.analysis.save_consensus_heatmap(consensus, labels, savepath, *, label_col='Group')[source]
Plot a consensus matrix ordered by group labels.
- mioXpektron.analysis.save_factor_bars(H, feature_names, outdir, *, topm=15)[source]
Save per-factor top m/z contributors as CSV and bar plots.
- mioXpektron.analysis.select_best_tuned_model(tuning_df)[source]
Return the name and estimator of the best tuned model.
- mioXpektron.analysis.summarize_model_families(results_df)[source]
Aggregate benchmark metrics by model family.
- mioXpektron.analysis.transform_features(X, *, method='log1p')[source]
Apply a variance-stabilising transform before embedding or ML.
- mioXpektron.analysis.tune_top_models(data_dict, results_df, *, top_n=3, cv_folds=5, random_state=42, verbose=0)[source]
Grid-search hyperparameters for the top-performing models.
Modules
Consensus non-negative matrix factorisation for sample clustering. |
|
Cross-dataset and model-family comparison utilities. |
|
Nonlinear and linear sample embeddings for exploratory analysis. |
|
Classification metrics and diagnostic plots. |
|
Machine-learning benchmarking for aligned m/z feature matrices. |
|
Optional analysis dependency detection. |
|
Visualization helpers for downstream statistical analysis. |
|
Prepare feature matrices from pipeline or tabular outputs. |
|
Univariate statistics for aligned feature matrices. |
|
Hyperparameter tuning for top benchmark models. |
|
End-to-end analysis workflow for aligned peak matrices. |