Toolbox Python per l'analisi dei dati di laboratorio
Project description
mespy
Toolbox Python per l'analisi dei dati di laboratorio di meccanica.
mespy raccoglie in un unico package le utility che tornano spesso nei notebook di laboratorio: caricamento CSV, statistiche descrittive e pesate, istogrammi e fit lineare con incertezze.
La release 1.0.0 congela una public API piccola, tipizzata e pensata per un uso didattico: errori espliciti, firme stabili e output facili da leggere in notebook e script.
API pubblica stabile
Il package espone direttamente:
load_csvmedianweighted_meanvariancecovariancestandard_deviationhistogramlin_fit
I moduli presenti in src/mespy sono:
io_utils.py: lettura CSV con policy esplicita per i valori mancantistats_utils.py: funzioni statistiche di base con validazione coerente degli inputplot_utils.py: istogrammi con media e banda±1σfit_utils.py: fit lineare pesato con risultato tipizzatoLinearFitResult
Il namespace root resta volutamente piccolo. I tipi pubblici aggiuntivi vivono nei submodule, per esempio mespy.fit_utils.LinearFitResult.
Stabilita` API
- Le firme e il significato delle funzioni esportate da
mespyseguono semantic versioning. - Gli input non validi falliscono con
ValueErrorinvece di propagarenano warning silenziosi. - Il package distribuisce
py.typed, quindi IDE e type checker vedono le firme pubbliche reali.
Esempio minimo
from mespy import lin_fit, load_csv, weighted_mean
df = load_csv(
"data/reference/test_misure.csv",
sep=",",
decimal=".",
missing="error",
)
x = df["misura_n"].to_numpy(dtype=float)
y = df["lunghezza_mm"].to_numpy(dtype=float)
sigma_y = df["sigma_mm"].to_numpy(dtype=float)
y_bar = weighted_mean(y, 1 / sigma_y**2)
fit = lin_fit(
x=x,
y=y,
sigma_y=sigma_y,
xlabel="numero misura",
ylabel="lunghezza [mm]",
show_plot=False,
)
print("media pesata:", y_bar)
print("pendenza:", fit.slope)
print("chi2 ridotto:", fit.reduced_chi2)
Breaking change di 1.0.0
lin_fit(...)non restituisce piuundict: ora restituisceLinearFitResultcon campi descrittivi comeslope,intercept,chi2,reduced_chi2efigure`.load_csv(...)usamissing="error" | "drop" | "allow"al posto didrop_missing.histogram(...)usaddof=0di default, in coerenza convarianceestandard_deviation.- Le funzioni statistiche rifiutano input vuoti, non finiti o con pesi non validi invece di restituire
nan.
Struttura del progetto
mespy/
├── src/mespy/ # package Python
├── tests/ # test pytest
├── notebooks/ # notebook di prova e dimostrazione
├── docs-sphinx/ # sorgenti e build della documentazione HTML
├── docs/LaTeX-docs/ # sorgenti legacy della documentazione PDF
├── data/reference/ # dataset di riferimento per test/esempi
├── figures/ # figure esportate
├── tools/ # script di supporto
├── pyproject.toml # metadata del package
└── Makefile # comandi di setup e documentazione
Requisiti
- Python
>= 3.12 git- nessun requisito di sistema extra per il sito HTML:
make setupinstalla Sphinx e le dipendenze Python necessarie lualatex,latexmkepygmentizesolo se vuoi ricompilare la documentazione PDF legacy- font richiesti dalla build PDF legacy:
Libertinus Serif,Libertinus Math,Libertinus Sans,JetBrains Mono,Inter Display
Installazione rapida
Clona il repository ed entra nella directory:
git clone https://github.com/giancarmine-sparso/mespy
cd mespy
Crea il virtualenv e installa il package con le dipendenze di sviluppo:
make setup
Se vuoi attivare l'ambiente manualmente:
source .venv/bin/activate
Documentazione
La documentazione HTML del package vive in docs-sphinx/source e viene generata in docs-sphinx/build/html.
Per costruire il sito:
make docs
La homepage risultante e' docs-sphinx/build/html/index.html.
La documentazione del sito e organizzata in:
- home e guida rapida
- moduli principali
- controlli e helper interni
- esempi d'uso
Se vuoi pulire la build HTML:
make docs-clean
Documentazione PDF legacy
La vecchia documentazione LaTeX resta disponibile in docs/LaTeX-docs.
Per ricompilarla:
make docs-pdf
make check-tex verifica i prerequisiti LaTeX e, se fc-match e' disponibile nel sistema, controlla anche la presenza dei font richiesti.
Per pulire gli artifact LaTeX:
make docs-pdf-clean
Check pre-release
Per eseguire il gate completo di release PyPI in locale:
make release-check
Il comando esegue test, compileall, pip check, build di sdist e wheel, validazione con twine check e smoke test degli import a partire dalla wheel generata.
Comandi utili
| Target | Descrizione |
|---|---|
make setup |
Crea il virtualenv e installa il package in editable mode con dipendenze dev |
make venv |
Crea solo il virtualenv |
make install |
Installa il package locale e le dipendenze |
make test |
Esegue l'intera suite pytest |
make dist |
Rigenera da zero sdist e wheel in dist/ |
make twine-check |
Valida solo gli artifact della versione corrente |
make upload |
Carica su PyPI solo gli artifact della versione corrente |
make release-check |
Esegue il gate completo pre-release per PyPI |
make docs |
Costruisce il sito HTML con Sphinx in docs-sphinx/build/html |
make docs-clean |
Rimuove gli artifact di build di Sphinx |
make check-tex |
Verifica i prerequisiti LaTeX e, se possibile, i font richiesti |
make docs-pdf |
Compila la documentazione PDF legacy |
make docs-pdf-clean |
Rimuove i file temporanei LaTeX |
make dist-clean |
Rimuove gli artifact Python di build |
make clean |
Esegue la pulizia generale |
Note
- I notebook in
notebooks/sono esempi di utilizzo e test esplorativi, non documentazione API normativa.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mespy-1.0.0.tar.gz.
File metadata
- Download URL: mespy-1.0.0.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44baefaa45c6beea1fe1ca0c748b7a712faedb4f7f1e399bd76cf93c56cf954e
|
|
| MD5 |
87a6f8a167be1bede349a5e1957c689e
|
|
| BLAKE2b-256 |
0f1b41fb9cf05bca65bab9fca8663e6d4d2060f191d05a768aae7db6cbd5f52f
|
File details
Details for the file mespy-1.0.0-py3-none-any.whl.
File metadata
- Download URL: mespy-1.0.0-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bc10c4daef3e41bf254e92336e75e1f6f24ab67fbf7b89878d7251bfcd6a2c9
|
|
| MD5 |
1993fd4259b28cae7618490086a6c284
|
|
| BLAKE2b-256 |
fe23c815abdadfd55dd62568dc92aa1b778d66b21287b5ddd2273f065e6fc735
|