synference 0.1.1__tar.gz → 0.1.2__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 (107) hide show
  1. {synference-0.1.1 → synference-0.1.2}/.gitignore +2 -2
  2. {synference-0.1.1 → synference-0.1.2}/PKG-INFO +1 -1
  3. {synference-0.1.1 → synference-0.1.2}/docs/source/FAQ/FAQ.rst +1 -4
  4. synference-0.1.2/docs/source/advanced_topics/custom_loop.ipynb +271 -0
  5. synference-0.1.2/docs/source/gfx/synference_flow.png +0 -0
  6. synference-0.1.2/docs/source/gfx/synference_logo.png +0 -0
  7. {synference-0.1.1 → synference-0.1.2}/docs/source/index.rst +34 -12
  8. {synference-0.1.1 → synference-0.1.2}/docs/source/library_gen/basic_library_generation.ipynb +1 -5
  9. {synference-0.1.1 → synference-0.1.2}/docs/source/library_gen/bring_your_own_library.ipynb +1 -5
  10. {synference-0.1.1 → synference-0.1.2}/docs/source/library_gen/complex_library_generation.ipynb +25 -309
  11. {synference-0.1.1 → synference-0.1.2}/docs/source/library_gen/multithreading_library_generation.ipynb +1 -5
  12. {synference-0.1.1 → synference-0.1.2}/docs/source/library_gen/synthesizer_crash_course.ipynb +2 -2
  13. {synference-0.1.1 → synference-0.1.2}/docs/source/noise_modelling/noise_models.ipynb +1 -5
  14. {synference-0.1.1 → synference-0.1.2}/docs/source/posterior_inference/catalogue_fitting.ipynb +1 -11
  15. {synference-0.1.1 → synference-0.1.2}/docs/source/posterior_inference/sed_recovery.ipynb +1 -11
  16. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi_train/basic_sbi_model.ipynb +1 -11
  17. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi_train/feature_array.ipynb +1 -11
  18. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi_train/model_optimization.ipynb +1 -11
  19. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi_train/model_validation.ipynb +1 -11
  20. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi_train/online_training.ipynb +1 -5
  21. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi_train/validation_sampling.ipynb +3 -34
  22. {synference-0.1.1 → synference-0.1.2}/pyproject.toml +1 -1
  23. {synference-0.1.1 → synference-0.1.2}/src/synference/library.py +29 -13
  24. {synference-0.1.1 → synference-0.1.2}/src/synference/sbi_runner.py +19 -4
  25. synference-0.1.1/docs/source/advanced_topics/custom_loop.ipynb +0 -3450
  26. synference-0.1.1/examples/online/notebooks/active_learning.ipynb +0 -213
  27. synference-0.1.1/examples/simformer/notebooks/integrated_simformer_testing.ipynb +0 -69
  28. synference-0.1.1/examples/simformer/notebooks/model_comparison.ipynb +0 -451
  29. synference-0.1.1/examples/simformer/notebooks/sbi_simformer.ipynb +0 -736
  30. synference-0.1.1/examples/simformer/notebooks/second_test.ipynb +0 -338
  31. synference-0.1.1/examples/simformer/notebooks/simformer_testing.ipynb +0 -671
  32. {synference-0.1.1 → synference-0.1.2}/.github/workflows/docs.yml +0 -0
  33. {synference-0.1.1 → synference-0.1.2}/.github/workflows/publish_pypi.yml +0 -0
  34. {synference-0.1.1 → synference-0.1.2}/.github/workflows/python-app.yml +0 -0
  35. {synference-0.1.1 → synference-0.1.2}/.pre-commit-config.yaml +0 -0
  36. {synference-0.1.1 → synference-0.1.2}/AUTHORS.rst +0 -0
  37. {synference-0.1.1 → synference-0.1.2}/CODE_OF_CONDUCT.md +0 -0
  38. {synference-0.1.1 → synference-0.1.2}/LICENSE.md +0 -0
  39. {synference-0.1.1 → synference-0.1.2}/README.md +0 -0
  40. {synference-0.1.1 → synference-0.1.2}/docs/CONTRIBUTING.md +0 -0
  41. {synference-0.1.1 → synference-0.1.2}/docs/Makefile +0 -0
  42. {synference-0.1.1 → synference-0.1.2}/docs/make.bat +0 -0
  43. {synference-0.1.1 → synference-0.1.2}/docs/source/API.rst +0 -0
  44. {synference-0.1.1 → synference-0.1.2}/docs/source/advanced_topics/advanced_topics.rst +0 -0
  45. {synference-0.1.1 → synference-0.1.2}/docs/source/advanced_topics/simformer.ipynb +0 -0
  46. {synference-0.1.1 → synference-0.1.2}/docs/source/conf.py +0 -0
  47. {synference-0.1.1 → synference-0.1.2}/docs/source/getting_started/contributing.rst +0 -0
  48. {synference-0.1.1 → synference-0.1.2}/docs/source/getting_started/getting_started.rst +0 -0
  49. {synference-0.1.1 → synference-0.1.2}/docs/source/getting_started/installation.rst +0 -0
  50. {synference-0.1.1 → synference-0.1.2}/docs/source/getting_started/overview.rst +0 -0
  51. {synference-0.1.1 → synference-0.1.2}/docs/source/library_gen/library_generation.rst +0 -0
  52. {synference-0.1.1 → synference-0.1.2}/docs/source/noise_modelling/creating_noise_model.rst +0 -0
  53. {synference-0.1.1 → synference-0.1.2}/docs/source/notebook_examples/cookbook.rst +0 -0
  54. {synference-0.1.1 → synference-0.1.2}/docs/source/posterior_inference/intro.rst +0 -0
  55. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi/SBI.ipynb +0 -0
  56. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi/introduction_to_sbi.rst +0 -0
  57. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi_train/complex_sbi_model.ipynb +0 -0
  58. {synference-0.1.1 → synference-0.1.2}/docs/source/sbi_train/intro_sbi.rst +0 -0
  59. {synference-0.1.1 → synference-0.1.2}/docs/source/templates/custom-class-template.rst +0 -0
  60. {synference-0.1.1 → synference-0.1.2}/docs/source/templates/custom-module-template.rst +0 -0
  61. {synference-0.1.1 → synference-0.1.2}/examples/README.rst +0 -0
  62. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/batch_library_generation.py +0 -0
  63. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/final_library_generation.py +0 -0
  64. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/final_library_generation_multinode.py +0 -0
  65. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/fixed_params.py +0 -0
  66. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/generate_agn_library.py +0 -0
  67. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/generate_library_basic.py +0 -0
  68. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/generate_library_full.py +0 -0
  69. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/generate_pop3_library.py +0 -0
  70. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/generate_spectral_library.py +0 -0
  71. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/grab_filters_for_node.py +0 -0
  72. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/make_library.slurm +0 -0
  73. {synference-0.1.1 → synference-0.1.2}/examples/library_generation/scripts/min_example.py +0 -0
  74. {synference-0.1.1 → synference-0.1.2}/examples/online/notebooks/online_learning.ipynb +0 -0
  75. {synference-0.1.1 → synference-0.1.2}/examples/online/scripts/online_learning.py +0 -0
  76. {synference-0.1.1 → synference-0.1.2/examples}/paper/bagpipes_comparison.ipynb +0 -0
  77. {synference-0.1.1 → synference-0.1.2/examples}/paper/missing_data.ipynb +0 -0
  78. {synference-0.1.1 → synference-0.1.2/examples}/paper/model_testing.ipynb +0 -0
  79. {synference-0.1.1 → synference-0.1.2/examples}/paper/obs.ipynb +0 -0
  80. {synference-0.1.1 → synference-0.1.2/examples}/paper/redshift_inference.ipynb +0 -0
  81. {synference-0.1.1 → synference-0.1.2}/examples/sbi/configs/best_params.yaml +0 -0
  82. {synference-0.1.1 → synference-0.1.2}/examples/sbi/configs/best_params_2101.yaml +0 -0
  83. {synference-0.1.1 → synference-0.1.2}/examples/sbi/configs/custom_loop.yaml +0 -0
  84. {synference-0.1.1 → synference-0.1.2}/examples/sbi/configs/custom_loop_mdn.yaml +0 -0
  85. {synference-0.1.1 → synference-0.1.2}/examples/sbi/configs/custom_loop_test.yaml +0 -0
  86. {synference-0.1.1 → synference-0.1.2}/examples/sbi/notebooks/optimize_sbi.ipynb +0 -0
  87. {synference-0.1.1 → synference-0.1.2}/examples/sbi/notebooks/train_spectral_model.ipynb +0 -0
  88. {synference-0.1.1 → synference-0.1.2}/examples/sbi/scripts/basic_model.py +0 -0
  89. {synference-0.1.1 → synference-0.1.2}/examples/sbi/scripts/train_model.py +0 -0
  90. {synference-0.1.1 → synference-0.1.2}/examples/sbi/scripts/train_spectral_model.py +0 -0
  91. {synference-0.1.1 → synference-0.1.2}/examples/sbi/scripts/train_sphinx_model.py +0 -0
  92. {synference-0.1.1 → synference-0.1.2}/examples/sbi/scripts/wait_for_gpu.py +0 -0
  93. {synference-0.1.1 → synference-0.1.2}/examples/sbi/slurm/optimize_model.slurm +0 -0
  94. {synference-0.1.1 → synference-0.1.2}/examples/sbi/slurm/train_final_model.slurm +0 -0
  95. {synference-0.1.1 → synference-0.1.2}/examples/simformer/scripts/fit_simformer_model.py +0 -0
  96. {synference-0.1.1 → synference-0.1.2}/examples/simformer/scripts/model_comparison.py +0 -0
  97. {synference-0.1.1 → synference-0.1.2}/src/synference/__init__.py +0 -0
  98. {synference-0.1.1 → synference-0.1.2}/src/synference/custom_runner.py +0 -0
  99. {synference-0.1.1 → synference-0.1.2}/src/synference/noise_models.py +0 -0
  100. {synference-0.1.1 → synference-0.1.2}/src/synference/py.typed +0 -0
  101. {synference-0.1.1 → synference-0.1.2}/src/synference/simformer.py +0 -0
  102. {synference-0.1.1 → synference-0.1.2}/src/synference/utils.py +0 -0
  103. {synference-0.1.1 → synference-0.1.2}/tests/conftest.py +0 -0
  104. {synference-0.1.1 → synference-0.1.2}/tests/test_library.py +0 -0
  105. {synference-0.1.1 → synference-0.1.2}/tests/test_sbi.py +0 -0
  106. {synference-0.1.1 → synference-0.1.2}/tests/test_simulator.py +0 -0
  107. {synference-0.1.1 → synference-0.1.2}/tests/test_uncertainty_models.py +0 -0
@@ -4,7 +4,6 @@ docs/source/_autosummary
4
4
  docs/source/auto_examples/
5
5
  docs/source/gen_modules/
6
6
  docs/source/sg_execution_times.rst
7
-
8
7
  # Python-generated files
9
8
  __pycache__/
10
9
  *.py[oc]
@@ -58,4 +57,5 @@ tests/test_grids/*
58
57
  !tests/test_libraries/sps_test_library.hdf5
59
58
  !docs/build/gfx
60
59
  !docs/source/example_models/BPASS_DB_v4/*
61
- !docs/source/example_libraries/*
60
+ !docs/source/example_libraries/*
61
+ !docs/source/gfx/*.png
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synference
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Simulation-based inference for SED-fitting of galaxy photometry and spectroscopy
5
5
  Project-URL: Homepage, https://github.com/synthesizer-project/synference
6
6
  Project-URL: Bug Reports, https://github.com/synthesizer-project/synference/issues
@@ -43,10 +43,7 @@ This will load the model from the specified path and move it to the CPU for infe
43
43
  What other SBI tools are available for SED fitting and more generally for galaxy inference?
44
44
  --------------------------------------------------------------------------------------------
45
45
 
46
- There are a number of great tools out there for specific applications of SBI.
47
- This is not an exhaustive list (and feel free to suggest more), but below
48
- we've collated some of the useful tools we've found. Please cite the
49
- relevant papers if you use these tools.
46
+ There are a number of great tools out there for specific applications of SBI. This is not an exhaustive list (and feel free to suggest more), but below we've collated some of the useful tools we've found. Please cite the relevant papers if you use these tools.
50
47
 
51
48
  1. `SBIPIX <https://github.com/patriglesias/SBIPIX/>`_ - Published
52
49
  `here <https://ui.adsabs.harvard.edu/abs/2025arXiv250604336I/abstract>`_.
@@ -0,0 +1,271 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "72b87783",
6
+ "metadata": {},
7
+ "source": [
8
+ "# Custom Training Loop\n",
9
+ "\n",
10
+ "Synference implements a custom training loop (within the `custom_runner.py` submodule) which offers more flexibility than the built-in training loops of `sbi` and `LtU-ILI`. This allows users to implement advanced training strategies, such as custom optimizers (e.g. AdamW), and several quality of life features, such as model caching during training to avoid losing progress in case of interruptions.\n",
11
+ "\n",
12
+ "Crucially, this custom training loop is also directly integrated with Optuna for hyperparameter optimization, allowing users to easily perform hyperparameter searches while training their models. It reports training progress to Optuna, allowing users to monitor the performance of different hyperparameter configurations in real-time, and allows pruning of unpromising trials based on intermediate results."
13
+ ]
14
+ },
15
+ {
16
+ "cell_type": "markdown",
17
+ "id": "2843c835",
18
+ "metadata": {},
19
+ "source": [
20
+ "The interface to this is still in beta, and will be stabilized in future releases and brought into line with the rest of Synference's API.\n",
21
+ "\n",
22
+ "Currently the custom training loop is configured via a YAML configuration file, which specifies the training parameters, optimizer settings, and other options. An example configuration file is provided below:\n",
23
+ "\n",
24
+ "```yaml\n",
25
+ "\n",
26
+ "train_args:\n",
27
+ " skip_optimization: True\n",
28
+ " validation_fraction: 0.1\n",
29
+ " fixed_params:\n",
30
+ " model_choice: \"nsf\" # Must be a list\n",
31
+ " optimizer_choice: \"Adam\" # Must be a list\n",
32
+ " learning_rate: 0.0007460108070908076\n",
33
+ " training_batch_size: 79\n",
34
+ " stop_after_epochs: 57\n",
35
+ " clip_max_norm: 6.656577606872957\n",
36
+ " nsf_hidden_features: 30\n",
37
+ " nsf_num_transforms: 14\n",
38
+ "\n",
39
+ "\n",
40
+ "```\n",
41
+ "\n",
42
+ "This configuration file does not perform optimization, but instead trains a model with specified hyperparameters. To perform hyperparameter optimization, an example configuration file is provided below:\n",
43
+ "\n",
44
+ "```yaml\n",
45
+ "\n",
46
+ "train_args:\n",
47
+ " skip_optimization: False\n",
48
+ " validation_fraction: 0.1\n",
49
+ " optuna:\n",
50
+ " n_trials: 50\n",
51
+ " build_final_model: False\n",
52
+ " objective:\n",
53
+ " metric: 'log_prob'\n",
54
+ " study:\n",
55
+ " study_name: \"\"\n",
56
+ " storage: \"\"\n",
57
+ " direction: 'maximize'\n",
58
+ " load_if_exists: True\n",
59
+ " pruner:\n",
60
+ " type: Median\n",
61
+ " n_startup_trials: 10\n",
62
+ " n_warmup_steps: 30\n",
63
+ " interval_steps: 10\n",
64
+ " n_min_trials: 10\n",
65
+ " #max_resource: 1000\n",
66
+ " #reduction_factor: 3\n",
67
+ " #min_resource: 10\n",
68
+ " #bootstrap_count: 10\n",
69
+ " search_space:\n",
70
+ " model_choice: [\"mdn\", \"nsf\"] # Must be a list\n",
71
+ " optimizer_choice: [\"AdamW\", \"Adam\"] # Must be a list\n",
72
+ " learning_rate:\n",
73
+ " type: \"float\"\n",
74
+ " low: 1e-6\n",
75
+ " high: 5e-2\n",
76
+ " log: True\n",
77
+ " training_batch_size:\n",
78
+ " type: \"int\"\n",
79
+ " low: 32\n",
80
+ " high: 256\n",
81
+ " stop_after_epochs:\n",
82
+ " type: \"int\"\n",
83
+ " low: 10\n",
84
+ " high: 60\n",
85
+ " clip_max_norm:\n",
86
+ " type: \"float\"\n",
87
+ " low: 0.1\n",
88
+ " high: 10.0\n",
89
+ " models:\n",
90
+ " nsf: \n",
91
+ " hidden_features:\n",
92
+ " type: \"int\"\n",
93
+ " low: 10\n",
94
+ " high: 100\n",
95
+ " num_transforms:\n",
96
+ " type: \"int\"\n",
97
+ " low: 3\n",
98
+ " high: 128\n",
99
+ " mdn: \n",
100
+ " hidden_features:\n",
101
+ " type: \"int\"\n",
102
+ " low: 10\n",
103
+ " high: 200\n",
104
+ " num_components:\n",
105
+ " type: \"int\"\n",
106
+ " low: 10\n",
107
+ " high: 600\n",
108
+ "\n",
109
+ "```\n",
110
+ "\n",
111
+ "\n",
112
+ "This configuration file will perform hyperparameter optimization over the specified search space, using the median pruner to prune unpromising trials. The objective metric is set to 'log_prob', meaning that the optimization will aim to maximize the log probability of the validation data under the trained model.\n",
113
+ "\n",
114
+ "If you are performing optimization parallelized across multiple nodes, you will probably want to run an external SQL database which supports concurrent connections, such as PostgreSQL or MySQL, and provide the appropriate connection string in the `storage` field of the `study` section of the configuration file, or directly via the `sql_db_path` argument of the `run_single_sbi()` method."
115
+ ]
116
+ },
117
+ {
118
+ "cell_type": "markdown",
119
+ "id": "3145980e",
120
+ "metadata": {},
121
+ "source": [
122
+ "```python\n",
123
+ "\n",
124
+ "fitter.run_single_sbi(...,\n",
125
+ " custom_config_yaml=\"path/to/custom_config.yaml\",\n",
126
+ " sql_db_path='mysql+pymysql://root:password@url:port/study_name'\n",
127
+ ")\n",
128
+ "\n",
129
+ "```"
130
+ ]
131
+ },
132
+ {
133
+ "cell_type": "markdown",
134
+ "id": "6261165f",
135
+ "metadata": {},
136
+ "source": [
137
+ "We recommend [Optuna Dashboard](https://optuna-dashboard.readthedocs.io/en/latest/getting-started.html) for monitoring the progress of hyperparameter optimization. This can be launched using the following command:\n",
138
+ "\n",
139
+ "```bash\n",
140
+ "optuna-dashboard your_sql_link\n",
141
+ "```"
142
+ ]
143
+ },
144
+ {
145
+ "cell_type": "markdown",
146
+ "id": "cc76e813",
147
+ "metadata": {},
148
+ "source": [
149
+ "## Custom Loop with a Fixed Model\n",
150
+ "\n",
151
+ "You can also use the custom training loop to train models with fixed parameter values, with a different configuration. This lets you take advantage of the additional features such as the customizable optimizer, model training checkpoints and ongoing training monitoring.\n",
152
+ "\n",
153
+ "Here is an example of the yaml file to train a specific fixed model, in this case a Neural Spline Flow, using the Adam optimizer, with 30 hidden features and 14 transforms."
154
+ ]
155
+ },
156
+ {
157
+ "cell_type": "markdown",
158
+ "id": "cb63e847",
159
+ "metadata": {},
160
+ "source": [
161
+ "```yaml\n",
162
+ "train_args:\n",
163
+ " skip_optimization: True\n",
164
+ " validation_fraction: 0.1\n",
165
+ " fixed_params:\n",
166
+ " model_choice: \"nsf\" # Must be a list\n",
167
+ " optimizer_choice: \"Adam\" # Must be a list\n",
168
+ " learning_rate: 0.0007460108070908076\n",
169
+ " training_batch_size: 79\n",
170
+ " stop_after_epochs: 57\n",
171
+ " clip_max_norm: 6.656577606872957\n",
172
+ " nsf_hidden_features: 30\n",
173
+ " nsf_num_transforms: 14\n",
174
+ "```"
175
+ ]
176
+ },
177
+ {
178
+ "cell_type": "code",
179
+ "execution_count": null,
180
+ "id": "be69d999",
181
+ "metadata": {},
182
+ "outputs": [],
183
+ "source": [
184
+ "config = {\n",
185
+ " \"train_args\": {\n",
186
+ " \"skip_optimization\": True,\n",
187
+ " \"validation_fraction\": 0.1,\n",
188
+ " \"fixed_params\": {\n",
189
+ " \"model_choice\": \"nsf\",\n",
190
+ " \"optimizer_choice\": \"Adam\",\n",
191
+ " \"learning_rate\": 0.0007460108070908076,\n",
192
+ " \"training_batch_size\": 79,\n",
193
+ " \"stop_after_epochs\": 57,\n",
194
+ " \"clip_max_norm\": 6.656577606872957,\n",
195
+ " \"nsf_hidden_features\": 30,\n",
196
+ " \"nsf_num_transforms\": 14,\n",
197
+ " },\n",
198
+ " }\n",
199
+ "}\n",
200
+ "\n",
201
+ "import yaml\n",
202
+ "\n",
203
+ "with open(\"config.yaml\", \"w\") as f:\n",
204
+ " yaml.dump(config, f)"
205
+ ]
206
+ },
207
+ {
208
+ "cell_type": "markdown",
209
+ "id": "29780005",
210
+ "metadata": {},
211
+ "source": [
212
+ "First we initialize a pre-configured model library."
213
+ ]
214
+ },
215
+ {
216
+ "cell_type": "code",
217
+ "execution_count": null,
218
+ "id": "0ca21ae1",
219
+ "metadata": {},
220
+ "outputs": [],
221
+ "source": [
222
+ "from synference import SBI_Fitter, test_data_dir\n",
223
+ "\n",
224
+ "fitter = SBI_Fitter.init_from_hdf5(\n",
225
+ " model_name=\"test\", hdf5_path=f\"{test_data_dir}/example_model_library.hdf5\"\n",
226
+ ")"
227
+ ]
228
+ },
229
+ {
230
+ "cell_type": "markdown",
231
+ "id": "00dae994",
232
+ "metadata": {},
233
+ "source": [
234
+ "Then we create our training arrays."
235
+ ]
236
+ },
237
+ {
238
+ "cell_type": "code",
239
+ "execution_count": null,
240
+ "id": "89b72d4c",
241
+ "metadata": {},
242
+ "outputs": [],
243
+ "source": [
244
+ "fitter.create_feature_array();"
245
+ ]
246
+ },
247
+ {
248
+ "cell_type": "markdown",
249
+ "id": "429f7303",
250
+ "metadata": {},
251
+ "source": [
252
+ "Now we can train a model - note that this is a terrible model with far too small a dataset, purely for demonstration purposes.\n",
253
+ "\n",
254
+ "The plotted live training loss curves look slightly odd in a notebook format, but you can see the live progress of your model on your training and validation set, and see where the best performing training epoch is."
255
+ ]
256
+ },
257
+ {
258
+ "cell_type": "code",
259
+ "execution_count": null,
260
+ "id": "7d8c65ce",
261
+ "metadata": {},
262
+ "outputs": [],
263
+ "source": [
264
+ "fitter.run_single_sbi(custom_config_yaml=\"config.yaml\")"
265
+ ]
266
+ }
267
+ ],
268
+ "metadata": {},
269
+ "nbformat": 4,
270
+ "nbformat_minor": 5
271
+ }
@@ -32,10 +32,29 @@ Contents
32
32
  Citation & Acknowledgement
33
33
  --------------------------
34
34
 
35
- Please cite **all** of the following papers if you use Synference in your research. Harvey et al. 2025 (in prep.) introduces the Synference code, `Lovell et al. 2025 <https://ui.adsabs.harvard.edu/abs/2025arXiv250803888L/abstract>`_ & `Roper et al. 2025 <https://ui.adsabs.harvard.edu/abs/2025arXiv250615811R/abstract>`_ introduce the Synthesizer code, and `Ho et al. 2024 <https://ui.adsabs.harvard.edu/abs/2024OJAp....7E..54H/abstract>`_ introduces the LtU-ILI framework.
35
+ Please cite **all** of the following papers if you use Synference in your research. `Harvey et al. 2026 <https://arxiv.org/abs/2511.10640>`_ introduces the Synference code, `Lovell et al. 2025 <https://ui.adsabs.harvard.edu/abs/2025arXiv250803888L/abstract>`_ & `Roper et al. 2026 <https://ui.adsabs.harvard.edu/abs/2025arXiv250615811R/abstract>`_ introduce the Synthesizer code, and `Ho et al. 2024 <https://ui.adsabs.harvard.edu/abs/2024OJAp....7E..54H/abstract>`_ introduces the LtU-ILI framework.
36
36
 
37
37
  .. code-block:: bibtex
38
38
 
39
+ @ARTICLE{2026MNRAS.547ag282H,
40
+ author = {{Harvey}, Thomas and {Lovell}, Christopher C. and {Newman}, Sophie and {Conselice}, Christopher J. and {Austin}, Duncan and {Roper}, William J. and {Vijayan}, Aswin P. and {Wilkins}, Stephen M. and {Iglesias-Navarro}, Patricia and {Rusakov}, Vadim and {Li}, Qiong and {Adams}, Nathan and {Magdwick}, Kai and {Goolsby}, Caio M. and {Huertas-Company}, Marc and {Ho}, Matthew},
41
+ title = "{Flexible simulation-based inference for galaxy photometric fitting with synthesizer}",
42
+ journal = {\mnras},
43
+ keywords = {methods: data analysis, techniques: photometric, galaxies: photometry, galaxies: stellar content, Astrophysics of Galaxies, Cosmology and Nongalactic Astrophysics, Instrumentation and Methods for Astrophysics},
44
+ year = 2026,
45
+ month = mar,
46
+ volume = {547},
47
+ number = {1},
48
+ eid = {stag282},
49
+ pages = {stag282},
50
+ doi = {10.1093/mnras/stag282},
51
+ archivePrefix = {arXiv},
52
+ eprint = {2511.10640},
53
+ primaryClass = {astro-ph.GA},
54
+ adsurl = {https://ui.adsabs.harvard.edu/abs/2026MNRAS.547ag282H},
55
+ adsnote = {Provided by the SAO/NASA Astrophysics Data System}
56
+ }
57
+
39
58
  @ARTICLE{2025OJAp....8E.152L,
40
59
  author = {{Lovell}, Christopher C. and {Roper}, William J. and {Vijayan}, Aswin P. and {Wilkins}, Stephen M. and {Newman}, Sophie and {Seeyave}, Louise},
41
60
  title = "{Synthesizer: a Software Package for Synthetic Astronomical Observables}",
@@ -54,19 +73,22 @@ Please cite **all** of the following papers if you use Synference in your resear
54
73
  adsnote = {Provided by the SAO/NASA Astrophysics Data System}
55
74
  }
56
75
 
57
- @ARTICLE{2025arXiv250615811R,
58
- author = {{Roper}, Will J. and {Lovell}, Christopher and {Vijayan}, Aswin and {Wilkins}, Stephen and {Akins}, Hollis and {Berger}, Sabrina and {Sant Fournier}, Connor and {Harvey}, Thomas and {Iyer}, Kartheik and {Leonardi}, Marco and {Newman}, Sophie and {Pautasso}, Borja and {Perry}, Ashley and {Seeyave}, Louise and {Sommovigo}, Laura},
59
- title = "{Synthesizer: Synthetic Observables For Modern Astronomy}",
60
- journal = {arXiv e-prints},
61
- keywords = {Instrumentation and Methods for Astrophysics, Astrophysics of Galaxies},
62
- year = 2025,
63
- month = jun,
64
- eid = {arXiv:2506.15811},
65
- pages = {arXiv:2506.15811},
76
+ @ARTICLE{2026JOSS...11.9436R,
77
+ author = {{Roper}, Will and {Lovell}, Christopher and {Vijayan}, Aswin and {Wilkins}, Stephen and {Akins}, Hollis and {Berger}, Sabrina and {Sant Fournier}, Connor and {Harvey}, Thomas and {Iyer}, Kartheik and {Leonardi}, Marco and {Newman}, Sophie and {Pautasso}, Borja and {Perry}, Ashley and {Seeyave}, Louise and {Sommovigo}, Laura and {Punyasheel}, Paurush and {Aufan Stoffels d'Hautefort}, Adrien and {Rawlings}, Alex},
78
+ title = "{Synthesizer: Synthetic Observables for Modern Astronomy}",
79
+ journal = {The Journal of Open Source Software},
80
+ keywords = {astronomy, astrophysics, forward modelling, simulations, Python, C++, C, Instrumentation and Methods for Astrophysics, Astrophysics of Galaxies},
81
+ year = 2026,
82
+ month = mar,
83
+ volume = {11},
84
+ number = {119},
85
+ eid = {9436},
86
+ pages = {9436},
87
+ doi = {10.21105/joss.09436},
66
88
  archivePrefix = {arXiv},
67
89
  eprint = {2506.15811},
68
90
  primaryClass = {astro-ph.IM},
69
- adsurl = {https://ui.adsabs.harvard.edu/abs/2025arXiv250615811R},
91
+ adsurl = {https://ui.adsabs.harvard.edu/abs/2026JOSS...11.9436R},
70
92
  adsnote = {Provided by the SAO/NASA Astrophysics Data System}
71
93
  }
72
94
 
@@ -100,4 +122,4 @@ Primary Contributors
100
122
  License
101
123
  -------
102
124
 
103
- Synference is free software made available under the GNU General Public License v3.0. For details see the `LICENSE <https://github.com/synthesizer-project/synference/blob/main/LICENSE.md>`_.
125
+ Synference is free software made available under the GNU General Public License v3.0. For details see the `LICENSE <https://github.com/synthesizer-project/synference/blob/main/LICENSE.md>`_.
@@ -517,11 +517,7 @@
517
517
  ]
518
518
  }
519
519
  ],
520
- "metadata": {
521
- "language_info": {
522
- "name": "python"
523
- }
524
- },
520
+ "metadata": {},
525
521
  "nbformat": 4,
526
522
  "nbformat_minor": 5
527
523
  }
@@ -267,11 +267,7 @@
267
267
  ]
268
268
  }
269
269
  ],
270
- "metadata": {
271
- "language_info": {
272
- "name": "python"
273
- }
274
- },
270
+ "metadata": {},
275
271
  "nbformat": 4,
276
272
  "nbformat_minor": 5
277
273
  }