eemkit 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. eemkit-0.1.0/.gitignore +13 -0
  2. eemkit-0.1.0/CHANGELOG.md +35 -0
  3. eemkit-0.1.0/CITATION.cff +20 -0
  4. eemkit-0.1.0/LICENSE +674 -0
  5. eemkit-0.1.0/PKG-INFO +195 -0
  6. eemkit-0.1.0/README.md +151 -0
  7. eemkit-0.1.0/docs/absorbance.md +61 -0
  8. eemkit-0.1.0/docs/api.md +96 -0
  9. eemkit-0.1.0/docs/app-guide.md +378 -0
  10. eemkit-0.1.0/docs/campaigns.md +70 -0
  11. eemkit-0.1.0/docs/corrections.md +55 -0
  12. eemkit-0.1.0/docs/data_model.md +52 -0
  13. eemkit-0.1.0/docs/gui.md +93 -0
  14. eemkit-0.1.0/docs/img/app/1_project.png +0 -0
  15. eemkit-0.1.0/docs/img/app/2_corrections.png +0 -0
  16. eemkit-0.1.0/docs/img/app/3_indices.png +0 -0
  17. eemkit-0.1.0/docs/img/app/4a_parafac_ranks.png +0 -0
  18. eemkit-0.1.0/docs/img/app/4b_parafac_outliers.png +0 -0
  19. eemkit-0.1.0/docs/img/app/4c_parafac_final.png +0 -0
  20. eemkit-0.1.0/docs/img/app/4d_parafac_by_model.png +0 -0
  21. eemkit-0.1.0/docs/img/app/5a_rivers_time.png +0 -0
  22. eemkit-0.1.0/docs/img/app/5b_rivers_composition.png +0 -0
  23. eemkit-0.1.0/docs/img/app/5c_rivers_tests.png +0 -0
  24. eemkit-0.1.0/docs/img/app/6_export.png +0 -0
  25. eemkit-0.1.0/docs/index.md +80 -0
  26. eemkit-0.1.0/docs/indices.md +29 -0
  27. eemkit-0.1.0/docs/parafac.md +44 -0
  28. eemkit-0.1.0/docs/plotting.md +37 -0
  29. eemkit-0.1.0/docs/quickstart.md +114 -0
  30. eemkit-0.1.0/pyproject.toml +72 -0
  31. eemkit-0.1.0/src/eemkit/__init__.py +51 -0
  32. eemkit-0.1.0/src/eemkit/absorbance.py +216 -0
  33. eemkit-0.1.0/src/eemkit/campaigns.py +276 -0
  34. eemkit-0.1.0/src/eemkit/core/__init__.py +1 -0
  35. eemkit-0.1.0/src/eemkit/core/dataset.py +91 -0
  36. eemkit-0.1.0/src/eemkit/core/grid.py +100 -0
  37. eemkit-0.1.0/src/eemkit/core/history.py +78 -0
  38. eemkit-0.1.0/src/eemkit/corrections/__init__.py +44 -0
  39. eemkit-0.1.0/src/eemkit/corrections/_common.py +58 -0
  40. eemkit-0.1.0/src/eemkit/corrections/blank.py +66 -0
  41. eemkit-0.1.0/src/eemkit/corrections/crop.py +33 -0
  42. eemkit-0.1.0/src/eemkit/corrections/inner_filter.py +123 -0
  43. eemkit-0.1.0/src/eemkit/corrections/raman.py +107 -0
  44. eemkit-0.1.0/src/eemkit/corrections/scatter.py +191 -0
  45. eemkit-0.1.0/src/eemkit/corrections/spectral.py +117 -0
  46. eemkit-0.1.0/src/eemkit/errors.py +37 -0
  47. eemkit-0.1.0/src/eemkit/gui/__init__.py +30 -0
  48. eemkit-0.1.0/src/eemkit/gui/__main__.py +5 -0
  49. eemkit-0.1.0/src/eemkit/gui/campaigns_tab.py +275 -0
  50. eemkit-0.1.0/src/eemkit/gui/common.py +395 -0
  51. eemkit-0.1.0/src/eemkit/gui/corrections_tab.py +334 -0
  52. eemkit-0.1.0/src/eemkit/gui/export_tab.py +137 -0
  53. eemkit-0.1.0/src/eemkit/gui/indices_tab.py +228 -0
  54. eemkit-0.1.0/src/eemkit/gui/main_window.py +258 -0
  55. eemkit-0.1.0/src/eemkit/gui/parafac_tab.py +399 -0
  56. eemkit-0.1.0/src/eemkit/gui/project_tab.py +332 -0
  57. eemkit-0.1.0/src/eemkit/gui/state.py +149 -0
  58. eemkit-0.1.0/src/eemkit/gui/theme.py +125 -0
  59. eemkit-0.1.0/src/eemkit/indices.py +256 -0
  60. eemkit-0.1.0/src/eemkit/io/__init__.py +1 -0
  61. eemkit-0.1.0/src/eemkit/io/_cary_csv.py +174 -0
  62. eemkit-0.1.0/src/eemkit/io/cary60.py +120 -0
  63. eemkit-0.1.0/src/eemkit/io/cary_eclipse.py +140 -0
  64. eemkit-0.1.0/src/eemkit/io/discover.py +176 -0
  65. eemkit-0.1.0/src/eemkit/io/loader.py +158 -0
  66. eemkit-0.1.0/src/eemkit/io/pairing.py +115 -0
  67. eemkit-0.1.0/src/eemkit/parafac/__init__.py +28 -0
  68. eemkit-0.1.0/src/eemkit/parafac/_cp.py +125 -0
  69. eemkit-0.1.0/src/eemkit/parafac/diagnostics.py +56 -0
  70. eemkit-0.1.0/src/eemkit/parafac/export.py +54 -0
  71. eemkit-0.1.0/src/eemkit/parafac/model.py +191 -0
  72. eemkit-0.1.0/src/eemkit/parafac/validation.py +111 -0
  73. eemkit-0.1.0/src/eemkit/pipeline.py +560 -0
  74. eemkit-0.1.0/src/eemkit/plot.py +437 -0
  75. eemkit-0.1.0/tests/conftest.py +142 -0
  76. eemkit-0.1.0/tests/test_absorbance.py +95 -0
  77. eemkit-0.1.0/tests/test_campaigns.py +101 -0
  78. eemkit-0.1.0/tests/test_cary60.py +56 -0
  79. eemkit-0.1.0/tests/test_cary_eclipse.py +112 -0
  80. eemkit-0.1.0/tests/test_corrections.py +284 -0
  81. eemkit-0.1.0/tests/test_dataset.py +99 -0
  82. eemkit-0.1.0/tests/test_grid.py +56 -0
  83. eemkit-0.1.0/tests/test_gui.py +222 -0
  84. eemkit-0.1.0/tests/test_indices.py +112 -0
  85. eemkit-0.1.0/tests/test_pairing.py +61 -0
  86. eemkit-0.1.0/tests/test_parafac.py +144 -0
  87. eemkit-0.1.0/tests/test_pipeline.py +224 -0
  88. eemkit-0.1.0/tests/test_plot.py +115 -0
  89. eemkit-0.1.0/tests/test_real_data.py +52 -0
@@ -0,0 +1,13 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .pytest_cache/
4
+ .ruff_cache/
5
+ .coverage
6
+ htmlcov/
7
+ *.egg-info/
8
+ build/
9
+ dist/
10
+ site/
11
+
12
+ # paper drafts are kept outside the repository
13
+ paper/
@@ -0,0 +1,35 @@
1
+ # Changelog
2
+
3
+ All notable changes are listed here. Versions follow
4
+ [semantic versioning](https://semver.org/).
5
+
6
+ ## 0.1.0 (2026-11-05)
7
+
8
+ First public release.
9
+
10
+ * Readers for Agilent Cary Eclipse 3-D EEMs and Cary 60 absorbance CSV files;
11
+ folder scan, pairing table draft (always excluded until checked) and
12
+ multi-sample `xarray` dataset on common wavelength grids.
13
+ * Corrections in an enforced order: instrument spectral correction,
14
+ absorbance blank, inner filter, blank subtraction, Raman units, scatter
15
+ removal with optional interpolation, crop. Every step is recorded in the
16
+ processing history.
17
+ * Fluorescence indices (FI, HIX, BIX) and Coble peaks.
18
+ * CDOM metrics from the absorbance spectra (`eemkit.absorbance`): a254, a350,
19
+ S275–295, S350–400, SR, E2:E3 and SUVA254 (with a DOC column), after a
20
+ 680–700 nm baseline correction; low-signal values are left empty with the
21
+ reason.
22
+ * Non-negative PARAFAC with missing values, random starts, core consistency,
23
+ leverage, split-half validation and OpenFluor export.
24
+ * Comparison of campaigns, sites and rivers (`eemkit.campaigns`): replicate
25
+ means per site and time, design and confounding warnings, Kruskal–Wallis
26
+ and Dunn–Holm tests within each group, Spearman correlations with site
27
+ position and with covariates, PARAFAC composition; optional site and
28
+ covariate tables.
29
+ * Publication figures (`eemkit.plot`), including a Cary Eclipse colour scale.
30
+ * `eemkit.pipeline`: the whole chain driven by one settings file.
31
+ * Desktop application (`eemkit-gui`, PySide6): a sidebar of steps with their
32
+ status, light and dark themes, and a "Rivers and dates" page; a
33
+ PyInstaller recipe for a stand-alone Windows build, which ships the
34
+ licence texts of eemkit, Qt and every bundled package.
35
+ * Benchmarked against staRdom 1.1.32 on 205 river-water samples.
@@ -0,0 +1,20 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use eemkit, please cite it as below."
3
+ title: "eemkit: EEM processing and PARAFAC modelling of dissolved organic matter fluorescence"
4
+ type: software
5
+ authors:
6
+ - family-names: Cirrone
7
+ given-names: Riccardo Gaetano
8
+ affiliation: University of Siena
9
+ version: 0.1.0
10
+ date-released: "2026-11-05"
11
+ license: GPL-3.0-or-later
12
+ repository-code: "https://github.com/LowCostSensor/eemkit"
13
+ url: "https://lowcostsensor.github.io/eemkit/"
14
+ keywords:
15
+ - fluorescence
16
+ - excitation-emission matrix
17
+ - PARAFAC
18
+ - dissolved organic matter
19
+ - fDOM
20
+ - CDOM