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: object

Configuration 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)

  • embedding_methods (List[str] | None)

  • 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_k_list (List[int] | None)

  • cnmf_reps (int)

  • cnmf_beta (str)

  • cnmf_top_features (int)

outdir: str = 'analysis_outputs'
label_col: str = 'Group'
sample_col: str = 'SampleName'
group_a: str | None = None
group_b: str | None = None
reference_group: str | None = None
top_n_features: int = 25
transform: str = 'log1p'
random_state: int = 0
embedding_methods: List[str] | None = None
run_umap: bool = False
run_tsne: bool = False
umap_n_neighbors: int = 15
umap_min_dist: float = 0.1
tsne_perplexity: float = 30.0
run_ml_benchmark: bool = False
include_xgboost: bool = True
ml_top_n_plot: int = 10
run_ml_tuning: bool = False
ml_tune_top_n: int = 3
run_shap: bool = False
run_cnmf: bool = False
cnmf_k_list: List[int] | None = None
cnmf_reps: int = 30
cnmf_beta: str = 'frobenius'
cnmf_top_features: int = 15
class mioXpektron.analysis.AnalysisWorkflow(data, config=None, *, models=None)[source]

Bases: object

Orchestrate univariate stats, embeddings, ML, and optional cNMF.

Parameters:
  • data (pd.DataFrame)

  • config (Optional[AnalysisConfig])

  • models (Optional[Mapping[str, Any]])

results: Dict[str, Any]
run()[source]

Execute the configured analysis pipeline and write outputs.

Return type:

Dict[str, Any]

mioXpektron.analysis.analysis_capabilities()[source]

Report which extended analysis features are available.

Return type:

Dict[str, bool]

mioXpektron.analysis.bh_fdr(pvals)[source]

Benjamini–Hochberg FDR correction for a 1D array of p-values.

Parameters:

pvals (ndarray)

Return type:

ndarray

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.

Parameters:
Return type:

Dict[str, Any]

mioXpektron.analysis.categorize_model(model_name)[source]

Assign a model name to a coarse family label.

Parameters:

model_name (str)

Return type:

str

mioXpektron.analysis.choose_k_by_pac(results)[source]

Select the rank with the lowest PAC score.

Parameters:

results (Dict[int, Dict[str, object]])

Return type:

int

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.

Parameters:
Return type:

DataFrame

mioXpektron.analysis.compute_pca(X_scaled, y, savepath, *, random_state=0)[source]

PCA embedding with variance ratio metadata.

Parameters:
Return type:

Tuple[ndarray, ndarray]

mioXpektron.analysis.compute_tsne(X_scaled, y, savepath, *, perplexity=30.0, learning_rate='auto', random_state=0)[source]

t-SNE embedding via scikit-learn.

Parameters:
Return type:

ndarray

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.

Parameters:
Return type:

ndarray | None

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_a and group_b are omitted, the two largest groups by sample count are compared. reference_group sets the denominator for log2 fold-change and defaults to group_b.

Parameters:
Return type:

DataFrame

mioXpektron.analysis.evaluate_all_models(models, data_dict, *, dataset_name='dataset')[source]

Benchmark a mapping of classifiers and return a sorted results table.

Parameters:
Return type:

DataFrame

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.

Parameters:
Return type:

Tuple[Dict[str, Any], Any]

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.

Parameters:
Return type:

ndarray | None

mioXpektron.analysis.get_benchmark_models(*, random_state=42, include_boosting=True)[source]

Return a compact set of classifiers suitable for m/z matrices.

Parameters:
  • random_state (int)

  • include_boosting (bool)

Return type:

Dict[str, Any]

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.

Parameters:
Return type:

List[str]

mioXpektron.analysis.get_tuning_grid(model_name)[source]

Return a parameter grid for supported model names.

Parameters:

model_name (str)

Return type:

Dict[str, list] | None

mioXpektron.analysis.infer_feature_columns(df, *, meta_cols=('SampleName', 'Group'))[source]

Return non-metadata columns, attempting to detect m/z-like headers.

Parameters:
Return type:

List[str]

mioXpektron.analysis.missing_packages()[source]

Map unavailable features to pip install hints.

Return type:

Dict[str, str]

mioXpektron.analysis.model_needs_scaling(model)[source]

Return True when a classifier benefits from feature scaling.

Parameters:

model (Any)

Return type:

bool

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.

Parameters:
Return type:

ndarray

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.

Parameters:
Return type:

None

mioXpektron.analysis.plot_family_comparison(results_df, savepath, *, dataset_name='dataset')[source]

Plot best and mean accuracy per model family.

Parameters:
Return type:

None

mioXpektron.analysis.plot_feature_importance(model, feature_names, savepath, *, title, top_n=15)[source]

Plot absolute LR coefficients or RF feature importances.

Parameters:
Return type:

None

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.

Parameters:
Return type:

None

mioXpektron.analysis.plot_model_comparison(results_df, savepath, *, dataset_name='dataset', top_n=10)[source]

Bar chart of top model accuracies.

Parameters:
Return type:

None

mioXpektron.analysis.plot_pac_vs_k(results, savepath)[source]

Plot PAC stability scores across candidate rank values.

Parameters:
Return type:

None

mioXpektron.analysis.plot_pca(X_scaled, y, savepath, *, random_state=0)[source]

PCA scatter plot coloured by group labels.

Parameters:
Return type:

Tuple[ndarray, ndarray]

mioXpektron.analysis.plot_roc_curves(results_df, data_dict, models, savepath, *, top_n=2)[source]

Plot ROC curves for the top-performing probabilistic models.

Parameters:
Return type:

None

mioXpektron.analysis.plot_tsne(X_scaled, y, savepath, *, perplexity=30.0, random_state=0)[source]

t-SNE scatter plot coloured by group labels.

Parameters:
Return type:

ndarray

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.

Parameters:
Return type:

ndarray | None

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).

Parameters:
Return type:

None

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 / Group columns and m/z feature columns (typical exported CSV), or

  • An aligned matrix from align_peaks() where SampleName and optionally Group are 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 SampleName and Group only.

  • 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_col and label_col.

Return type:

Tuple[DataFrame, Series, DataFrame]

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.

Parameters:
Return type:

Dict[str, Any]

mioXpektron.analysis.resolve_embedding_methods(*, embedding_methods=None, run_umap=False, run_tsne=False)[source]

Resolve the list of embedding methods to compute.

Parameters:
Return type:

List[str]

mioXpektron.analysis.run_analysis(data, *, config=None, **kwargs)[source]

Convenience wrapper around AnalysisWorkflow.

Parameters:
Return type:

Dict[str, Any]

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.

Parameters:
Return type:

Dict[int, Dict[str, object]]

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.

Parameters:
Return type:

Dict[str, ndarray]

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.

Parameters:
Return type:

Dict[str, Any]

mioXpektron.analysis.save_consensus_heatmap(consensus, labels, savepath, *, label_col='Group')[source]

Plot a consensus matrix ordered by group labels.

Parameters:
Return type:

None

mioXpektron.analysis.save_factor_bars(H, feature_names, outdir, *, topm=15)[source]

Save per-factor top m/z contributors as CSV and bar plots.

Parameters:
Return type:

None

mioXpektron.analysis.select_best_tuned_model(tuning_df)[source]

Return the name and estimator of the best tuned model.

Parameters:

tuning_df (DataFrame)

Return type:

Tuple[str | None, Any | None]

mioXpektron.analysis.summarize_model_families(results_df)[source]

Aggregate benchmark metrics by model family.

Parameters:

results_df (DataFrame)

Return type:

DataFrame

mioXpektron.analysis.transform_features(X, *, method='log1p')[source]

Apply a variance-stabilising transform before embedding or ML.

Parameters:
Return type:

ndarray

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.

Parameters:
Return type:

DataFrame

Modules

cnmf

Consensus non-negative matrix factorisation for sample clustering.

compare

Cross-dataset and model-family comparison utilities.

embeddings

Nonlinear and linear sample embeddings for exploratory analysis.

metrics

Classification metrics and diagnostic plots.

ml

Machine-learning benchmarking for aligned m/z feature matrices.

optional

Optional analysis dependency detection.

plots

Visualization helpers for downstream statistical analysis.

prepare

Prepare feature matrices from pipeline or tabular outputs.

stats

Univariate statistics for aligned feature matrices.

tuning

Hyperparameter tuning for top benchmark models.

workflow

End-to-end analysis workflow for aligned peak matrices.