lalsuite 7.26.2.dev20251218__cp314-cp314t-manylinux_2_28_x86_64.whl

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 (733) hide show
  1. lal/__init__.py +145 -0
  2. lal/_lal.cpython-314t-x86_64-linux-gnu.so +0 -0
  3. lal/_lal_swig.py +12 -0
  4. lal/antenna.py +1200 -0
  5. lal/git_version.py +64 -0
  6. lal/gpstime.py +233 -0
  7. lal/iterutils.py +408 -0
  8. lal/pipeline.py +3139 -0
  9. lal/rate.py +2455 -0
  10. lal/series.py +244 -0
  11. lal/utils/__init__.py +29 -0
  12. lal/utils/cache.py +379 -0
  13. lal/utils/series.py +277 -0
  14. lalapps/__init__.py +26 -0
  15. lalapps/bin/lal_cache +0 -0
  16. lalapps/bin/lal_fftw_wisdom +0 -0
  17. lalapps/bin/lal_fftwf_wisdom +0 -0
  18. lalapps/bin/lal_simd_detect +0 -0
  19. lalapps/bin/lal_tconvert +0 -0
  20. lalapps/bin/lal_version +0 -0
  21. lalapps/bin/lalapps_ComputeAntennaPattern +16 -0
  22. lalapps/bin/lalapps_ComputeFstatBenchmark +16 -0
  23. lalapps/bin/lalapps_ComputeFstatLatticeCount +16 -0
  24. lalapps/bin/lalapps_ComputeFstatMCUpperLimit +16 -0
  25. lalapps/bin/lalapps_ComputeFstatistic_v2 +16 -0
  26. lalapps/bin/lalapps_ComputePSD +16 -0
  27. lalapps/bin/lalapps_CopySFTs +16 -0
  28. lalapps/bin/lalapps_DistanceVsMass +0 -0
  29. lalapps/bin/lalapps_DriveHoughMulti +16 -0
  30. lalapps/bin/lalapps_FstatMetric_v2 +16 -0
  31. lalapps/bin/lalapps_HierarchSearchGCT +16 -0
  32. lalapps/bin/lalapps_HierarchicalSearch +16 -0
  33. lalapps/bin/lalapps_MakeSFTDAG +16 -0
  34. lalapps/bin/lalapps_MakeSFTs +16 -0
  35. lalapps/bin/lalapps_Makefakedata_v4 +16 -0
  36. lalapps/bin/lalapps_Makefakedata_v5 +16 -0
  37. lalapps/bin/lalapps_PredictFstat +16 -0
  38. lalapps/bin/lalapps_PrintDetectorState +16 -0
  39. lalapps/bin/lalapps_SFTclean +16 -0
  40. lalapps/bin/lalapps_SFTvalidate +16 -0
  41. lalapps/bin/lalapps_StringAddFrame +0 -0
  42. lalapps/bin/lalapps_StringSearch +0 -0
  43. lalapps/bin/lalapps_Weave +16 -0
  44. lalapps/bin/lalapps_WeaveCompare +16 -0
  45. lalapps/bin/lalapps_WeaveConcat +16 -0
  46. lalapps/bin/lalapps_WeaveSetup +16 -0
  47. lalapps/bin/lalapps_WriteSFTsfromSFDBs +16 -0
  48. lalapps/bin/lalapps_animate +0 -0
  49. lalapps/bin/lalapps_binj +0 -0
  50. lalapps/bin/lalapps_blindinj +0 -0
  51. lalapps/bin/lalapps_cache +16 -0
  52. lalapps/bin/lalapps_calfacs +0 -0
  53. lalapps/bin/lalapps_cbc_stochasticbank +0 -0
  54. lalapps/bin/lalapps_chirplen +0 -0
  55. lalapps/bin/lalapps_coh_PTF_inspiral +0 -0
  56. lalapps/bin/lalapps_coinj +0 -0
  57. lalapps/bin/lalapps_combine_crosscorr_toplists +16 -0
  58. lalapps/bin/lalapps_compareFstats +16 -0
  59. lalapps/bin/lalapps_compareSFTs +16 -0
  60. lalapps/bin/lalapps_create_time_correction_ephemeris +16 -0
  61. lalapps/bin/lalapps_dumpSFT +16 -0
  62. lalapps/bin/lalapps_effdist +0 -0
  63. lalapps/bin/lalapps_exc_resp +0 -0
  64. lalapps/bin/lalapps_fftw_wisdom +16 -0
  65. lalapps/bin/lalapps_fftwf_wisdom +16 -0
  66. lalapps/bin/lalapps_fits_header_getval +16 -0
  67. lalapps/bin/lalapps_fits_header_list +16 -0
  68. lalapps/bin/lalapps_fits_overview +16 -0
  69. lalapps/bin/lalapps_fits_table_list +16 -0
  70. lalapps/bin/lalapps_fr_ninja +0 -0
  71. lalapps/bin/lalapps_frextr +0 -0
  72. lalapps/bin/lalapps_frinfo +0 -0
  73. lalapps/bin/lalapps_frjoin +0 -0
  74. lalapps/bin/lalapps_frread +0 -0
  75. lalapps/bin/lalapps_frview +0 -0
  76. lalapps/bin/lalapps_gwf2xml +0 -0
  77. lalapps/bin/lalapps_heterodyne_pulsar +16 -0
  78. lalapps/bin/lalapps_inspawgfile +0 -0
  79. lalapps/bin/lalapps_inspfrinj +0 -0
  80. lalapps/bin/lalapps_inspinj +0 -0
  81. lalapps/bin/lalapps_inspiralDistance +0 -0
  82. lalapps/bin/lalapps_knope +16 -0
  83. lalapps/bin/lalapps_knope_automation_script +16 -0
  84. lalapps/bin/lalapps_knope_collate_results +16 -0
  85. lalapps/bin/lalapps_knope_result_page +16 -0
  86. lalapps/bin/lalapps_makeblindinj +85 -0
  87. lalapps/bin/lalapps_makeblindinj_himass +67 -0
  88. lalapps/bin/lalapps_ninja +0 -0
  89. lalapps/bin/lalapps_path2cache +16 -0
  90. lalapps/bin/lalapps_power +0 -0
  91. lalapps/bin/lalapps_pulsar_crosscorr_v2 +16 -0
  92. lalapps/bin/lalapps_pulsar_frequency_evolution +16 -0
  93. lalapps/bin/lalapps_pulsar_parameter_estimation_nested +16 -0
  94. lalapps/bin/lalapps_random_bank +0 -0
  95. lalapps/bin/lalapps_randombank +0 -0
  96. lalapps/bin/lalapps_run_pulsar_crosscorr_v2 +16 -0
  97. lalapps/bin/lalapps_searchsum2cache +16 -0
  98. lalapps/bin/lalapps_spec_avg +16 -0
  99. lalapps/bin/lalapps_spec_avg_long +16 -0
  100. lalapps/bin/lalapps_spec_coherence +16 -0
  101. lalapps/bin/lalapps_spininj +0 -0
  102. lalapps/bin/lalapps_splitSFTs +16 -0
  103. lalapps/bin/lalapps_splitbank +0 -0
  104. lalapps/bin/lalapps_ssbtodetector +16 -0
  105. lalapps/bin/lalapps_synthesizeBstatMC +16 -0
  106. lalapps/bin/lalapps_synthesizeLVStats +16 -0
  107. lalapps/bin/lalapps_synthesizeTransientStats +16 -0
  108. lalapps/bin/lalapps_tconvert +16 -0
  109. lalapps/bin/lalapps_tmpltbank +0 -0
  110. lalapps/bin/lalapps_version +0 -0
  111. lalapps/bin/lalapps_xtefitstoframe +0 -0
  112. lalapps/bin/lalburst_version +0 -0
  113. lalapps/bin/lalfr-cat +0 -0
  114. lalapps/bin/lalfr-cksum +0 -0
  115. lalapps/bin/lalfr-cut +0 -0
  116. lalapps/bin/lalfr-dump +0 -0
  117. lalapps/bin/lalfr-fmt +0 -0
  118. lalapps/bin/lalfr-paste +0 -0
  119. lalapps/bin/lalfr-print +0 -0
  120. lalapps/bin/lalfr-split +0 -0
  121. lalapps/bin/lalfr-stat +0 -0
  122. lalapps/bin/lalfr-stream +0 -0
  123. lalapps/bin/lalfr-vis +0 -0
  124. lalapps/bin/lalframe_version +0 -0
  125. lalapps/bin/lalinference_bench +0 -0
  126. lalapps/bin/lalinference_burst +0 -0
  127. lalapps/bin/lalinference_datadump +0 -0
  128. lalapps/bin/lalinference_injectedlike +0 -0
  129. lalapps/bin/lalinference_mpi_wrapper +59 -0
  130. lalapps/bin/lalinference_nest +0 -0
  131. lalapps/bin/lalinference_version +0 -0
  132. lalapps/bin/lalinspiral_version +0 -0
  133. lalapps/bin/lalmetaio_version +0 -0
  134. lalapps/bin/lalpulsar_ComputeAntennaPattern +0 -0
  135. lalapps/bin/lalpulsar_ComputeFstatBenchmark +0 -0
  136. lalapps/bin/lalpulsar_ComputeFstatLatticeCount +0 -0
  137. lalapps/bin/lalpulsar_ComputeFstatMCUpperLimit +0 -0
  138. lalapps/bin/lalpulsar_ComputeFstatistic_v2 +0 -0
  139. lalapps/bin/lalpulsar_ComputePSD +0 -0
  140. lalapps/bin/lalpulsar_DriveHoughMulti +0 -0
  141. lalapps/bin/lalpulsar_FstatMetric_v2 +0 -0
  142. lalapps/bin/lalpulsar_HierarchSearchGCT +0 -0
  143. lalapps/bin/lalpulsar_HierarchicalSearch +0 -0
  144. lalapps/bin/lalpulsar_MakeSFTs +0 -0
  145. lalapps/bin/lalpulsar_Makefakedata_v4 +0 -0
  146. lalapps/bin/lalpulsar_Makefakedata_v5 +0 -0
  147. lalapps/bin/lalpulsar_PredictFstat +0 -0
  148. lalapps/bin/lalpulsar_PrintDetectorState +0 -0
  149. lalapps/bin/lalpulsar_SFTclean +0 -0
  150. lalapps/bin/lalpulsar_SFTvalidate +0 -0
  151. lalapps/bin/lalpulsar_Weave +0 -0
  152. lalapps/bin/lalpulsar_WeaveCompare +0 -0
  153. lalapps/bin/lalpulsar_WeaveConcat +0 -0
  154. lalapps/bin/lalpulsar_WeaveSetup +0 -0
  155. lalapps/bin/lalpulsar_WriteSFTsfromSFDBs +0 -0
  156. lalapps/bin/lalpulsar_compareFstats +0 -0
  157. lalapps/bin/lalpulsar_compareSFTs +0 -0
  158. lalapps/bin/lalpulsar_create_time_correction_ephemeris +0 -0
  159. lalapps/bin/lalpulsar_crosscorr_v2 +0 -0
  160. lalapps/bin/lalpulsar_dumpSFT +0 -0
  161. lalapps/bin/lalpulsar_fits_header_getval +0 -0
  162. lalapps/bin/lalpulsar_fits_header_list +0 -0
  163. lalapps/bin/lalpulsar_fits_overview +0 -0
  164. lalapps/bin/lalpulsar_fits_table_list +0 -0
  165. lalapps/bin/lalpulsar_frequency_evolution +0 -0
  166. lalapps/bin/lalpulsar_heterodyne +0 -0
  167. lalapps/bin/lalpulsar_parameter_estimation_nested +0 -0
  168. lalapps/bin/lalpulsar_spec_avg +0 -0
  169. lalapps/bin/lalpulsar_spec_avg_long +0 -0
  170. lalapps/bin/lalpulsar_spec_coherence +0 -0
  171. lalapps/bin/lalpulsar_splitSFTs +0 -0
  172. lalapps/bin/lalpulsar_ssbtodetector +0 -0
  173. lalapps/bin/lalpulsar_synthesizeBstatMC +0 -0
  174. lalapps/bin/lalpulsar_synthesizeLVStats +0 -0
  175. lalapps/bin/lalpulsar_synthesizeTransientStats +0 -0
  176. lalapps/bin/lalpulsar_version +0 -0
  177. lalapps/bin/lalsim-bh-qnmode +0 -0
  178. lalapps/bin/lalsim-bh-ringdown +0 -0
  179. lalapps/bin/lalsim-bh-sphwf +0 -0
  180. lalapps/bin/lalsim-burst +0 -0
  181. lalapps/bin/lalsim-detector-noise +0 -0
  182. lalapps/bin/lalsim-detector-strain +0 -0
  183. lalapps/bin/lalsim-inject +0 -0
  184. lalapps/bin/lalsim-inspiral +0 -0
  185. lalapps/bin/lalsim-ns-eos-table +0 -0
  186. lalapps/bin/lalsim-ns-mass-radius +0 -0
  187. lalapps/bin/lalsim-ns-params +0 -0
  188. lalapps/bin/lalsim-sgwb +0 -0
  189. lalapps/bin/lalsim-unicorn +0 -0
  190. lalapps/bin/lalsimulation_version +0 -0
  191. lalapps/cosmicstring.py +691 -0
  192. lalapps/data/BNSMasses.dat +65022 -0
  193. lalapps/data/CorrelationMatrix.csv +15 -0
  194. lalapps/data/LALSimNeutronStarEOS_ABHT_QMC_RMF1_META.dat +1882 -0
  195. lalapps/data/LALSimNeutronStarEOS_ABHT_QMC_RMF2_META.dat +1939 -0
  196. lalapps/data/LALSimNeutronStarEOS_ABHT_QMC_RMF3_META.dat +1784 -0
  197. lalapps/data/LALSimNeutronStarEOS_ABHT_QMC_RMF4_META.dat +2074 -0
  198. lalapps/data/LALSimNeutronStarEOS_ALF1.dat +435 -0
  199. lalapps/data/LALSimNeutronStarEOS_ALF2.dat +453 -0
  200. lalapps/data/LALSimNeutronStarEOS_ALF3.dat +441 -0
  201. lalapps/data/LALSimNeutronStarEOS_ALF4.dat +441 -0
  202. lalapps/data/LALSimNeutronStarEOS_AP1.dat +212 -0
  203. lalapps/data/LALSimNeutronStarEOS_AP2.dat +212 -0
  204. lalapps/data/LALSimNeutronStarEOS_AP3.dat +212 -0
  205. lalapps/data/LALSimNeutronStarEOS_AP4.dat +210 -0
  206. lalapps/data/LALSimNeutronStarEOS_APR.dat +500 -0
  207. lalapps/data/LALSimNeutronStarEOS_APR4_EPP.dat +1447 -0
  208. lalapps/data/LALSimNeutronStarEOS_BBB2.dat +84 -0
  209. lalapps/data/LALSimNeutronStarEOS_BGN1H1.dat +123 -0
  210. lalapps/data/LALSimNeutronStarEOS_BHF_BBB2.dat +499 -0
  211. lalapps/data/LALSimNeutronStarEOS_BL_CHIRAL_META.dat +1534 -0
  212. lalapps/data/LALSimNeutronStarEOS_BPAL12.dat +61 -0
  213. lalapps/data/LALSimNeutronStarEOS_BSK19.dat +310 -0
  214. lalapps/data/LALSimNeutronStarEOS_BSK20.dat +310 -0
  215. lalapps/data/LALSimNeutronStarEOS_BSK21.dat +310 -0
  216. lalapps/data/LALSimNeutronStarEOS_ENG.dat +108 -0
  217. lalapps/data/LALSimNeutronStarEOS_FPS.dat +129 -0
  218. lalapps/data/LALSimNeutronStarEOS_GMSR_BSK14_BSK24.dat +1010 -0
  219. lalapps/data/LALSimNeutronStarEOS_GMSR_DHSL59_BSK24.dat +1009 -0
  220. lalapps/data/LALSimNeutronStarEOS_GMSR_DHSL69_BSK24.dat +1009 -0
  221. lalapps/data/LALSimNeutronStarEOS_GMSR_F0_BSK24.dat +1010 -0
  222. lalapps/data/LALSimNeutronStarEOS_GMSR_H1_BSK24.dat +1009 -0
  223. lalapps/data/LALSimNeutronStarEOS_GMSR_H2_BSK24.dat +1010 -0
  224. lalapps/data/LALSimNeutronStarEOS_GMSR_H3_BSK24.dat +1010 -0
  225. lalapps/data/LALSimNeutronStarEOS_GMSR_H4_BSK24.dat +1010 -0
  226. lalapps/data/LALSimNeutronStarEOS_GMSR_H5_BSK24.dat +1009 -0
  227. lalapps/data/LALSimNeutronStarEOS_GMSR_LN55_BSK24.dat +1010 -0
  228. lalapps/data/LALSimNeutronStarEOS_GMSR_SLY5_BSK24.dat +1010 -0
  229. lalapps/data/LALSimNeutronStarEOS_GNH3.dat +71 -0
  230. lalapps/data/LALSimNeutronStarEOS_GPPVA_DD2_BSK24.dat +1009 -0
  231. lalapps/data/LALSimNeutronStarEOS_GPPVA_DDME2_BSK24.dat +1010 -0
  232. lalapps/data/LALSimNeutronStarEOS_GPPVA_FSU2H_BSK24.dat +1009 -0
  233. lalapps/data/LALSimNeutronStarEOS_GPPVA_FSU2_BSK24.dat +1010 -0
  234. lalapps/data/LALSimNeutronStarEOS_GPPVA_NL3WRL55_BSK24.dat +1010 -0
  235. lalapps/data/LALSimNeutronStarEOS_GS1.dat +136 -0
  236. lalapps/data/LALSimNeutronStarEOS_GS2.dat +100 -0
  237. lalapps/data/LALSimNeutronStarEOS_H1.dat +114 -0
  238. lalapps/data/LALSimNeutronStarEOS_H2.dat +114 -0
  239. lalapps/data/LALSimNeutronStarEOS_H3.dat +98 -0
  240. lalapps/data/LALSimNeutronStarEOS_H4.dat +664 -0
  241. lalapps/data/LALSimNeutronStarEOS_H5.dat +703 -0
  242. lalapps/data/LALSimNeutronStarEOS_H6.dat +509 -0
  243. lalapps/data/LALSimNeutronStarEOS_H7.dat +703 -0
  244. lalapps/data/LALSimNeutronStarEOS_HQC18.dat +388 -0
  245. lalapps/data/LALSimNeutronStarEOS_KDE0V.dat +500 -0
  246. lalapps/data/LALSimNeutronStarEOS_KDE0V1.dat +500 -0
  247. lalapps/data/LALSimNeutronStarEOS_KDE0V1_BSK24.dat +1388 -0
  248. lalapps/data/LALSimNeutronStarEOS_KDE0V_BSK24.dat +1398 -0
  249. lalapps/data/LALSimNeutronStarEOS_MPA1.dat +102 -0
  250. lalapps/data/LALSimNeutronStarEOS_MS1.dat +122 -0
  251. lalapps/data/LALSimNeutronStarEOS_MS1B.dat +126 -0
  252. lalapps/data/LALSimNeutronStarEOS_MS1B_PP.dat +1447 -0
  253. lalapps/data/LALSimNeutronStarEOS_MS1_PP.dat +1447 -0
  254. lalapps/data/LALSimNeutronStarEOS_MS2.dat +48 -0
  255. lalapps/data/LALSimNeutronStarEOS_PAL6.dat +148 -0
  256. lalapps/data/LALSimNeutronStarEOS_PCL2.dat +134 -0
  257. lalapps/data/LALSimNeutronStarEOS_PCP_BSK24_BSK24.dat +1010 -0
  258. lalapps/data/LALSimNeutronStarEOS_PS.dat +165 -0
  259. lalapps/data/LALSimNeutronStarEOS_QMC700.dat +117 -0
  260. lalapps/data/LALSimNeutronStarEOS_RG_SLY4_BSK24.dat +1010 -0
  261. lalapps/data/LALSimNeutronStarEOS_RS.dat +500 -0
  262. lalapps/data/LALSimNeutronStarEOS_RS_BSK24.dat +1356 -0
  263. lalapps/data/LALSimNeutronStarEOS_SK255.dat +500 -0
  264. lalapps/data/LALSimNeutronStarEOS_SK255_BSK24.dat +1066 -0
  265. lalapps/data/LALSimNeutronStarEOS_SK272.dat +500 -0
  266. lalapps/data/LALSimNeutronStarEOS_SKA.dat +500 -0
  267. lalapps/data/LALSimNeutronStarEOS_SKA_BSK24.dat +1433 -0
  268. lalapps/data/LALSimNeutronStarEOS_SKB.dat +500 -0
  269. lalapps/data/LALSimNeutronStarEOS_SKB_BSK24.dat +1373 -0
  270. lalapps/data/LALSimNeutronStarEOS_SKI2.dat +500 -0
  271. lalapps/data/LALSimNeutronStarEOS_SKI2_BSK24.dat +1348 -0
  272. lalapps/data/LALSimNeutronStarEOS_SKI3.dat +500 -0
  273. lalapps/data/LALSimNeutronStarEOS_SKI3_BSK24.dat +1355 -0
  274. lalapps/data/LALSimNeutronStarEOS_SKI4.dat +497 -0
  275. lalapps/data/LALSimNeutronStarEOS_SKI4_BSK24.dat +1348 -0
  276. lalapps/data/LALSimNeutronStarEOS_SKI5.dat +500 -0
  277. lalapps/data/LALSimNeutronStarEOS_SKI6.dat +500 -0
  278. lalapps/data/LALSimNeutronStarEOS_SKI6_BSK24.dat +1358 -0
  279. lalapps/data/LALSimNeutronStarEOS_SKMP.dat +498 -0
  280. lalapps/data/LALSimNeutronStarEOS_SKOP.dat +500 -0
  281. lalapps/data/LALSimNeutronStarEOS_SKOP_BSK24.dat +1373 -0
  282. lalapps/data/LALSimNeutronStarEOS_SLY.dat +99 -0
  283. lalapps/data/LALSimNeutronStarEOS_SLY2.dat +500 -0
  284. lalapps/data/LALSimNeutronStarEOS_SLY230A.dat +500 -0
  285. lalapps/data/LALSimNeutronStarEOS_SLY230A_BSK24.dat +1116 -0
  286. lalapps/data/LALSimNeutronStarEOS_SLY2_BSK24.dat +1106 -0
  287. lalapps/data/LALSimNeutronStarEOS_SLY4.dat +100 -0
  288. lalapps/data/LALSimNeutronStarEOS_SLY9.dat +498 -0
  289. lalapps/data/LALSimNeutronStarEOS_SLY9_BSK24.dat +1083 -0
  290. lalapps/data/LALSimNeutronStarEOS_SQM1.dat +176 -0
  291. lalapps/data/LALSimNeutronStarEOS_SQM2.dat +180 -0
  292. lalapps/data/LALSimNeutronStarEOS_SQM3.dat +176 -0
  293. lalapps/data/LALSimNeutronStarEOS_WFF1.dat +109 -0
  294. lalapps/data/LALSimNeutronStarEOS_WFF2.dat +109 -0
  295. lalapps/data/LALSimNeutronStarEOS_WFF3.dat +107 -0
  296. lalapps/data/LALSimNeutronStarEOS_XMLSLZ_DDLZ1_BSK24.dat +1227 -0
  297. lalapps/data/LALSimNeutronStarEOS_XMLSLZ_DDME2_BSK24.dat +1272 -0
  298. lalapps/data/LALSimNeutronStarEOS_XMLSLZ_DDMEX_BSK24.dat +1280 -0
  299. lalapps/data/LALSimNeutronStarEOS_XMLSLZ_GM1_BSK24.dat +1288 -0
  300. lalapps/data/LALSimNeutronStarEOS_XMLSLZ_MTVTC_BSK24.dat +1288 -0
  301. lalapps/data/LALSimNeutronStarEOS_XMLSLZ_NL3_BSK24.dat +1230 -0
  302. lalapps/data/LALSimNeutronStarEOS_XMLSLZ_PKDD_BSK24.dat +1288 -0
  303. lalapps/data/LALSimNeutronStarEOS_XMLSLZ_TM1_BSK24.dat +1288 -0
  304. lalapps/data/LALSimNeutronStarEOS_XMLSLZ_TW99_BSK24.dat +1288 -0
  305. lalapps/data/LIGO-P1200087-v18-AdV_BNS_OPTIMIZED.txt +3000 -0
  306. lalapps/data/LIGO-P1200087-v18-AdV_DESIGN.txt +3000 -0
  307. lalapps/data/LIGO-P1200087-v18-AdV_EARLY_HIGH.txt +3000 -0
  308. lalapps/data/LIGO-P1200087-v18-AdV_EARLY_LOW.txt +3000 -0
  309. lalapps/data/LIGO-P1200087-v18-AdV_LATE_HIGH.txt +3000 -0
  310. lalapps/data/LIGO-P1200087-v18-AdV_LATE_LOW.txt +3000 -0
  311. lalapps/data/LIGO-P1200087-v18-AdV_MID_HIGH.txt +3000 -0
  312. lalapps/data/LIGO-P1200087-v18-AdV_MID_LOW.txt +3000 -0
  313. lalapps/data/LIGO-P1200087-v18-aLIGO_BNS_OPTIMIZED.txt +3000 -0
  314. lalapps/data/LIGO-P1200087-v18-aLIGO_DESIGN.txt +3000 -0
  315. lalapps/data/LIGO-P1200087-v18-aLIGO_EARLY_HIGH.txt +3000 -0
  316. lalapps/data/LIGO-P1200087-v18-aLIGO_EARLY_LOW.txt +3000 -0
  317. lalapps/data/LIGO-P1200087-v18-aLIGO_LATE_HIGH.txt +3000 -0
  318. lalapps/data/LIGO-P1200087-v18-aLIGO_LATE_LOW.txt +3000 -0
  319. lalapps/data/LIGO-P1200087-v18-aLIGO_MID_HIGH.txt +3000 -0
  320. lalapps/data/LIGO-P1200087-v18-aLIGO_MID_LOW.txt +3000 -0
  321. lalapps/data/LIGO-P1600143-v18-CE.txt +3000 -0
  322. lalapps/data/LIGO-P1600143-v18-CE_Pessimistic.txt +3000 -0
  323. lalapps/data/LIGO-P1600143-v18-CE_Wideband.txt +3000 -0
  324. lalapps/data/LIGO-P1600143-v18-ET_D.txt +3000 -0
  325. lalapps/data/LIGO-T0900288-v3-BHBH_20deg.txt +3000 -0
  326. lalapps/data/LIGO-T0900288-v3-High_Freq.txt +3000 -0
  327. lalapps/data/LIGO-T0900288-v3-NO_SRM.txt +3000 -0
  328. lalapps/data/LIGO-T0900288-v3-NSNS_Opt.txt +3000 -0
  329. lalapps/data/LIGO-T0900288-v3-ZERO_DET_high_P.txt +3000 -0
  330. lalapps/data/LIGO-T0900288-v3-ZERO_DET_low_P.txt +3000 -0
  331. lalapps/data/LIGO-T1600593-v1-KAGRA_Design.txt +4000 -0
  332. lalapps/data/LIGO-T1600593-v1-KAGRA_Early.txt +4000 -0
  333. lalapps/data/LIGO-T1600593-v1-KAGRA_Late.txt +4000 -0
  334. lalapps/data/LIGO-T1600593-v1-KAGRA_Mid.txt +4000 -0
  335. lalapps/data/LIGO-T1600593-v1-KAGRA_Opening.txt +4000 -0
  336. lalapps/data/LIGO-T1800042-v5-aLIGO_APLUS.txt +3000 -0
  337. lalapps/data/LIGO-T1800044-v5-aLIGO_DESIGN.txt +3000 -0
  338. lalapps/data/LIGO-T1800545-v1-AdV_O3low.txt +3000 -0
  339. lalapps/data/LIGO-T1800545-v1-AdV_O4.txt +3000 -0
  340. lalapps/data/LIGO-T1800545-v1-AdV_O4intermediate.txt +3000 -0
  341. lalapps/data/LIGO-T1800545-v1-KAGRA_128Mpc.txt +1000 -0
  342. lalapps/data/LIGO-T1800545-v1-KAGRA_25Mpc.txt +1000 -0
  343. lalapps/data/LIGO-T1800545-v1-KAGRA_80Mpc.txt +1000 -0
  344. lalapps/data/LIGO-T1800545-v1-aLIGO_140Mpc.txt +1000 -0
  345. lalapps/data/LIGO-T1800545-v1-aLIGO_175Mpc.txt +2792 -0
  346. lalapps/data/LIGO-T1800545-v1-aLIGO_O3low.txt +2792 -0
  347. lalapps/data/bimodalMeans.csv +3 -0
  348. lalapps/data/config_tiger_example.ini +150 -0
  349. lalapps/data/fiducialBBH.xml +67 -0
  350. lalapps/data/fiducialBNS.xml +67 -0
  351. lalapps/data/inspsrcs100Mpc.errors +38735 -0
  352. lalapps/data/lalinference_pipe_example.ini +573 -0
  353. lalapps/data/lib_pipe_example.ini +303 -0
  354. lalapps/data/power_pipe.ini +129 -0
  355. lalapps/data/unimodalMeans.csv +2 -0
  356. lalapps/git_version.py +64 -0
  357. lalburst/SimBurstUtils.py +324 -0
  358. lalburst/SnglBurstUtils.py +367 -0
  359. lalburst/__init__.py +7 -0
  360. lalburst/_lalburst.cpython-314t-x86_64-linux-gnu.so +0 -0
  361. lalburst/_lalburst_swig.py +16 -0
  362. lalburst/binjfind.py +824 -0
  363. lalburst/bucluster.py +409 -0
  364. lalburst/burca.py +315 -0
  365. lalburst/burca_tailor.py +349 -0
  366. lalburst/cafe.py +579 -0
  367. lalburst/calc_likelihood.py +145 -0
  368. lalburst/cs_gamma.cpython-314t-x86_64-linux-gnu.so +0 -0
  369. lalburst/date.py +118 -0
  370. lalburst/git_version.py +64 -0
  371. lalburst/offsetvector.py +278 -0
  372. lalburst/packing.py +170 -0
  373. lalburst/power.py +1457 -0
  374. lalburst/snglcluster.py +136 -0
  375. lalburst/snglcoinc.py +2637 -0
  376. lalburst/stringutils.py +607 -0
  377. lalburst/timeslides.py +236 -0
  378. lalframe/__init__.py +7 -0
  379. lalframe/_lalframe.cpython-314t-x86_64-linux-gnu.so +0 -0
  380. lalframe/_lalframe_swig.py +14 -0
  381. lalframe/frread.py +324 -0
  382. lalframe/git_version.py +64 -0
  383. lalframe/utils/__init__.py +25 -0
  384. lalframe/utils/frtools.py +61 -0
  385. lalinference/__init__.py +7 -0
  386. lalinference/_bayespputils.cpython-314t-x86_64-linux-gnu.so +0 -0
  387. lalinference/_lalinference.cpython-314t-x86_64-linux-gnu.so +0 -0
  388. lalinference/_lalinference_swig.py +19 -0
  389. lalinference/bayespputils.py +7479 -0
  390. lalinference/bayestar/__init__.py +2 -0
  391. lalinference/bayestar/deprecation.py +72 -0
  392. lalinference/git_version.py +64 -0
  393. lalinference/imrtgr/__init__.py +0 -0
  394. lalinference/imrtgr/imrtgrutils.py +168 -0
  395. lalinference/imrtgr/nrutils.py +1366 -0
  396. lalinference/imrtgr/pneqns.py +250 -0
  397. lalinference/io/__init__.py +31 -0
  398. lalinference/io/hdf5.py +365 -0
  399. lalinference/lalinference_pipe_utils.py +3617 -0
  400. lalinference/nest2pos.py +151 -0
  401. lalinference/plot/__init__.py +34 -0
  402. lalinference/plot/spindisk.py +104 -0
  403. lalinference/tiger/__init__.py +0 -0
  404. lalinference/tiger/make_injtimes.py +634 -0
  405. lalinference/tiger/omegascans_dag.py +691 -0
  406. lalinference/tiger/postproc.py +1338 -0
  407. lalinference/wrapper.py +231 -0
  408. lalinspiral/__init__.py +7 -0
  409. lalinspiral/_lalinspiral.cpython-314t-x86_64-linux-gnu.so +0 -0
  410. lalinspiral/_lalinspiral_swig.py +18 -0
  411. lalinspiral/_thinca.cpython-314t-x86_64-linux-gnu.so +0 -0
  412. lalinspiral/git_version.py +64 -0
  413. lalinspiral/inspinjfind.py +485 -0
  414. lalinspiral/thinca.py +509 -0
  415. lalmetaio/__init__.py +7 -0
  416. lalmetaio/_lalmetaio.cpython-314t-x86_64-linux-gnu.so +0 -0
  417. lalmetaio/_lalmetaio_swig.py +14 -0
  418. lalmetaio/git_version.py +64 -0
  419. lalpulsar/NstarTools.py +259 -0
  420. lalpulsar/PulsarParametersWrapper.py +938 -0
  421. lalpulsar/__init__.py +7 -0
  422. lalpulsar/_lalpulsar.cpython-314t-x86_64-linux-gnu.so +0 -0
  423. lalpulsar/_lalpulsar_swig.py +17 -0
  424. lalpulsar/git_version.py +64 -0
  425. lalpulsar/knope_utils.py +6497 -0
  426. lalpulsar/lineFileParser.py +264 -0
  427. lalpulsar/metric_utils.py +78 -0
  428. lalpulsar/piecewise_model/__init__.py +7 -0
  429. lalpulsar/piecewise_model/basis_functions.py +156 -0
  430. lalpulsar/piecewise_model/class_definitions.py +323 -0
  431. lalpulsar/piecewise_model/errors.py +37 -0
  432. lalpulsar/piecewise_model/estimating_knots.py +833 -0
  433. lalpulsar/piecewise_model/gte_and_other_methods.py +189 -0
  434. lalpulsar/piecewise_model/mols_for_gte.py +269 -0
  435. lalpulsar/piecewise_model/pw_fstat.py +813 -0
  436. lalpulsar/piecewise_model/pw_model_simulations.py +156 -0
  437. lalpulsar/piecewise_model/sampling_methods.py +186 -0
  438. lalpulsar/piecewise_model/semicoherent_metric_methods.py +375 -0
  439. lalpulsar/piecewise_model/tbank_estimates.py +293 -0
  440. lalpulsar/public_sft_directory.py +82 -0
  441. lalpulsar/pulsarhtmlutils.py +1395 -0
  442. lalpulsar/pulsarpputils.py +3638 -0
  443. lalpulsar/simulateCW.py +602 -0
  444. lalpulsar/simulateHeterodynedCW.py +591 -0
  445. lalsimulation/__init__.py +7 -0
  446. lalsimulation/_lalsimulation.cpython-314t-x86_64-linux-gnu.so +0 -0
  447. lalsimulation/_lalsimulation_swig.py +14 -0
  448. lalsimulation/git_version.py +64 -0
  449. lalsimulation/gwsignal/__init__.py +9 -0
  450. lalsimulation/gwsignal/core/__init__.py +2 -0
  451. lalsimulation/gwsignal/core/conditioning_subroutines.py +196 -0
  452. lalsimulation/gwsignal/core/errors.py +136 -0
  453. lalsimulation/gwsignal/core/gw.py +206 -0
  454. lalsimulation/gwsignal/core/parameter_conventions.py +122 -0
  455. lalsimulation/gwsignal/core/utils.py +329 -0
  456. lalsimulation/gwsignal/core/waveform.py +725 -0
  457. lalsimulation/gwsignal/core/waveform_conditioning.py +455 -0
  458. lalsimulation/gwsignal/models/__init__.py +29 -0
  459. lalsimulation/gwsignal/models/pyseobnr_model.py +452 -0
  460. lalsimulation/nrfits/NRSur3dq8Remnant.py +92 -0
  461. lalsimulation/nrfits/NRSur7dq4Remnant.py +469 -0
  462. lalsimulation/nrfits/__init__.py +1 -0
  463. lalsimulation/nrfits/eval_fits.py +364 -0
  464. lalsimulation/nrfits/nrfits.py +78 -0
  465. lalsimulation/nrfits/pn_spin_evolution_wrapper.py +92 -0
  466. lalsimulation/nrfits/quaternion_utils.py +74 -0
  467. lalsimulation/tilts_at_infinity/__init__.py +2 -0
  468. lalsimulation/tilts_at_infinity/calc_tilts_prec_avg_regularized.py +1424 -0
  469. lalsimulation/tilts_at_infinity/hybrid_spin_evolution.py +461 -0
  470. lalsimulation/tilts_at_infinity/tilts_at_infinity_utils.py +167 -0
  471. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesBurstPPAnalysis +305 -0
  472. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesBurstPostProc +1364 -0
  473. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesCombinePTMCMCh5s +100 -0
  474. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesCombinePosteriors +235 -0
  475. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesCompPos +1121 -0
  476. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesDIEvidence +68 -0
  477. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesGraceDBinfo +182 -0
  478. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesMCMC2pos +314 -0
  479. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesPPAnalysis +322 -0
  480. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesPlotSpinDisk +42 -0
  481. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesPosToSimBurst +227 -0
  482. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesPosToSimInspiral +307 -0
  483. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesPostProc +1345 -0
  484. lalsuite-7.26.2.dev20251218.data/scripts/cbcBayesThermoInt +107 -0
  485. lalsuite-7.26.2.dev20251218.data/scripts/imrtgr_imr_consistency_test +796 -0
  486. lalsuite-7.26.2.dev20251218.data/scripts/lal_cache +6 -0
  487. lalsuite-7.26.2.dev20251218.data/scripts/lal_fftw_wisdom +6 -0
  488. lalsuite-7.26.2.dev20251218.data/scripts/lal_fftwf_wisdom +6 -0
  489. lalsuite-7.26.2.dev20251218.data/scripts/lal_path2cache +148 -0
  490. lalsuite-7.26.2.dev20251218.data/scripts/lal_searchsum2cache +172 -0
  491. lalsuite-7.26.2.dev20251218.data/scripts/lal_simd_detect +6 -0
  492. lalsuite-7.26.2.dev20251218.data/scripts/lal_tconvert +6 -0
  493. lalsuite-7.26.2.dev20251218.data/scripts/lal_version +6 -0
  494. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_ComputeAntennaPattern +6 -0
  495. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_ComputeFstatBenchmark +6 -0
  496. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_ComputeFstatLatticeCount +6 -0
  497. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_ComputeFstatMCUpperLimit +6 -0
  498. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_ComputeFstatistic_v2 +6 -0
  499. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_ComputePSD +6 -0
  500. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_CopySFTs +6 -0
  501. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_DistanceVsMass +6 -0
  502. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_DriveHoughMulti +6 -0
  503. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_FstatMetric_v2 +6 -0
  504. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_HierarchSearchGCT +6 -0
  505. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_HierarchicalSearch +6 -0
  506. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_MakeSFTDAG +6 -0
  507. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_MakeSFTs +6 -0
  508. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_Makefakedata_v4 +6 -0
  509. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_Makefakedata_v5 +6 -0
  510. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_PredictFstat +6 -0
  511. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_PrintDetectorState +6 -0
  512. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_SFTclean +6 -0
  513. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_SFTvalidate +6 -0
  514. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_StringAddFrame +6 -0
  515. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_StringSearch +6 -0
  516. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_Weave +6 -0
  517. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_WeaveCompare +6 -0
  518. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_WeaveConcat +6 -0
  519. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_WeaveSetup +6 -0
  520. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_WriteSFTsfromSFDBs +6 -0
  521. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_animate +6 -0
  522. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_binj +6 -0
  523. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_blindinj +6 -0
  524. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_cache +6 -0
  525. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_cafe +99 -0
  526. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_calfacs +6 -0
  527. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_cbc_stochasticbank +6 -0
  528. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_chirplen +6 -0
  529. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_coh_PTF_inspiral +6 -0
  530. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_coinj +6 -0
  531. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_combine_crosscorr_toplists +6 -0
  532. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_compareFstats +6 -0
  533. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_compareSFTs +6 -0
  534. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_cosmicstring_pipe +525 -0
  535. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_create_time_correction_ephemeris +6 -0
  536. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_dumpSFT +6 -0
  537. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_effdist +6 -0
  538. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_exc_resp +6 -0
  539. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_fftw_wisdom +6 -0
  540. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_fftwf_wisdom +6 -0
  541. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_fits_header_getval +6 -0
  542. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_fits_header_list +6 -0
  543. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_fits_overview +6 -0
  544. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_fits_table_list +6 -0
  545. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_fr_ninja +6 -0
  546. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_frextr +6 -0
  547. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_frinfo +6 -0
  548. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_frjoin +6 -0
  549. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_frread +6 -0
  550. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_frview +6 -0
  551. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_gwf2xml +6 -0
  552. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_heterodyne_pulsar +6 -0
  553. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_inspawgfile +6 -0
  554. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_inspfrinj +6 -0
  555. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_inspinj +6 -0
  556. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_inspiralDistance +6 -0
  557. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_knope +6 -0
  558. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_knope_automation_script +6 -0
  559. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_knope_collate_results +6 -0
  560. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_knope_result_page +6 -0
  561. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_makeblindinj +6 -0
  562. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_makeblindinj_himass +6 -0
  563. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_ninja +6 -0
  564. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_path2cache +6 -0
  565. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_power +6 -0
  566. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_power_likelihood_pipe +219 -0
  567. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_power_pipe +417 -0
  568. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_pulsar_crosscorr_v2 +6 -0
  569. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_pulsar_frequency_evolution +6 -0
  570. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_pulsar_parameter_estimation_nested +6 -0
  571. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_random_bank +6 -0
  572. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_randombank +6 -0
  573. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_run_pulsar_crosscorr_v2 +6 -0
  574. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_searchsum2cache +6 -0
  575. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_spec_avg +6 -0
  576. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_spec_avg_long +6 -0
  577. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_spec_coherence +6 -0
  578. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_spininj +6 -0
  579. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_splitSFTs +6 -0
  580. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_splitbank +6 -0
  581. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_ssbtodetector +6 -0
  582. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_apply_vetoes +171 -0
  583. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_calc_likelihood +172 -0
  584. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_contour_plotter +141 -0
  585. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_contour_plotter_largeloops +133 -0
  586. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_cs_gamma +110 -0
  587. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_cs_gamma_largeloops +119 -0
  588. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_final +1064 -0
  589. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_meas_likelihood +264 -0
  590. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_plot_binj +543 -0
  591. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_string_plot_likelihood +380 -0
  592. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_synthesizeBstatMC +6 -0
  593. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_synthesizeLVStats +6 -0
  594. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_synthesizeTransientStats +6 -0
  595. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_tconvert +6 -0
  596. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_tmpltbank +6 -0
  597. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_version +6 -0
  598. lalsuite-7.26.2.dev20251218.data/scripts/lalapps_xtefitstoframe +6 -0
  599. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_cluster +156 -0
  600. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_coinc +224 -0
  601. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_cut +425 -0
  602. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_gen_timeslides +254 -0
  603. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_inj_pic +254 -0
  604. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_injfind +170 -0
  605. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_plot_tisi +165 -0
  606. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_power_calc_likelihood +182 -0
  607. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_power_final +1369 -0
  608. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_power_meas_likelihood +206 -0
  609. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_power_plot_binj +934 -0
  610. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_power_plot_binjtf +302 -0
  611. lalsuite-7.26.2.dev20251218.data/scripts/lalburst_version +6 -0
  612. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-cat +6 -0
  613. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-cksum +6 -0
  614. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-cut +6 -0
  615. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-dump +6 -0
  616. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-fmt +6 -0
  617. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-paste +6 -0
  618. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-print +6 -0
  619. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-split +6 -0
  620. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-stat +6 -0
  621. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-stream +6 -0
  622. lalsuite-7.26.2.dev20251218.data/scripts/lalfr-vis +6 -0
  623. lalsuite-7.26.2.dev20251218.data/scripts/lalframe_version +6 -0
  624. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_bench +6 -0
  625. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_burst +6 -0
  626. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_burst_pp_pipe +220 -0
  627. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_coherence_test +139 -0
  628. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_compute_roq_weights +404 -0
  629. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_cpnest +58 -0
  630. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_datadump +6 -0
  631. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_evolve_spins_and_append_samples +202 -0
  632. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_injectedlike +6 -0
  633. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_merge_posteriors +57 -0
  634. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_mpi_wrapper +6 -0
  635. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_multi_pipe +144 -0
  636. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_nest +6 -0
  637. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_nest2pos +286 -0
  638. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_pipe +512 -0
  639. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_pp_pipe +229 -0
  640. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_review_test +362 -0
  641. lalsuite-7.26.2.dev20251218.data/scripts/lalinference_version +6 -0
  642. lalsuite-7.26.2.dev20251218.data/scripts/lalinspiral_injfind +206 -0
  643. lalsuite-7.26.2.dev20251218.data/scripts/lalinspiral_thinca +240 -0
  644. lalsuite-7.26.2.dev20251218.data/scripts/lalinspiral_version +6 -0
  645. lalsuite-7.26.2.dev20251218.data/scripts/lalmetaio_version +6 -0
  646. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_ComputeAntennaPattern +6 -0
  647. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_ComputeFstatBenchmark +6 -0
  648. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_ComputeFstatLatticeCount +6 -0
  649. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_ComputeFstatMCUpperLimit +6 -0
  650. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_ComputeFstatistic_v2 +6 -0
  651. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_ComputePSD +6 -0
  652. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_CopyPublicSFTs +216 -0
  653. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_DriveHoughMulti +6 -0
  654. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_FstatMetric_v2 +6 -0
  655. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_HierarchSearchGCT +6 -0
  656. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_HierarchicalSearch +6 -0
  657. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_MakeSFTDAG +1142 -0
  658. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_MakeSFTs +6 -0
  659. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_Makefakedata_v4 +6 -0
  660. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_Makefakedata_v5 +6 -0
  661. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_MoveSFTs +208 -0
  662. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_PiecewiseSearch +963 -0
  663. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_PredictFstat +6 -0
  664. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_PrintDetectorState +6 -0
  665. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_SFTclean +6 -0
  666. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_SFTvalidate +6 -0
  667. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_Weave +6 -0
  668. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_WeaveCompare +6 -0
  669. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_WeaveConcat +6 -0
  670. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_WeaveSetup +6 -0
  671. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_WriteSFTsfromSFDBs +6 -0
  672. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_compareFstats +6 -0
  673. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_compareSFTs +6 -0
  674. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_create_time_correction_ephemeris +6 -0
  675. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_crosscorr_v2 +6 -0
  676. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_dumpSFT +6 -0
  677. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_fits_header_getval +6 -0
  678. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_fits_header_list +6 -0
  679. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_fits_overview +6 -0
  680. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_fits_table_list +6 -0
  681. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_frequency_evolution +6 -0
  682. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_heterodyne +6 -0
  683. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_knope +145 -0
  684. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_knope_automation_script +731 -0
  685. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_knope_collate_results +675 -0
  686. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_knope_result_page +2977 -0
  687. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_parameter_estimation_nested +6 -0
  688. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_spec_avg +6 -0
  689. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_spec_avg_long +6 -0
  690. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_spec_coherence +6 -0
  691. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_splitSFTs +6 -0
  692. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_ssbtodetector +6 -0
  693. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_synthesizeBstatMC +6 -0
  694. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_synthesizeLVStats +6 -0
  695. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_synthesizeTransientStats +6 -0
  696. lalsuite-7.26.2.dev20251218.data/scripts/lalpulsar_version +6 -0
  697. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-bh-qnmode +6 -0
  698. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-bh-ringdown +6 -0
  699. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-bh-sphwf +6 -0
  700. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-burst +6 -0
  701. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-detector-noise +6 -0
  702. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-detector-strain +6 -0
  703. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-inject +6 -0
  704. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-inspiral +6 -0
  705. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-ns-eos-table +6 -0
  706. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-ns-mass-radius +6 -0
  707. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-ns-params +6 -0
  708. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-sgwb +6 -0
  709. lalsuite-7.26.2.dev20251218.data/scripts/lalsim-unicorn +6 -0
  710. lalsuite-7.26.2.dev20251218.data/scripts/lalsimulation_version +6 -0
  711. lalsuite-7.26.2.dev20251218.dist-info/METADATA +90 -0
  712. lalsuite-7.26.2.dev20251218.dist-info/RECORD +733 -0
  713. lalsuite-7.26.2.dev20251218.dist-info/WHEEL +5 -0
  714. lalsuite-7.26.2.dev20251218.dist-info/licenses/COPYING +339 -0
  715. lalsuite-7.26.2.dev20251218.dist-info/top_level.txt +9 -0
  716. lalsuite.libs/libcfitsio-729ee1b7.so.10.0.0 +0 -0
  717. lalsuite.libs/libfftw3-6b983104.so.3.5.5 +0 -0
  718. lalsuite.libs/libfftw3f-b4465a35.so.3.5.5 +0 -0
  719. lalsuite.libs/libframel-8cf74372.so.8.48.4 +0 -0
  720. lalsuite.libs/libgsl-e30be130.so.28.0.0 +0 -0
  721. lalsuite.libs/libgslcblas-460f042a.so.0.0.0 +0 -0
  722. lalsuite.libs/libhdf5-d02936e2.so.310.5.1 +0 -0
  723. lalsuite.libs/libhdf5_hl-0e40b553.so.310.0.6 +0 -0
  724. lalsuite.libs/liblal-bd4575d4.so.20.5.0 +0 -0
  725. lalsuite.libs/liblalburst-183caa97.so.8.0.0 +0 -0
  726. lalsuite.libs/liblalframe-b2539a8a.so.14.0.3 +0 -0
  727. lalsuite.libs/liblalinference-b273091a.so.23.1.7 +0 -0
  728. lalsuite.libs/liblalinspiral-37f93c6c.so.18.0.2 +0 -0
  729. lalsuite.libs/liblalmetaio-f04c856f.so.11.0.1 +0 -0
  730. lalsuite.libs/liblalpulsar-950e7dfd.so.30.1.1 +0 -0
  731. lalsuite.libs/liblalsimulation-abda47f7.so.37.2.0 +0 -0
  732. lalsuite.libs/liblalsupport-ad162801.so.14.4.0 +0 -0
  733. lalsuite.libs/libmetaio-abda72ec.so.1.1.0 +0 -0
@@ -0,0 +1,813 @@
1
+ # Copyright (C) 2019--2023 Benjamin Grace
2
+ #
3
+ # This program is free software; you can redistribute it and/or modify it
4
+ # under the terms of the GNU General Public License as published by the
5
+ # Free Software Foundation; either version 2 of the License, or (at your
6
+ # option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful, but
9
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
11
+ # Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along
14
+ # with this program; if not, write to the Free Software Foundation, Inc.,
15
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16
+
17
+ ## \file
18
+ ## \ingroup lalpulsar_python_piecewise_model
19
+ """
20
+ Compute the F-statistic for a piecewise model template.
21
+ """
22
+
23
+ import copy
24
+ import heapq as hq
25
+ import logging
26
+ import time
27
+
28
+ import numpy as np
29
+ from tqdm import trange
30
+
31
+ import lal
32
+ import lalpulsar as lp
33
+
34
+ from . import basis_functions as bf
35
+ from . import gte_and_other_methods as gom
36
+ from . import semicoherent_metric_methods as scmm
37
+ from . import tbank_estimates as tbe
38
+
39
+ # Returns our FstatInput object, currently uses SFTs built in pwsim
40
+ # fmax (and fmin) should be chosen with the same reasoning outlined in the pwsim notbook. fmax = f0 + 10^-4 * f0 + 58/TSFT,
41
+ # fmin is the same except fmin = f0 - .... AND fmin should be lower than the minimum value any given template we might use
42
+ # over the time period of the relevant SFTs!
43
+ def fstatinputfromSFTFiles(
44
+ SFTfmin,
45
+ SFTfmax,
46
+ finputdata,
47
+ timeint=[-1, -2],
48
+ sft_path=".",
49
+ detectors=[],
50
+ inject_params=[],
51
+ ):
52
+
53
+ Fstat_opt_args = lp.FstatOptionalArgs(lp.FstatOptionalArgsDefaults)
54
+ Fstat_opt_args.FstatMethod = lp.FMETHOD_DEMOD_BEST
55
+ Fstat_opt_args.sourceDeltaT = finputdata.sourceDeltaT
56
+
57
+ logging.info(f"SFT path: {sft_path}")
58
+
59
+ all_minus_one = True
60
+
61
+ for elem in inject_params:
62
+ if elem != -1:
63
+ all_minus_one = False
64
+ break
65
+ logging.debug(inject_params)
66
+ logging.debug(all_minus_one)
67
+ logging.debug(not inject_params == [] and not all_minus_one)
68
+
69
+ # This code injects a signal, if inject_params is non-empty and all elements are not -1, then we inject the signal present in inject_params
70
+ if inject_params != [] and not all_minus_one:
71
+ Tdata = timeint[-1] - timeint[0]
72
+
73
+ h0 = finputdata.h0
74
+ cosi = finputdata.cosi
75
+ psi = finputdata.psi
76
+ phi0 = finputdata.phi0
77
+ tref = timeint[0] + Tdata * finputdata.trefsegfrac
78
+ Alpha = finputdata.Alpha
79
+ Delta = finputdata.Delta
80
+
81
+ # create injection parameters
82
+ Fstat_signal = lp.CreatePulsarParamsVector(1)
83
+ Fstat_signal.data[0].Amp.aPlus = 0.5 * h0 * (1.0 + cosi * cosi)
84
+ Fstat_signal.data[0].Amp.aCross = h0 * cosi
85
+ Fstat_signal.data[0].Amp.psi = psi
86
+ Fstat_signal.data[0].Amp.phi0 = phi0
87
+ Fstat_signal.data[0].Doppler.refTime = tref
88
+ Fstat_signal.data[0].Doppler.Alpha = Alpha
89
+ Fstat_signal.data[0].Doppler.Delta = Delta
90
+
91
+ logging.info(f"Injecting parameters: {inject_params} with h0: {h0}")
92
+
93
+ # Set doppler params. Done as a for loop in case inject_params changes length (it shouldn't, but just in case)
94
+ for i in range(len(inject_params)):
95
+ Fstat_signal.data[0].Doppler.fkdot[i] = inject_params[i]
96
+
97
+ Fstat_opt_args.injectSources = Fstat_signal
98
+
99
+ dfreq = finputdata.dfreq
100
+ emphdata = lp.InitBarycenter("earth00-40-DE405.dat.gz", "sun00-40-DE405.dat.gz")
101
+
102
+ constraints = lp.SFTConstraints()
103
+
104
+ constraints.minStartTime = lal.LIGOTimeGPS(timeint[0])
105
+ constraints.maxStartTime = lal.LIGOTimeGPS(timeint[1])
106
+
107
+ if len(detectors) == 0:
108
+ catalogue = lp.SFTdataFind(sft_path + "*.sft", constraints)
109
+
110
+ sft_path_master = sft_path + "*.sft"
111
+
112
+ elif len(detectors) == 1:
113
+
114
+ det1_path = sft_path + detectors[0] + "/*.sft"
115
+
116
+ catalogue = lp.SFTdataFind(det1_path, constraints)
117
+
118
+ sft_path_master = det1_path
119
+
120
+ elif len(detectors) == 2:
121
+
122
+ det1_path = sft_path + detectors[0] + "/*.sft"
123
+ det2_path = sft_path + detectors[1] + "/*.sft"
124
+
125
+ sft_path_master = det1_path + ";" + det2_path
126
+
127
+ catalogue = lp.SFTdataFind(sft_path_master, constraints)
128
+
129
+ elif len(detectors) == 3:
130
+
131
+ det1_path = sft_path + detectors[0] + "/*.sft"
132
+ det2_path = sft_path + detectors[1] + "/*.sft"
133
+ det2_path = sft_path + detectors[3] + "/*.sft"
134
+
135
+ sft_path_master = det1_path + ";" + det2_path + ";" + det3_path
136
+
137
+ catalogue = lp.SFTdataFind(sft_path_master, constraints)
138
+
139
+ logging.debug("Heya!")
140
+
141
+ logging.info(f"Path to SFT's being used: {sft_path_master}")
142
+
143
+ fstat = lp.CreateFstatInput(
144
+ catalogue, SFTfmin, SFTfmax, dfreq, emphdata, Fstat_opt_args
145
+ )
146
+
147
+ return fstat
148
+
149
+
150
+ # Create fake sft catalog
151
+ def SFTCatalog(tstart, Tdata, finputdata):
152
+
153
+ num_det = finputdata.detectors.length
154
+ Tsft = finputdata.Tsft
155
+
156
+ sft_ts = lp.MakeMultiTimestamps(tstart, Tdata, Tsft, 0, num_det)
157
+ sft_catalog = lp.MultiAddToFakeSFTCatalog(None, finputdata.detectors, sft_ts)
158
+
159
+ return sft_catalog
160
+
161
+
162
+ # Builds SFTs in memory rather than files
163
+ def fstatinput(
164
+ SFTfmin,
165
+ SFTfmax,
166
+ sft_catalog,
167
+ finputdata,
168
+ inject_params,
169
+ timeint=[-1, -2],
170
+ trefsegfrac=0.0,
171
+ ):
172
+
173
+ Tdata = timeint[1] - timeint[0]
174
+ dfreq = finputdata.dfreq
175
+ # create default F-statistic optional arguments
176
+ Fstat_opt_args = lp.FstatOptionalArgs(lp.FstatOptionalArgsDefaults)
177
+ Fstat_opt_args.FstatMethod = lp.FMETHOD_DEMOD_BEST
178
+ Fstat_opt_args.sourceDeltaT = finputdata.sourceDeltaT
179
+
180
+ h0 = finputdata.h0
181
+ cosi = finputdata.cosi
182
+ psi = finputdata.psi
183
+ phi0 = finputdata.phi0
184
+ tref = timeint[0] + Tdata * trefsegfrac
185
+ Alpha = finputdata.Alpha
186
+ Delta = finputdata.Delta
187
+
188
+ # create injection parameters
189
+ Fstat_signal = lp.CreatePulsarParamsVector(1)
190
+ Fstat_signal.data[0].Amp.aPlus = 0.5 * h0 * (1.0 + cosi * cosi)
191
+ Fstat_signal.data[0].Amp.aCross = h0 * cosi
192
+ Fstat_signal.data[0].Amp.psi = psi
193
+ Fstat_signal.data[0].Amp.phi0 = phi0
194
+ Fstat_signal.data[0].Doppler.refTime = tref
195
+ Fstat_signal.data[0].Doppler.Alpha = Alpha
196
+ Fstat_signal.data[0].Doppler.Delta = Delta
197
+
198
+ logging.debug(f"Injecting parameters: {inject_params} with h0: {h0}")
199
+
200
+ # Set doppler params. Done as a for loop in case inject_params changes length (it shouldn't, but just in case)
201
+ for i in range(len(inject_params)):
202
+ Fstat_signal.data[0].Doppler.fkdot[i] = inject_params[i]
203
+
204
+ Fstat_opt_args.injectSources = Fstat_signal
205
+
206
+ Fstat_injection_noise = lp.MultiNoiseFloor()
207
+ Fstat_injection_noise.length = finputdata.detectors.length
208
+ # Fstat_injection_noise.sqrtSn = finputdata.noise_sqrt_Sh
209
+
210
+ for i, noise in enumerate(finputdata.noise_sqrt_Sh):
211
+ Fstat_injection_noise.sqrtSn[i] = noise
212
+
213
+ Fstat_opt_args.injectSqrtSX = Fstat_injection_noise
214
+
215
+ ephemerides = lp.InitBarycenter("earth00-19-DE405.dat.gz", "sun00-19-DE405.dat.gz")
216
+
217
+ # create F-statistic input data
218
+ Fstat_input = lp.CreateFstatInput(
219
+ sft_catalog, SFTfmin, SFTfmax, dfreq, ephemerides, Fstat_opt_args
220
+ )
221
+
222
+ return Fstat_input
223
+
224
+
225
+ # Returns our fstat results for a given template (using sft's from fstatin).
226
+ def computefstat(
227
+ template,
228
+ finputdata,
229
+ fstatinputarray,
230
+ transformmatrices,
231
+ trefsegfrac=0.0,
232
+ rtnsum=False,
233
+ ):
234
+
235
+ s = int(len(transformmatrices[0]) / 2)
236
+
237
+ segs = int(len(template) / s - 1)
238
+
239
+ dopparams = lp.PulsarDopplerParams()
240
+ dopparams.Alpha = finputdata.Alpha
241
+ dopparams.Delta = finputdata.Delta
242
+
243
+ counter = 0
244
+
245
+ fstat_res_array = []
246
+
247
+ for seg in range(segs):
248
+ counter += 1
249
+ segtemp = template[seg * s : (seg + 2) * s]
250
+
251
+ tref = (
252
+ bf.knotslist[seg]
253
+ + (bf.knotslist[seg + 1] - bf.knotslist[seg]) * trefsegfrac
254
+ )
255
+ dopparams.refTime = tref
256
+
257
+ p0 = bf.knotslist[seg]
258
+ p1 = bf.knotslist[seg + 1]
259
+
260
+ fstatin = fstatinputarray[seg]
261
+
262
+ tstart = bf.knotslist[0]
263
+ dopplerparams = np.matmul(transformmatrices[seg], segtemp)
264
+
265
+ # If you want to use conditioning and conditioning matrices, the below line is what should be used. The addition of the appropriate conditioning matrix will
266
+ # be required also. The conditioning matrix that should be used is also given (for appropriate choices of p0, p1 and tref).
267
+ # doplerparams = gom.PWParamstoTrefParamsPreComputed(segtemp, transformmatrices[seg], condmatrices[seg])
268
+ # condmatrix = gom.ParamTransformationConditioningMatrix(p0, p1, tref)
269
+
270
+ dopparams.fkdot[0 : len(dopplerparams)] = dopplerparams
271
+
272
+ numFreqBins = 1
273
+ whatToCompute = lp.FSTATQ_2F_PER_DET + lp.FSTATQ_2F
274
+ fstatresults = lp.FstatResults()
275
+ fstatresults = lp.ComputeFstat(
276
+ fstatresults, fstatin, dopparams, numFreqBins, whatToCompute
277
+ )
278
+
279
+ fstat_res_array.append(fstatresults)
280
+
281
+ return fstat_res_array
282
+
283
+
284
+ def fstat_res_heap_to_file(filename, fstat_res_heap, fstats_first=True):
285
+ with open(filename, "a+") as reader:
286
+
287
+ for elem in fstat_res_heap:
288
+ if fstats_first:
289
+ mismatch = elem[1]
290
+ else:
291
+ mismatch = elem[0]
292
+
293
+ template = elem[3]
294
+ fstat_res_array = elem[4]
295
+
296
+ fstats_on_segs = [fstat_res.twoF[0] for fstat_res in fstat_res_array]
297
+ fstat = sum(fstats_on_segs) / len(fstats_on_segs)
298
+
299
+ # 2D list. Each sublist corresponds to a given detector. Each element of the sublists are the 2F's on each piecewise segment
300
+ twoF_on_segs_on_detectors = []
301
+
302
+ numdets = fstat_res_array[0].numDetectors
303
+
304
+ for i in range(numdets):
305
+ two_F_on_segs = [
306
+ fstat_res.twoFPerDet(i)[0] for fstat_res in fstat_res_array
307
+ ]
308
+ twoF_on_segs_on_detectors.append(two_F_on_segs)
309
+
310
+ two_F_per_det = []
311
+
312
+ for detector_2Fs in twoF_on_segs_on_detectors:
313
+ this_det_2F = sum(detector_2Fs) / len(detector_2Fs)
314
+
315
+ two_F_per_det.append(this_det_2F)
316
+
317
+ # Note, the addition of each templateline string starting with a space makes that string have a length of 16, not 15
318
+ templateline = " ".join("{:20.12E}".format(x) for x in template)
319
+
320
+ fstat_line = "{:20.10f}".format(fstat) + " "
321
+
322
+ for twoF in two_F_per_det:
323
+ fstat_line += "{:20.10f}".format(twoF) + " "
324
+
325
+ mismatch_line = "{:20.10f}".format(mismatch) + " "
326
+
327
+ if fstats_first:
328
+ line = fstat_line + mismatch_line + templateline + "\n"
329
+ else:
330
+ line = mismatch_line + fstat_line + templateline + "\n"
331
+
332
+ reader.write(line)
333
+
334
+
335
+ def add_fstat_to_dic(fstat, dic):
336
+
337
+ base = 0
338
+
339
+ if fstat < 50:
340
+ base = 1
341
+ elif 50 <= fstat < 500:
342
+ base = 10
343
+ else:
344
+ base = 100
345
+
346
+ lower_round = int(fstat - fstat % base)
347
+
348
+ if lower_round in dic:
349
+ dic[lower_round] += 1
350
+ else:
351
+ dic[lower_round] = 1
352
+
353
+
354
+ def dic_to_file(filename, dic):
355
+ with open(filename, "a+") as reader:
356
+
357
+ for k, v in dic.items():
358
+ line = str(k) + ", " + str(v) + "\n"
359
+
360
+ reader.write(line)
361
+
362
+
363
+ # For a template bank associated with the parameter space associated with tbank, finds the 'tbank.maxtemps' number of templates with the greatest FStat.
364
+ # SFTfmin and SFTfmax are the frequency range of SFTs we want to load in, tbank is the parameter space parameters we use. filename is the name of the file
365
+ # where the F-statistics and their corresponding templates will be saved. tbank.maxtemps is the top 2F's and templates to store and saved. directory is the
366
+ # path to where filename will be saved. trefsegfrac is how far along each segment the reference time will be defined. E.g. If set to 0, tref will be at the
367
+ # start of each segment, if trefsegfrac = 0.5, then tref will occur half way through each segment and so on. signalparams are the signal parameters of the signal
368
+ # injected into the SFTs and rtnsum tells us whether to save the summed 2F across all segments or the average. rtnsum = False means the average is saved,
369
+ # True and the sum will be saved
370
+ def semifstatcatalogue(
371
+ SFTfmin,
372
+ SFTfmax,
373
+ tbank,
374
+ finputdata,
375
+ signalparams,
376
+ filename,
377
+ out_directory=".",
378
+ SFTdirectory=".",
379
+ trefsegfrac=0.0,
380
+ rtnsum=False,
381
+ SFTFiles=False,
382
+ tempsperfile=1000,
383
+ Fstat_mismatch=False,
384
+ fstat_hist=False,
385
+ mode="search",
386
+ ):
387
+
388
+ segs = len(bf.knotslist) - 1
389
+ logging.info("Knots: %s", str(bf.knotslist))
390
+
391
+ finalknot = len(bf.knotslist)
392
+ s = tbank.s
393
+
394
+ # The below lines are required for finding the nearest lattice point to the signal parameters
395
+
396
+ # Create LatticeTiling object
397
+ tiling = lp.CreateLatticeTiling(s * finalknot)
398
+
399
+ logging.debug("Doing metric")
400
+ metric = scmm.PreCompMetric(s)
401
+
402
+ logging.debug("Doing Bounds")
403
+ tbe.setbounds(tiling, tbank)
404
+
405
+ logging.debug("Setting tiling lattice and metric")
406
+
407
+ # Set metric, mismatch and lattice type
408
+ lp.SetTilingLatticeAndMetric(
409
+ tiling, lp.TILING_LATTICE_ANSTAR, metric, tbank.maxmismatch
410
+ )
411
+
412
+ signalpoint = lal.gsl_vector(s * finalknot)
413
+ signalpoint.data = signalparams
414
+
415
+ nearestpoint = lal.gsl_vector(s * finalknot)
416
+
417
+ nearestpoint.data = signalpoint.data
418
+ nearesttemp = nearestpoint.data
419
+
420
+ diffvec = []
421
+
422
+ for i in range(len(nearesttemp)):
423
+ diffvec.append(nearesttemp[i] - signalparams[i])
424
+
425
+ # The nearest point and its mismatch are calculated. An iterator is now constructed, the Finputs built and 2F is calculated for each template
426
+ # derived from tbank
427
+
428
+ # Create Iterator
429
+ iterator = lp.CreateLatticeTilingIterator(tiling, s * finalknot)
430
+
431
+ for i in range(s * finalknot):
432
+ stats = lp.LatticeTilingStatistics(tiling, i)
433
+ logging.info(f"Total points in dim={i}: {stats.total_points}")
434
+ logging.info(f"Minimum points in dim={i}: {stats.min_points}")
435
+ logging.info(f"Maximum points in dim={i}: {stats.max_points}")
436
+
437
+ fstatinputarray = []
438
+ transformmatrices = []
439
+
440
+ logging.info("Setting up Fstatistic input and transformation matrices")
441
+
442
+ for seg in range(segs):
443
+ logging.debug(f"Doing seg: {seg}")
444
+ p0 = bf.knotslist[seg]
445
+ p1 = bf.knotslist[seg + 1]
446
+ tref = p0 + (p1 - p0) * trefsegfrac
447
+ tstart = bf.knotslist[0]
448
+
449
+ # Note that inject_params are only injected into data IF h0 != 0 otherwise an 'empty' signal is injected
450
+
451
+ signalparamsseg = signalparams[seg * s : (seg + 2) * s]
452
+ inject_params = gom.PWParamstoTrefParams(
453
+ signalparamsseg, p0 - tstart, p1 - tstart, tref - tstart, s
454
+ )
455
+
456
+ transformmatrices.append(gom.ParamTransformationMatrix(p0, p1, tref, s))
457
+
458
+ if SFTFiles or finputdata.inject_data:
459
+ finput = fstatinputfromSFTFiles(
460
+ SFTfmin,
461
+ SFTfmax,
462
+ finputdata,
463
+ timeint=[p0, p1],
464
+ sft_path=SFTdirectory,
465
+ detectors=finputdata.detectors.data,
466
+ inject_params=inject_params,
467
+ )
468
+ else:
469
+ sft_catalog = SFTCatalog(p0, p1 - p0, finputdata)
470
+ finput = fstatinput(
471
+ SFTfmin,
472
+ SFTfmax,
473
+ sft_catalog,
474
+ finputdata,
475
+ inject_params,
476
+ timeint=[p0, p1],
477
+ trefsegfrac=trefsegfrac,
478
+ )
479
+ fstatinputarray.append(finput)
480
+
481
+ logging.info("Finputs done")
482
+
483
+ # 2F for the signal parameters and nearest template to them. They are then written to a file. The first two lines of data in these files are then
484
+ # the signal parameters and nearest point and are therefore not a part of the search. The "NearestLatticeTilingPoint" method currently selects
485
+ # a point well outside of the parameter space, so to prevent errors we have just set the nearestfstat value to -1.
486
+ sigfstat = computefstat(
487
+ signalparams,
488
+ finputdata,
489
+ fstatinputarray,
490
+ transformmatrices,
491
+ trefsegfrac=trefsegfrac,
492
+ rtnsum=rtnsum,
493
+ )
494
+
495
+ all_sig_twoFs = [elem.twoF[0] for elem in sigfstat]
496
+ sigtwoF = sum(all_sig_twoFs) / (len(all_sig_twoFs))
497
+
498
+ sig_fstat_heap = [[sigtwoF, -1, -1, signalparams, sigfstat]]
499
+
500
+ fstat_res_heap_to_file(
501
+ out_directory + "/" + filename, sig_fstat_heap, fstats_first=True
502
+ )
503
+
504
+ mismatchfilename = "Mismatch_" + filename[:-4] + ".txt"
505
+ # fstattemptofile(directory + "/" + mismatchfilename, signalparams, 0, sigfstat)
506
+ # fstattemptofile(directory + "/" + mismatchfilename, nearestpoint.data, nearestmismatch, nearestfstat)
507
+ fstat_res_heap_to_file(
508
+ out_directory + "/" + mismatchfilename, sig_fstat_heap, fstats_first=False
509
+ )
510
+
511
+ # fin is iterated through by the NextLatticeTilingPoint, when fin == 0, the parameter space associated with tbank has been completed tiled.
512
+ fin = -1
513
+
514
+ # The temp heap, which will contain the highest 2F's and their associated templates. The elements of the tempheap have form (fstat, counter, template)
515
+ template = lal.gsl_vector(s * finalknot)
516
+
517
+ starttime = time.time()
518
+
519
+ logging.info("Counting templates ...")
520
+ tempcount = lp.TotalLatticeTilingPoints(iterator)
521
+ logging.info(f"... finished: number of templates = {tempcount}")
522
+
523
+ if mode == "template_count":
524
+ return 0, 0, 0, tempcount
525
+
526
+ lowest_mismatch_metric = 1000000000000000000000000
527
+ lowest_mismatch_fstat = 1000000000000000000000000
528
+
529
+ tqdm_file = open(filename[:-4] + "_tqdm_Output.txt", "w+")
530
+
531
+ # If we are creating a mismatch histogram and are using the metric definition of the mismatch, we do not need to calculate any 2F's, so for efficiency
532
+ # we do not calculate them and return the lowest found mismatch from the generated template bank
533
+ if mode == "mis_hist" and not Fstat_mismatch:
534
+
535
+ for counter in trange(tempcount, file=tqdm_file):
536
+ fin = lp.NextLatticeTilingPoint(iterator, template)
537
+ thistemp = copy.copy(template.data)
538
+
539
+ tempdiffvec = [
540
+ signalparams[i] - thistemp[i] for i in range(len(signalparams))
541
+ ]
542
+
543
+ tempmismatch = np.dot(tempdiffvec, np.dot(metric, tempdiffvec))
544
+
545
+ if tempmismatch < lowest_mismatch_metric:
546
+ lowest_mismatch_metric = tempmismatch
547
+
548
+ return lowest_mismatch_metric, 0, 0, tempcount
549
+
550
+ fstat_res_heap = []
551
+ mismatch_fstat_res_heap = []
552
+
553
+ fstatmax = 0
554
+ lowest_mismatch = 100000000000
555
+
556
+ fstat_hist_dic = {}
557
+
558
+ # Iterate through the template bank and calculate 2F's for each as well as their mismatches. The templates with the greatest 2F's (and lowest mismatches)
559
+ # are saved to a heap, which is then written to a file once the entire template bank has been iterated through
560
+ for counter in trange(tempcount, file=tqdm_file):
561
+ fin = lp.NextLatticeTilingPoint(iterator, template)
562
+ thistemp = copy.copy(template.data)
563
+
564
+ fstat = computefstat(
565
+ thistemp,
566
+ finputdata,
567
+ fstatinputarray,
568
+ transformmatrices,
569
+ trefsegfrac=trefsegfrac,
570
+ rtnsum=rtnsum,
571
+ )
572
+
573
+ all_twoFs = [res.twoF[0] for res in fstat]
574
+
575
+ twoF = sum(all_twoFs) / len(all_twoFs)
576
+
577
+ if twoF > fstatmax:
578
+ fstatmax = twoF
579
+
580
+ tempdiffvec = [signalparams[i] - thistemp[i] for i in range(len(signalparams))]
581
+
582
+ temp_mismatch_metric = np.dot(tempdiffvec, np.dot(metric, tempdiffvec))
583
+ temp_mismatch_fstat = (sigtwoF - twoF) / (sigtwoF - 4)
584
+
585
+ if temp_mismatch_metric < lowest_mismatch_metric:
586
+ lowest_mismatch_metric = temp_mismatch_metric
587
+
588
+ if temp_mismatch_fstat < lowest_mismatch_fstat:
589
+ lowest_mismatch_fstat = temp_mismatch_fstat
590
+
591
+ if Fstat_mismatch:
592
+ this_mismatch = temp_mismatch_fstat
593
+ else:
594
+ this_mismatch = temp_mismatch_metric
595
+
596
+ if this_mismatch < lowest_mismatch:
597
+ lowest_mismatch = this_mismatch
598
+
599
+ # We include a counter when using heappush and heappushpop in the case that we comes acros the case where two f-statistics are equal
600
+ # and hence will then try and find the next 'greatest' template, which will throw an error, given that the templates are arrays.
601
+ if counter < tempsperfile:
602
+ hq.heappush(fstat_res_heap, (twoF, this_mismatch, counter, thistemp, fstat))
603
+ hq.heappush(
604
+ mismatch_fstat_res_heap,
605
+ (-this_mismatch, twoF, counter, thistemp, fstat),
606
+ )
607
+ else:
608
+ hq.heappushpop(
609
+ fstat_res_heap, (twoF, this_mismatch, counter, thistemp, fstat)
610
+ )
611
+ hq.heappushpop(
612
+ mismatch_fstat_res_heap,
613
+ (-this_mismatch, twoF, counter, thistemp, fstat),
614
+ )
615
+
616
+ if fstat_hist:
617
+ add_fstat_to_dic(twoF, fstat_hist_dic)
618
+
619
+ if fstat_hist:
620
+ fstat_hist_file_name = out_directory + "/" + "Fstat_hist_" + filename
621
+ dic_to_file(fstat_hist_file_name, fstat_hist_dic)
622
+
623
+ tqdm_file.close()
624
+
625
+ for i, elem in enumerate(mismatch_fstat_res_heap):
626
+ new_mismatch = -1 * elem[0]
627
+ mismatch_fstat_res_heap[i] = (new_mismatch, elem[1], elem[2], elem[3], elem[4])
628
+
629
+ # The mismatch heap is sorted to have lowest mismatches first, while the fstat heap is sorted to have highest element first
630
+ mismatch_fstat_res_heap.sort()
631
+ fstat_res_heap.sort(reverse=True)
632
+
633
+ # Check that end of template bank has been reached
634
+ fin = lp.NextLatticeTilingPoint(iterator, template)
635
+ if fin != 0:
636
+ raise RuntimeError("end of template bank has not been reached")
637
+
638
+ # General stats
639
+ logging.info(f"Length of tempheap: {len(fstat_res_heap)}")
640
+ logging.info(f"Templates per file is: {tempsperfile}")
641
+ logging.info(f"Templates counted: {counter}")
642
+ logging.info(f"Time Elapsed: {time.time() - starttime}")
643
+ logging.info(f"Templates per second: {counter / (time.time() - starttime)}")
644
+
645
+ # Minimum and maximum 2F's and mismatches
646
+ logging.info(f"Sig f-stat: {sigtwoF}")
647
+ logging.info("Running maximum f-stat: %s", str(fstatmax))
648
+ logging.info("Heap maximum f-stat: %s", str(fstat_res_heap[0][0]))
649
+ logging.info(f"Running lowest mismatch: {lowest_mismatch}")
650
+ logging.info(f"Heap lowest mismatch: {mismatch_fstat_res_heap[0][0]}")
651
+
652
+ # Write both heaps to files
653
+ fstat_res_heap_to_file(
654
+ out_directory + "/" + filename, fstat_res_heap, fstats_first=True
655
+ )
656
+ fstat_res_heap_to_file(
657
+ out_directory + "/" + mismatchfilename,
658
+ mismatch_fstat_res_heap,
659
+ fstats_first=False,
660
+ )
661
+
662
+ return lowest_mismatch_metric, lowest_mismatch_fstat, fstatmax, tempcount
663
+
664
+
665
+ # As the above, but this is what should be used for doing a search. It has all the superfluous code used for testing removed for fewer over heads and greater efficiency.
666
+ def pw_fstat_search_catalogue(
667
+ SFTfmin,
668
+ SFTfmax,
669
+ tbank,
670
+ finputdata,
671
+ filename,
672
+ tbankdirectory=".",
673
+ SFTdirectory=".",
674
+ trefsegfrac=0.0,
675
+ rtnsum=False,
676
+ tempsperfile=1000,
677
+ ):
678
+
679
+ segs = len(bf.knotslist) - 1
680
+ logging.info("Knots: %s", str(bf.knotslist))
681
+
682
+ finalknot = len(bf.knotslist)
683
+ s = tbank.s
684
+
685
+ # The below lines are required for finding the nearest lattice point to the signal parameters
686
+
687
+ # Create LatticeTiling object
688
+ tiling = lp.CreateLatticeTiling(s * finalknot)
689
+
690
+ logging.debug("Doing metric")
691
+ metric = scmm.PreCompMetric(s)
692
+
693
+ logging.debug("Doing Bounds")
694
+ tbe.setbounds(tiling, tbank)
695
+
696
+ logging.debug("Setting tiling lattice and metric")
697
+
698
+ # Set metric, mismatch and lattice type
699
+ lp.SetTilingLatticeAndMetric(
700
+ tiling, lp.TILING_LATTICE_ANSTAR, metric, tbank.maxmismatch
701
+ )
702
+
703
+ # Create Iterator
704
+ iterator = lp.CreateLatticeTilingIterator(tiling, s * finalknot)
705
+
706
+ for i in range(s * finalknot):
707
+ stats = lp.LatticeTilingStatistics(tiling, i)
708
+ logging.info(f"Total points in dim={i}: {stats.total_points}")
709
+ logging.info(f"Minimum points in dim={i}: {stats.min_points}")
710
+ logging.info(f"Maximum points in dim={i}: {stats.max_points}")
711
+
712
+ fstatinputarray = []
713
+ transformmatrices = []
714
+
715
+ logging.info("Setting up Fstatistic input and transformation matrices")
716
+
717
+ for seg in range(segs):
718
+ logging.debug(f"Doing seg: {seg}")
719
+ p0 = bf.knotslist[seg]
720
+ p1 = bf.knotslist[seg + 1]
721
+ tref = p0 + (p1 - p0) * trefsegfrac
722
+ tstart = bf.knotslist[0]
723
+
724
+ transformmatrices.append(gom.ParamTransformationMatrix(p0, p1, tref, s))
725
+
726
+ # We assume that SFTs are follow a directory structure "GW170817/Detector_X/SFT_X.sft". To extract all sfts for our FStatInput we need to have an sft_path with
727
+ # the pattern Source/*/*.sft, to get all detectors and all of their SFTS. The SFTdirectory path is currently hardcoded in lalpulsar_PiecewiseSearch.py to get us
728
+ # to the "GW170817" directory level. So when we come to remove this hardcoded path and allow it to be a user input, that user input also necessarily needs to
729
+ # get to that level directory and should have the same structure. That is, the structure of "GW170817/Detector_X/SFT_X.sft".
730
+ sft_path = SFTdirectory
731
+
732
+ finput = fstatinputfromSFTFiles(
733
+ SFTfmin,
734
+ SFTfmax,
735
+ finputdata,
736
+ timeint=[p0, p1],
737
+ sft_path=sft_path,
738
+ detectors=tbank.detectors,
739
+ )
740
+
741
+ fstatinputarray.append(finput)
742
+
743
+ logging.info("Finputs done")
744
+
745
+ # fin is iterated through by the NextLatticeTilingPoint, when fin == 0, the parameter space associated with tbank has been completed tiled.
746
+ fin = -1
747
+
748
+ fstatmax = 0
749
+
750
+ # The temp heap, which will contain the highest 2F's and their associated templates. The elements of the heap have form (fstat, mismatch, counter, template, FStatResults())
751
+ template = lal.gsl_vector(s * finalknot)
752
+ fstat_res_heap = []
753
+ starttime = time.time()
754
+
755
+ logging.info("Counting templates ...")
756
+ tempcount = lp.TotalLatticeTilingPoints(iterator)
757
+ logging.info(f"... finished: number of templates = {tempcount}")
758
+
759
+ tqdm_file = open(filename[:-4] + "_tqdm_Output.txt", "w+")
760
+
761
+ # Iterate through the template bank and calculate 2F's for each as well as their mismatches. The templates with the greatest 2F's (and lowest mismatches)
762
+ # are saved to a heap, which is then written to a file once the entire template bank has been iterated through
763
+ for counter in trange(tempcount, file=tqdm_file):
764
+ fin = lp.NextLatticeTilingPoint(iterator, template)
765
+ thistemp = copy.copy(template.data)
766
+
767
+ fstat = computefstat(
768
+ thistemp,
769
+ finputdata,
770
+ fstatinputarray,
771
+ transformmatrices,
772
+ trefsegfrac=trefsegfrac,
773
+ rtnsum=rtnsum,
774
+ )
775
+
776
+ all_twoFs = [res.twoF[0] for res in fstat]
777
+
778
+ twoF = sum(all_twoFs) / len(all_twoFs)
779
+
780
+ if twoF > fstatmax:
781
+ fstatmax = twoF
782
+
783
+ # We include a counter when using heappush and heappushpop in the case that we comes acros the case where two f-statistics are equal
784
+ # and hence will then try and find the next 'greatest' template, which will throw an error, given that the templates are arrays.
785
+ if counter <= tempsperfile:
786
+ hq.heappush(fstat_res_heap, (twoF, 0, counter, thistemp, fstat))
787
+ else:
788
+ hq.heappushpop(fstat_res_heap, (twoF, 0, counter, thistemp, fstat))
789
+
790
+ tqdm_file.close()
791
+
792
+ # Check that end of template bank has been reached
793
+ fin = lp.NextLatticeTilingPoint(iterator, template)
794
+ if fin != 0:
795
+ raise RuntimeError("end of template bank has not been reached")
796
+
797
+ # General stats
798
+ logging.info(f"Length of tempheap: {len(fstat_res_heap)}")
799
+ logging.info(f"Templates per file is: {tempsperfile}")
800
+ logging.info(f"Templates counted: {counter}")
801
+ logging.info(f"Time Elapsed: {time.time() - starttime}")
802
+ logging.info(f"Templates per second: {counter / (time.time() - starttime)}")
803
+
804
+ # Minimum and maximum 2F's and mismatches
805
+ logging.info("Running maximum f-stat: %s", str(fstatmax))
806
+ logging.info("Heap maximum f-stat: %s", str(fstat_res_heap[-1][0]))
807
+
808
+ fstat_res_heap.sort(reverse=True)
809
+
810
+ # Write heap to file
811
+ fstat_res_heap_to_file(tbankdirectory + "/" + filename, fstat_res_heap)
812
+
813
+ return 0, 0, fstatmax, tempcount