gwmock 0.3.11__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 (186) hide show
  1. gwmock-0.3.11/.gitignore +143 -0
  2. gwmock-0.3.11/LICENSE +21 -0
  3. gwmock-0.3.11/PKG-INFO +171 -0
  4. gwmock-0.3.11/README.md +111 -0
  5. gwmock-0.3.11/examples/default_config/config.yaml +32 -0
  6. gwmock-0.3.11/examples/glitch/gengli/et_2l_aligned/e1/config.yaml +38 -0
  7. gwmock-0.3.11/examples/glitch/gengli/et_2l_aligned/e2/config.yaml +38 -0
  8. gwmock-0.3.11/examples/glitch/gengli/et_2l_misaligned/e1/config.yaml +38 -0
  9. gwmock-0.3.11/examples/glitch/gengli/et_2l_misaligned/e2/config.yaml +38 -0
  10. gwmock-0.3.11/examples/glitch/gengli/et_triangle_emr/e1/config.yaml +38 -0
  11. gwmock-0.3.11/examples/glitch/gengli/et_triangle_emr/e2/config.yaml +38 -0
  12. gwmock-0.3.11/examples/glitch/gengli/et_triangle_emr/e3/config.yaml +38 -0
  13. gwmock-0.3.11/examples/glitch/gengli/et_triangle_sardinia/e1/config.yaml +38 -0
  14. gwmock-0.3.11/examples/glitch/gengli/et_triangle_sardinia/e2/config.yaml +38 -0
  15. gwmock-0.3.11/examples/glitch/gengli/et_triangle_sardinia/e3/config.yaml +38 -0
  16. gwmock-0.3.11/examples/noise/uncorrelated_gaussian/et_2l_aligned/config.yaml +41 -0
  17. gwmock-0.3.11/examples/noise/uncorrelated_gaussian/et_2l_misaligned/config.yaml +41 -0
  18. gwmock-0.3.11/examples/noise/uncorrelated_gaussian/et_triangle_emr/config.yaml +41 -0
  19. gwmock-0.3.11/examples/noise/uncorrelated_gaussian/et_triangle_sardinia/config.yaml +41 -0
  20. gwmock-0.3.11/examples/noise/uncorrelated_gaussian/quick_start/config.yaml +35 -0
  21. gwmock-0.3.11/examples/signal/bbh/et_2l_aligned/config.yaml +43 -0
  22. gwmock-0.3.11/examples/signal/bbh/et_2l_misaligned/config.yaml +43 -0
  23. gwmock-0.3.11/examples/signal/bbh/et_triangle_emr/config.yaml +44 -0
  24. gwmock-0.3.11/examples/signal/bbh/et_triangle_sardinia/config.yaml +44 -0
  25. gwmock-0.3.11/examples/signal/bns/et_2l_aligned/config.yaml +43 -0
  26. gwmock-0.3.11/examples/signal/bns/et_2l_misaligned/config.yaml +43 -0
  27. gwmock-0.3.11/examples/signal/bns/et_triangle_emr/config.yaml +44 -0
  28. gwmock-0.3.11/examples/signal/bns/et_triangle_sardinia/config.yaml +44 -0
  29. gwmock-0.3.11/hatch_build.py +37 -0
  30. gwmock-0.3.11/pyproject.toml +249 -0
  31. gwmock-0.3.11/src/gwmock/__init__.py +11 -0
  32. gwmock-0.3.11/src/gwmock/__main__.py +8 -0
  33. gwmock-0.3.11/src/gwmock/cli/__init__.py +0 -0
  34. gwmock-0.3.11/src/gwmock/cli/batch.py +400 -0
  35. gwmock-0.3.11/src/gwmock/cli/config.py +192 -0
  36. gwmock-0.3.11/src/gwmock/cli/main.py +105 -0
  37. gwmock-0.3.11/src/gwmock/cli/merge.py +152 -0
  38. gwmock-0.3.11/src/gwmock/cli/repository/__init__.py +0 -0
  39. gwmock-0.3.11/src/gwmock/cli/repository/create.py +93 -0
  40. gwmock-0.3.11/src/gwmock/cli/repository/delete.py +53 -0
  41. gwmock-0.3.11/src/gwmock/cli/repository/download.py +56 -0
  42. gwmock-0.3.11/src/gwmock/cli/repository/list_depositions.py +65 -0
  43. gwmock-0.3.11/src/gwmock/cli/repository/main.py +42 -0
  44. gwmock-0.3.11/src/gwmock/cli/repository/metadata/__init__.py +0 -0
  45. gwmock-0.3.11/src/gwmock/cli/repository/metadata/main.py +26 -0
  46. gwmock-0.3.11/src/gwmock/cli/repository/metadata/update.py +60 -0
  47. gwmock-0.3.11/src/gwmock/cli/repository/publish.py +54 -0
  48. gwmock-0.3.11/src/gwmock/cli/repository/upload.py +76 -0
  49. gwmock-0.3.11/src/gwmock/cli/repository/utils.py +44 -0
  50. gwmock-0.3.11/src/gwmock/cli/repository/verify.py +62 -0
  51. gwmock-0.3.11/src/gwmock/cli/simulate.py +241 -0
  52. gwmock-0.3.11/src/gwmock/cli/simulate_utils.py +619 -0
  53. gwmock-0.3.11/src/gwmock/cli/utils/__init__.py +85 -0
  54. gwmock-0.3.11/src/gwmock/cli/utils/checkpoint.py +189 -0
  55. gwmock-0.3.11/src/gwmock/cli/utils/config.py +399 -0
  56. gwmock-0.3.11/src/gwmock/cli/utils/config_resolution.py +84 -0
  57. gwmock-0.3.11/src/gwmock/cli/utils/hash.py +23 -0
  58. gwmock-0.3.11/src/gwmock/cli/utils/metadata.py +98 -0
  59. gwmock-0.3.11/src/gwmock/cli/utils/retry.py +62 -0
  60. gwmock-0.3.11/src/gwmock/cli/utils/simulation_plan.py +433 -0
  61. gwmock-0.3.11/src/gwmock/cli/utils/template.py +214 -0
  62. gwmock-0.3.11/src/gwmock/cli/utils/utils.py +151 -0
  63. gwmock-0.3.11/src/gwmock/cli/validate.py +260 -0
  64. gwmock-0.3.11/src/gwmock/data/__init__.py +8 -0
  65. gwmock-0.3.11/src/gwmock/data/serialize/__init__.py +9 -0
  66. gwmock-0.3.11/src/gwmock/data/serialize/decoder.py +59 -0
  67. gwmock-0.3.11/src/gwmock/data/serialize/encoder.py +44 -0
  68. gwmock-0.3.11/src/gwmock/data/serialize/serializable.py +33 -0
  69. gwmock-0.3.11/src/gwmock/data/time_series/__init__.py +3 -0
  70. gwmock-0.3.11/src/gwmock/data/time_series/inject.py +104 -0
  71. gwmock-0.3.11/src/gwmock/data/time_series/time_series.py +361 -0
  72. gwmock-0.3.11/src/gwmock/data/time_series/time_series_list.py +182 -0
  73. gwmock-0.3.11/src/gwmock/detector/__init__.py +8 -0
  74. gwmock-0.3.11/src/gwmock/detector/base.py +156 -0
  75. gwmock-0.3.11/src/gwmock/detector/detectors/E1_2L_Aligned_Sardinia.interferometer +22 -0
  76. gwmock-0.3.11/src/gwmock/detector/detectors/E1_2L_Misaligned_Sardinia.interferometer +22 -0
  77. gwmock-0.3.11/src/gwmock/detector/detectors/E1_Triangle_EMR.interferometer +19 -0
  78. gwmock-0.3.11/src/gwmock/detector/detectors/E1_Triangle_Sardinia.interferometer +19 -0
  79. gwmock-0.3.11/src/gwmock/detector/detectors/E2_2L_Aligned_EMR.interferometer +22 -0
  80. gwmock-0.3.11/src/gwmock/detector/detectors/E2_2L_Misaligned_EMR.interferometer +22 -0
  81. gwmock-0.3.11/src/gwmock/detector/detectors/E2_Triangle_EMR.interferometer +19 -0
  82. gwmock-0.3.11/src/gwmock/detector/detectors/E2_Triangle_Sardinia.interferometer +19 -0
  83. gwmock-0.3.11/src/gwmock/detector/detectors/E3_Triangle_EMR.interferometer +19 -0
  84. gwmock-0.3.11/src/gwmock/detector/detectors/E3_Triangle_Sardinia.interferometer +19 -0
  85. gwmock-0.3.11/src/gwmock/detector/noise_curves/ET_10_HF_psd.txt +3000 -0
  86. gwmock-0.3.11/src/gwmock/detector/noise_curves/ET_10_full_cryo_psd.txt +3000 -0
  87. gwmock-0.3.11/src/gwmock/detector/noise_curves/ET_15_HF_psd.txt +3000 -0
  88. gwmock-0.3.11/src/gwmock/detector/noise_curves/ET_15_full_cryo_psd.txt +3000 -0
  89. gwmock-0.3.11/src/gwmock/detector/noise_curves/ET_20_HF_psd.txt +3000 -0
  90. gwmock-0.3.11/src/gwmock/detector/noise_curves/ET_20_full_cryo_psd.txt +3000 -0
  91. gwmock-0.3.11/src/gwmock/detector/noise_curves/ET_D_psd.txt +3000 -0
  92. gwmock-0.3.11/src/gwmock/detector/utils.py +90 -0
  93. gwmock-0.3.11/src/gwmock/glitch/__init__.py +8 -0
  94. gwmock-0.3.11/src/gwmock/glitch/base.py +77 -0
  95. gwmock-0.3.11/src/gwmock/glitch/gengli_glitch.py +240 -0
  96. gwmock-0.3.11/src/gwmock/mixin/__init__.py +8 -0
  97. gwmock-0.3.11/src/gwmock/mixin/cbc_population_reader.py +116 -0
  98. gwmock-0.3.11/src/gwmock/mixin/detector.py +201 -0
  99. gwmock-0.3.11/src/gwmock/mixin/gwf.py +192 -0
  100. gwmock-0.3.11/src/gwmock/mixin/population_reader.py +371 -0
  101. gwmock-0.3.11/src/gwmock/mixin/randomness.py +107 -0
  102. gwmock-0.3.11/src/gwmock/mixin/time_series.py +314 -0
  103. gwmock-0.3.11/src/gwmock/mixin/waveform.py +47 -0
  104. gwmock-0.3.11/src/gwmock/monitor/__init__.py +7 -0
  105. gwmock-0.3.11/src/gwmock/monitor/resource.py +252 -0
  106. gwmock-0.3.11/src/gwmock/noise/__init__.py +15 -0
  107. gwmock-0.3.11/src/gwmock/noise/base.py +72 -0
  108. gwmock-0.3.11/src/gwmock/noise/colored_noise.py +278 -0
  109. gwmock-0.3.11/src/gwmock/noise/correlated_noise.py +258 -0
  110. gwmock-0.3.11/src/gwmock/noise/stationary_gaussian.py +44 -0
  111. gwmock-0.3.11/src/gwmock/population/__init__.py +0 -0
  112. gwmock-0.3.11/src/gwmock/population/glitch.py +55 -0
  113. gwmock-0.3.11/src/gwmock/repository/__init__.py +0 -0
  114. gwmock-0.3.11/src/gwmock/repository/zenodo.py +269 -0
  115. gwmock-0.3.11/src/gwmock/signal/__init__.py +11 -0
  116. gwmock-0.3.11/src/gwmock/signal/base.py +146 -0
  117. gwmock-0.3.11/src/gwmock/signal/cbc.py +68 -0
  118. gwmock-0.3.11/src/gwmock/simulator/__init__.py +7 -0
  119. gwmock-0.3.11/src/gwmock/simulator/base.py +315 -0
  120. gwmock-0.3.11/src/gwmock/simulator/state.py +85 -0
  121. gwmock-0.3.11/src/gwmock/utils/__init__.py +11 -0
  122. gwmock-0.3.11/src/gwmock/utils/datetime_parser.py +44 -0
  123. gwmock-0.3.11/src/gwmock/utils/download.py +146 -0
  124. gwmock-0.3.11/src/gwmock/utils/et_2l_geometry.py +165 -0
  125. gwmock-0.3.11/src/gwmock/utils/io.py +218 -0
  126. gwmock-0.3.11/src/gwmock/utils/log.py +144 -0
  127. gwmock-0.3.11/src/gwmock/utils/population.py +48 -0
  128. gwmock-0.3.11/src/gwmock/utils/random.py +69 -0
  129. gwmock-0.3.11/src/gwmock/utils/retry.py +75 -0
  130. gwmock-0.3.11/src/gwmock/utils/triangular_et_geometry.py +164 -0
  131. gwmock-0.3.11/src/gwmock/version.py +7 -0
  132. gwmock-0.3.11/src/gwmock/waveform/__init__.py +7 -0
  133. gwmock-0.3.11/src/gwmock/waveform/factory.py +83 -0
  134. gwmock-0.3.11/src/gwmock/waveform/pycbc_wrapper.py +37 -0
  135. gwmock-0.3.11/tests/__init__.py +0 -0
  136. gwmock-0.3.11/tests/cli/__init__.py +0 -0
  137. gwmock-0.3.11/tests/cli/test_cli_config.py +132 -0
  138. gwmock-0.3.11/tests/cli/test_cli_simulate.py +1512 -0
  139. gwmock-0.3.11/tests/cli/test_validate.py +219 -0
  140. gwmock-0.3.11/tests/cli/utils/__init__.py +0 -0
  141. gwmock-0.3.11/tests/cli/utils/test_checkpoint.py +326 -0
  142. gwmock-0.3.11/tests/cli/utils/test_cli_utils_config.py +776 -0
  143. gwmock-0.3.11/tests/cli/utils/test_cli_utils_config_resolution.py +51 -0
  144. gwmock-0.3.11/tests/cli/utils/test_cli_utils_metadata.py +234 -0
  145. gwmock-0.3.11/tests/cli/utils/test_cli_utils_template.py +423 -0
  146. gwmock-0.3.11/tests/cli/utils/test_simulation_plan.py +1116 -0
  147. gwmock-0.3.11/tests/data/__init__.py +0 -0
  148. gwmock-0.3.11/tests/data/serialize/__init__.py +0 -0
  149. gwmock-0.3.11/tests/data/serialize/test_decoder.py +93 -0
  150. gwmock-0.3.11/tests/data/serialize/test_encoder.py +107 -0
  151. gwmock-0.3.11/tests/data/serialize/test_serializable.py +123 -0
  152. gwmock-0.3.11/tests/data/time_series/__init__.py +0 -0
  153. gwmock-0.3.11/tests/data/time_series/test_inject.py +848 -0
  154. gwmock-0.3.11/tests/data/time_series/test_time_series.py +194 -0
  155. gwmock-0.3.11/tests/data/time_series/test_time_series_list.py +241 -0
  156. gwmock-0.3.11/tests/detector/__init__.py +0 -0
  157. gwmock-0.3.11/tests/detector/test_base_detector.py +131 -0
  158. gwmock-0.3.11/tests/mixin/__init__.py +0 -0
  159. gwmock-0.3.11/tests/mixin/test_cbc_population_reader_mixin.py +181 -0
  160. gwmock-0.3.11/tests/mixin/test_detector_mixin.py +329 -0
  161. gwmock-0.3.11/tests/mixin/test_population_reader_mixin.py +202 -0
  162. gwmock-0.3.11/tests/mixin/test_time_series_mixin.py +257 -0
  163. gwmock-0.3.11/tests/monitor/__init__.py +0 -0
  164. gwmock-0.3.11/tests/monitor/test_monitor_resource.py +310 -0
  165. gwmock-0.3.11/tests/noise/__init__.py +0 -0
  166. gwmock-0.3.11/tests/noise/test_colored_noise.py +642 -0
  167. gwmock-0.3.11/tests/repository/__init__.py +0 -0
  168. gwmock-0.3.11/tests/repository/test_zenodo.py +172 -0
  169. gwmock-0.3.11/tests/signal/__init__.py +0 -0
  170. gwmock-0.3.11/tests/signal/test_signal_base.py +441 -0
  171. gwmock-0.3.11/tests/signal/test_signal_cbc.py +68 -0
  172. gwmock-0.3.11/tests/simulator/__init__.py +0 -0
  173. gwmock-0.3.11/tests/simulator/test_base_simulator.py +342 -0
  174. gwmock-0.3.11/tests/test_data_output.py +0 -0
  175. gwmock-0.3.11/tests/test_import_modules.py +17 -0
  176. gwmock-0.3.11/tests/test_noise_simulation.py +0 -0
  177. gwmock-0.3.11/tests/test_population_generation.py +0 -0
  178. gwmock-0.3.11/tests/test_utils.py +0 -0
  179. gwmock-0.3.11/tests/test_waveform_generation.py +0 -0
  180. gwmock-0.3.11/tests/utils/__init__.py +0 -0
  181. gwmock-0.3.11/tests/utils/test_datetime_parser.py +33 -0
  182. gwmock-0.3.11/tests/utils/test_download.py +209 -0
  183. gwmock-0.3.11/tests/utils/test_utils_io.py +273 -0
  184. gwmock-0.3.11/tests/waveform/__init__.py +0 -0
  185. gwmock-0.3.11/tests/waveform/test_pycbc_waveform_wrapper.py +264 -0
  186. gwmock-0.3.11/tests/waveform/test_pycbc_waveform_wrapper_integration.py +80 -0
@@ -0,0 +1,143 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+ *results.xml
54
+
55
+ # Translations
56
+ *.mo
57
+ *.pot
58
+
59
+ # Django stuff:
60
+ *.log
61
+ local_settings.py
62
+ db.sqlite3
63
+ db.sqlite3-journal
64
+
65
+ # Flask stuff:
66
+ instance/
67
+ .webassets-cache
68
+
69
+ # Scrapy stuff:
70
+ .scrapy
71
+
72
+ # Sphinx documentation
73
+ docs/_build/
74
+
75
+ # PyBuilder
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ .python-version
87
+
88
+ # pipenv
89
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
90
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
91
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
92
+ # install all needed dependencies.
93
+ #Pipfile.lock
94
+
95
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
96
+ __pypackages__/
97
+
98
+ # Celery stuff
99
+ celerybeat-schedule
100
+ celerybeat.pid
101
+
102
+ # SageMath parsed files
103
+ *.sage.py
104
+
105
+ # Environments
106
+ .env
107
+ .venv
108
+ env/
109
+ venv/
110
+ ENV/
111
+ env.bak/
112
+ venv.bak/
113
+
114
+ # Spyder project settings
115
+ .spyderproject
116
+ .spyproject
117
+
118
+ # Rope project settings
119
+ .ropeproject
120
+
121
+ # mkdocs documentation
122
+ /site
123
+
124
+ # mypy
125
+ .mypy_cache/
126
+ .dmypy.json
127
+ dmypy.json
128
+
129
+ # Pyre type checker
130
+ .pyre/
131
+
132
+ # MacOS
133
+ .DS_Store
134
+
135
+ # VS Code
136
+ .vscode/
137
+
138
+ # Temporary files
139
+ tmp/
140
+
141
+ # Node modules (if using Node.js for frontend)
142
+ node_modules/
143
+ package-lock.json
gwmock-0.3.11/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Leuven Gravity Institute
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
gwmock-0.3.11/PKG-INFO ADDED
@@ -0,0 +1,171 @@
1
+ Metadata-Version: 2.4
2
+ Name: gwmock
3
+ Version: 0.3.11
4
+ Summary: A Python package for simulating gravitational wave detector data for mock data challenges.
5
+ Project-URL: Documentation, https://leuven-gravity-institute.github.io/gwmock
6
+ Project-URL: Source, https://github.com/Leuven-Gravity-Institute/gwmock
7
+ Project-URL: Tracker, https://github.com/Leuven-Gravity-Institute/gwmock/issues
8
+ Author-email: "Isaac C. F. Wong" <chunfung.wong@kuleuven.be>
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3 :: Only
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
18
+ Classifier: Topic :: Scientific/Engineering :: Physics
19
+ Requires-Python: >=3.10
20
+ Requires-Dist: bilby
21
+ Requires-Dist: gengli
22
+ Requires-Dist: h5py
23
+ Requires-Dist: numpy
24
+ Requires-Dist: psutil
25
+ Requires-Dist: pycbc
26
+ Requires-Dist: pydantic
27
+ Requires-Dist: pymap3d
28
+ Requires-Dist: scipy<=1.16.3
29
+ Requires-Dist: tqdm
30
+ Requires-Dist: typer
31
+ Provides-Extra: dev
32
+ Requires-Dist: black; extra == 'dev'
33
+ Requires-Dist: flake8; extra == 'dev'
34
+ Requires-Dist: pre-commit; extra == 'dev'
35
+ Requires-Dist: pytest; extra == 'dev'
36
+ Provides-Extra: docs
37
+ Requires-Dist: mkdocs; extra == 'docs'
38
+ Requires-Dist: mkdocs-gen-files; extra == 'docs'
39
+ Requires-Dist: mkdocs-literate-nav; extra == 'docs'
40
+ Requires-Dist: mkdocs-material; extra == 'docs'
41
+ Requires-Dist: mkdocs-section-index; extra == 'docs'
42
+ Requires-Dist: mkdocstrings[python]; extra == 'docs'
43
+ Provides-Extra: test
44
+ Requires-Dist: bandit[toml]==1.8.2; extra == 'test'
45
+ Requires-Dist: black==25.12.0; extra == 'test'
46
+ Requires-Dist: check-manifest==0.50; extra == 'test'
47
+ Requires-Dist: flake8; extra == 'test'
48
+ Requires-Dist: flake8-bugbear==24.12.12; extra == 'test'
49
+ Requires-Dist: flake8-docstrings; extra == 'test'
50
+ Requires-Dist: flake8-formatter-junit-xml; extra == 'test'
51
+ Requires-Dist: flake8-pyproject; extra == 'test'
52
+ Requires-Dist: pre-commit==4.1.0; extra == 'test'
53
+ Requires-Dist: pytest-cov==6.0.0; extra == 'test'
54
+ Requires-Dist: pytest-github-actions-annotate-failures; extra == 'test'
55
+ Requires-Dist: pytest-mock<3.14.1; extra == 'test'
56
+ Requires-Dist: pytest-runner; extra == 'test'
57
+ Requires-Dist: pytest==8.3.4; extra == 'test'
58
+ Requires-Dist: shellcheck-py==0.10.0.1; extra == 'test'
59
+ Description-Content-Type: text/markdown
60
+
61
+ # gwmock
62
+
63
+ [![Python CI](https://github.com/Leuven-Gravity-Institute/gwmock/actions/workflows/CI.yml/badge.svg)](https://github.com/Leuven-Gravity-Institute/gwmock/actions/workflows/CI.yml)
64
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/Leuven-Gravity-Institute/gwmock/main.svg)](https://results.pre-commit.ci/latest/github/Leuven-Gravity-Institute/gwmock/main)
65
+ [![Documentation Status](https://github.com/Leuven-Gravity-Institute/gwmock/actions/workflows/documentation.yml/badge.svg)](https://leuven-gravity-institute.github.io/gwmock)
66
+ [![codecov](https://codecov.io/gh/Leuven-Gravity-Institute/gwmock/graph/badge.svg?token=GLW2LEFKW7)](https://codecov.io/gh/Leuven-Gravity-Institute/gwmock)
67
+ [![PyPI Version](https://img.shields.io/pypi/v/gwmock)](https://pypi.org/project/gwmock/)
68
+ [![Python Versions](https://img.shields.io/pypi/pyversions/gwmock)](https://pypi.org/project/gwmock/)
69
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Leuven-Gravity-Institute/gwmock/blob/main/LICENSE)
70
+ [![Security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
71
+ [![DOI](https://zenodo.org/badge/1115995501.svg)](https://doi.org/10.5281/zenodo.17925458)
72
+
73
+ A Python package for generating Mock Data Challenge (MDC) datasets for the gravitational-wave (GW) community. It simulates strain data for detectors like Einstein Telescope, providing a unified interface for reproducible GW data generation.
74
+
75
+ ## Features
76
+
77
+ - **Modular Design**: Uses mixins for flexible simulator composition
78
+ - **Detector Support**: Built-in support for various GW detectors with custom configuration options
79
+ - **Waveform Generation**: Integrates with PyCBC and LALSuite for accurate signal simulation
80
+ - **Noise Models**: Supports colored and correlated noise generation (In-Progress)
81
+ - **Population Models**: Handles injection populations for signals and glitches
82
+ - **Data Formats**: Outputs in standard GW formats (GWF frames)
83
+ - **CLI**: Command-line tools for easy simulation workflows
84
+
85
+ ## Installation
86
+
87
+ We recommend using `uv` to manage virtual environments for installing gwmock.
88
+
89
+ If you don't have `uv` installed, you can install it with pip. See the project pages for more details:
90
+
91
+ - Install via pip: `pip install --upgrade pip && pip install uv`
92
+ - Project pages: [uv on PyPI](https://pypi.org/project/uv/) | [uv on GitHub](https://github.com/astral-sh/uv)
93
+ - Full documentation and usage guide: [uv docs](https://docs.astral.sh/uv/)
94
+
95
+ **Note:** The package is built and tested against Python 3.10-3.12. When creating a virtual environment with `uv`, specify the Python version to ensure compatibility: `uv venv --python 3.10` (replace `3.10` with your preferred version in the 3.10-3.12 range). This avoids potential issues with unsupported Python versions.
96
+
97
+ ### From PyPI
98
+
99
+ ```bash
100
+ # Create a virtual environment (recommended with uv)
101
+ uv venv gwmock-env --python 3.10
102
+ source gwmock-env/bin/activate # On Windows: gwmock-env\Scripts\activate
103
+ uv pip install gwmock
104
+ ```
105
+
106
+ ### From Source
107
+
108
+ ```bash
109
+ git clone git@github.com:Leuven-Gravity-Institute/gwmock.git
110
+ ce gwmock
111
+ # Create a virtual environment (recommended with uv)
112
+ uv venv --python 3.10
113
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
114
+ uv pip install .
115
+ ```
116
+
117
+ ## Quick Start
118
+
119
+ ### Command Line
120
+
121
+ ```bash
122
+ # Generate simulated data
123
+ gwmock simulate config.yaml
124
+ ```
125
+
126
+ ## Configuration
127
+
128
+ gwmock uses YAML configuration files for reproducible simulations. See `examples/config.yaml` for a complete example.
129
+
130
+ Key configuration sections:
131
+
132
+ - `globals`: Shared parameters (sampling rate, duration, etc.)
133
+ - `simulators`: List of noise, signal, and glitch generators
134
+
135
+ ## Documentation
136
+
137
+ Full documentation to be available at [https://leuven-gravity-institute.github.io/gwmock](https://leuven-gravity-institute.github.io/gwmock).
138
+
139
+ ## Contributing
140
+
141
+ Contributions are welcome!
142
+
143
+ 1. Fork the repository
144
+ 2. Create a feature branch
145
+ 3. Make your changes
146
+ 4. Add tests
147
+ 5. Submit a merge request
148
+
149
+ ### Release Schedule
150
+
151
+ Releases follow a fixed schedule: every Tuesday at 00:00 UTC,
152
+ unless an emergent bugfix is required.
153
+ This ensures predictable updates while allowing flexibility for critical issues.
154
+ Users can view upcoming changes in the draft release on the
155
+ [GitHub Releases page](https://github.com/Leuven-Gravity-Institute/gwmock/releases).
156
+
157
+ ## Testing
158
+
159
+ Run the test suite:
160
+
161
+ ```bash
162
+ pytest
163
+ ```
164
+
165
+ ## License
166
+
167
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
168
+
169
+ ## Support
170
+
171
+ For questions or issues, please open an issue on [GitHub](https://github.com/Leuven-Gravity-Institute/gwmock/issues/new) or contact the maintainers.
@@ -0,0 +1,111 @@
1
+ # gwmock
2
+
3
+ [![Python CI](https://github.com/Leuven-Gravity-Institute/gwmock/actions/workflows/CI.yml/badge.svg)](https://github.com/Leuven-Gravity-Institute/gwmock/actions/workflows/CI.yml)
4
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/Leuven-Gravity-Institute/gwmock/main.svg)](https://results.pre-commit.ci/latest/github/Leuven-Gravity-Institute/gwmock/main)
5
+ [![Documentation Status](https://github.com/Leuven-Gravity-Institute/gwmock/actions/workflows/documentation.yml/badge.svg)](https://leuven-gravity-institute.github.io/gwmock)
6
+ [![codecov](https://codecov.io/gh/Leuven-Gravity-Institute/gwmock/graph/badge.svg?token=GLW2LEFKW7)](https://codecov.io/gh/Leuven-Gravity-Institute/gwmock)
7
+ [![PyPI Version](https://img.shields.io/pypi/v/gwmock)](https://pypi.org/project/gwmock/)
8
+ [![Python Versions](https://img.shields.io/pypi/pyversions/gwmock)](https://pypi.org/project/gwmock/)
9
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Leuven-Gravity-Institute/gwmock/blob/main/LICENSE)
10
+ [![Security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
11
+ [![DOI](https://zenodo.org/badge/1115995501.svg)](https://doi.org/10.5281/zenodo.17925458)
12
+
13
+ A Python package for generating Mock Data Challenge (MDC) datasets for the gravitational-wave (GW) community. It simulates strain data for detectors like Einstein Telescope, providing a unified interface for reproducible GW data generation.
14
+
15
+ ## Features
16
+
17
+ - **Modular Design**: Uses mixins for flexible simulator composition
18
+ - **Detector Support**: Built-in support for various GW detectors with custom configuration options
19
+ - **Waveform Generation**: Integrates with PyCBC and LALSuite for accurate signal simulation
20
+ - **Noise Models**: Supports colored and correlated noise generation (In-Progress)
21
+ - **Population Models**: Handles injection populations for signals and glitches
22
+ - **Data Formats**: Outputs in standard GW formats (GWF frames)
23
+ - **CLI**: Command-line tools for easy simulation workflows
24
+
25
+ ## Installation
26
+
27
+ We recommend using `uv` to manage virtual environments for installing gwmock.
28
+
29
+ If you don't have `uv` installed, you can install it with pip. See the project pages for more details:
30
+
31
+ - Install via pip: `pip install --upgrade pip && pip install uv`
32
+ - Project pages: [uv on PyPI](https://pypi.org/project/uv/) | [uv on GitHub](https://github.com/astral-sh/uv)
33
+ - Full documentation and usage guide: [uv docs](https://docs.astral.sh/uv/)
34
+
35
+ **Note:** The package is built and tested against Python 3.10-3.12. When creating a virtual environment with `uv`, specify the Python version to ensure compatibility: `uv venv --python 3.10` (replace `3.10` with your preferred version in the 3.10-3.12 range). This avoids potential issues with unsupported Python versions.
36
+
37
+ ### From PyPI
38
+
39
+ ```bash
40
+ # Create a virtual environment (recommended with uv)
41
+ uv venv gwmock-env --python 3.10
42
+ source gwmock-env/bin/activate # On Windows: gwmock-env\Scripts\activate
43
+ uv pip install gwmock
44
+ ```
45
+
46
+ ### From Source
47
+
48
+ ```bash
49
+ git clone git@github.com:Leuven-Gravity-Institute/gwmock.git
50
+ ce gwmock
51
+ # Create a virtual environment (recommended with uv)
52
+ uv venv --python 3.10
53
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
54
+ uv pip install .
55
+ ```
56
+
57
+ ## Quick Start
58
+
59
+ ### Command Line
60
+
61
+ ```bash
62
+ # Generate simulated data
63
+ gwmock simulate config.yaml
64
+ ```
65
+
66
+ ## Configuration
67
+
68
+ gwmock uses YAML configuration files for reproducible simulations. See `examples/config.yaml` for a complete example.
69
+
70
+ Key configuration sections:
71
+
72
+ - `globals`: Shared parameters (sampling rate, duration, etc.)
73
+ - `simulators`: List of noise, signal, and glitch generators
74
+
75
+ ## Documentation
76
+
77
+ Full documentation to be available at [https://leuven-gravity-institute.github.io/gwmock](https://leuven-gravity-institute.github.io/gwmock).
78
+
79
+ ## Contributing
80
+
81
+ Contributions are welcome!
82
+
83
+ 1. Fork the repository
84
+ 2. Create a feature branch
85
+ 3. Make your changes
86
+ 4. Add tests
87
+ 5. Submit a merge request
88
+
89
+ ### Release Schedule
90
+
91
+ Releases follow a fixed schedule: every Tuesday at 00:00 UTC,
92
+ unless an emergent bugfix is required.
93
+ This ensures predictable updates while allowing flexibility for critical issues.
94
+ Users can view upcoming changes in the draft release on the
95
+ [GitHub Releases page](https://github.com/Leuven-Gravity-Institute/gwmock/releases).
96
+
97
+ ## Testing
98
+
99
+ Run the test suite:
100
+
101
+ ```bash
102
+ pytest
103
+ ```
104
+
105
+ ## License
106
+
107
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
108
+
109
+ ## Support
110
+
111
+ For questions or issues, please open an issue on [GitHub](https://github.com/Leuven-Gravity-Institute/gwmock/issues/new) or contact the maintainers.
@@ -0,0 +1,32 @@
1
+ # Example configuration file for gwmock gravitational-wave data generator
2
+ # This file demonstrates how to configure simulations with noise and signal generators
3
+ # Template variables (e.g., {{ detectors }}) are expanded at runtime using simulator attributes
4
+
5
+ # Global configuration shared across all simulators
6
+ globals:
7
+ # Simulator arguments that apply to all simulators unless overridden
8
+ simulator-arguments:
9
+ sampling-frequency: 4096 # Sampling rate in Hz (affects data quality and file size)
10
+ duration: 1024 # Duration of each generated segment in seconds
11
+ start-time: 1577491218 # GPS start time for the simulation
12
+ total-duration: '5 hours' # Total simulation duration (parsed from string or numeric)
13
+ # Directory paths (relative to working directory unless absolute)
14
+ working-directory: . # Base directory for all operations
15
+ output-directory: output # Where generated data files are saved
16
+ metadata-directory: metadata # Where simulation metadata and checkpoints are stored
17
+
18
+ # List of simulators to run (each generates data independently)
19
+ simulators:
20
+ # Example noise simulator configuration
21
+ noise:
22
+ class: ColoredNoiseSimulator # Full class path resolved via registry (e.g., gwmock.noise.ColoredNoiseSimulator)
23
+ arguments:
24
+ psd_file: ET_10_full_cryo_psd.txt # Power spectral density file for colored noise
25
+ seed: 42 # Random seed for reproducible noise generation
26
+ detectors: # List of detectors
27
+ - ET1
28
+ # Output configuration for this simulator
29
+ output:
30
+ file_name: '{{ detectors }}-NOISE_STRAIN-{{ start_time }}-{{ duration }}.gwf' # Template for output filename
31
+ arguments:
32
+ channel: '{{ detectors }}-STRAIN' # Channel name template for GWF frame writing
@@ -0,0 +1,38 @@
1
+ globals:
2
+ simulator-arguments:
3
+ # Sampling frequency in Hz (affects time resolution and file size)
4
+ sampling-frequency: 4096
5
+ # Duration of each generated segment in seconds
6
+ duration: 4096
7
+ # Human-friendly total duration (may be parsed by the config loader)
8
+ total-duration: 1 day
9
+ # GPS start time for the simulation
10
+ start-time: 1577491218
11
+ # Working directory for generated outputs (relative or absolute)
12
+ working-directory: .
13
+ # Default directory where generated frame files are written
14
+ output-directory: output
15
+ # Directory to store metadata sidecars and checkpoints
16
+ metadata-directory: metadata
17
+
18
+ simulators:
19
+ # Gengli glitch simulator configuration
20
+ glitch:
21
+ class: GengliGlitchSimulator
22
+ arguments:
23
+ # Path or URL to population file (HDF5) containing simulated glitch events
24
+ population_file: https://sandbox.zenodo.org/records/413548/files/blip_glitch_population_E1.hdf5
25
+ # PSD to recolor the glitches
26
+ psd_file: ET_15_full_cryo_psd.txt
27
+ # List of detector names to generate glitch for (NO network support)
28
+ detectors:
29
+ - E1_2L_aligned_sardinia
30
+ # Random seed for glitch generation
31
+ seed: 42
32
+ output:
33
+ # Template used to construct the output file name at runtime. Uses template variables
34
+ # such as `detectors`, `start_time` and `duration` expanded by the config loader.
35
+ file_name: 'E-{{ detectors }}_STRAIN_GLITCH-{{ start_time }}-{{ duration }}.gwf'
36
+ arguments:
37
+ # Channel name (template) for the output frame (e.g. "E1_2L_aligned_sardinia:STRAIN")
38
+ channel: '{{ detectors }}:STRAIN'
@@ -0,0 +1,38 @@
1
+ globals:
2
+ simulator-arguments:
3
+ # Sampling frequency in Hz (affects time resolution and file size)
4
+ sampling-frequency: 4096
5
+ # Duration of each generated segment in seconds
6
+ duration: 4096
7
+ # Human-friendly total duration (may be parsed by the config loader)
8
+ total-duration: 1 day
9
+ # GPS start time for the simulation
10
+ start-time: 1577491218
11
+ # Working directory for generated outputs (relative or absolute)
12
+ working-directory: .
13
+ # Default directory where generated frame files are written
14
+ output-directory: output
15
+ # Directory to store metadata sidecars and checkpoints
16
+ metadata-directory: metadata
17
+
18
+ simulators:
19
+ # Gengli glitch simulator configuration
20
+ glitch:
21
+ class: GengliGlitchSimulator
22
+ arguments:
23
+ # Path or URL to population file (HDF5) containing simulated glitch events
24
+ population_file: https://sandbox.zenodo.org/records/413548/files/blip_glitch_population_E2.hdf5
25
+ # PSD to recolor the glitches
26
+ psd_file: ET_15_full_cryo_psd.txt
27
+ # List of detector names to generate glitch for (NO network support)
28
+ detectors:
29
+ - E2_2L_aligned_emr
30
+ # Random seed for glitch generation
31
+ seed: 42
32
+ output:
33
+ # Template used to construct the output file name at runtime. Uses template variables
34
+ # such as `detectors`, `start_time` and `duration` expanded by the config loader.
35
+ file_name: 'E-{{ detectors }}_STRAIN_GLITCH-{{ start_time }}-{{ duration }}.gwf'
36
+ arguments:
37
+ # Channel name (template) for the output frame (e.g. "E1_2L_aligned_sardinia:STRAIN")
38
+ channel: '{{ detectors }}:STRAIN'
@@ -0,0 +1,38 @@
1
+ globals:
2
+ simulator-arguments:
3
+ # Sampling frequency in Hz (affects time resolution and file size)
4
+ sampling-frequency: 4096
5
+ # Duration of each generated segment in seconds
6
+ duration: 4096
7
+ # Human-friendly total duration (may be parsed by the config loader)
8
+ total-duration: 1 day
9
+ # GPS start time for the simulation
10
+ start-time: 1577491218
11
+ # Working directory for generated outputs (relative or absolute)
12
+ working-directory: .
13
+ # Default directory where generated frame files are written
14
+ output-directory: output
15
+ # Directory to store metadata sidecars and checkpoints
16
+ metadata-directory: metadata
17
+
18
+ simulators:
19
+ # Gengli glitch simulator configuration
20
+ glitch:
21
+ class: GengliGlitchSimulator
22
+ arguments:
23
+ # Path or URL to population file (HDF5) containing simulated glitch events
24
+ population_file: https://sandbox.zenodo.org/records/413548/files/blip_glitch_population_E1.hdf5
25
+ # PSD to recolor the glitches
26
+ psd_file: ET_15_full_cryo_psd.txt
27
+ # List of detector names to generate glitch for (NO network support)
28
+ detectors:
29
+ - E1_2L_misaligned_sardinia
30
+ # Random seed for glitch generation
31
+ seed: 42
32
+ output:
33
+ # Template used to construct the output file name at runtime. Uses template variables
34
+ # such as `detectors`, `start_time` and `duration` expanded by the config loader.
35
+ file_name: 'E-{{ detectors }}_STRAIN_GLITCH-{{ start_time }}-{{ duration }}.gwf'
36
+ arguments:
37
+ # Channel name (template) for the output frame (e.g. "E1_2L_aligned_sardinia:STRAIN")
38
+ channel: '{{ detectors }}:STRAIN'
@@ -0,0 +1,38 @@
1
+ globals:
2
+ simulator-arguments:
3
+ # Sampling frequency in Hz (affects time resolution and file size)
4
+ sampling-frequency: 4096
5
+ # Duration of each generated segment in seconds
6
+ duration: 4096
7
+ # Human-friendly total duration (may be parsed by the config loader)
8
+ total-duration: '1 day'
9
+ # GPS start time for the simulation
10
+ start-time: 1577491218
11
+ # Working directory for generated outputs (relative or absolute)
12
+ working-directory: .
13
+ # Default directory where generated frame files are written
14
+ output-directory: output
15
+ # Directory to store metadata sidecars and checkpoints
16
+ metadata-directory: metadata
17
+
18
+ simulators:
19
+ # Gengli glitch simulator configuration
20
+ glitch:
21
+ class: GengliGlitchSimulator
22
+ arguments:
23
+ # Path or URL to population file (HDF5) containing simulated glitch events
24
+ population_file: https://sandbox.zenodo.org/records/413548/files/blip_glitch_population_E2.hdf5
25
+ # PSD to recolor the glitches
26
+ psd_file: ET_15_full_cryo_psd.txt
27
+ # List of detector names to generate glitch for (NO network support)
28
+ detectors:
29
+ - E2_2L_misaligned_emr
30
+ # Random seed for glitch generation
31
+ seed: 42
32
+ output:
33
+ # Template used to construct the output file name at runtime. Uses template variables
34
+ # such as `detectors`, `start_time` and `duration` expanded by the config loader.
35
+ file_name: 'E-{{ detectors }}_STRAIN_GLITCH-{{ start_time }}-{{ duration }}.gwf'
36
+ arguments:
37
+ # Channel name (template) for the output frame (e.g. "E1_2L_aligned_sardinia:STRAIN")
38
+ channel: '{{ detectors }}:STRAIN'
@@ -0,0 +1,38 @@
1
+ globals:
2
+ simulator-arguments:
3
+ # Sampling frequency in Hz (affects time resolution and file size)
4
+ sampling-frequency: 4096
5
+ # Duration of each generated segment in seconds
6
+ duration: 4096
7
+ # Human-friendly total duration (may be parsed by the config loader)
8
+ total-duration: 1 day
9
+ # GPS start time for the simulation
10
+ start-time: 1577491218
11
+ # Working directory for generated outputs (relative or absolute)
12
+ working-directory: .
13
+ # Default directory where generated frame files are written
14
+ output-directory: output
15
+ # Directory to store metadata sidecars and checkpoints
16
+ metadata-directory: metadata
17
+
18
+ simulators:
19
+ # Gengli glitch simulator configuration
20
+ glitch:
21
+ class: GengliGlitchSimulator
22
+ arguments:
23
+ # Path or URL to population file (HDF5) containing simulated glitch events
24
+ population_file: https://sandbox.zenodo.org/records/413548/files/blip_glitch_population_E1.hdf5
25
+ # PSD to recolor the glitches
26
+ psd_file: ET_10_full_cryo_psd.txt
27
+ # List of detector names to generate glitch for (NO network support)
28
+ detectors:
29
+ - E1_triangle_emr
30
+ # Random seed for glitch generation
31
+ seed: 42
32
+ output:
33
+ # Template used to construct the output file name at runtime. Uses template variables
34
+ # such as `detectors`, `start_time` and `duration` expanded by the config loader.
35
+ file_name: 'E-{{ detectors }}_STRAIN_GLITCH-{{ start_time }}-{{ duration }}.gwf'
36
+ arguments:
37
+ # Channel name (template) for the output frame (e.g. "E1_2L_aligned_sardinia:STRAIN")
38
+ channel: '{{ detectors }}:STRAIN'