tdanalysis 1.0.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 (122) hide show
  1. tdanalysis-1.0.0/LICENSE +203 -0
  2. tdanalysis-1.0.0/NOTICE.md +133 -0
  3. tdanalysis-1.0.0/PKG-INFO +174 -0
  4. tdanalysis-1.0.0/README.md +126 -0
  5. tdanalysis-1.0.0/pyproject.toml +168 -0
  6. tdanalysis-1.0.0/tdanalysis/__init__.py +0 -0
  7. tdanalysis-1.0.0/tdanalysis/_compat.py +173 -0
  8. tdanalysis-1.0.0/tdanalysis/covariance/covariance_calc.py +811 -0
  9. tdanalysis-1.0.0/tdanalysis/covariance/psd.py +987 -0
  10. tdanalysis-1.0.0/tdanalysis/data/acorrs/A1_aplus_acorr_4s_4096.npy +0 -0
  11. tdanalysis-1.0.0/tdanalysis/data/acorrs/A1_aplus_acorr_8s_4096.npy +0 -0
  12. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_1p0MW_Aplus_acorr_4s_4096.npy +0 -0
  13. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_1p0MW_Aplus_acorr_8s_4096.npy +0 -0
  14. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_1p0MW_aLIGO_acorr_4s_4096.npy +0 -0
  15. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_1p0MW_aLIGO_acorr_8s_4096.npy +0 -0
  16. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_1p5MW_Aplus_acorr_4s_4096.npy +0 -0
  17. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_1p5MW_Aplus_acorr_8s_4096.npy +0 -0
  18. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_1p5MW_aLIGO_acorr_4s_4096.npy +0 -0
  19. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_1p5MW_aLIGO_acorr_8s_4096.npy +0 -0
  20. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_gwforge_default_acorr_4s_4096.npy +0 -0
  21. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE20_gwforge_default_acorr_8s_4096.npy +0 -0
  22. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_1p0MW_Aplus_acorr_4s_4096.npy +0 -0
  23. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_1p0MW_Aplus_acorr_8s_4096.npy +0 -0
  24. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_1p0MW_aLIGO_acorr_4s_4096.npy +0 -0
  25. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_1p0MW_aLIGO_acorr_8s_4096.npy +0 -0
  26. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_1p5MW_Aplus_acorr_4s_4096.npy +0 -0
  27. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_1p5MW_Aplus_acorr_8s_4096.npy +0 -0
  28. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_1p5MW_aLIGO_acorr_4s_4096.npy +0 -0
  29. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_1p5MW_aLIGO_acorr_8s_4096.npy +0 -0
  30. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_gwforge_default_acorr_4s_4096.npy +0 -0
  31. tdanalysis-1.0.0/tdanalysis/data/acorrs/CE40_gwforge_default_acorr_8s_4096.npy +0 -0
  32. tdanalysis-1.0.0/tdanalysis/data/acorrs/ET1ET2ET3_ET_D_acorr_4s_4096.npy +0 -0
  33. tdanalysis-1.0.0/tdanalysis/data/acorrs/ET1ET2ET3_ET_D_acorr_8s_4096.npy +0 -0
  34. tdanalysis-1.0.0/tdanalysis/data/acorrs/ET1ET2ET3_cryo_10km_acorr_4s_4096.npy +0 -0
  35. tdanalysis-1.0.0/tdanalysis/data/acorrs/ET1ET2ET3_cryo_10km_acorr_8s_4096.npy +0 -0
  36. tdanalysis-1.0.0/tdanalysis/data/acorrs/ET1ET2ET3_cryo_15km_acorr_4s_4096.npy +0 -0
  37. tdanalysis-1.0.0/tdanalysis/data/acorrs/ET1ET2ET3_cryo_15km_acorr_8s_4096.npy +0 -0
  38. tdanalysis-1.0.0/tdanalysis/data/acorrs/PROVENANCE.md +1143 -0
  39. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_A1_aplus_acorr_4s_4096.npy +0 -0
  40. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_A1_aplus_acorr_8s_4096.npy +0 -0
  41. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_1p0MW_Aplus_acorr_4s_4096.npy +0 -0
  42. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_1p0MW_Aplus_acorr_8s_4096.npy +0 -0
  43. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_1p0MW_aLIGO_acorr_4s_4096.npy +0 -0
  44. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_1p0MW_aLIGO_acorr_8s_4096.npy +0 -0
  45. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_1p5MW_Aplus_acorr_4s_4096.npy +0 -0
  46. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_1p5MW_Aplus_acorr_8s_4096.npy +0 -0
  47. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_1p5MW_aLIGO_acorr_4s_4096.npy +0 -0
  48. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_1p5MW_aLIGO_acorr_8s_4096.npy +0 -0
  49. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_gwforge_default_acorr_4s_4096.npy +0 -0
  50. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE20_gwforge_default_acorr_8s_4096.npy +0 -0
  51. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_1p0MW_Aplus_acorr_4s_4096.npy +0 -0
  52. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_1p0MW_Aplus_acorr_8s_4096.npy +0 -0
  53. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_1p0MW_aLIGO_acorr_4s_4096.npy +0 -0
  54. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_1p0MW_aLIGO_acorr_8s_4096.npy +0 -0
  55. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_1p5MW_Aplus_acorr_4s_4096.npy +0 -0
  56. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_1p5MW_Aplus_acorr_8s_4096.npy +0 -0
  57. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_1p5MW_aLIGO_acorr_4s_4096.npy +0 -0
  58. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_1p5MW_aLIGO_acorr_8s_4096.npy +0 -0
  59. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_gwforge_default_acorr_4s_4096.npy +0 -0
  60. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_CE40_gwforge_default_acorr_8s_4096.npy +0 -0
  61. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_ET1ET2ET3_ET_D_acorr_4s_4096.npy +0 -0
  62. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_ET1ET2ET3_ET_D_acorr_8s_4096.npy +0 -0
  63. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_ET1ET2ET3_cryo_10km_acorr_4s_4096.npy +0 -0
  64. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_ET1ET2ET3_cryo_10km_acorr_8s_4096.npy +0 -0
  65. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_ET1ET2ET3_cryo_15km_acorr_4s_4096.npy +0 -0
  66. tdanalysis-1.0.0/tdanalysis/data/acorrs/half_ET1ET2ET3_cryo_15km_acorr_8s_4096.npy +0 -0
  67. tdanalysis-1.0.0/tdanalysis/data/detectors/A1.interferometer +13 -0
  68. tdanalysis-1.0.0/tdanalysis/data/detectors/CE20.ifo +11 -0
  69. tdanalysis-1.0.0/tdanalysis/data/detectors/CE40.ifo +11 -0
  70. tdanalysis-1.0.0/tdanalysis/data/detectors/ET.ifo +12 -0
  71. tdanalysis-1.0.0/tdanalysis/data/detectors/PROVENANCE.md +230 -0
  72. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE20-asd.txt +1000 -0
  73. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE20km_1p0MW_Aplus_coat_strain.txt +1000 -0
  74. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE20km_1p0MW_aLIGO_coat_strain.txt +1000 -0
  75. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE20km_1p5MW_Aplus_coat_strain.txt +1000 -0
  76. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE20km_1p5MW_aLIGO_coat_strain.txt +1000 -0
  77. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE40-asd.txt +1000 -0
  78. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE40km_1p0MW_Aplus_coat_strain.txt +1000 -0
  79. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE40km_1p0MW_aLIGO_coat_strain.txt +1000 -0
  80. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE40km_1p5MW_Aplus_coat_strain.txt +1000 -0
  81. tdanalysis-1.0.0/tdanalysis/data/noise_curves/CE40km_1p5MW_aLIGO_coat_strain.txt +1000 -0
  82. tdanalysis-1.0.0/tdanalysis/data/noise_curves/ET-psd.txt +3000 -0
  83. tdanalysis-1.0.0/tdanalysis/data/noise_curves/ET_cryo_10km_psd.txt +3000 -0
  84. tdanalysis-1.0.0/tdanalysis/data/noise_curves/ET_cryo_15km_psd.txt +3000 -0
  85. tdanalysis-1.0.0/tdanalysis/data/noise_curves/PROVENANCE.md +130 -0
  86. tdanalysis-1.0.0/tdanalysis/data/noise_curves/aplus.txt +3000 -0
  87. tdanalysis-1.0.0/tdanalysis/detectors/__init__.py +89 -0
  88. tdanalysis-1.0.0/tdanalysis/detectors/xg.py +1040 -0
  89. tdanalysis-1.0.0/tdanalysis/dtypes.py +75 -0
  90. tdanalysis-1.0.0/tdanalysis/exe/config.py +129 -0
  91. tdanalysis-1.0.0/tdanalysis/exe/runner.py +755 -0
  92. tdanalysis-1.0.0/tdanalysis/exe/tdpipe.py +72 -0
  93. tdanalysis-1.0.0/tdanalysis/fitting_factor.py +908 -0
  94. tdanalysis-1.0.0/tdanalysis/forms/cd.py +81 -0
  95. tdanalysis-1.0.0/tdanalysis/forms/gs.py +200 -0
  96. tdanalysis-1.0.0/tdanalysis/forms/gs_batched.py +66 -0
  97. tdanalysis-1.0.0/tdanalysis/forms/invld.py +105 -0
  98. tdanalysis-1.0.0/tdanalysis/forms/llt.py +122 -0
  99. tdanalysis-1.0.0/tdanalysis/forms/pcg.py +362 -0
  100. tdanalysis-1.0.0/tdanalysis/gpu/gpu_matrix_multiplier.py +215 -0
  101. tdanalysis-1.0.0/tdanalysis/gpu/kernels.py +14 -0
  102. tdanalysis-1.0.0/tdanalysis/inference/nr_injection.py +178 -0
  103. tdanalysis-1.0.0/tdanalysis/likelihoods/comparison/discriminators.py +218 -0
  104. tdanalysis-1.0.0/tdanalysis/likelihoods/multi/consistency_test.py +232 -0
  105. tdanalysis-1.0.0/tdanalysis/likelihoods/multi/pe.py +442 -0
  106. tdanalysis-1.0.0/tdanalysis/likelihoods/reduced_batch.py +203 -0
  107. tdanalysis-1.0.0/tdanalysis/likelihoods/single/consistency_test.py +443 -0
  108. tdanalysis-1.0.0/tdanalysis/likelihoods/single/pe.py +2424 -0
  109. tdanalysis-1.0.0/tdanalysis/priors/bbh.py +215 -0
  110. tdanalysis-1.0.0/tdanalysis/priors/bilby.py +67 -0
  111. tdanalysis-1.0.0/tdanalysis/utils/bilby.py +480 -0
  112. tdanalysis-1.0.0/tdanalysis/utils/conditioning.py +128 -0
  113. tdanalysis-1.0.0/tdanalysis/utils/io.py +117 -0
  114. tdanalysis-1.0.0/tdanalysis/utils/plotting.py +434 -0
  115. tdanalysis-1.0.0/tdanalysis/utils/serialize.py +62 -0
  116. tdanalysis-1.0.0/tdanalysis/waveforms/__init__.py +9 -0
  117. tdanalysis-1.0.0/tdanalysis/waveforms/nraasur.py +575 -0
  118. tdanalysis-1.0.0/tests/test_pe_smoke.py +261 -0
  119. tdanalysis-1.0.0/tests/test_psd_band_patching.py +542 -0
  120. tdanalysis-1.0.0/tests/test_taper_conditioning.py +158 -0
  121. tdanalysis-1.0.0/tests/test_whitening_backends.py +424 -0
  122. tdanalysis-1.0.0/tests/test_xg_acorrs.py +488 -0
@@ -0,0 +1,203 @@
1
+ tdanalysis is licensed under the PolyForm Noncommercial License 1.0.0, WITH
2
+ TWO ADDITIONAL TERMS stated at the end of this file. It is therefore a
3
+ MODIFIED PolyForm licence and must not be described as plain PolyForm
4
+ Noncommercial 1.0.0, nor identified by that SPDX identifier.
5
+
6
+ Copyright (c) 2026 Vaishak Prasad and Viviana Cáceres
7
+
8
+ WHAT THIS MEANS IN SHORT, with the licence text below governing:
9
+
10
+ * Research, teaching, personal and other noncommercial use: permitted,
11
+ freely, with no need to contact anyone or pay anything.
12
+ * Commercial use: NOT permitted under this licence. Contact the licensor to
13
+ arrange separate terms. Those terms may require a fee or a royalty.
14
+ * Using this work as training data for machine-learning models: NOT
15
+ permitted under this licence, commercial or not. See ADDITIONAL TERM 1.
16
+ * Working on or with this software using an AI tool that retains or trains
17
+ on what you give it: NOT permitted. See ADDITIONAL TERM 2.
18
+
19
+ This applies from the first release. No earlier version of tdanalysis has been
20
+ published under any other licence.
21
+
22
+ --------------------------------------------------------------------------
23
+
24
+ # PolyForm Noncommercial License 1.0.0
25
+
26
+ <https://polyformproject.org/licenses/noncommercial/1.0.0>
27
+
28
+ ## Acceptance
29
+
30
+ In order to get any license under these terms, you must agree
31
+ to them as both strict obligations and conditions to all
32
+ your licenses.
33
+
34
+ ## Copyright License
35
+
36
+ The licensor grants you a copyright license for the
37
+ software to do everything you might do with the software
38
+ that would otherwise infringe the licensor's copyright
39
+ in it for any permitted purpose. However, you may
40
+ only distribute the software according to [Distribution
41
+ License](#distribution-license) and make changes or new works
42
+ based on the software according to [Changes and New Works
43
+ License](#changes-and-new-works-license).
44
+
45
+ ## Distribution License
46
+
47
+ The licensor grants you an additional copyright license
48
+ to distribute copies of the software. Your license
49
+ to distribute covers distributing the software with
50
+ changes and new works permitted by [Changes and New Works
51
+ License](#changes-and-new-works-license).
52
+
53
+ ## Notices
54
+
55
+ You must ensure that anyone who gets a copy of any part of
56
+ the software from you also gets a copy of these terms or the
57
+ URL for them above, as well as copies of any plain-text lines
58
+ beginning with `Required Notice:` that the licensor provided
59
+ with the software. For example:
60
+
61
+ > Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
62
+
63
+ ## Changes and New Works License
64
+
65
+ The licensor grants you an additional copyright license to
66
+ make changes and new works based on the software for any
67
+ permitted purpose.
68
+
69
+ ## Patent License
70
+
71
+ The licensor grants you a patent license for the software that
72
+ covers patent claims the licensor can license, or becomes able
73
+ to license, that you would infringe by using the software.
74
+
75
+ ## Noncommercial Purposes
76
+
77
+ Any noncommercial purpose is a permitted purpose.
78
+
79
+ ## Personal Uses
80
+
81
+ Personal use for research, experiment, and testing for
82
+ the benefit of public knowledge, personal study, private
83
+ entertainment, hobby projects, amateur pursuits, or religious
84
+ observance, without any anticipated commercial application,
85
+ is use for a permitted purpose.
86
+
87
+ ## Noncommercial Organizations
88
+
89
+ Use by any charitable organization, educational institution,
90
+ public research organization, public safety or health
91
+ organization, environmental protection organization,
92
+ or government institution is use for a permitted purpose
93
+ regardless of the source of funding or obligations resulting
94
+ from the funding.
95
+
96
+ ## Fair Use
97
+
98
+ You may have "fair use" rights for the software under the
99
+ law. These terms do not limit them.
100
+
101
+ ## No Other Rights
102
+
103
+ These terms do not allow you to sublicense or transfer any of
104
+ your licenses to anyone else, or prevent the licensor from
105
+ granting licenses to anyone else. These terms do not imply
106
+ any other licenses.
107
+
108
+ ## Patent Defense
109
+
110
+ If you make any written claim that the software infringes or
111
+ contributes to infringement of any patent, your patent license
112
+ for the software granted under these terms ends immediately. If
113
+ your company makes such a claim, your patent license ends
114
+ immediately for work on behalf of your company.
115
+
116
+ ## Violations
117
+
118
+ The first time you are notified in writing that you have
119
+ violated any of these terms, or done anything with the software
120
+ not covered by your licenses, your licenses can nonetheless
121
+ continue if you come into full compliance with these terms,
122
+ and take practical steps to correct past violations, within
123
+ 32 days of receiving notice. Otherwise, all your licenses
124
+ end immediately.
125
+
126
+ ## No Liability
127
+
128
+ ***As far as the law allows, the software comes as is, without
129
+ any warranty or condition, and the licensor will not be liable
130
+ to you for any damages arising out of these terms or the use
131
+ or nature of the software, under any kind of legal claim.***
132
+
133
+ ## Definitions
134
+
135
+ The **licensor** is the individual or entity offering these
136
+ terms, and the **software** is the software the licensor makes
137
+ available under these terms.
138
+
139
+ **You** refers to the individual or entity agreeing to these
140
+ terms.
141
+
142
+ **Your company** is any legal entity, sole proprietorship,
143
+ or other kind of organization that you work for, plus all
144
+ organizations that have control over, are under the control of,
145
+ or are under common control with that organization. **Control**
146
+ means ownership of substantially all the assets of an entity,
147
+ or the power to direct its management and policies by vote,
148
+ contract, or otherwise. Control can be direct or indirect.
149
+
150
+ **Your licenses** are all the licenses granted to you for the
151
+ software under these terms.
152
+
153
+ **Use** means anything you do with the software requiring one
154
+ of your licenses.
155
+
156
+ ---
157
+
158
+ Required Notice: Copyright (c) 2026 Vaishak Prasad and Viviana Cáceres. Commercial use requires a
159
+ separate written licence from the copyright holder — contact vbp5193@psu.edu.
160
+ See NOTICE.md.
161
+
162
+ --------------------------------------------------------------------------
163
+
164
+ ## ADDITIONAL TERM 1: machine-learning training
165
+
166
+ This term is added by the licensor and is not part of the published PolyForm
167
+ Noncommercial License 1.0.0.
168
+
169
+ Use of the software, its documentation, or its outputs as training,
170
+ fine-tuning, validation or evaluation data for a machine-learning model,
171
+ statistical language model, or other automated system that generates or
172
+ reproduces code or text, is NOT a permitted purpose under these terms,
173
+ whether or not that use is commercial. Contact the licensor for permission.
174
+
175
+ This does not restrict using the software for its intended scientific
176
+ purpose, including as a component of, or a source of training data for,
177
+ scientific models of gravitational-wave signals -- for example emulators,
178
+ surrogates or reduced-order models of the waveforms or posteriors this
179
+ software produces. That is ordinary research use and is permitted.
180
+
181
+ ## ADDITIONAL TERM 2: AI tools used on this software
182
+
183
+ This term is added by the licensor and is not part of the published PolyForm
184
+ Noncommercial License 1.0.0.
185
+
186
+ You may use an AI assistant, coding agent, or similar automated system to
187
+ read, write, analyse or modify this software ONLY where that system is
188
+ configured so that the software, its documentation, and anything you derive
189
+ from them are not retained beyond serving your immediate request and are not
190
+ used to train, fine-tune, or evaluate any model.
191
+
192
+ Where such a tool offers that setting -- it goes by names like "training
193
+ off", "do not use my data for model improvement", or "zero data retention"
194
+ -- it must be enabled for the whole of your use of this software. Where a
195
+ tool offers no such setting, or where its terms of service reserve a right
196
+ to train on what you submit, use of that tool with this software is not
197
+ permitted under these terms.
198
+
199
+ This term does NOT prohibit AI assistance as such. It prohibits one
200
+ configuration of it: the one that would feed this software into a model's
201
+ training corpus, which is what ADDITIONAL TERM 1 already forbids doing
202
+ directly. The purpose is to close the same door twice, not to bar a tool
203
+ that keeps your input out of its training data.
@@ -0,0 +1,133 @@
1
+ # Notices
2
+
3
+ Copyright (c) 2026 Vaishak Prasad and Viviana Cáceres. All rights reserved except as licensed below.
4
+
5
+ This file summarises the licensing position. `LICENSE` governs; where the two
6
+ differ, `LICENSE` wins.
7
+
8
+ ## Licence
9
+
10
+ `tdanalysis` is licensed under the **PolyForm Noncommercial License 1.0.0, with
11
+ two additional terms** on machine-learning training and on AI tooling. The full
12
+ text is in `LICENSE`.
13
+
14
+ Because those terms modify it, this is **not** plain PolyForm Noncommercial and
15
+ must not be identified by that SPDX id. The metadata declares
16
+ `LicenseRef-PolyForm-Noncommercial-1.0.0-with-AI-terms`.
17
+
18
+ **This is not an open-source licence.** It is deliberately not OSI-approved,
19
+ because it restricts the field of use, which the Open Source Definition forbids.
20
+ Two consequences worth planning around: conda-forge will not accept it, and
21
+ neither will JOSS or most software-paper venues. PyPI has no such requirement.
22
+
23
+ This applies from the first release. No version of `tdanalysis` has been
24
+ published under any other licence.
25
+
26
+ ## Copyright, authorship and contributors
27
+
28
+ Copyright is held jointly by **Vaishak Prasad** and **Viviana Cáceres**, the two
29
+ principal developers of `tdanalysis`.
30
+
31
+ Copyright holder and contributor are different things, and this section lists
32
+ both. Contributors to this release, and to the wider project it is drawn from:
33
+
34
+ * **Vaishak Prasad** — the parameter estimation core, the consistency test, the
35
+ covariance and quadratic-form machinery, and the runner that this tier
36
+ consists of.
37
+ * **Viviana Cáceres** — the ringdown spectroscopy and multi-segment analysis,
38
+ and contributions across the shared code this release builds on.
39
+ * **Sayan Neogi** — a fix to the merger placement, where a missing `abs()` had
40
+ the peak located on the signed strain rather than on its amplitude.
41
+
42
+ The source repository was licensed GPL-3.0 from its first commit until this
43
+ release, and the change of licence was made with the agreement of both copyright
44
+ holders. It is prospective: anyone who received a copy of the software under
45
+ GPL-3.0 keeps GPL-3.0 rights to that copy. A licence already granted cannot be retracted, and
46
+ nothing here attempts to do so.
47
+
48
+ ## What you may do without asking
49
+
50
+ Research, teaching, academic and other noncommercial use, including publishing
51
+ results obtained with this software. No permission, no contact, no payment. The
52
+ licence grants this outright to "any charitable organization, educational
53
+ institution, public research organization, public safety or health organization,
54
+ environmental protection organization, or government institution ... regardless
55
+ of the source of funding" — so academic use funded by industry is still
56
+ noncommercial use, and needs nothing from anyone.
57
+
58
+ Modifying it, and sharing your modifications, for those same noncommercial
59
+ purposes.
60
+
61
+ ## What requires permission
62
+
63
+ **Commercial use of any kind.** If you or your company would use this software
64
+ in connection with a product, service, or activity from which commercial
65
+ advantage or monetary compensation is anticipated, you need a separate licence.
66
+ Commercial licences are available and separate terms can be arranged; those
67
+ terms may require a fee or a royalty. The licence is not a refusal, it is a
68
+ request that you ask.
69
+
70
+ **Use as training data.** Using the software, its documentation, or its outputs
71
+ to train, fine-tune, validate or evaluate a machine-learning model, language
72
+ model, or other system that generates or reproduces code or text — commercial or
73
+ not. See ADDITIONAL TERM 1.
74
+
75
+ This restriction is **not** aimed at scientific modelling. Building an emulator,
76
+ surrogate or reduced-order model *of the waveforms or posteriors this software
77
+ produces* is ordinary research use and is permitted. The term is aimed at
78
+ ingestion of the source and documentation into general-purpose code and language
79
+ models.
80
+
81
+ **AI tools configured to train on what you give them.** Reading, writing or
82
+ modifying this software with an AI assistant or coding agent is permitted only
83
+ where that tool is configured not to retain your input or use it for training.
84
+ See ADDITIONAL TERM 2. This does not prohibit AI assistance; it prohibits the
85
+ one configuration that would route the software into a training corpus by
86
+ another path.
87
+
88
+ Contact **vbp5193@psu.edu** for any of the above.
89
+
90
+ ## Reservation of rights for text and data mining
91
+
92
+ The copyright holders **expressly reserve** the right to reproduce, extract, or
93
+ otherwise use this software, in whole or in part, for text and data mining, or
94
+ for the training, fine-tuning, evaluation, or validation of machine-learning or
95
+ generative-AI models. No such right is granted by the licence above, whether the
96
+ use would otherwise be commercial or noncommercial.
97
+
98
+ This reservation is made in machine-readable form for the purposes of Article
99
+ 4(3) of Directive (EU) 2019/790, and is asserted generally elsewhere.
100
+
101
+ ```
102
+ tdm-reservation: all
103
+ ai-training: disallowed
104
+ ```
105
+
106
+ **An honest note on how strong these are.** They are not equally strong, and it
107
+ is better to know which is which.
108
+
109
+ The noncommercial term rests on copyright and is the strongest of the three. A
110
+ commercial user who ignores it is using a copyrighted work outside its licence.
111
+
112
+ The training restrictions — ADDITIONAL TERM 1 and the reservation above — are
113
+ weaker. Whether model training requires a copyright licence at all is unsettled,
114
+ and in some jurisdictions it may be permitted regardless of what a licence says.
115
+
116
+ ADDITIONAL TERM 2, on AI tooling, is a contractual condition rather than a
117
+ copyright one: it binds someone who accepted this licence, and it is close to
118
+ unverifiable in practice. Treat all three as a clear statement of the copyright
119
+ holders' position — which is what a reservation of rights is for — and not as a
120
+ guarantee of enforcement.
121
+
122
+ ## Dependencies
123
+
124
+ This software is an independent work that calls the public APIs of separately
125
+ installed third-party packages. It does not incorporate, vendor, or redistribute
126
+ their source. Those packages carry their own licences — several, including
127
+ `lalsuite` and `pycbc`, are GPL — and installing them is the user's own act
128
+ under their own terms. No third-party code is distributed with this package.
129
+
130
+ `tdanalysis._compat.Model` is a self-contained reimplementation of the model
131
+ base class from `mcsamplers` (https://gitlab.com/vaishakp/parameter-estimation),
132
+ which is the work of one of the same authors and is included here under the same terms
133
+ as the rest of this package.
@@ -0,0 +1,174 @@
1
+ Metadata-Version: 2.5
2
+ Name: tdanalysis
3
+ Version: 1.0.0
4
+ Summary: Time-domain parameter estimation and multi-segment consistency tests for gravitational-wave data
5
+ Project-URL: Homepage, https://github.com/vaishakp/tdanalysis
6
+ Author: Vaishak Prasad, Viviana Cáceres
7
+ Maintainer-email: Vaishak Prasad <vbp5193@psu.edu>
8
+ License-Expression: LicenseRef-PolyForm-Noncommercial-1.0.0-with-AI-terms
9
+ License-File: LICENSE
10
+ License-File: NOTICE.md
11
+ Keywords: consistency-test,gravitational-waves,parameter-estimation,time-domain
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
16
+ Classifier: Topic :: Scientific/Engineering :: Physics
17
+ Requires-Python: >=3.11
18
+ Requires-Dist: bilby-pipe
19
+ Requires-Dist: bilby<3,>=2.4
20
+ Requires-Dist: corner
21
+ Requires-Dist: dask
22
+ Requires-Dist: dynesty>=2.1
23
+ Requires-Dist: gwpy>=3.0
24
+ Requires-Dist: h5py
25
+ Requires-Dist: lalsuite>=7.20
26
+ Requires-Dist: matplotlib>=3.7
27
+ Requires-Dist: numba
28
+ Requires-Dist: numpy>=1.24
29
+ Requires-Dist: pandas>=2.0
30
+ Requires-Dist: pycbc>=2.3
31
+ Requires-Dist: scipy>=1.10
32
+ Requires-Dist: spectools
33
+ Requires-Dist: statsmodels
34
+ Requires-Dist: tqdm
35
+ Requires-Dist: waveformtools
36
+ Provides-Extra: all
37
+ Requires-Dist: nrhjsurrogate; extra == 'all'
38
+ Requires-Dist: threadpoolctl; extra == 'all'
39
+ Requires-Dist: vlconf; extra == 'all'
40
+ Provides-Extra: gpu-legacy
41
+ Requires-Dist: torch; extra == 'gpu-legacy'
42
+ Provides-Extra: nr
43
+ Requires-Dist: nrhjsurrogate; extra == 'nr'
44
+ Provides-Extra: pipeline
45
+ Requires-Dist: threadpoolctl; extra == 'pipeline'
46
+ Requires-Dist: vlconf; extra == 'pipeline'
47
+ Description-Content-Type: text/markdown
48
+
49
+ # tdanalysis
50
+
51
+ Time-domain parameter estimation for gravitational-wave data, and the
52
+ inspiral-ringdown consistency test built on it.
53
+
54
+ The likelihood is `-½ δᵀ C⁻¹ δ` evaluated on a chosen data segment, where `C` is
55
+ a full noise covariance built from a detector autocorrelation function rather
56
+ than from a diagonal-in-frequency PSD approximation. That is what makes short,
57
+ gated or gappy segments tractable, which is the regime a ringdown analysis lives
58
+ in.
59
+
60
+ This is release **v1**. It is pure Python, it installs from PyPI with no
61
+ compiler, and it contains the parameter estimation core and the consistency
62
+ test. The batched GPU sampling path (v2) and the ringdown spectroscopy
63
+ likelihoods (v3) are separate, later releases of this same package.
64
+
65
+ ## Install
66
+
67
+ ```bash
68
+ pip install tdanalysis
69
+ ```
70
+
71
+ The wheel is `py3-none-any`. Python 3.11 or newer.
72
+
73
+ Optional extras:
74
+
75
+ | Extra | Pulls in | For |
76
+ |---|---|---|
77
+ | `tdanalysis[pipeline]` | `vlconf`, `threadpoolctl` | the `tdanalysis` config-driven CLI |
78
+ | `tdanalysis[nr]` | `nrhjsurrogate` | the NRAASur action-angle waveform backend |
79
+ | `tdanalysis[gpu-legacy]` | `torch` | non-numba backends of the legacy matrix multiplier |
80
+ | `tdanalysis[all]` | the first two | |
81
+
82
+ Every one of these is imported inside a function at the point it is first
83
+ needed, so the library imports and runs without any of them.
84
+
85
+ `nrhjsurrogate` declares `requires-python >= 3.12`, so the `[nr]` extra can
86
+ only be resolved on 3.12 or newer even though the package itself supports
87
+ 3.11. On an older interpreter pip fails with that as the reason, which is
88
+ the intended behaviour: the alternative is a marker that installs nothing
89
+ and leaves the backend quietly missing.
90
+
91
+ ## What is in here
92
+
93
+ * **Parameter estimation.** `tdanalysis.likelihoods.single.pe.GWTransientTD` for
94
+ one detector, `...likelihoods.multi.pe.GWTransientTDMultiDetector` for a
95
+ coherent network. A bilby `Likelihood`, so it drops into a bilby sampler run.
96
+ * **Inspiral-ringdown consistency test.**
97
+ `tdanalysis.likelihoods.single.consistency_test.InspiralRingdownConsistencyTD`
98
+ and `...likelihoods.multi.consistency_test.IMRConsistencyMultiDetector`,
99
+ comparing an inspiral-derived and a ringdown-derived remnant, plus
100
+ `tdanalysis.likelihoods.comparison.discriminators.ChiSquaredRingdown`.
101
+ * **Quadratic forms and whiteners.** `tdanalysis.forms`, selected with
102
+ `qform_method`: Gohberg-Semencul (`gs`, O(N log N) via FFT), preconditioned CG
103
+ (`pcg`), `invLD`, `Llt` and `CD`. `gs_batched` is the numpy batched chi-square
104
+ that `reduced_batch` drives.
105
+ * **Covariance and PSD handling.** `tdanalysis.covariance`, including the band
106
+ patching and taper conditioning the tests cover.
107
+ * **Next-generation detectors.** `tdanalysis.detectors.xg`: CE40, CE20, the
108
+ triangular ET (ET1/ET2/ET3) and LIGO-India, with vendored noise curves and
109
+ conditioned autocorrelations under `tdanalysis/data/`. Importing
110
+ `tdanalysis.detectors` registers them with pycbc. Provenance for every
111
+ vendored file is in `tdanalysis/data/*/PROVENANCE.md`.
112
+ * **Waveform backends.** LAL and pycbc approximants, plus the NRAASur
113
+ action-angle surrogate (`tdanalysis.waveforms.nraasur`). All wrapped at the
114
+ generator level, so peak finding, tapers, padding, the segment crop and the
115
+ projection are the same code for every approximant. That is what makes
116
+ parameters estimated with different models comparable.
117
+ * **A CLI.** `tdanalysis --help`, a config-driven run driver.
118
+
119
+ Not in v1: ringdown spectroscopy likelihoods and Kerr QNM templates (v3), the
120
+ Kokkos GPU kernels and batched sampling (v2).
121
+
122
+ ## Worked example
123
+
124
+ `tests/test_pe_smoke.py` is the reference example as well as the release gate.
125
+ It builds a real `GWTransientTD` with real LAL waveform generation, real
126
+ conditioning and projection, and a real Gohberg-Semencul form from a real
127
+ Cholesky factor, with nothing mocked. It carries no data-file dependency, so it
128
+ runs anywhere the package installs.
129
+
130
+ Read it for the constructor arguments in context. The properties it pins are
131
+ worth knowing about:
132
+
133
+ * the zero-noise truth is the maximum, and moving off it costs chi-square
134
+ * scalar and batched evaluation give the same number, so a posterior does not
135
+ depend on the batch size
136
+ * batching is row-order independent, and a one-row batch matches the scalar call
137
+ * the likelihood survives a pickle round trip, which is what lets a bilby
138
+ multiprocessing pool carry it
139
+
140
+ ## Tests
141
+
142
+ ```bash
143
+ pip install tdanalysis
144
+ python -m pytest tests/ -q
145
+ ```
146
+
147
+ Five files ship: the `GWTransientTD` gate above, plus PSD band patching, taper
148
+ conditioning, whitening backend agreement and the XG autocorrelations.
149
+
150
+ ## Licence
151
+
152
+ **PolyForm Noncommercial License 1.0.0, with two additional terms.** See
153
+ `LICENSE` for the text and `NOTICE.md` for what it means in practice, and for
154
+ the contributors to this release.
155
+
156
+ This is deliberately not an open-source licence, because it restricts the field
157
+ of use.
158
+
159
+ * **Noncommercial use is free and needs no permission** — research, teaching,
160
+ and publishing results obtained with it. The licence grants that outright,
161
+ including where the funding is industrial.
162
+ * **Commercial use needs a written licence**, which may carry a fee or a
163
+ royalty: vbp5193@psu.edu.
164
+ * **Training a model on this software is not permitted**, commercial or not.
165
+ Building a surrogate or emulator of the *waveforms and posteriors it produces*
166
+ is ordinary research use and is fine; ingesting the source and documentation
167
+ into a general-purpose code or language model is not.
168
+ * **AI tools may be used on this software only with training and retention
169
+ off.** AI assistance as such is not prohibited; the configuration that would
170
+ feed this code into a training corpus is.
171
+
172
+ Because those additional terms modify PolyForm, the metadata declares
173
+ `LicenseRef-PolyForm-Noncommercial-1.0.0-with-AI-terms` rather than the bare
174
+ PolyForm identifier.
@@ -0,0 +1,126 @@
1
+ # tdanalysis
2
+
3
+ Time-domain parameter estimation for gravitational-wave data, and the
4
+ inspiral-ringdown consistency test built on it.
5
+
6
+ The likelihood is `-½ δᵀ C⁻¹ δ` evaluated on a chosen data segment, where `C` is
7
+ a full noise covariance built from a detector autocorrelation function rather
8
+ than from a diagonal-in-frequency PSD approximation. That is what makes short,
9
+ gated or gappy segments tractable, which is the regime a ringdown analysis lives
10
+ in.
11
+
12
+ This is release **v1**. It is pure Python, it installs from PyPI with no
13
+ compiler, and it contains the parameter estimation core and the consistency
14
+ test. The batched GPU sampling path (v2) and the ringdown spectroscopy
15
+ likelihoods (v3) are separate, later releases of this same package.
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ pip install tdanalysis
21
+ ```
22
+
23
+ The wheel is `py3-none-any`. Python 3.11 or newer.
24
+
25
+ Optional extras:
26
+
27
+ | Extra | Pulls in | For |
28
+ |---|---|---|
29
+ | `tdanalysis[pipeline]` | `vlconf`, `threadpoolctl` | the `tdanalysis` config-driven CLI |
30
+ | `tdanalysis[nr]` | `nrhjsurrogate` | the NRAASur action-angle waveform backend |
31
+ | `tdanalysis[gpu-legacy]` | `torch` | non-numba backends of the legacy matrix multiplier |
32
+ | `tdanalysis[all]` | the first two | |
33
+
34
+ Every one of these is imported inside a function at the point it is first
35
+ needed, so the library imports and runs without any of them.
36
+
37
+ `nrhjsurrogate` declares `requires-python >= 3.12`, so the `[nr]` extra can
38
+ only be resolved on 3.12 or newer even though the package itself supports
39
+ 3.11. On an older interpreter pip fails with that as the reason, which is
40
+ the intended behaviour: the alternative is a marker that installs nothing
41
+ and leaves the backend quietly missing.
42
+
43
+ ## What is in here
44
+
45
+ * **Parameter estimation.** `tdanalysis.likelihoods.single.pe.GWTransientTD` for
46
+ one detector, `...likelihoods.multi.pe.GWTransientTDMultiDetector` for a
47
+ coherent network. A bilby `Likelihood`, so it drops into a bilby sampler run.
48
+ * **Inspiral-ringdown consistency test.**
49
+ `tdanalysis.likelihoods.single.consistency_test.InspiralRingdownConsistencyTD`
50
+ and `...likelihoods.multi.consistency_test.IMRConsistencyMultiDetector`,
51
+ comparing an inspiral-derived and a ringdown-derived remnant, plus
52
+ `tdanalysis.likelihoods.comparison.discriminators.ChiSquaredRingdown`.
53
+ * **Quadratic forms and whiteners.** `tdanalysis.forms`, selected with
54
+ `qform_method`: Gohberg-Semencul (`gs`, O(N log N) via FFT), preconditioned CG
55
+ (`pcg`), `invLD`, `Llt` and `CD`. `gs_batched` is the numpy batched chi-square
56
+ that `reduced_batch` drives.
57
+ * **Covariance and PSD handling.** `tdanalysis.covariance`, including the band
58
+ patching and taper conditioning the tests cover.
59
+ * **Next-generation detectors.** `tdanalysis.detectors.xg`: CE40, CE20, the
60
+ triangular ET (ET1/ET2/ET3) and LIGO-India, with vendored noise curves and
61
+ conditioned autocorrelations under `tdanalysis/data/`. Importing
62
+ `tdanalysis.detectors` registers them with pycbc. Provenance for every
63
+ vendored file is in `tdanalysis/data/*/PROVENANCE.md`.
64
+ * **Waveform backends.** LAL and pycbc approximants, plus the NRAASur
65
+ action-angle surrogate (`tdanalysis.waveforms.nraasur`). All wrapped at the
66
+ generator level, so peak finding, tapers, padding, the segment crop and the
67
+ projection are the same code for every approximant. That is what makes
68
+ parameters estimated with different models comparable.
69
+ * **A CLI.** `tdanalysis --help`, a config-driven run driver.
70
+
71
+ Not in v1: ringdown spectroscopy likelihoods and Kerr QNM templates (v3), the
72
+ Kokkos GPU kernels and batched sampling (v2).
73
+
74
+ ## Worked example
75
+
76
+ `tests/test_pe_smoke.py` is the reference example as well as the release gate.
77
+ It builds a real `GWTransientTD` with real LAL waveform generation, real
78
+ conditioning and projection, and a real Gohberg-Semencul form from a real
79
+ Cholesky factor, with nothing mocked. It carries no data-file dependency, so it
80
+ runs anywhere the package installs.
81
+
82
+ Read it for the constructor arguments in context. The properties it pins are
83
+ worth knowing about:
84
+
85
+ * the zero-noise truth is the maximum, and moving off it costs chi-square
86
+ * scalar and batched evaluation give the same number, so a posterior does not
87
+ depend on the batch size
88
+ * batching is row-order independent, and a one-row batch matches the scalar call
89
+ * the likelihood survives a pickle round trip, which is what lets a bilby
90
+ multiprocessing pool carry it
91
+
92
+ ## Tests
93
+
94
+ ```bash
95
+ pip install tdanalysis
96
+ python -m pytest tests/ -q
97
+ ```
98
+
99
+ Five files ship: the `GWTransientTD` gate above, plus PSD band patching, taper
100
+ conditioning, whitening backend agreement and the XG autocorrelations.
101
+
102
+ ## Licence
103
+
104
+ **PolyForm Noncommercial License 1.0.0, with two additional terms.** See
105
+ `LICENSE` for the text and `NOTICE.md` for what it means in practice, and for
106
+ the contributors to this release.
107
+
108
+ This is deliberately not an open-source licence, because it restricts the field
109
+ of use.
110
+
111
+ * **Noncommercial use is free and needs no permission** — research, teaching,
112
+ and publishing results obtained with it. The licence grants that outright,
113
+ including where the funding is industrial.
114
+ * **Commercial use needs a written licence**, which may carry a fee or a
115
+ royalty: vbp5193@psu.edu.
116
+ * **Training a model on this software is not permitted**, commercial or not.
117
+ Building a surrogate or emulator of the *waveforms and posteriors it produces*
118
+ is ordinary research use and is fine; ingesting the source and documentation
119
+ into a general-purpose code or language model is not.
120
+ * **AI tools may be used on this software only with training and retention
121
+ off.** AI assistance as such is not prohibited; the configuration that would
122
+ feed this code into a training corpus is.
123
+
124
+ Because those additional terms modify PolyForm, the metadata declares
125
+ `LicenseRef-PolyForm-Noncommercial-1.0.0-with-AI-terms` rather than the bare
126
+ PolyForm identifier.