Skip to content

Commit 7587785

Browse files
aeiwzclaude
andcommitted
Release v9.1.0 — extended analysis, visualization, and validation
New modules: VolcanoPlot, ANOVAStats, KruskalStats, lda, plsr, ica, hca, MLClassifier, SpectralAutoencoder, SpectralMLP, SpectralCNN, ModelValidator, TrainTestSplit, CrossValidator, SpectraPlot, FeatureHeatmap, CorrelationMatrix, PValueTable, Biplot, CoefficientPlot, FeatureImportancePlot, FoldChangePlot, GroupComparison, MetaboliteDashboard. C backend: nipals_full, scale_transform, xcorr_max_shift, pqn_median_quotient kernels added to _native_backend.c. Fixed reference leak (O→N in Py_BuildValue). Docs: feedback/issue reporter page, skeleton loader, download stats strip, topbar light-theme fix, GitHub Actions path filter updated. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent d272a26 commit 7587785

44 files changed

Lines changed: 13189 additions & 211 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/docs.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@ on:
44
pull_request:
55
paths:
66
- "docs/**"
7-
- "metbit/**"
87
- ".github/workflows/docs.yml"
98
push:
109
branches: [main]
1110
paths:
1211
- "docs/**"
13-
- "metbit/**"
1412
- ".github/workflows/docs.yml"
1513

1614
permissions:

docs/app/docs/api/lazy_opls_da/page.mdx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,19 @@ Parameters:
2727
<details>
2828
<summary><code>__init__(data, groups, working_dir, feature_, n_components, scaling, estimator, kfold, random_state, auto_ncomp, permutation, n_permutation, n_jobs, VIP, VIP_threshold, linear_regression, FC_threshold, p_val_threshold)</code></summary>
2929

30+
This function takes in a dataframe and a list of y values and returns the project_name model.
31+
32+
##### Parameters
33+
34+
- `data`: pandas dataframe The dataframe to be used.
35+
- `y`: list The list of y values.
36+
- `n_components`: int The number of components to use. lazy_opls_da(data, y, n_components).fit()
37+
3038
</details>
3139

3240
<details>
3341
<summary><code>fit(marker_color, custom_color, custom_shape, symbol_dict, custom_legend_name, marker_label, marker_size, marker_opacity, individual_ellipse)</code></summary>
3442

43+
Fit the OPLS-DA model to all pairwise group comparisons and save plots and data.
44+
3545
</details>

docs/app/docs/api/page.mdx

Lines changed: 51 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,58 @@
11
# API Reference
22

3-
Browse the main public APIs exposed by `metbit`. The preferred import style is:
3+
Browse the public API exposed by `metbit` (sorted by category).
44

5-
```python
6-
from metbit import pca, opls_da, nmr_preprocessing, Normalization
7-
```
5+
## Data Processing
86

9-
Advanced users can also import from subpackages such as `metbit.analysis`, `metbit.nmr`, `metbit.preprocessing`, `metbit.stats`, and `metbit.apps`.
10-
11-
## NMR Data Processing
12-
13-
- [nmr_preprocessing](/docs/api/nmr_preprocess) - read Bruker FID folders and generate processed spectra.
14-
- [calibrate](/docs/api/calibrate) - calibrate chemical-shift axes.
15-
- [baseline_correct and bline](/docs/api/baseline) - baseline correction helpers.
16-
- [detect_multiplets, icoshift_align, and PeakAligner](/docs/api/peak_processe) - peak detection and interval alignment utilities.
17-
- [peak_chops](/docs/api/peak_processe) - peak-region extraction.
18-
- [denoise_spec](/docs/api/denoise_spec) - spectral denoising helpers.
19-
20-
## Normalization and Pretreatment
21-
22-
- [Normalization](/docs/api/spec_norm) - static PQN, SNV, MSC, and combined normalization methods.
23-
- [Normalise](/docs/api/utility) - class-based normalization utilities.
24-
- [scaler](/docs/api/scaler) - scaling utilities used by statistical models.
25-
- [pretreatment](/docs/api/pretreatment) - preprocessing and transformation helpers.
7+
- [calibrate](/docs/api/metbit.nmr.calibrate)
8+
- [nmr_preprocessing](/docs/api/metbit.nmr.preprocess)
9+
- [Normalise](/docs/api/metbit.stats.normalise)
10+
- [Normalization](/docs/api/metbit.preprocessing.normalize)
11+
- [peak_chops](/docs/api/metbit.nmr.peaks)
2612

2713
## Statistical Models
2814

29-
- [pca](/docs/api/metbit) - PCA model with interactive scores, loading, variance, and trajectory plots.
30-
- [opls_da](/docs/api/metbit) - OPLS-DA model with cross-validation, permutation testing, VIP, loading, S-plot, and scores plotting.
31-
- [lazy_opls_da](/docs/api/lazy_opls_da) - convenience workflow for OPLS-DA analysis.
32-
- [OPLS](/docs/api/opls) - lower-level OPLS model implementation.
33-
- [PLS](/docs/api/pls) - lower-level PLS model implementation.
34-
- [CrossValidation](/docs/api/cross_validation) - cross-validation helpers.
35-
- [VIP helpers](/docs/api/vip) - Variable Importance in Projection utilities.
36-
- [UnivarStats](/docs/api/utility) - univariate statistical analysis helpers.
37-
38-
## Visualization and Interactive Apps
39-
40-
- [STOCSY](/docs/api/STOCSY) - Statistical Total Correlation Spectroscopy.
41-
- [STOCSY_app](/docs/api/ui_stocsy) - interactive Dash STOCSY app.
42-
- [pickie_peak](/docs/api/ui_picky_peak) - interactive peak-picking app.
43-
- [annotate_peak](/docs/api/annotate_peak) - peak annotation helper.
44-
- [get_intensity](/docs/api/take_intensity) - peak intensity extraction.
45-
- [plotting](/docs/api/plotting) - reusable plotting helpers.
46-
- [boxplot](/docs/api/boxplot) - boxplot visualization utilities.
47-
- [pca_ellipse](/docs/api/pca_ellipse) - confidence ellipse plotting.
15+
- [opls_da](/docs/api/metbit.analysis.opls_da)
16+
- [pca](/docs/api/metbit.analysis.pca)
17+
- [UnivarStats](/docs/api/metbit.stats.univariate)
18+
19+
## Data Visualization
20+
21+
- [STOCSY](/docs/api/metbit.analysis.stocsy)
22+
23+
## Other
24+
25+
- [ANOVAStats](/docs/api/metbit.stats.multitest)
26+
- [available_cv_strategies](/docs/api/metbit.validation.splitter)
27+
- [backend_info](/docs/api/metbit._native)
28+
- [baseline_correct](/docs/api/metbit.preprocessing.baseline)
29+
- [Biplot](/docs/api/metbit.viz.interpretation)
30+
- [bline](/docs/api/metbit.preprocessing.baseline)
31+
- [ChunkedSTOCSY](/docs/api/metbit.analysis.large_scale)
32+
- [CoefficientPlot](/docs/api/metbit.viz.interpretation)
33+
- [CorrelationMatrix](/docs/api/metbit.viz.summary)
34+
- [CrossValidator](/docs/api/metbit.validation.splitter)
35+
- [detect_multiplets](/docs/api/metbit.nmr.alignment)
36+
- [feature_preselection](/docs/api/metbit.analysis.large_scale)
37+
- [FeatureHeatmap](/docs/api/metbit.viz.summary)
38+
- [FeatureImportancePlot](/docs/api/metbit.viz.interpretation)
39+
- [FoldChangePlot](/docs/api/metbit.viz.profiling)
40+
- [gpu_available](/docs/api/metbit._native)
41+
- [GroupComparison](/docs/api/metbit.viz.profiling)
42+
- [hca](/docs/api/metbit.analysis.multivariate)
43+
- [ica](/docs/api/metbit.analysis.multivariate)
44+
- [icoshift_align](/docs/api/metbit.nmr.alignment)
45+
- [KruskalStats](/docs/api/metbit.stats.multitest)
46+
- [LargeScaleAlignment](/docs/api/metbit.analysis.large_scale)
47+
- [lda](/docs/api/metbit.analysis.multivariate)
48+
- [memory_report](/docs/api/metbit.analysis.large_scale)
49+
- [MemoryEstimator](/docs/api/metbit.analysis.large_scale)
50+
- [ModelValidator](/docs/api/metbit.validation.metrics)
51+
- [native_available](/docs/api/metbit._native)
52+
- [PeakAligner](/docs/api/metbit.nmr.alignment)
53+
- [plsr](/docs/api/metbit.analysis.multivariate)
54+
- [PValueTable](/docs/api/metbit.viz.summary)
55+
- [SpectraPlot](/docs/api/metbit.viz.spectra)
56+
- [TrainTestSplit](/docs/api/metbit.validation.splitter)
57+
- [VolcanoPlot](/docs/api/metbit.stats.multitest)
58+

docs/app/docs/api/pretreatment/page.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
### Scaler
88

9+
A scaler to scale data matrix
10+
911
#### Methods
1012

1113
<details>

metbit/__init__.py

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
__maintainer__ = "aeiwz"
77
__status__ = "Development"
88
__copyright__ = "Copyright 2024, Theerayut"
9-
__version__ = "9.0.0"
9+
__version__ = "9.1.0"
1010

1111
# Core analysis
1212
from metbit.analysis.opls_da import opls_da
@@ -35,6 +35,28 @@
3535
from metbit.preprocessing.baseline import baseline_correct, bline
3636
from metbit.preprocessing.normalize import Normalization
3737

38+
# Extended statistics
39+
from metbit.stats.multitest import VolcanoPlot, ANOVAStats, KruskalStats
40+
41+
# Extended multivariate analysis
42+
from metbit.analysis.multivariate import lda, plsr, ica, hca
43+
44+
# Validation
45+
from metbit.validation.metrics import ModelValidator
46+
from metbit.validation.splitter import TrainTestSplit, CrossValidator, available_cv_strategies
47+
48+
# Machine learning classifiers (optional: requires xgboost)
49+
try:
50+
from metbit.ml.classifiers import MLClassifier
51+
except Exception: # pragma: no cover
52+
pass
53+
54+
# Deep learning models (optional: requires torch)
55+
try:
56+
from metbit.dl.models import SpectralAutoencoder, SpectralMLP, SpectralCNN
57+
except Exception: # pragma: no cover
58+
pass
59+
3860
# Dash apps (optional heavy deps)
3961
try:
4062
from metbit.apps.annotate import annotate_peak
@@ -51,6 +73,24 @@
5173
except Exception: # pragma: no cover
5274
pass
5375

76+
# Visualization - spectra
77+
from metbit.viz.spectra import SpectraPlot
78+
79+
# Visualization - statistical summaries
80+
from metbit.viz.summary import FeatureHeatmap, CorrelationMatrix, PValueTable
81+
82+
# Visualization - model interpretation
83+
from metbit.viz.interpretation import Biplot, CoefficientPlot, FeatureImportancePlot
84+
85+
# Visualization - metabolite profiling
86+
from metbit.viz.profiling import FoldChangePlot, GroupComparison
87+
88+
# Dash app: metabolite dashboard (optional heavy deps)
89+
try:
90+
from metbit.viz.profiling import MetaboliteDashboard
91+
except Exception: # pragma: no cover
92+
pass
93+
5494
# Legacy flat-layout class not yet moved to a sub-package
5595
try:
5696
from metbit.lazy_opls_da import lazy_opls_da
@@ -80,6 +120,38 @@
80120
"baseline_correct",
81121
"bline",
82122
"Normalization",
123+
# Extended stats
124+
"VolcanoPlot",
125+
"ANOVAStats",
126+
"KruskalStats",
127+
# Extended multivariate
128+
"lda",
129+
"plsr",
130+
"ica",
131+
"hca",
132+
# Validation
133+
"ModelValidator",
134+
"TrainTestSplit",
135+
"CrossValidator",
136+
"available_cv_strategies",
137+
# Visualization - spectra
138+
"SpectraPlot",
139+
# Visualization - statistical summaries
140+
"FeatureHeatmap",
141+
"CorrelationMatrix",
142+
"PValueTable",
143+
# Visualization - model interpretation
144+
"Biplot",
145+
"CoefficientPlot",
146+
"FeatureImportancePlot",
147+
# Visualization - metabolite profiling
148+
"FoldChangePlot",
149+
"GroupComparison",
150+
]
151+
_optional = [
152+
"annotate_peak", "STOCSY_app", "pickie_peak", "lazy_opls_da",
153+
"MLClassifier",
154+
"SpectralAutoencoder", "SpectralMLP", "SpectralCNN",
155+
"MetaboliteDashboard",
83156
]
84-
_optional = ["annotate_peak", "STOCSY_app", "pickie_peak", "lazy_opls_da"]
85157
__all__ = _always_exported + [n for n in _optional if n in globals()]

0 commit comments

Comments
 (0)