diskmelts 2.2.2__tar.gz → 2.3.1__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 (110) hide show
  1. {diskmelts-2.2.2/src/diskmelts.egg-info → diskmelts-2.3.1}/PKG-INFO +19 -4
  2. {diskmelts-2.2.2 → diskmelts-2.3.1}/README.md +17 -3
  3. {diskmelts-2.2.2 → diskmelts-2.3.1}/pyproject.toml +3 -1
  4. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/__init__.py +5 -3
  5. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/fitting.py +344 -131
  6. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/13C12CH2_single_v2/net_13C12CH2_forward.pt +0 -0
  7. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/13CO2_single_v2/net_13CO2_forward.pt +0 -0
  8. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/C2H2_wavelength_bank_v2/net_C2H2_w11p5to17.pt +0 -0
  9. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/C2H4_single_v2/net_C2H4_forward.pt +0 -0
  10. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/C2H6_single_v2/net_C2H6_forward.pt +0 -0
  11. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/C2HD_single_v2/net_C2HD_forward.pt +0 -0
  12. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/C4H2_single_v2/net_C4H2_forward.pt +0 -0
  13. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/CH4_single_v2/net_CH4_forward.pt +0 -0
  14. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/CO17O_single_v2/net_CO17O_forward.pt +0 -0
  15. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/CO18O_single_v2/net_CO18O_forward.pt +0 -0
  16. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/CO2_single_v2/net_CO2_forward.pt +0 -0
  17. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/HC3N_single_v2/net_HC3N_forward.pt +0 -0
  18. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma0/HCN_single_v2/net_HCN_forward.pt +0 -0
  19. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/13C12CH2_single_v2/net_13C12CH2_forward.pt +0 -0
  20. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/13CO2_single_v2/net_13CO2_forward.pt +0 -0
  21. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/C2H2_wavelength_bank_v2/net_C2H2_w11p5to17.pt +0 -0
  22. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/C2H4_single_v2/net_C2H4_forward.pt +0 -0
  23. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/C2H6_single_v2/net_C2H6_forward.pt +0 -0
  24. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/C2HD_single_v2/net_C2HD_forward.pt +0 -0
  25. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/C4H2_single_v2/net_C4H2_forward.pt +0 -0
  26. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/CH4_single_v2/net_CH4_forward.pt +0 -0
  27. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/CO17O_single_v2/net_CO17O_forward.pt +0 -0
  28. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/CO18O_single_v2/net_CO18O_forward.pt +0 -0
  29. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/CO2_single_v2/net_CO2_forward.pt +0 -0
  30. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/HC3N_single_v2/net_HC3N_forward.pt +0 -0
  31. diskmelts-2.3.1/src/diskmelts/models/Trained_model/sigma2/HCN_single_v2/net_HCN_forward.pt +0 -0
  32. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/plotting.py +39 -23
  33. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/trainmodel.py +12 -4
  34. diskmelts-2.3.1/src/diskmelts/uncertainty.py +314 -0
  35. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/v2_fitting.py +142 -74
  36. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/v2_grid_fitting.py +170 -114
  37. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/v2_paper_comparison.py +8 -2
  38. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/v2_read_plot.py +88 -31
  39. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/validation.py +28 -24
  40. {diskmelts-2.2.2 → diskmelts-2.3.1/src/diskmelts.egg-info}/PKG-INFO +19 -4
  41. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts.egg-info/SOURCES.txt +1 -0
  42. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts.egg-info/requires.txt +1 -0
  43. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/13C12CH2_single_v2/net_13C12CH2_forward.pt +0 -0
  44. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/13CO2_single_v2/net_13CO2_forward.pt +0 -0
  45. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/C2H2_wavelength_bank_v2/net_C2H2_w11p5to17.pt +0 -0
  46. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/C2H4_single_v2/net_C2H4_forward.pt +0 -0
  47. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/C2H6_single_v2/net_C2H6_forward.pt +0 -0
  48. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/C2HD_single_v2/net_C2HD_forward.pt +0 -0
  49. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/C4H2_single_v2/net_C4H2_forward.pt +0 -0
  50. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/CH4_single_v2/net_CH4_forward.pt +0 -0
  51. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/CO17O_single_v2/net_CO17O_forward.pt +0 -0
  52. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/CO18O_single_v2/net_CO18O_forward.pt +0 -0
  53. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/CO2_single_v2/net_CO2_forward.pt +0 -0
  54. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/HC3N_single_v2/net_HC3N_forward.pt +0 -0
  55. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma0/HCN_single_v2/net_HCN_forward.pt +0 -0
  56. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/13C12CH2_single_v2/net_13C12CH2_forward.pt +0 -0
  57. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/13CO2_single_v2/net_13CO2_forward.pt +0 -0
  58. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/C2H2_wavelength_bank_v2/net_C2H2_w11p5to17.pt +0 -0
  59. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/C2H4_single_v2/net_C2H4_forward.pt +0 -0
  60. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/C2H6_single_v2/net_C2H6_forward.pt +0 -0
  61. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/C2HD_single_v2/net_C2HD_forward.pt +0 -0
  62. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/C4H2_single_v2/net_C4H2_forward.pt +0 -0
  63. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/CH4_single_v2/net_CH4_forward.pt +0 -0
  64. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/CO17O_single_v2/net_CO17O_forward.pt +0 -0
  65. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/CO18O_single_v2/net_CO18O_forward.pt +0 -0
  66. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/CO2_single_v2/net_CO2_forward.pt +0 -0
  67. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/HC3N_single_v2/net_HC3N_forward.pt +0 -0
  68. diskmelts-2.2.2/src/diskmelts/models/Trained_model/sigma2/HCN_single_v2/net_HCN_forward.pt +0 -0
  69. {diskmelts-2.2.2 → diskmelts-2.3.1}/LICENSE +0 -0
  70. {diskmelts-2.2.2 → diskmelts-2.3.1}/MANIFEST.in +0 -0
  71. {diskmelts-2.2.2 → diskmelts-2.3.1}/setup.cfg +0 -0
  72. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/__init__.py +0 -0
  73. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/_api.py +0 -0
  74. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/_core.py +0 -0
  75. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/cont_ranges.csv +0 -0
  76. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/cont_ranges_PPan.csv +0 -0
  77. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/regions/carbon_extended.csv +0 -0
  78. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/regions/carbon_extended.json +0 -0
  79. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/regions/carbon_rich.csv +0 -0
  80. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/regions/carbon_rich.json +0 -0
  81. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/regions/ttauri.csv +0 -0
  82. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/regions/ttauri.json +0 -0
  83. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/regions/water.csv +0 -0
  84. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/consub/regions/water.json +0 -0
  85. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/C2H2_wavelength_bank_v2/C2H2_model_bank.json +0 -0
  86. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/C2H2_wavelength_bank_v2/net_C2H2_w6to9.pt +0 -0
  87. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/C3H4_single_v2/net_C3H4_forward.pt +0 -0
  88. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/C6H6_single_v2/net_C6H6_forward.pt +0 -0
  89. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/CH3_single_v2/net_CH3_forward.pt +0 -0
  90. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/H2O_wavelength_bank_v2_fixed/H2O_model_bank.json +0 -0
  91. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/H2O_wavelength_bank_v2_fixed/net_H2O_w13p5to19p2_n13to19_t100to1400.pt +0 -0
  92. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/H2O_wavelength_bank_v2_fixed/net_H2O_w19to25_n13to19_t100to1400.pt +0 -0
  93. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/H2O_wavelength_bank_v2_fixed/net_H2O_w4p9to7p4_n13to19_t100to1400.pt +0 -0
  94. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/H2O_wavelength_bank_v2_fixed/net_H2O_w7p2to11p2_n13to19_t100to1400.pt +0 -0
  95. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/H2O_wavelength_bank_v2_fixed/net_H2O_w9p9to15p1_n13to19_t100to1400.pt +0 -0
  96. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma0/OH_single_v2/net_OH_forward.pt +0 -0
  97. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/C2H2_wavelength_bank_v2/C2H2_model_bank.json +0 -0
  98. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/C2H2_wavelength_bank_v2/net_C2H2_w6to9.pt +0 -0
  99. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/C3H4_single_v2/net_C3H4_forward.pt +0 -0
  100. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/C6H6_single_v2/net_C6H6_forward.pt +0 -0
  101. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/CH3_single_v2/net_CH3_forward.pt +0 -0
  102. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/H2O_wavelength_bank_v2_fixed/H2O_model_bank.json +0 -0
  103. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/H2O_wavelength_bank_v2_fixed/net_H2O_w13p5to19p2_n13to19_t100to1400.pt +0 -0
  104. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/H2O_wavelength_bank_v2_fixed/net_H2O_w19to25_n13to19_t100to1400.pt +0 -0
  105. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/H2O_wavelength_bank_v2_fixed/net_H2O_w4p9to7p4_n13to19_t100to1400.pt +0 -0
  106. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/H2O_wavelength_bank_v2_fixed/net_H2O_w7p2to11p2_n13to19_t100to1400.pt +0 -0
  107. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/H2O_wavelength_bank_v2_fixed/net_H2O_w9p9to15p1_n13to19_t100to1400.pt +0 -0
  108. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts/models/Trained_model/sigma2/OH_single_v2/net_OH_forward.pt +0 -0
  109. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts.egg-info/dependency_links.txt +0 -0
  110. {diskmelts-2.2.2 → diskmelts-2.3.1}/src/diskmelts.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: diskmelts
3
- Version: 2.2.2
3
+ Version: 2.3.1
4
4
  Summary: Machine-learning Enabled Line fitting Tool for Spectra of protoplanetary disks
5
5
  Author: Chengyan Xie, Dingshan Deng
6
6
  License-Expression: MIT
@@ -22,6 +22,7 @@ Requires-Dist: pandas
22
22
  Requires-Dist: scipy
23
23
  Requires-Dist: scikit-learn>=1.0
24
24
  Requires-Dist: matplotlib
25
+ Requires-Dist: emcee>=3
25
26
  Provides-Extra: io
26
27
  Requires-Dist: astropy; extra == "io"
27
28
  Provides-Extra: dev
@@ -107,9 +108,11 @@ fit = fit_stage(
107
108
  wave, flux, molecule="C2H2", pretrained=models,
108
109
  wavelength_range=(13.0, 15.0), fit_ranges=(13.5, 14.1),
109
110
  distance_pc=140.0, n_samples=1024, n_refine=4, n_top=4,
111
+ n_mcmc=20000, # quick look; omit for the converged default (~1 min)
112
+ # errorbars=False, # skip the MCMC error bars and return the best fit only
110
113
  )
111
114
 
112
- # 3. Best-fit T (K), logN (cm^-2), A (au^2), and the spread of top solutions.
115
+ # 3. Best fit, then posterior medians and 16-84% error bars (from MCMC).
113
116
  print(fit["params"]["C2H2"])
114
117
  print(fit["uncertainty"]["C2H2"])
115
118
  ```
@@ -128,6 +131,7 @@ covers multi-stage fits, saved outputs, and plots.
128
131
  | `scipy` | L-BFGS-B optimizer, NNLS, Sobol sampling |
129
132
  | `scikit-learn` | PCA and scaling when training new models |
130
133
  | `matplotlib` | Plotting |
134
+ | `emcee` | MCMC sampling of parameter error bars |
131
135
 
132
136
  ## Continuum subtraction
133
137
 
@@ -227,6 +231,14 @@ makes the returned emitting area physical. `fit_observation` accepts either a
227
231
  CSV path or in-memory `obs_wav`, `obs_flux`, and optional `obs_err` arrays
228
232
  (new in 2.2.1).
229
233
 
234
+ Every fit returns its best fit and, by default, error bars from MCMC sampling
235
+ of the posterior with [emcee](https://emcee.readthedocs.io/). Reported values
236
+ are posterior medians with 16–84% error bars; the noise level accounts for
237
+ correlated pixels and model mismatch, and a `*` marks a range that reaches a
238
+ fit bound. Sampling takes about a minute per stage. Pass `errorbars=False`
239
+ for best fits only. See
240
+ [What the uncertainties mean](https://diskmelts.readthedocs.io/en/latest/quickstart.html#uncertainties).
241
+
230
242
  For a synthetic spectrum, `wave, flux = diskmelts.synthesize_spectrum('HCN',
231
243
  T=300, logN=18, A=1)` returns the native wavelength axis and model flux (new
232
244
  in 2.2.1). See the
@@ -270,8 +282,11 @@ assumes 2 km/s turbulent broadening. Select sigma=2 with `load_fitting_models(..
270
282
  | OH | 15–26 | 100–1400 | 13–19.5 |
271
283
 
272
284
  `diskmelts.MODEL_SPECS` records the exact domains, PCA sizes, and network
273
- layers. Version 2.2.0 lacks the sigma=0 OH and 6–9 µm C2H2 checkpoints;
274
- upgrade with `python -m pip install -U diskmelts`.
285
+ layers. Version 2.3.0 retrains 26 of these checkpoints (13C12CH2, 13CO2,
286
+ C2H2 11.5–17 µm, C2H4, C2H6, C2HD, C4H2, CH4, CO17O, CO18O, CO2, HC3N, and HCN at
287
+ both sigmas) with lower held-out error; see the
288
+ [changelog](https://diskmelts.readthedocs.io/en/latest/changelog.html).
289
+ Upgrade with `python -m pip install -U diskmelts`.
275
290
 
276
291
  ## Training and validation data
277
292
 
@@ -68,9 +68,11 @@ fit = fit_stage(
68
68
  wave, flux, molecule="C2H2", pretrained=models,
69
69
  wavelength_range=(13.0, 15.0), fit_ranges=(13.5, 14.1),
70
70
  distance_pc=140.0, n_samples=1024, n_refine=4, n_top=4,
71
+ n_mcmc=20000, # quick look; omit for the converged default (~1 min)
72
+ # errorbars=False, # skip the MCMC error bars and return the best fit only
71
73
  )
72
74
 
73
- # 3. Best-fit T (K), logN (cm^-2), A (au^2), and the spread of top solutions.
75
+ # 3. Best fit, then posterior medians and 16-84% error bars (from MCMC).
74
76
  print(fit["params"]["C2H2"])
75
77
  print(fit["uncertainty"]["C2H2"])
76
78
  ```
@@ -89,6 +91,7 @@ covers multi-stage fits, saved outputs, and plots.
89
91
  | `scipy` | L-BFGS-B optimizer, NNLS, Sobol sampling |
90
92
  | `scikit-learn` | PCA and scaling when training new models |
91
93
  | `matplotlib` | Plotting |
94
+ | `emcee` | MCMC sampling of parameter error bars |
92
95
 
93
96
  ## Continuum subtraction
94
97
 
@@ -188,6 +191,14 @@ makes the returned emitting area physical. `fit_observation` accepts either a
188
191
  CSV path or in-memory `obs_wav`, `obs_flux`, and optional `obs_err` arrays
189
192
  (new in 2.2.1).
190
193
 
194
+ Every fit returns its best fit and, by default, error bars from MCMC sampling
195
+ of the posterior with [emcee](https://emcee.readthedocs.io/). Reported values
196
+ are posterior medians with 16–84% error bars; the noise level accounts for
197
+ correlated pixels and model mismatch, and a `*` marks a range that reaches a
198
+ fit bound. Sampling takes about a minute per stage. Pass `errorbars=False`
199
+ for best fits only. See
200
+ [What the uncertainties mean](https://diskmelts.readthedocs.io/en/latest/quickstart.html#uncertainties).
201
+
191
202
  For a synthetic spectrum, `wave, flux = diskmelts.synthesize_spectrum('HCN',
192
203
  T=300, logN=18, A=1)` returns the native wavelength axis and model flux (new
193
204
  in 2.2.1). See the
@@ -231,8 +242,11 @@ assumes 2 km/s turbulent broadening. Select sigma=2 with `load_fitting_models(..
231
242
  | OH | 15–26 | 100–1400 | 13–19.5 |
232
243
 
233
244
  `diskmelts.MODEL_SPECS` records the exact domains, PCA sizes, and network
234
- layers. Version 2.2.0 lacks the sigma=0 OH and 6–9 µm C2H2 checkpoints;
235
- upgrade with `python -m pip install -U diskmelts`.
245
+ layers. Version 2.3.0 retrains 26 of these checkpoints (13C12CH2, 13CO2,
246
+ C2H2 11.5–17 µm, C2H4, C2H6, C2HD, C4H2, CH4, CO17O, CO18O, CO2, HC3N, and HCN at
247
+ both sigmas) with lower held-out error; see the
248
+ [changelog](https://diskmelts.readthedocs.io/en/latest/changelog.html).
249
+ Upgrade with `python -m pip install -U diskmelts`.
236
250
 
237
251
  ## Training and validation data
238
252
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "diskmelts"
7
- version = "2.2.2"
7
+ version = "2.3.1"
8
8
  description = "Machine-learning Enabled Line fitting Tool for Spectra of protoplanetary disks"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -31,6 +31,8 @@ dependencies = [
31
31
  # Used only to fit PCA/scalers when training; checkpoints store plain arrays.
32
32
  "scikit-learn>=1.0",
33
33
  "matplotlib",
34
+ # Ensemble MCMC for posterior error bars (pure Python, NumPy only).
35
+ "emcee>=3",
34
36
  ]
35
37
 
36
38
  [project.urls]
@@ -13,6 +13,7 @@ from diskmelts.trainmodel import (
13
13
  select_grid_holdout,
14
14
  tune_pca_components,
15
15
  convert_legacy_checkpoint,
16
+ grid_sha256,
16
17
  )
17
18
  from diskmelts.fitting import (
18
19
  load_models,
@@ -58,6 +59,9 @@ from diskmelts.v2_read_plot import (
58
59
  from diskmelts.v2_paper_comparison import plot_literature_comparisons
59
60
  from diskmelts import consub
60
61
 
62
+ # fit_nested, validate_nt, and plot_validation_split stay importable for
63
+ # existing scripts but are deprecated since 2.3.0 and left out of __all__.
64
+
61
65
  __all__ = [
62
66
  "consub",
63
67
  "MODEL_SPECS",
@@ -80,11 +84,11 @@ __all__ = [
80
84
  "select_grid_holdout",
81
85
  "tune_pca_components",
82
86
  "convert_legacy_checkpoint",
87
+ "grid_sha256",
83
88
  # fitting
84
89
  "load_models",
85
90
  "load_model_bank",
86
91
  "generate_spectrum",
87
- "fit_nested",
88
92
  "fit_molecules",
89
93
  "load_observed_spectrum",
90
94
  "save_fit_outputs",
@@ -93,12 +97,10 @@ __all__ = [
93
97
  "print_fit_params",
94
98
  "save_fitted_comparison",
95
99
  # validation
96
- "validate_nt",
97
100
  "validate_nt_holdout",
98
101
  "validate_full",
99
102
  # plotting
100
103
  "plot_fit",
101
104
  "plot_validation",
102
- "plot_validation_split",
103
105
  "plot_bank_reconstruction",
104
106
  ]