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,934 @@
1
+ #!python
2
+ #
3
+ # Copyright (C) 2006 Kipp Cannon
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify it
6
+ # under the terms of the GNU General Public License as published by the
7
+ # Free Software Foundation; either version 2 of the License, or (at your
8
+ # option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful, but
11
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
13
+ # Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18
+
19
+
20
+ #
21
+ # =============================================================================
22
+ #
23
+ # Preamble
24
+ #
25
+ # =============================================================================
26
+ #
27
+
28
+
29
+ import math
30
+ import numpy
31
+ from optparse import OptionParser
32
+ import sqlite3
33
+ import sys
34
+
35
+
36
+ from igwn_ligolw import dbtables
37
+ from igwn_ligolw import utils
38
+ from lal import rate
39
+ from lal.utils import CacheEntry
40
+ from lalburst import git_version
41
+ from lalburst import SimBurstUtils
42
+ from lalburst import SnglBurstUtils
43
+ import igwn_segments as segments
44
+
45
+
46
+ __author__ = "Kipp Cannon <kipp.cannon@ligo.org>"
47
+ __version__ = "git id %s" % git_version.id
48
+ __date__ = git_version.date
49
+
50
+
51
+ #
52
+ # =============================================================================
53
+ #
54
+ # Command Line
55
+ #
56
+ # =============================================================================
57
+ #
58
+
59
+
60
+ def parse_command_line():
61
+ parser = OptionParser(
62
+ version = "Name: %%prog\n%s" % git_version.verbose_msg
63
+ )
64
+ parser.add_option("--made-only", action = "store_true", default = False, help = "Plot only injections that were made.")
65
+ parser.add_option("-b", "--base", metavar = "base", default = "plotbinj_", help = "Set the prefix for output filenames (default = \"plotbinj_\")")
66
+ parser.add_option("-f", "--format", metavar = "format", default = "png", help = "Set the output image format (default = \"png\")")
67
+ parser.add_option("--amplitude-func", metavar = "hrsswave|hrssdet|E", default = "hrsswave", help = "Select the amplitude to show on the plots. \"hrsswave\" = the h_rss of the wave, \"hrssdet\" = the h_rss in the detector, \"E\" = the radiated energy over r^2.")
68
+ parser.add_option("--input-cache", metavar = "filename", action = "append", default = [], help = "Get list of trigger files from this LAL cache file.")
69
+ parser.add_option("-l", "--live-time-program", metavar = "program", default = "lalapps_power", help = "Set the name, as it appears in the process table, of the program whose search summary entries define the search live time (default = \"lalapps_power\").")
70
+ parser.add_option("--plot", metavar = "number", action = "append", default = None, help = "Generate the given plot number (default = make all plots). Use \"none\" to disable plots.")
71
+ parser.add_option("--coinc-plot", metavar = "number", action = "append", default = None, help = "Generate the given coinc plot number (default = make all coinc plots). Use \"none\" to disable coinc plots.")
72
+ parser.add_option("-t", "--tmp-space", metavar = "path", help = "Path to a directory suitable for use as a work area while manipulating the database file. The database file will be worked on in this directory, and then moved to the final location when complete. This option is intended to improve performance when running in a networked environment, where there might be a local disk with higher bandwidth than is available to the filesystem on which the final output will reside.")
73
+ parser.add_option("-v", "--verbose", action = "store_true", help = "Be verbose.")
74
+ options, filenames = parser.parse_args()
75
+
76
+ if options.amplitude_func == "hrsswave":
77
+ options.amplitude_func = lambda sim, instrument, offsetvector: sim.hrss
78
+ options.amplitude_lbl = r"$h_{\mathrm{rss}}$"
79
+ elif options.amplitude_func == "hrssdet":
80
+ options.amplitude_func = SimBurstUtils.hrss_in_instrument
81
+ options.amplitude_lbl = r"$h_{\mathrm{rss}}^{\mathrm{det}}$"
82
+ elif options.amplitude_func == "E":
83
+ options.amplitude_func = lambda sim, instrument, offsetvector: sim.egw_over_rsquared
84
+ options.amplitude_lbl = r"$M_{\odot} / \mathrm{pc}^{2}$"
85
+ else:
86
+ raise ValueError("unrecognized --amplitude-func %s" % options.amplitude_func)
87
+
88
+ if options.plot is None:
89
+ options.plot = range(10)
90
+ elif "none" in options.plot:
91
+ options.plot = []
92
+ else:
93
+ options.plot = map(int, options.plot)
94
+ if options.coinc_plot is None:
95
+ options.coinc_plot = range(2)
96
+ elif "none" in options.coinc_plot:
97
+ options.coinc_plot = []
98
+ else:
99
+ options.coinc_plot = map(int, options.coinc_plot)
100
+
101
+ filenames = filenames or []
102
+ for cache in options.input_cache:
103
+ if options.verbose:
104
+ print("reading '%s' ..." % cache, file=sys.stderr)
105
+ filenames += [CacheEntry(line).path for line in file(cache)]
106
+
107
+ return options, filenames
108
+
109
+
110
+ #
111
+ # =============================================================================
112
+ #
113
+ # Frequency vs. Time
114
+ #
115
+ # =============================================================================
116
+ #
117
+
118
+
119
+ class FreqVsTime(object):
120
+ def __init__(self, instrument):
121
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot("GPS Time (s)", "Frequency (Hz)")
122
+ self.axes.semilogy()
123
+ self.instrument = instrument
124
+ self.num_injections = 0
125
+ self.injected_x = []
126
+ self.injected_y = []
127
+ self.missed_x = []
128
+ self.missed_y = []
129
+ self.seglist = segments.segmentlist()
130
+
131
+ def add_contents(self, contents):
132
+ self.seglist |= contents.seglists[self.instrument]
133
+ for values in contents.connection.cursor().execute("""
134
+ SELECT
135
+ *,
136
+ EXISTS (
137
+ SELECT
138
+ *
139
+ FROM
140
+ sim_burst_map
141
+ JOIN sngl_burst ON (
142
+ sngl_burst.event_id == sim_burst_map.event_id
143
+ )
144
+ WHERE
145
+ sim_burst_map.simulation_id == sim_burst.simulation_id
146
+ AND sngl_burst.ifo == ?
147
+ )
148
+ FROM
149
+ sim_burst
150
+ """, (self.instrument,)):
151
+ sim = contents.sim_burst_table.row_from_cols(values)
152
+ found = values[-1]
153
+ if SimBurstUtils.injection_was_made(sim, contents.seglists, (self.instrument,)):
154
+ self.num_injections += 1
155
+ peak = float(sim.time_at_instrument(self.instrument))
156
+ self.injected_x.append(peak)
157
+ self.injected_y.append(sim.frequency)
158
+ if not found:
159
+ self.missed_x.append(peak)
160
+ self.missed_y.append(sim.frequency)
161
+
162
+ def finish(self):
163
+ self.axes.plot(self.injected_x, self.injected_y, "k+")
164
+ if not options.made_only:
165
+ self.axes.plot(self.missed_x, self.missed_y, "rx")
166
+ for seg in ~self.seglist & segments.segmentlist([segments.segment(self.axes.get_xlim())]):
167
+ self.axes.axvspan(float(seg[0]), float(seg[1]), facecolor = "k", alpha = 0.2)
168
+ self.axes.set_ylim([min(self.injected_y), max(self.injected_y)])
169
+ self.axes.set_title("Injection Locations\n(%d Injections)" % self.num_injections)
170
+
171
+
172
+ #
173
+ # =============================================================================
174
+ #
175
+ # Amplitude vs. Frequency
176
+ #
177
+ # =============================================================================
178
+ #
179
+
180
+
181
+ class HrssVsFreqScatter(object):
182
+ def __init__(self, instrument, amplitude_func, amplitude_lbl):
183
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot("Frequency (Hz)", amplitude_lbl)
184
+ self.axes.loglog()
185
+ self.instrument = instrument
186
+ self.amplitude_func = amplitude_func
187
+ self.amplitude_lbl = amplitude_lbl
188
+ self.num_injections = 0
189
+ self.injected_x = []
190
+ self.injected_y = []
191
+ self.missed_x = []
192
+ self.missed_y = []
193
+
194
+ def add_contents(self, contents):
195
+ offsetvectors = contents.time_slide_table.as_dict()
196
+ for values in contents.connection.cursor().execute("""
197
+ SELECT
198
+ *,
199
+ EXISTS (
200
+ SELECT
201
+ *
202
+ FROM
203
+ sim_burst_map
204
+ JOIN sngl_burst ON (
205
+ sngl_burst.event_id == sim_burst_map.event_id
206
+ )
207
+ WHERE
208
+ sim_burst_map.simulation_id == sim_burst.simulation_id
209
+ AND sngl_burst.ifo == ?
210
+ )
211
+ FROM
212
+ sim_burst
213
+ """, (self.instrument,)):
214
+ sim = contents.sim_burst_table.row_from_cols(values)
215
+ found = values[-1]
216
+ if SimBurstUtils.injection_was_made(sim, contents.seglists, (self.instrument,)):
217
+ self.num_injections += 1
218
+ amplitude = self.amplitude_func(sim, self.instrument, offsetvectors[sim.time_slide_id])
219
+ self.injected_x.append(sim.frequency)
220
+ self.injected_y.append(amplitude)
221
+ if not found:
222
+ self.missed_x.append(sim.frequency)
223
+ self.missed_y.append(amplitude)
224
+
225
+ def finish(self):
226
+ self.axes.plot(self.injected_x, self.injected_y, "k+")
227
+ if not options.made_only:
228
+ self.axes.plot(self.missed_x, self.missed_y, "rx")
229
+ self.axes.set_xlim([min(self.injected_x), max(self.injected_x)])
230
+ self.axes.set_ylim([min(self.injected_y), max(self.injected_y)])
231
+ self.axes.set_title("Injection " + self.amplitude_lbl + " vs. Frequency\n(%d Injections)" % self.num_injections)
232
+
233
+
234
+ #
235
+ # =============================================================================
236
+ #
237
+ # Trigger Count Histogram
238
+ #
239
+ # =============================================================================
240
+ #
241
+
242
+
243
+ class TriggerCountHistogram(object):
244
+ def __init__(self, instrument):
245
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot("Number of Triggers Coincident with Injection", "Count")
246
+ self.axes.semilogy()
247
+ self.instrument = instrument
248
+ self.found = 0
249
+ self.bins = []
250
+
251
+ def add_contents(self, contents):
252
+ for nevents, in contents.connection.cursor().execute("""
253
+ SELECT
254
+ nevents
255
+ FROM
256
+ coinc_event
257
+ WHERE
258
+ coinc_def_id == ?
259
+ """, (contents.sb_definer_id,)):
260
+ self.found += 1
261
+ while nevents + 1 >= len(self.bins):
262
+ self.bins.append(0)
263
+ self.bins[nevents] += 1
264
+
265
+ def finish(self):
266
+ self.axes.plot(range(len(self.bins)), self.bins, "ko-")
267
+ self.axes.set_title("Triggers per Found Injection\n(%d Found Injections)" % self.found)
268
+
269
+
270
+ #
271
+ # =============================================================================
272
+ #
273
+ # Recovered vs. Injected h_rss
274
+ #
275
+ # =============================================================================
276
+ #
277
+
278
+
279
+ class RecoveredVsInjectedhrss(object):
280
+ def __init__(self, instrument, amplitude_func, amplitude_lbl):
281
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot(r"Injected " + amplitude_lbl, r"Recovered $h_{\mathrm{rss}}$")
282
+ self.axes.loglog()
283
+ self.fig.set_size_inches(8, 8)
284
+ self.instrument = instrument
285
+ self.amplitude_func = amplitude_func
286
+ self.amplitude_lbl = amplitude_lbl
287
+ self.matches = 0
288
+ self.x = []
289
+ self.y = []
290
+ self.c = []
291
+
292
+ def add_contents(self, contents):
293
+ offsetvectors = contents.time_slide_table.as_dict()
294
+ for values in contents.connection.cursor().execute("""
295
+ SELECT
296
+ sim_burst.*,
297
+ sngl_burst.peak_frequency,
298
+ sngl_burst.ms_hrss
299
+ FROM
300
+ sim_burst
301
+ JOIN sim_burst_map ON (
302
+ sim_burst_map.simulation_id == sim_burst.simulation_id
303
+ )
304
+ JOIN sngl_burst ON (
305
+ sngl_burst.event_id == sim_burst_map.event_id
306
+ )
307
+ WHERE
308
+ sngl_burst.ifo == ?
309
+ """, (self.instrument,)):
310
+ sim = contents.sim_burst_table.row_from_cols(values)
311
+ freq_rec, hrss_rec = values[-2:]
312
+ self.matches += 1
313
+ self.x.append(self.amplitude_func(sim, self.instrument, offsetvectors[sim.time_slide_id]))
314
+ self.y.append(hrss_rec)
315
+ self.c.append(math.log(freq_rec))
316
+
317
+ def finish(self):
318
+ self.axes.scatter(self.x, self.y, c = self.c, s = 16)
319
+ #xmin, xmax = self.axes.get_xlim()
320
+ #ymin, ymax = self.axes.get_ylim()
321
+ xmin, xmax = min(self.x), max(self.x)
322
+ ymin, ymax = min(self.y), max(self.y)
323
+ xmin = ymin = min(xmin, ymin)
324
+ xmax = ymax = max(xmax, ymax)
325
+ self.axes.plot([xmin, xmax], [ymin, ymax], "k-")
326
+ self.axes.set_xlim([xmin, xmax])
327
+ self.axes.set_ylim([ymin, ymax])
328
+ self.axes.set_title(r"Recovered $h_{\mathrm{rss}}$ vs.\ Injected " + self.amplitude_lbl + " (%d Events Matching Injections)" % self.matches)
329
+
330
+
331
+ class RecoveredPerInjectedhrssVsFreq(object):
332
+ def __init__(self, instrument, amplitude_func, amplitude_lbl):
333
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot(r"$f_{\mathrm{injected}}$ (Hz)", r"Recovered $h_{\mathrm{rss}}$ / Injected "+ amplitude_lbl)
334
+ self.axes.loglog()
335
+ self.fig.set_size_inches(8, 8)
336
+ self.instrument = instrument
337
+ self.amplitude_func = amplitude_func
338
+ self.amplitude_lbl = amplitude_lbl
339
+ self.matches = 0
340
+ self.x = []
341
+ self.y = []
342
+ self.c = []
343
+
344
+ def add_contents(self, contents):
345
+ offsetvectors = contents.time_slide_table.as_dict()
346
+ for values in contents.connection.cursor().execute("""
347
+ SELECT
348
+ sim_burst.*,
349
+ sngl_burst.peak_frequency,
350
+ sngl_burst.ms_hrss
351
+ FROM
352
+ sim_burst
353
+ JOIN sim_burst_map ON (
354
+ sim_burst_map.simulation_id == sim_burst.simulation_id
355
+ )
356
+ JOIN sngl_burst ON (
357
+ sngl_burst.event_id == sim_burst_map.event_id
358
+ )
359
+ WHERE
360
+ sngl_burst.ifo == ?
361
+ """, (self.instrument,)):
362
+ sim = contents.sim_burst_table.row_from_cols(values)
363
+ freq_rec, hrss_rec = values[-2:]
364
+ self.matches += 1
365
+ self.x.append(sim.frequency)
366
+ self.y.append(hrss_rec / self.amplitude_func(sim, self.instrument, offsetvectors[sim.time_slide_id]))
367
+ self.c.append(math.log(freq_rec))
368
+
369
+ def finish(self):
370
+ self.axes.scatter(self.x, self.y, c = self.c, s = 16)
371
+ self.axes.set_xlim([min(self.x), max(self.x)])
372
+ self.axes.set_ylim([min(self.y), max(self.y)])
373
+ self.axes.set_title(r"Ratio of Recovered $h_{\mathrm{rss}}$ to Injected " + self.amplitude_lbl + r" vs.\ Frequency (%d Events Matching Injections)" % self.matches)
374
+
375
+
376
+ class RecoveredPerInjectedhrssVsBandwidth(object):
377
+ def __init__(self, instrument, amplitude_func, amplitude_lbl):
378
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot(r"$\Delta f_{\mathrm{recovered}}$ (Hz)", r"Recovered $h_{\mathrm{rss}}$ / Injected " + amplitude_lbl)
379
+ self.axes.loglog()
380
+ self.fig.set_size_inches(8, 8)
381
+ self.instrument = instrument
382
+ self.amplitude_func = amplitude_func
383
+ self.amplitude_lbl = amplitude_lbl
384
+ self.matches = 0
385
+ self.x = []
386
+ self.y = []
387
+ self.c = []
388
+
389
+ def add_contents(self, contents):
390
+ offsetvectors = contents.time_slide_table.as_dict()
391
+ for values in contents.connection.cursor().execute("""
392
+ SELECT
393
+ sim_burst.*,
394
+ sngl_burst.bandwidth,
395
+ sngl_burst.peak_frequency,
396
+ sngl_burst.ms_hrss
397
+ FROM
398
+ sim_burst
399
+ JOIN sim_burst_map ON (
400
+ sim_burst_map.simulation_id == sim_burst.simulation_id
401
+ )
402
+ JOIN sngl_burst ON (
403
+ sngl_burst.event_id == sim_burst_map.event_id
404
+ )
405
+ WHERE
406
+ sngl_burst.ifo == ?
407
+ """, (self.instrument,)):
408
+ sim = contents.sim_burst_table.row_from_cols(values)
409
+ bandwidth, freq_rec, hrss_rec = values[-3:]
410
+ self.matches += 1
411
+ self.x.append(bandwidth)
412
+ self.y.append(hrss_rec / self.amplitude_func(sim, self.instrument, offsetvectors[sim.time_slide_id]))
413
+ self.c.append(math.log(freq_rec))
414
+
415
+ def finish(self):
416
+ self.axes.scatter(self.x, self.y, c = self.c, s = 16)
417
+ self.axes.set_xlim([min(self.x), max(self.x)])
418
+ self.axes.set_ylim([min(self.y), max(self.y)])
419
+ self.axes.set_title(r"Ratio of Recovered $h_{\mathrm{rss}}$ to Injected " + self.amplitude_lbl + r" vs.\ Recovered Bandwidth (%d Events Matching Injections)" % self.matches)
420
+
421
+
422
+ #
423
+ # =============================================================================
424
+ #
425
+ # Recovered Time Offset
426
+ #
427
+ # =============================================================================
428
+ #
429
+
430
+
431
+ class RecoveredTimeOffset(object):
432
+ def __init__(self, instrument, interval, width):
433
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot(r"$t_{\mathrm{recovered}} - t_{\mathrm{injected}}$ (s)", "Triggers per Unit Offset")
434
+ self.axes.semilogy()
435
+ self.instrument = instrument
436
+ self.found = 0
437
+ # 21 bins per filter width
438
+ bins = int(float(abs(interval)) / width) * 21
439
+ binning = rate.NDBins((rate.LinearBins(interval[0], interval[1], bins),))
440
+ self.offsets = rate.BinnedDensity(binning)
441
+ self.coinc_offsets = rate.BinnedDensity(binning)
442
+
443
+ def add_contents(self, contents):
444
+ # this outer loop assumes each injection can only be found
445
+ # in at most one coinc, otherwise the "found" count is
446
+ # wrong.
447
+ for values in contents.connection.cursor().execute("""
448
+ SELECT
449
+ sim_burst.*,
450
+ coinc_event.coinc_event_id
451
+ FROM
452
+ coinc_event
453
+ JOIN coinc_event_map ON (
454
+ coinc_event_map.coinc_event_id == coinc_event.coinc_event_id
455
+ )
456
+ JOIN sim_burst ON (
457
+ coinc_event_map.table_name == 'sim_burst'
458
+ AND coinc_event_map.event_id == sim_burst.simulation_id
459
+ )
460
+ WHERE
461
+ coinc_def_id == ?
462
+ """, (contents.sb_definer_id,)):
463
+ sim = contents.sim_burst_table.row_from_cols(values)
464
+ coinc_event_id = values[-1]
465
+ sim_peak = sim.time_at_instrument(self.instrument)
466
+ self.found += 1
467
+ bursts = tuple(SnglBurstUtils.coinc_sngl_bursts(contents, coinc_event_id))
468
+ coinc_dt = 0
469
+ for burst in bursts:
470
+ dt = float(burst.peak - sim_peak)
471
+ if burst.ifo == self.instrument:
472
+ try:
473
+ self.offsets.count[dt,] += 1.0
474
+ except IndexError:
475
+ # outside plot range
476
+ pass
477
+ coinc_dt += dt * burst.ms_snr
478
+ coinc_dt /= sum(burst.ms_snr for burst in bursts)
479
+ try:
480
+ self.coinc_offsets.count[coinc_dt,] += 1.0
481
+ except IndexError:
482
+ # outside plot range
483
+ pass
484
+
485
+ def finish(self):
486
+ self.axes.set_title("Trigger Peak Time - Injection Peak Time\n(%d Found Injections)" % self.found)
487
+ # 21 bins per filter width
488
+ filter = rate.gaussian_window(21)
489
+ rate.filter_array(self.offsets.array, filter)
490
+ rate.filter_array(self.coinc_offsets.array, filter)
491
+ self.axes.plot(self.offsets.centres()[0], self.offsets.at_centres(), "k")
492
+ self.axes.plot(self.coinc_offsets.centres()[0], self.coinc_offsets.at_centres(), "r")
493
+ self.axes.legend(["%s residuals" % self.instrument, "SNR-weighted mean of residuals in all instruments"], loc = "lower right")
494
+
495
+
496
+ #
497
+ # =============================================================================
498
+ #
499
+ # Recovered Frequency Offset
500
+ #
501
+ # =============================================================================
502
+ #
503
+
504
+
505
+ class RecoveredFrequencyOffset(object):
506
+ def __init__(self, instrument, interval, width):
507
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot(r"$f_{\mathrm{recovered}} / f_{\mathrm{injected}}$", "Event Number Density")
508
+ self.axes.loglog()
509
+ self.instrument = instrument
510
+ self.found = 0
511
+ # 21 bins per filter width
512
+ bins = int(float(abs(interval)) / width) * 21
513
+ binning = rate.NDBins((rate.LinearBins(interval[0], interval[1], bins),))
514
+ self.offsets = rate.BinnedDensity(binning)
515
+ self.coinc_offsets = rate.BinnedDensity(binning)
516
+
517
+ def add_contents(self, contents):
518
+ # this outer loop assumes each injection can only be found
519
+ # in at most one coinc, otherwise the "found" count is
520
+ # wrong.
521
+ for coinc_event_id, sim_frequency in contents.connection.cursor().execute("""
522
+ SELECT
523
+ coinc_event.coinc_event_id,
524
+ sim_burst.frequency
525
+ FROM
526
+ coinc_event
527
+ JOIN coinc_event_map ON (
528
+ coinc_event_map.coinc_event_id == coinc_event.coinc_event_id
529
+ )
530
+ JOIN sim_burst ON (
531
+ coinc_event_map.table_name == 'sim_burst'
532
+ AND sim_burst.simulation_id == coinc_event_map.event_id
533
+ )
534
+ WHERE
535
+ coinc_event.coinc_def_id == ?
536
+ """, (contents.sb_definer_id,)):
537
+ self.found += 1
538
+ bursts = tuple(SnglBurstUtils.coinc_sngl_bursts(contents, coinc_event_id))
539
+ for burst in bursts:
540
+ if burst.ifo == self.instrument:
541
+ df = math.log(burst.peak_frequency / sim_frequency, 10)
542
+ try:
543
+ self.offsets.count[df,] += 1.0
544
+ except IndexError:
545
+ # outside plot range
546
+ pass
547
+ # snr-weighted mean of peak frequencies
548
+ coinc_freq = sum(burst.peak_frequency * burst.ms_snr for burst in bursts) / sum(burst.ms_snr for burst in bursts)
549
+ df = math.log(coinc_freq / sim_frequency, 10)
550
+ try:
551
+ self.coinc_offsets.count[df,] += 1.0
552
+ except IndexError:
553
+ # outside plot range
554
+ pass
555
+
556
+ def finish(self):
557
+ self.axes.set_title("Trigger Peak Frequency / Injection Centre Frequency\n(%d Found Injections)" % self.found)
558
+ # 21 bins per filter width
559
+ filter = rate.gaussian_window(21)
560
+ rate.filter_array(self.offsets.array, filter)
561
+ rate.filter_array(self.coinc_offsets.array, filter)
562
+ self.axes.plot(10**self.offsets.centres()[0], self.offsets.at_centres(), "k")
563
+ self.axes.plot(10**self.coinc_offsets.centres()[0], self.coinc_offsets.at_centres(), "r")
564
+ self.axes.legend(["%s triggers" % self.instrument, "SNR-weighted mean of all matching triggers"], loc = "lower right")
565
+ ymin, ymax = self.axes.get_ylim()
566
+ if ymax / ymin > 1e6:
567
+ ymin = ymax / 1e6
568
+ self.axes.set_ylim((ymin, ymax))
569
+
570
+
571
+ #
572
+ # =============================================================================
573
+ #
574
+ # Recovered vs. Injected Frequency
575
+ #
576
+ # =============================================================================
577
+ #
578
+
579
+
580
+ class RecoveredVsInjectedFreq(object):
581
+ def __init__(self, instrument, amplitude_func):
582
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot(r"$f_{\mathrm{injected}}$ (Hz)", r"$f_{\mathrm{recovered}}$ (Hz)")
583
+ self.axes.loglog()
584
+ self.fig.set_size_inches(8, 8)
585
+ self.instrument = instrument
586
+ self.amplitude_func = amplitude_func
587
+ self.matches = 0
588
+ self.x = []
589
+ self.y = []
590
+ self.c = []
591
+
592
+ def add_contents(self, contents):
593
+ offsetvectors = contents.time_slide_table.as_dict()
594
+ for values in contents.connection.cursor().execute("""
595
+ SELECT
596
+ sim_burst.*,
597
+ sngl_burst.peak_frequency,
598
+ sngl_burst.ms_hrss
599
+ FROM
600
+ sim_burst
601
+ JOIN sim_burst_map ON (
602
+ sim_burst_map.simulation_id == sim_burst.simulation_id
603
+ )
604
+ JOIN sngl_burst ON (
605
+ sngl_burst.event_id == sim_burst_map.event_id
606
+ )
607
+ WHERE
608
+ sngl_burst.ifo == ?
609
+ """, (self.instrument,)):
610
+ sim = contents.sim_burst_table.row_from_cols(values)
611
+ freq_rec, hrss_rec = values[-2:]
612
+ self.matches += 1
613
+ self.x.append(sim.frequency)
614
+ self.y.append(freq_rec)
615
+ self.c.append(math.log(hrss_rec / self.amplitude_func(sim, self.instrument, offsetvectors[sim.time_slide_id])))
616
+
617
+ def finish(self):
618
+ self.axes.scatter(self.x, self.y, c = self.c, s = 16)
619
+ xmin, xmax = min(self.x), max(self.x)
620
+ ymin, ymax = min(self.y), max(self.y)
621
+ xmin = ymin = min(xmin, ymin)
622
+ xmax = ymax = max(xmax, ymax)
623
+ self.axes.plot([xmin, xmax], [ymin, ymax], "k-")
624
+ self.axes.set_xlim([xmin, xmax])
625
+ self.axes.set_ylim([ymin, ymax])
626
+ self.axes.set_title(r"Recovered Frequency vs.\ Injected Frequency (%d Events Matching Injections)" % self.matches)
627
+
628
+
629
+ class CoincRecoveredVsInjectedFreq(object):
630
+ def __init__(self, instruments):
631
+ self.fig, self.axes = SnglBurstUtils.make_burst_plot(r"$f_{\mathrm{injected}}$ (Hz)", r"$f_{\mathrm{recovered}}$ (Hz)")
632
+ self.axes.loglog()
633
+ self.fig.set_size_inches(8, 8)
634
+ self.instruments = set(instruments)
635
+ self.matches = 0
636
+ self.x = []
637
+ self.y = []
638
+ self.c = []
639
+
640
+ def add_contents(self, contents):
641
+ # FIXME: this query doesn't check for the correct
642
+ # instruments (should be done via coinc_def_id)
643
+ for values in contents.connection.cursor().execute("""
644
+ SELECT
645
+ sim_burst.*,
646
+ multi_burst.central_freq,
647
+ multi_burst.amplitude
648
+ FROM
649
+ sim_burst
650
+ JOIN sim_coinc_map ON (
651
+ sim_coinc_map.simulation_id == sim_burst.simulation_id
652
+ )
653
+ JOIN coinc_event AS sim_coinc_event ON (
654
+ sim_coinc_event.coinc_event_id == sim_coinc_map.coinc_event_id
655
+ )
656
+ JOIN multi_burst ON (
657
+ multi_burst.coinc_event_id == sim_coinc_map.event_id
658
+ )
659
+ WHERE
660
+ sim_coinc_event.coinc_def_id == ?
661
+ """, (contents.sce_definer_id,)):
662
+ sim = contents.sim_burst_table.row_from_cols(values)
663
+ freq_rec, hrss_rec = values[-2:]
664
+ self.matches += 1
665
+ self.x.append(sim.frequency)
666
+ self.y.append(freq_rec)
667
+ self.c.append(math.log(hrss_rec / sim.hrss))
668
+
669
+ def finish(self):
670
+ self.axes.scatter(self.x, self.y, c = self.c, s = 16)
671
+ xmin, xmax = min(self.x), max(self.x)
672
+ ymin, ymax = min(self.y), max(self.y)
673
+ xmin = ymin = min(xmin, ymin)
674
+ xmax = ymax = max(xmax, ymax)
675
+ self.axes.plot([xmin, xmax], [ymin, ymax], "k-")
676
+ self.axes.set_xlim([xmin, xmax])
677
+ self.axes.set_ylim([ymin, ymax])
678
+ self.axes.set_title(r"Recovered Frequency vs.\ Injected Frequency (%d Events Matching Injections)" % self.matches)
679
+
680
+
681
+ #
682
+ # =============================================================================
683
+ #
684
+ # Plot
685
+ #
686
+ # =============================================================================
687
+ #
688
+
689
+
690
+ #
691
+ # How to create new plots
692
+ #
693
+
694
+
695
+ def new_plots(instrument, amplitude_func, amplitude_lbl, plots):
696
+ l = (
697
+ FreqVsTime(instrument),
698
+ HrssVsFreqScatter(instrument, amplitude_func, amplitude_lbl),
699
+ SimBurstUtils.Efficiency_hrss_vs_freq((instrument,), amplitude_func, amplitude_lbl, 0.1),
700
+ TriggerCountHistogram(instrument),
701
+ RecoveredVsInjectedhrss(instrument, amplitude_func, amplitude_lbl),
702
+ RecoveredPerInjectedhrssVsFreq(instrument, amplitude_func, amplitude_lbl),
703
+ RecoveredPerInjectedhrssVsBandwidth(instrument, amplitude_func, amplitude_lbl),
704
+ RecoveredTimeOffset(instrument, segments.segment(-0.03, +0.03), 0.00015),
705
+ RecoveredFrequencyOffset(instrument, segments.segment(-1.0, +1.0), .002),
706
+ RecoveredVsInjectedFreq(instrument, amplitude_func)
707
+ )
708
+ return [l[i] for i in plots]
709
+
710
+
711
+ def new_coinc_plots(instruments, amplitude_func, amplitude_lbl, plots):
712
+ l = (
713
+ SimBurstUtils.Efficiency_hrss_vs_freq(instruments, amplitude_func, amplitude_lbl, 0.1),
714
+ CoincRecoveredVsInjectedFreq(instruments)
715
+ )
716
+ return [l[i] for i in plots]
717
+
718
+
719
+ #
720
+ # Parse command line
721
+ #
722
+
723
+
724
+ options, filenames = parse_command_line()
725
+ if not options.plot and not options.coinc_plot or not filenames:
726
+ print("Nothing to do!", file=sys.stderr)
727
+ sys.exit(0)
728
+
729
+
730
+ #
731
+ # Process files
732
+ #
733
+
734
+
735
+ plots = {}
736
+ coincplots = new_coinc_plots(("H1", "H2", "L1"), options.amplitude_func, options.amplitude_lbl, options.coinc_plot)
737
+
738
+ for n, filename in enumerate(utils.sort_files_by_size(filenames, options.verbose, reverse = True)):
739
+ if options.verbose:
740
+ print("%d/%d: %s" % (n + 1, len(filenames), filename), file=sys.stderr)
741
+ working_filename = dbtables.get_connection_filename(filename, tmp_path = options.tmp_space, verbose = options.verbose)
742
+ database = SnglBurstUtils.CoincDatabase(sqlite3.connect(str(working_filename)), options.live_time_program)
743
+ if options.verbose:
744
+ SnglBurstUtils.summarize_coinc_database(database)
745
+ if options.plot:
746
+ if database.coinc_table is not None:
747
+ database.connection.cursor().execute("""
748
+ CREATE TEMPORARY VIEW
749
+ sim_burst_map
750
+ AS
751
+ SELECT
752
+ a.event_id AS simulation_id,
753
+ a.coinc_event_id AS coinc_event_id,
754
+ b.event_id AS event_id
755
+ FROM
756
+ coinc_event_map AS a
757
+ JOIN coinc_event_map AS b ON (
758
+ a.table_name == 'sim_burst'
759
+ AND b.table_name == 'sngl_burst'
760
+ AND b.coinc_event_id == a.coinc_event_id
761
+ )
762
+ """)
763
+ for instrument in database.instruments:
764
+ if instrument not in plots:
765
+ plots[instrument] = new_plots(instrument, options.amplitude_func, options.amplitude_lbl, options.plot)
766
+ for n, plot in zip(options.plot, plots[instrument]):
767
+ if options.verbose:
768
+ print("adding to %s plot %d ..." % (instrument, n), file=sys.stderr)
769
+ plot.add_contents(database)
770
+ if options.coinc_plot:
771
+ database.connection.cursor().execute("""
772
+ CREATE TEMPORARY VIEW
773
+ sim_coinc_map
774
+ AS
775
+ SELECT
776
+ a.event_id AS simulation_id,
777
+ a.coinc_event_id AS coinc_event_id,
778
+ b.event_id AS event_id
779
+ FROM
780
+ coinc_event_map AS a
781
+ JOIN coinc_event_map AS b ON (
782
+ a.table_name == 'sim_burst'
783
+ AND b.table_name == 'coinc_event'
784
+ AND b.coinc_event_id == a.coinc_event_id
785
+ )
786
+ """)
787
+ for n, plot in enumerate(coincplots):
788
+ if options.verbose:
789
+ print("adding to coinc plot %d ..." % options.coinc_plot[n], file=sys.stderr)
790
+ plot.add_contents(database)
791
+ database.connection.close()
792
+ dbtables.discard_connection_filename(filename, working_filename, verbose = options.verbose)
793
+
794
+
795
+ #
796
+ # compute the binning for the efficiency contour plots
797
+ #
798
+
799
+
800
+ def make_binning(plots):
801
+ plots = [plot for instrument in plots.keys() for plot in plots[instrument] if isinstance(plot, SimBurstUtils.Efficiency_hrss_vs_freq)]
802
+ if not plots:
803
+ return None
804
+ minx = min([min(plot.injected_x) for plot in plots])
805
+ maxx = max([max(plot.injected_x) for plot in plots])
806
+ miny = min([min(plot.injected_y) for plot in plots])
807
+ maxy = max([max(plot.injected_y) for plot in plots])
808
+ return rate.NDBins((rate.LogarithmicBins(minx, maxx, 512), rate.LogarithmicBins(miny, maxy, 512)))
809
+
810
+
811
+ binning = make_binning(plots)
812
+
813
+
814
+ #
815
+ # finish and write regular plots, deleting them as we go to save memory
816
+ #
817
+
818
+
819
+ efficiencies = []
820
+ for instrument in plots:
821
+ n = 0
822
+ format = "%%s%s_%%0%dd.%%s" % (instrument, int(math.log10(max(options.plot) or 1)) + 1)
823
+ while len(plots[instrument]):
824
+ plot = plots[instrument].pop(0)
825
+ filename = format % (options.base, options.plot[n], options.format)
826
+ if options.verbose:
827
+ print("finishing %s plot %d ..." % (instrument, options.plot[n]), file=sys.stderr)
828
+ try:
829
+ if isinstance(plot, SimBurstUtils.Efficiency_hrss_vs_freq):
830
+ plot.finish(binning = binning)
831
+ efficiencies.append(plot)
832
+ fig = SimBurstUtils.plot_Efficiency_hrss_vs_freq(plot)
833
+ else:
834
+ plot.finish()
835
+ fig = plot.fig
836
+ except ValueError as e:
837
+ print("can't finish %s plot %d: %s" % (instrument, options.plot[n], str(e)), file=sys.stderr)
838
+ else:
839
+ if options.verbose:
840
+ print("writing %s ..." % filename, file=sys.stderr)
841
+ fig.savefig(filename)
842
+ n += 1
843
+
844
+
845
+ #
846
+ # finish and write coinc plots, deleting them as we go to save memory
847
+ #
848
+
849
+
850
+ for n, plot in enumerate(coincplots):
851
+ format = "%%s%s_%%0%dd.%%s" % ("coinc", int(math.log10(max(options.coinc_plot) or 1)) + 1)
852
+ filename = format % (options.base, options.coinc_plot[n], options.format)
853
+ if options.verbose:
854
+ print("finishing coinc plot %d ..." % options.coinc_plot[n], file=sys.stderr)
855
+ try:
856
+ if isinstance(plot, SimBurstUtils.Efficiency_hrss_vs_freq):
857
+ plot.finish(binning = binning)
858
+ fig = SimBurstUtils.plot_Efficiency_hrss_vs_freq(plot)
859
+ else:
860
+ plot.finish()
861
+ fig = plot.fig
862
+ except ValueError as e:
863
+ print("can't finish coinc plot %d: %s" % (options.coinc_plot[n], str(e)), file=sys.stderr)
864
+ else:
865
+ if options.verbose:
866
+ print("writing %s ..." % filename, file=sys.stderr)
867
+ fig.savefig(filename)
868
+
869
+
870
+ #
871
+ # generate and write theoretical coincident detection efficiency
872
+ #
873
+
874
+
875
+ def plot_multi_Efficiency_hrss_vs_freq(efficiencies):
876
+ fig, axes = SnglBurstUtils.make_burst_plot("Frequency (Hz)", r"$h_{\mathrm{rss}}$")
877
+ axes.loglog()
878
+
879
+ e = efficiencies[0]
880
+ xcoords, ycoords = e.efficiency.centres()
881
+ zvals = e.efficiency.ratio()
882
+ error = e.error
883
+ for n, e in enumerate(efficiencies[1:]):
884
+ error += e.error
885
+ other_xcoords, other_ycoords = e.efficiency.centres()
886
+ if (xcoords != other_xcoords).any() or (ycoords != other_ycoords).any():
887
+ # binnings don't match, can't compute product of
888
+ # efficiencies
889
+ raise ValueError("binning mismatch")
890
+ zvals *= e.efficiency.ratio()
891
+ error /= len(efficiencies)
892
+
893
+ nfound = numpy.array([len(e.found_x) for e in efficiencies], dtype = "double")
894
+ ninjected = numpy.array([len(e.injected_x) for e in efficiencies], dtype = "double")
895
+
896
+ # the model for guessing the ninjected in the coincidence case is
897
+ # to assume that the injections done in the instrument with the
898
+ # most injections were done into all three with a probability given
899
+ # by the ratio of the number actually injected into each instrument
900
+ # to the number injected into the instrument with the most
901
+ # injected, and then to assume that these are independent random
902
+ # occurances and that to be done in coincidence an injection must
903
+ # be done in all three instruments.
904
+
905
+ ninjected_guess = (ninjected / ninjected.max()).prod() * ninjected.min()
906
+
907
+ # the model for guessing the nfound in the coincidence case is to
908
+ # assume that each injection is found or missed in each instrument
909
+ # at random, and to be found in the coincidence case it must be
910
+ # found in all three.
911
+
912
+ nfound_guess = (nfound / ninjected).prod() * ninjected_guess
913
+
914
+ ninjected_guess = int(round(ninjected_guess))
915
+ nfound_guess = int(round(nfound_guess))
916
+
917
+ instruments = r" \& ".join(sorted("+".join(sorted(e.instruments)) for e in efficiencies))
918
+
919
+ cset = axes.contour(xcoords, ycoords, numpy.transpose(zvals), (.1, .2, .3, .4, .5, .6, .7, .8, .9))
920
+ cset.clabel(inline = True, fontsize = 5, fmt = r"$%%g \pm %g$" % error, colors = "k")
921
+
922
+ axes.set_title(r"%s Estimated Injection Detection Efficiency ($\sim$%d of $\sim$%d Found)" % (instruments, nfound_guess, ninjected_guess))
923
+
924
+ return fig
925
+
926
+
927
+ if efficiencies:
928
+ if options.verbose:
929
+ print("computing theoretical coincident detection efficiency ...", file=sys.stderr)
930
+ fig = plot_multi_Efficiency_hrss_vs_freq(efficiencies)
931
+ filename = "%scoincidence.png" % options.base
932
+ if options.verbose:
933
+ print("writing %s ..." % filename, file=sys.stderr)
934
+ fig.savefig(filename)