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,1345 @@
1
+ #!python
2
+ # -*- coding: utf-8 -*-
3
+ #
4
+ # cbcBayesPostProc.py
5
+ #
6
+ # Copyright 2010
7
+ # Benjamin Aylott <benjamin.aylott@ligo.org>,
8
+ # Benjamin Farr <bfarr@u.northwestern.edu>,
9
+ # Will M. Farr <will.farr@ligo.org>,
10
+ # John Veitch <john.veitch@ligo.org>
11
+ # Vivien Raymond <vivien.raymond@ligo.org>
12
+ # Salvatore Vitale <salvatore.vitale@ligo.org>
13
+ #
14
+ # This program is free software; you can redistribute it and/or modify
15
+ # it under the terms of the GNU General Public License as published by
16
+ # the Free Software Foundation; either version 2 of the License, or
17
+ # (at your option) any later version.
18
+ #
19
+ # This program is distributed in the hope that it will be useful,
20
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
+ # GNU General Public License for more details.
23
+ #
24
+ # You should have received a copy of the GNU General Public License
25
+ # along with this program; if not, write to the Free Software
26
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
27
+ # MA 02110-1301, USA.
28
+
29
+ #===============================================================================
30
+ # Preamble
31
+ #===============================================================================
32
+
33
+ #standard library imports
34
+ import sys
35
+ import os
36
+ import socket
37
+ import pickle
38
+ from time import strftime
39
+
40
+ #related third party imports
41
+ import numpy as np
42
+ from numpy import (exp, cos, sin, size, cov, unique, hsplit, log, squeeze)
43
+
44
+ import matplotlib
45
+ matplotlib.use("Agg")
46
+ from matplotlib import pyplot as plt
47
+
48
+ # Default font properties
49
+ fig_width_pt = 246 # Get this from LaTeX using \showthe\columnwidth
50
+ inches_per_pt = 1.0/72.27 # Convert pt to inch
51
+ golden_mean = (2.236-1.0)/2.0 # Aesthetic ratio
52
+ fig_width = fig_width_pt*inches_per_pt # width in inches
53
+ fig_height = fig_width*golden_mean # height in inches
54
+ fig_size = [fig_width,fig_height]
55
+ matplotlib.rcParams.update(
56
+ {'axes.labelsize': 16,
57
+ 'font.size': 16,
58
+ 'legend.fontsize': 16,
59
+ 'xtick.labelsize': 16,
60
+ 'ytick.labelsize': 16,
61
+ 'text.usetex': False,
62
+ 'figure.figsize': fig_size,
63
+ 'font.family': "serif",
64
+ 'font.serif': ['Times','Palatino','New Century Schoolbook','Bookman','Computer Modern Roman','Times New Roman','Liberation Serif'],
65
+ 'font.weight':'normal',
66
+ 'font.size':16,
67
+ 'savefig.dpi': 120
68
+ })
69
+
70
+ #local application/library specific imports
71
+ import lalinference.plot
72
+ from lalinference import bayespputils as bppu
73
+ from lalinference import git_version
74
+
75
+ from igwn_ligolw import lsctables
76
+ from igwn_ligolw import utils
77
+
78
+ __author__="Ben Aylott <benjamin.aylott@ligo.org>, Ben Farr <bfarr@u.northwestern.edu>, Will M. Farr <will.farr@ligo.org>, John Veitch <john.veitch@ligo.org>"
79
+ __version__= "git id %s"%git_version.id
80
+ __date__= git_version.date
81
+
82
+ from lalinference.lalinference_pipe_utils import guess_url
83
+
84
+ def email_notify(address,path):
85
+ import subprocess
86
+ USER = os.environ['USER']
87
+ HOST = socket.getfqdn()
88
+ address=address.split(',')
89
+ FROM=USER+'@'+HOST
90
+ SUBJECT="LALInference result is ready at "+HOST+"!"
91
+ # Guess the web space path for the clusters
92
+ fslocation=os.path.abspath(path)
93
+ webpath='posplots.html'
94
+ url = guess_url(os.path.join(fslocation,webpath))
95
+ TEXT="Hi "+USER+",\nYou have a new parameter estimation result on "+HOST+".\nYou can view the result at "+url+"\n"
96
+ cmd='echo "%s" | mail -s "%s" "%s"'%(TEXT,SUBJECT,', '.join(address))
97
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE,stderr=subprocess.STDOUT, shell=True)
98
+ (out, err) = proc.communicate()
99
+ #print "program output %s error %s:"%(out,err)
100
+
101
+ def pickle_to_file(obj,fname):
102
+ """
103
+ Pickle/serialize 'obj' into 'fname'.
104
+ """
105
+ filed=open(fname,'w')
106
+ pickle.dump(obj,filed)
107
+ filed.close()
108
+
109
+ def oneD_dict_to_file(dict,fname):
110
+ filed=open(fname,'w')
111
+ for key,value in dict.items():
112
+ filed.write("%s %s\n"%(str(key),str(value)) )
113
+
114
+ def multipleFileCB(opt, opt_str, value, parser):
115
+ args=[]
116
+
117
+ def floatable(str):
118
+ try:
119
+ float(str)
120
+ return True
121
+ except ValueError:
122
+ return False
123
+
124
+ for arg in parser.rargs:
125
+ # stop on --foo like options
126
+ if arg[:2] == "--" and len(arg) > 2:
127
+ break
128
+ # stop on -a, but not on -3 or -3.0
129
+ if arg[:1] == "-" and len(arg) > 1 and not floatable(arg):
130
+ break
131
+ args.append(arg)
132
+
133
+ del parser.rargs[:len(args)]
134
+ #Append new files to list if some already specified
135
+ if getattr(parser.values, opt.dest):
136
+ oldargs = getattr(parser.values, opt.dest)
137
+ oldargs.extend(args)
138
+ args = oldargs
139
+ setattr(parser.values, opt.dest, args)
140
+
141
+ def dict2html(d,parent=None):
142
+ if not d: return ""
143
+ out=bppu.htmlChunk('div',parent=parent)
144
+ tab=out.tab()
145
+ row=out.insert_row(tab)
146
+ for key in d.keys():
147
+ out.insert_td(row,str(key))
148
+ row2=out.insert_row(tab)
149
+ for val in d.values():
150
+ out.insert_td(row2,str(val))
151
+ return out
152
+
153
+ def extract_hdf5_metadata(h5grp,parent=None):
154
+ import h5py
155
+ #out=bppu.htmlChunk('div',parent=parent)
156
+ sec=bppu.htmlSection(h5grp.name,htmlElement=parent)
157
+ dict2html(h5grp.attrs,parent=sec)
158
+ for group in h5grp:
159
+ if(isinstance(h5grp[group],h5py.Group)):
160
+ extract_hdf5_metadata(h5grp[group],sec)
161
+ return h5grp
162
+
163
+
164
+ def cbcBayesPostProc(
165
+ outdir,data,oneDMenus,twoDGreedyMenu,GreedyRes,
166
+ confidence_levels,twoDplots,
167
+ #misc. optional
168
+ injfile=None,eventnum=None,
169
+ trigfile=None,trignum=None,
170
+ skyres=None,
171
+ #direct integration evidence
172
+ dievidence=False,boxing=64,difactor=1.0,
173
+ #elliptical evidence
174
+ ellevidence=False,
175
+ #manual input of bayes factors optional.
176
+ bayesfactornoise=None,bayesfactorcoherent=None,
177
+ #manual input for SNR in the IFOs, optional.
178
+ snrfactor=None,
179
+ #nested sampling options
180
+ ns_flag=False,ns_Nlive=None,
181
+ #spinspiral/mcmc options
182
+ ss_flag=False,ss_spin_flag=False,
183
+ #lalinferenceMCMC options
184
+ li_flag=False,deltaLogP=None,fixedBurnins=None,nDownsample=None,oldMassConvention=False,
185
+ #followupMCMC options
186
+ fm_flag=False,
187
+ #spin frame for the injection
188
+ inj_spin_frame='OrbitalL',
189
+ # on ACF?
190
+ noacf=False,
191
+ #Turn on 2D kdes
192
+ twodkdeplots=False,
193
+ #Turn on R convergence tests
194
+ RconvergenceTests=False,
195
+ # Save PDF figures?
196
+ savepdfs=True,
197
+ #List of covariance matrix csv files used as analytic likelihood
198
+ covarianceMatrices=None,
199
+ #List of meanVector csv files used, one csv file for each covariance matrix
200
+ meanVectors=None,
201
+ #header file
202
+ header=None,
203
+ psd_files=None,
204
+ greedy=True ## If true will use greedy bin for 1-d credible regions. Otherwise use 2-steps KDE
205
+ ):
206
+ """
207
+ This is a demonstration script for using the functionality/data structures
208
+ contained in lalinference.bayespputils . It will produce a webpage from a file containing
209
+ posterior samples generated by the parameter estimation codes with 1D/2D plots
210
+ and stats from the marginal posteriors for each parameter/set of parameters.
211
+ """
212
+ if eventnum is not None and injfile is None:
213
+ print("You specified an event number but no injection file. Ignoring!")
214
+
215
+ if trignum is not None and trigfile is None:
216
+ print("You specified a trigger number but no trigger file. Ignoring!")
217
+
218
+ if trignum is None and trigfile is not None:
219
+ print("You specified a trigger file but no trigger number. Taking first entry (the case for GraceDB events).")
220
+ trignum=0
221
+
222
+ if data is None:
223
+ raise RuntimeError('You must specify an input data file')
224
+ #
225
+ if outdir is None:
226
+ raise RuntimeError("You must specify an output directory.")
227
+
228
+ if not os.path.isdir(outdir):
229
+ os.makedirs(outdir)
230
+ #
231
+ if fm_flag:
232
+ peparser=bppu.PEOutputParser('fm')
233
+ commonResultsObj=peparser.parse(data)
234
+
235
+ elif ns_flag and not ss_flag:
236
+ peparser=bppu.PEOutputParser('ns')
237
+ commonResultsObj=peparser.parse(data,Nlive=ns_Nlive)
238
+
239
+ elif ss_flag and not ns_flag:
240
+ peparser=bppu.PEOutputParser('mcmc_burnin')
241
+ commonResultsObj=peparser.parse(data,spin=ss_spin_flag,deltaLogP=deltaLogP)
242
+
243
+ elif li_flag:
244
+ peparser=bppu.PEOutputParser('inf_mcmc')
245
+ commonResultsObj=peparser.parse(data,outdir=outdir,deltaLogP=deltaLogP,fixedBurnins=fixedBurnins,nDownsample=nDownsample,oldMassConvention=oldMassConvention)
246
+
247
+ elif ss_flag and ns_flag:
248
+ raise RuntimeError("Undefined input format. Choose only one of:")
249
+
250
+ elif '.hdf' in data[0] or '.h5' in data[0]:
251
+ if len(data) > 1:
252
+ peparser = bppu.PEOutputParser('hdf5s')
253
+ commonResultsObj=peparser.parse(data,deltaLogP=deltaLogP,fixedBurnins=fixedBurnins,nDownsample=nDownsample)
254
+ else:
255
+ fixedBurnins = fixedBurnins if fixedBurnins is not None else None
256
+ peparser = bppu.PEOutputParser('hdf5')
257
+ commonResultsObj=peparser.parse(data[0],deltaLogP=deltaLogP,fixedBurnins=fixedBurnins,nDownsample=nDownsample)
258
+ else:
259
+ peparser=bppu.PEOutputParser('common')
260
+ commonResultsObj=peparser.parse(open(data[0],'r'),info=[header,None])
261
+ # check if Nest (through nest2post) has produced an header file with git and CL info. If yes copy in outdir
262
+ if os.path.isfile(data[0]+"_header.txt"):
263
+ import shutil
264
+ shutil.copy2(data[0]+"_header.txt", os.path.join(outdir,'nest_headers.txt'))
265
+
266
+ #Extract f_ref from CRO if present. This is needed to calculate orbital angular momentum
267
+ # when converting spin parameters. Ideally this info will be provided in the
268
+ # SimInspiralTable in the near future.
269
+ ps,samps = commonResultsObj
270
+ try:
271
+ f_refIdx = ps.index('f_ref')
272
+ injFref = unique(samps[:,f_refIdx])
273
+ if len(injFref) > 1:
274
+ print("ERROR: Expected f_ref to be constant for all samples. Can't tell which value was injected!")
275
+ print(injFref)
276
+ injFref = None
277
+ else:
278
+ injFref = injFref[0]
279
+ except ValueError:
280
+ injFref = None
281
+
282
+ #Select injections using tc +/- 0.1s if it exists or eventnum from the injection file
283
+ injection=None
284
+ if injfile and eventnum is not None:
285
+ print('Looking for event %i in %s\n'%(eventnum,injfile))
286
+ xmldoc = utils.load_filename(injfile)
287
+ siminspiraltable=lsctables.SimInspiralTable.get_table(xmldoc)
288
+ injection=siminspiraltable[eventnum]
289
+
290
+ #Get trigger
291
+ triggers = None
292
+ if trigfile is not None and trignum is not None:
293
+ triggers = bppu.readCoincXML(trigfile, trignum)
294
+
295
+ ## Load Bayes factors ##
296
+ # Add Bayes factor information to summary file #
297
+ if bayesfactornoise is not None:
298
+ bfile=open(bayesfactornoise,'r')
299
+ BSN=bfile.read()
300
+ bfile.close()
301
+ if(len(BSN.split())!=1):
302
+ BSN=BSN.split()[0]
303
+ print('BSN: %s'%BSN)
304
+ if bayesfactorcoherent is not None:
305
+ bfile=open(bayesfactorcoherent,'r')
306
+ BCI=bfile.read()
307
+ bfile.close()
308
+ print('BCI: %s'%BCI)
309
+
310
+ if snrfactor is not None:
311
+ if not os.path.isfile(snrfactor):
312
+ print("No snr file provided or wrong path to snr file\n")
313
+ snrfactor=None
314
+ else:
315
+ snrstring=""
316
+ snrfile=open(snrfactor,'r')
317
+ snrs=snrfile.readlines()
318
+ snrfile.close()
319
+ for snr in snrs:
320
+ if snr=="\n":
321
+ continue
322
+ snrstring=snrstring +" "+str(snr[0:-1])+" ,"
323
+ snrstring=snrstring[0:-1]
324
+
325
+ #Create an instance of the posterior class using the posterior values loaded
326
+ #from the file and any injection information (if given).
327
+ pos = bppu.Posterior(commonResultsObj,SimInspiralTableEntry=injection,inj_spin_frame=inj_spin_frame, injFref=injFref,SnglInspiralList=triggers)
328
+
329
+ #Create analytic likelihood functions if covariance matrices and mean vectors were given
330
+ analyticLikelihood = None
331
+ if covarianceMatrices and meanVectors:
332
+ analyticLikelihood = bppu.AnalyticLikelihood(covarianceMatrices, meanVectors)
333
+
334
+ #Plot only analytic parameters
335
+ oneDMenu = analyticLikelihood.names
336
+ if twoDGreedyMenu:
337
+ twoDGreedyMenu = []
338
+ for i in range(len(oneDMenu)):
339
+ for j in range(i+1,len(oneDMenu)):
340
+ twoDGreedyMenu.append([oneDMenu[i],oneDMenu[j]])
341
+ twoDplots = twoDGreedyMenu
342
+
343
+ if eventnum is None and injfile is not None:
344
+ import itertools
345
+ injections = lsctables.SimInspiralTable.get_table(utils.load_filename(injfile))
346
+
347
+ if(len(injections)<1):
348
+ try:
349
+ print('Warning: Cannot find injection with end time %f' %(pos['time'].mean))
350
+ except KeyError:
351
+ print("Warning: No 'time' column!")
352
+
353
+ else:
354
+ try:
355
+ injection = itertools.ifilter(lambda a: abs(float(a.get_end()) - pos['time'].mean) < 0.1, injections).next()
356
+ pos.set_injection(injection)
357
+ except KeyError:
358
+ print("Warning: No 'time' column!")
359
+
360
+ pos.extend_posterior()
361
+ # create list of names in oneDMenus dic
362
+ oneDMenu=[]
363
+ for i in oneDMenus.keys():
364
+ oneDMenu+=oneDMenus[i]
365
+ #Perform necessary mappings
366
+ functions = {'cos':cos,'sin':sin,'exp':exp,'log':log}
367
+ for pos_name in oneDMenu:
368
+ if pos_name not in pos.names:
369
+ for func in functions.keys():
370
+ old_pos_name = pos_name.replace(func,'')
371
+ if pos_name.find(func)==0 and old_pos_name in pos.names:
372
+ print("Taking %s of %s ..."% (func,old_pos_name))
373
+ pos.append_mapping(pos_name,functions[func],old_pos_name)
374
+
375
+ #Remove samples with NaNs in requested params
376
+ requested_params = set(pos.names).intersection(set(oneDMenu))
377
+ pos.delete_NaN_entries(requested_params)
378
+
379
+ #Remove non-analytic parameters if analytic likelihood is given:
380
+ if analyticLikelihood:
381
+ dievidence_names = ['post','posterior','logl','prior','likelihood','cycle','chain']
382
+ [pos.pop(param) for param in pos.names if param not in analyticLikelihood.names and param not in dievidence_names]
383
+
384
+ ##Print some summary stats for the user...##
385
+ #Number of samples
386
+ print("Number of posterior samples: %i"%len(pos))
387
+ # Means
388
+ print('Means:')
389
+ print(str(pos.means))
390
+ #Median
391
+ print('Median:')
392
+ print(str(pos.medians))
393
+ #maxL
394
+ print('maxL:')
395
+ max_pos,max_pos_co=pos.maxL
396
+ print(max_pos_co)
397
+
398
+ # Save posterior samples
399
+ posfilename=os.path.join(outdir,'posterior_samples.dat')
400
+ pos.write_to_file(posfilename)
401
+
402
+ #==================================================================#
403
+ #Create web page
404
+ #==================================================================#
405
+
406
+ html=bppu.htmlPage('Posterior PDFs',css=bppu.__default_css_string,javascript=bppu.__default_javascript_string)
407
+
408
+ #Create a section for meta-data/run information
409
+ html_meta=html.add_section('Summary')
410
+ table=html_meta.tab()
411
+ row=html_meta.insert_row(table,label='thisrow')
412
+ td=html_meta.insert_td(row,'',label='Samples')
413
+ SampsStats=html.add_section_to_element('Samples',td)
414
+ SampsStats.p('Produced from '+str(len(pos))+' posterior samples.')
415
+ if 'chain' in pos.names:
416
+ acceptedChains = unique(pos['chain'].samples)
417
+ acceptedChainText = '%i of %i chains accepted: %i'%(len(acceptedChains),len(data),acceptedChains[0])
418
+ if len(acceptedChains) > 1:
419
+ for chain in acceptedChains[1:]:
420
+ acceptedChainText += ', %i'%(chain)
421
+ SampsStats.p(acceptedChainText)
422
+ if 'cycle' in pos.names:
423
+ SampsStats.p('Longest chain has '+str(pos.longest_chain_cycles())+' cycles.')
424
+ filenames='Samples read from %s'%(data[0])
425
+ if len(data) > 1:
426
+ for fname in data[1:]:
427
+ filenames+=', '+str(fname)
428
+ SampsStats.p(filenames)
429
+ td=html_meta.insert_td(row,'',label='SummaryLinks')
430
+ legend=html.add_section_to_element('Sections',td)
431
+
432
+ # Create a section for HDF5 metadata if available
433
+ if '.h5' in data[0] or '.hdf' in data[0]:
434
+ html_hdf=html.add_section('Metadata',legend=legend)
435
+ import h5py
436
+ with h5py.File(data[0],'r') as h5grp:
437
+ extract_hdf5_metadata(h5grp,parent=html_hdf)
438
+
439
+ #Create a section for model selection results (if they exist)
440
+ if bayesfactorcoherent is not None or bayesfactornoise is not None:
441
+ html_model=html.add_section('Model selection',legend=legend)
442
+ if bayesfactornoise is not None:
443
+ html_model.p('log Bayes factor ( coherent vs gaussian noise) = %s, Bayes factor=%f'%(BSN,exp(float(BSN))))
444
+ if bayesfactorcoherent is not None:
445
+ html_model.p('log Bayes factor ( coherent vs incoherent OR noise ) = %s, Bayes factor=%f'%(BCI,exp(float(BCI))))
446
+
447
+ if dievidence:
448
+ html_model=html.add_section('Direct Integration Evidence',legend=legend)
449
+ log_ev = log(difactor) + pos.di_evidence(boxing=boxing)
450
+ ev=exp(log_ev)
451
+ evfilename=os.path.join(outdir,"evidence.dat")
452
+ evout=open(evfilename,"w")
453
+ evout.write(str(ev))
454
+ evout.write(" ")
455
+ evout.write(str(log_ev))
456
+ evout.close()
457
+ print("Computing direct integration evidence = %g (log(Evidence) = %g)"%(ev, log_ev))
458
+ html_model.p('Direct integration evidence is %g, or log(Evidence) = %g. (Boxing parameter = %d.)'%(ev,log_ev,boxing))
459
+ if 'logl' in pos.names:
460
+ log_ev=pos.harmonic_mean_evidence()
461
+ html_model.p('Compare to harmonic mean evidence of %g (log(Evidence) = %g).'%(exp(log_ev),log_ev))
462
+
463
+ if ellevidence:
464
+ try:
465
+ html_model=html.add_section('Elliptical Evidence',legend=legend)
466
+ log_ev = pos.elliptical_subregion_evidence()
467
+ ev = exp(log_ev)
468
+ evfilename=os.path.join(outdir, 'ellevidence.dat')
469
+ evout=open(evfilename, 'w')
470
+ evout.write(str(ev) + ' ' + str(log_ev))
471
+ evout.close()
472
+ print('Computing elliptical region evidence = %g (log(ev) = %g)'%(ev, log_ev))
473
+ html_model.p('Elliptical region evidence is %g, or log(Evidence) = %g.'%(ev, log_ev))
474
+
475
+ if 'logl' in pos.names:
476
+ log_ev=pos.harmonic_mean_evidence()
477
+ html_model.p('Compare to harmonic mean evidence of %g (log(Evidence = %g))'%(exp(log_ev), log_ev))
478
+ except IndexError:
479
+ print('Warning: Sample size too small to compute elliptical evidence!')
480
+
481
+ #Create a section for SNR, if a file is provided
482
+ if snrfactor is not None:
483
+ html_snr=html.add_section('Signal to noise ratio(s)',legend=legend)
484
+ html_snr.p('%s'%snrstring)
485
+
486
+ # Create a section for the DIC
487
+ html_dic = html.add_section('Deviance Information Criterion', legend=legend)
488
+ html_dic.p('DIC = %.1f'%pos.DIC)
489
+ dicout = open(os.path.join(outdir, 'dic.dat'), 'w')
490
+ try:
491
+ dicout.write('%.1f\n'%pos.DIC)
492
+ finally:
493
+ dicout.close()
494
+
495
+ #Create a section for summary statistics
496
+ # By default collapse section are collapsed when the page is opened or reloaded. Use start_closed=False option as here below to change this
497
+ tabid='statstable'
498
+ html_stats=html.add_collapse_section('Summary statistics',legend=legend,innertable_id=tabid,start_closed=False)
499
+ html_stats.write(str(pos))
500
+ statfilename=os.path.join(outdir,"summary_statistics.dat")
501
+ statout=open(statfilename,"w")
502
+ statout.write("\tmaP\tmaxL\tKL\tstdev\tmean\tmedian\tstacc\tinjection\tvalue\n")
503
+
504
+ warned_about_kl = False
505
+ for statname,statoned_pos in pos:
506
+
507
+ statmax_pos,max_i=pos._posMaxL()
508
+ statmaxL=statoned_pos.samples[max_i][0]
509
+ try:
510
+ statKL = statoned_pos.KL()
511
+ except ValueError:
512
+ if not warned_about_kl:
513
+ print("Unable to compute KL divergence")
514
+ warned_about_kl = True
515
+ statKL = None
516
+
517
+ statmax_pos,max_j=pos._posMap()
518
+ statmaxP=statoned_pos.samples[max_j][0]
519
+ statmean=str(statoned_pos.mean)
520
+ statstdev=str(statoned_pos.stdev)
521
+ statmedian=str(squeeze(statoned_pos.median))
522
+ statstacc=str(statoned_pos.stacc)
523
+ statinjval=str(statoned_pos.injval)
524
+
525
+ statarray=[str(i) for i in [statname,statmaxP,statmaxL,statKL,statstdev,statmean,statmedian,statstacc,statinjval]]
526
+ statout.write("\t".join(statarray))
527
+ statout.write("\n")
528
+
529
+ statout.close()
530
+
531
+ #==================================================================#
532
+ #Generate sky map, WF, and PSDs
533
+ #==================================================================#
534
+
535
+ skyreses=None
536
+ sky_injection_cl=None
537
+ inj_position=None
538
+ tabid='skywftable'
539
+ html_wf=html.add_collapse_section('Sky Localization and Waveform',innertable_id=tabid)
540
+
541
+ table=html_wf.tab(idtable=tabid)
542
+ row=html_wf.insert_row(table,label='SkyandWF')
543
+ skytd=html_wf.insert_td(row,'',label='SkyMap',legend=legend)
544
+ html_sky=html.add_section_to_element('SkyMap',skytd)
545
+ #If sky resolution parameter has been specified try and create sky map...
546
+ if skyres is not None and \
547
+ ('ra' in pos.names and 'dec' in pos.names):
548
+
549
+ if pos['dec'].injval is not None and pos['ra'].injval is not None:
550
+ inj_position=[pos['ra'].injval,pos['dec'].injval]
551
+ else:
552
+ inj_position=None
553
+
554
+ hpmap = pos.healpix_map(float(skyres), nest=True)
555
+ bppu.plot_sky_map(hpmap, outdir, inj=inj_position, nest=True)
556
+
557
+ if inj_position is not None:
558
+ html_sky.p('Injection found at p = %g'%bppu.skymap_inj_pvalue(hpmap, inj_position, nest=True))
559
+
560
+ html_sky.write('<a href="skymap.png" target="_blank"><img src="skymap.png"/></a>')
561
+
562
+ html_sky_write='<table border="1" id="statstable"><tr><th>Confidence region</th><th>size (sq. deg)</th></tr>'
563
+
564
+ areas = bppu.skymap_confidence_areas(hpmap, confidence_levels)
565
+ for cl, area in zip(confidence_levels, areas):
566
+ html_sky_write+='<tr><td>%g</td><td>%g</td></tr>'%(cl, area)
567
+ html_sky_write+=('</table>')
568
+
569
+ html_sky.write(html_sky_write)
570
+ else:
571
+ html_sky.write('<b>No skymap generated!</b>')
572
+ wfdir=os.path.join(outdir,'Waveform')
573
+ if not os.path.isdir(wfdir):
574
+ os.makedirs(wfdir)
575
+ try:
576
+ wfpointer= bppu.plot_waveform(pos=pos,siminspiral=injfile,event=eventnum,path=wfdir)
577
+ except Exception as e:
578
+ wfpointer = None
579
+ print("Could not create WF plot. The error was: %s\n"%str(e))
580
+ wftd=html_wf.insert_td(row,'',label='Waveform',legend=legend)
581
+ wfsection=html.add_section_to_element('Waveforms',wftd)
582
+ if wfpointer is not None:
583
+ wfsection.write('<a href="Waveform/WF_DetFrame.png" target="_blank"><img src="Waveform/WF_DetFrame.png"/></a>')
584
+ else:
585
+ print("Could not create WF plot.\n")
586
+ wfsection.write("<b>No Waveform generated!</b>")
587
+
588
+ wftd=html_wf.insert_td(row,'',label='PSDs',legend=legend)
589
+ wfsection=html.add_section_to_element('PSDs',wftd)
590
+ if psd_files is not None:
591
+ psd_files=list(psd_files.split(','))
592
+ psddir=os.path.join(outdir,'PSDs')
593
+ if not os.path.isdir(psddir):
594
+ os.makedirs(psddir)
595
+ try:
596
+ if 'flow' in pos.names:
597
+ f_low = pos['flow'].samples.min()
598
+ else:
599
+ f_low = 30.
600
+ bppu.plot_psd(psd_files,outpath=psddir, f_min=f_low)
601
+ wfsection.write('<a href="PSDs/PSD.png" target="_blank"><img src="PSDs/PSD.png"/></a>')
602
+ except Exception as e:
603
+ print("Could not create PSD plot. The error was: %s\n"%str(e))
604
+ wfsection.write("<b>PSD plotting failed</b>")
605
+ else:
606
+ wfsection.write("<b>No PSD files provided</b>")
607
+
608
+ # Add plots for calibration estimates
609
+ if np.any(['spcal_amp' in param for param in pos.names]) or np.any(['spcal_phase' in param for param in pos.names]):
610
+ wftd=html_wf.insert_td(row,'',label='Calibration',legend=legend)
611
+ wfsection=html.add_section_to_element('Calibration',wftd)
612
+ bppu.plot_calibration_pos(pos, outpath=outdir)
613
+ wfsection.write('<a href="calibration.png" target="_blank"><img src="calibration.png"/></a>')
614
+ # if precessing spins do spin disk
615
+ allin=1.0
616
+ if set(['a1','a2','tilt1','tilt2']).issubset(pos.names):
617
+ wftd=html_wf.insert_td(row,'',label='DiskPlot',legend=legend)
618
+ wfsection=html.add_section_to_element('DiskPlot',wftd)
619
+ lalinference.plot.make_disk_plot(pos, outpath=outdir)
620
+ wfsection.write('<a href="comp_spin_pos.png" target="_blank"><img src="comp_spin_pos.png"/></a>')
621
+
622
+ #==================================================================#
623
+ #1D posteriors
624
+ #==================================================================#
625
+ onepdfdir=os.path.join(outdir,'1Dpdf')
626
+ if not os.path.isdir(onepdfdir):
627
+ os.makedirs(onepdfdir)
628
+
629
+ sampsdir=os.path.join(outdir,'1Dsamps')
630
+ if not os.path.isdir(sampsdir):
631
+ os.makedirs(sampsdir)
632
+ reses={}
633
+
634
+ for i in oneDMenus.keys():
635
+ rss=bppu.make_1d_table(html,legend,i,pos,oneDMenus[i],noacf,GreedyRes,onepdfdir,sampsdir,savepdfs,greedy,analyticLikelihood,nDownsample)
636
+ reses.update(rss)
637
+
638
+
639
+
640
+
641
+ tabid='onedconftable'
642
+ html_ogci=html.add_collapse_section('1D confidence intervals (greedy binning)',legend=legend,innertable_id=tabid)
643
+ html_ogci_write='<table id="%s" border="1"><tr><th/>'%tabid
644
+ clasciiout="#parameter \t"
645
+ confidence_levels.sort()
646
+ for cl in confidence_levels:
647
+ html_ogci_write+='<th>%f</th>'%cl
648
+ clasciiout+="%s\t"%('%.02f'%cl)
649
+ if injection:
650
+ html_ogci_write+='<th>Injection Confidence Level</th>'
651
+ html_ogci_write+='<th>Injection Confidence Interval</th>'
652
+ clasciiout+="Injection_Confidence_Level\t"
653
+ clasciiout+="Injection_Confidence_Interval"
654
+ clasciiout+='\n'
655
+ html_ogci_write+='</tr>'
656
+ #Generate new BCI html table row
657
+ printed=0
658
+ for par_name in oneDMenu:
659
+ par_name=par_name.lower()
660
+ try:
661
+ pos[par_name.lower()]
662
+ except KeyError:
663
+ #print "No input chain for %s, skipping binning."%par_name
664
+ continue
665
+ try:
666
+ par_bin=GreedyRes[par_name]
667
+ except KeyError:
668
+ print("Bin size is not set for %s, skipping binning."%par_name)
669
+ continue
670
+ binParams={par_name:par_bin}
671
+ injection_area=None
672
+ if greedy:
673
+ if printed==0:
674
+ print("Using greedy 1-d binning credible regions\n")
675
+ printed=1
676
+ toppoints,injectionconfidence,reses,injection_area,cl_intervals=bppu.greedy_bin_one_param(pos,binParams,confidence_levels)
677
+ else:
678
+ if printed==0:
679
+ print("Using 2-step KDE 1-d credible regions\n")
680
+ printed=1
681
+ if pos[par_name].injval is None:
682
+ injCoords=None
683
+ else:
684
+ injCoords=[pos[par_name].injval]
685
+ _,reses,injstats=bppu.kdtree_bin2Step(pos,[par_name],confidence_levels,injCoords=injCoords)
686
+ if injstats is not None:
687
+ injectionconfidence=injstats[3]
688
+ injection_area=injstats[4]
689
+
690
+ BCItableline='<tr><td>%s</td>'%(par_name)
691
+ clasciiout+="%s\t"%par_name
692
+ cls=list(reses.keys())
693
+ cls.sort()
694
+
695
+ for cl in cls:
696
+ BCItableline+='<td>%f</td>'%reses[cl]
697
+ clasciiout+="%f\t"%reses[cl]
698
+ if injection is not None:
699
+ if injectionconfidence is not None and injection_area is not None:
700
+
701
+ BCItableline+='<td>%f</td>'%injectionconfidence
702
+ BCItableline+='<td>%f</td>'%injection_area
703
+ clasciiout+="%f\t"%injectionconfidence
704
+ clasciiout+="%f"%injection_area
705
+
706
+ else:
707
+ BCItableline+='<td/>'
708
+ BCItableline+='<td/>'
709
+ clasciiout+="nan\t"
710
+ clasciiout+="nan"
711
+ BCItableline+='</tr>'
712
+ clasciiout+="\n"
713
+ #Append new table line to section html
714
+ html_ogci_write+=BCItableline
715
+
716
+ html_ogci_write+='</table>'
717
+ html_ogci.write(html_ogci_write)
718
+
719
+ #===============================#
720
+ # Corner plots
721
+ #===============================#
722
+ cornerdir=os.path.join(outdir,'corner')
723
+ if not os.path.isdir(cornerdir):
724
+ os.makedirs(cornerdir)
725
+ massParams=['mtotal','m1','m2','mc']
726
+ distParams=['distance','distMPC','dist','distance_maxl']
727
+ incParams=['iota','inclination','theta_jn']
728
+ polParams=['psi','polarisation','polarization']
729
+ skyParams=['ra','rightascension','declination','dec']
730
+ timeParams=['time']
731
+ spininducedquadParams = ['dquadmon1', 'dquadmon2','dquadmons','dquadmona']
732
+ spinParams=['spin1','spin2','a1','a2','a1z','a2z','phi1','theta1','phi2','theta2','chi','effectivespin','chi_eff','chi_tot','chi_p','beta','tilt1','tilt2','phi_jl','theta_jn','phi12']
733
+ sourceParams=['m1_source','m2_source','mtotal_source','mc_source','redshift']
734
+ intrinsicParams=massParams+spinParams
735
+ extrinsicParams=incParams+distParams+polParams+skyParams
736
+ sourceFrameParams=sourceParams+distParams
737
+ try:
738
+ myfig=bppu.plot_corner(pos,[0.05,0.5,0.95],parnames=intrinsicParams)
739
+ except:
740
+ myfig=None
741
+ tabid='CornerTable'
742
+ html_corner=''
743
+ got_any=0
744
+ if myfig:
745
+ html_corner+='<tr><td width="100%"><a href="corner/intrinsic.png" target="_blank"><img width="70%" src="corner/intrinsic.png"/></a></td></tr>'
746
+ myfig.savefig(os.path.join(cornerdir,'intrinsic.png'))
747
+ myfig.savefig(os.path.join(cornerdir,'intrinsic.pdf'))
748
+ got_any+=1
749
+ try:
750
+ myfig=bppu.plot_corner(pos,[0.05,0.5,0.95],parnames=extrinsicParams)
751
+ except:
752
+ myfig=None
753
+
754
+ if myfig:
755
+ myfig.savefig(os.path.join(cornerdir,'extrinsic.png'))
756
+ myfig.savefig(os.path.join(cornerdir,'extrinsic.pdf'))
757
+ html_corner+='<tr><td width="100%"><a href="corner/extrinsic.png" target="_blank"><img width="70%" src="corner/extrinsic.png"/></a></td></tr>'
758
+ got_any+=1
759
+ try:
760
+ myfig=bppu.plot_corner(pos,[0.05,0.5,0.95],parnames=sourceFrameParams)
761
+ except:
762
+ myfig=None
763
+
764
+ if myfig:
765
+ myfig.savefig(os.path.join(cornerdir,'sourceFrame.png'))
766
+ myfig.savefig(os.path.join(cornerdir,'sourceFrame.pdf'))
767
+ html_corner+='<tr><td width="100%"><a href="corner/sourceFrame.png" target="_blank"><img width="70%" src="corner/sourceFrame.png"/></a></td></tr>'
768
+ got_any+=1
769
+
770
+ if got_any>0:
771
+ html_corner='<table id="%s" border="1">'%tabid+html_corner
772
+ html_corner+='</table>'
773
+ if html_corner!='':
774
+ html_co=html.add_collapse_section('Corner plots',legend=legend,innertable_id=tabid)
775
+ html_co.write(html_corner)
776
+ if clasciiout:
777
+ fout=open(os.path.join(outdir,'confidence_levels.txt'),'w')
778
+ fout.write(clasciiout)
779
+ fout.close()
780
+ #==================================================================#
781
+ #2D posteriors
782
+ #==================================================================#
783
+
784
+ #Loop over parameter pairs in twoDGreedyMenu and bin the sample pairs
785
+ #using a greedy algorithm . The ranked pixels (toppoints) are used
786
+ #to plot 2D histograms and evaluate Bayesian confidence intervals.
787
+
788
+ #Make a folder for the 2D kde plots
789
+ margdir=os.path.join(outdir,'2Dkde')
790
+ if not os.path.isdir(margdir):
791
+ os.makedirs(margdir)
792
+
793
+ twobinsdir=os.path.join(outdir,'2Dbins')
794
+ if not os.path.isdir(twobinsdir):
795
+ os.makedirs(twobinsdir)
796
+
797
+ greedytwobinsdir=os.path.join(outdir,'greedy2Dbins')
798
+ if not os.path.isdir(greedytwobinsdir):
799
+ os.makedirs(greedytwobinsdir)
800
+
801
+ #Add a section to the webpage for a table of the confidence interval
802
+ #results.
803
+ tabid='2dconftable'
804
+ html_tcig=html.add_collapse_section('2D confidence intervals (greedy binning)',legend=legend,innertable_id=tabid)
805
+ #Generate the top part of the table
806
+ html_tcig_write='<table id="%s" border="1"><tr><th/>'%tabid
807
+ confidence_levels.sort()
808
+ for cl in confidence_levels:
809
+ html_tcig_write+='<th>%f</th>'%cl
810
+ if injection:
811
+ html_tcig_write+='<th>Injection Confidence Level</th>'
812
+ html_tcig_write+='<th>Injection Confidence Interval</th>'
813
+ html_tcig_write+='</tr>'
814
+
815
+
816
+ #= Add a section for a table of 2D marginal PDFs (kde)
817
+ twodkdeplots_flag=twodkdeplots
818
+ if twodkdeplots_flag:
819
+ tabid='2dmargtable'
820
+ html_tcmp=html.add_collapse_section('2D Marginal PDFs',legend=legend,innertable_id=tabid)
821
+ #Table matter
822
+ html_tcmp_write='<table border="1" id="%s">'%tabid
823
+
824
+ tabid='2dgreedytable'
825
+ html_tgbh=html.add_collapse_section('2D Greedy Bin Histograms',legend=legend,innertable_id=tabid)
826
+ html_tgbh_write='<table border="1" id="%s">'%tabid
827
+
828
+ row_count=0
829
+ row_count_gb=0
830
+
831
+ for par1_name,par2_name in twoDGreedyMenu:
832
+ par1_name=par1_name.lower()
833
+ par2_name=par2_name.lower()
834
+ # Don't plot a parameter against itself!
835
+ if par1_name == par2_name: continue
836
+ try:
837
+ pos[par1_name.lower()]
838
+ except KeyError:
839
+ #print "No input chain for %s, skipping binning."%par1_name
840
+ continue
841
+ try:
842
+ pos[par2_name.lower()]
843
+ except KeyError:
844
+ #print "No input chain for %s, skipping binning."%par2_name
845
+ continue
846
+ #Bin sizes
847
+ try:
848
+ par1_bin=GreedyRes[par1_name]
849
+ except KeyError:
850
+ print("Bin size is not set for %s, skipping %s/%s binning."%(par1_name,par1_name,par2_name))
851
+ continue
852
+ try:
853
+ par2_bin=GreedyRes[par2_name]
854
+ except KeyError:
855
+ print("Bin size is not set for %s, skipping %s/%s binning."%(par2_name,par1_name,par2_name))
856
+ continue
857
+
858
+ # Skip any fixed parameters to avoid matrix inversion problems
859
+ par1_pos=pos[par1_name].samples
860
+ par2_pos=pos[par2_name].samples
861
+ if (size(unique(par1_pos))<2 or size(unique(par2_pos))<2):
862
+ continue
863
+
864
+ #print "Binning %s-%s to determine confidence levels ..."%(par1_name,par2_name)
865
+ #Form greedy binning input structure
866
+ greedy2Params={par1_name:par1_bin,par2_name:par2_bin}
867
+
868
+ #Greedy bin the posterior samples
869
+ toppoints,injection_cl,reses,injection_area=\
870
+ bppu.greedy_bin_two_param(pos,greedy2Params,confidence_levels)
871
+
872
+ print("BCI %s-%s:"%(par1_name,par2_name))
873
+ print(reses)
874
+
875
+ #Generate new BCI html table row
876
+ BCItableline='<tr><td>%s-%s</td>'%(par1_name,par2_name)
877
+ cls=list(reses.keys())
878
+ cls.sort()
879
+
880
+ for cl in cls:
881
+ BCItableline+='<td>%f</td>'%reses[cl]
882
+
883
+ if injection is not None:
884
+ if injection_cl is not None:
885
+ BCItableline+='<td>%f</td>'%injection_cl
886
+ BCItableline+='<td>'+str(injection_area)+'</td>'
887
+
888
+ else:
889
+ BCItableline+='<td/>'
890
+ BCItableline+='<td/>'
891
+
892
+ BCItableline+='</tr>'
893
+
894
+ #Append new table line to section html
895
+ html_tcig_write+=BCItableline
896
+
897
+
898
+ #= Plot 2D histograms of greedily binned points =#
899
+
900
+ #greedy2ContourPlot=bppu.plot_two_param_greedy_bins_contour({'Result':pos},greedy2Params,[0.67,0.9,0.95],{'Result':'k'})
901
+ greedy2ContourPlot=bppu.plot_two_param_kde_greedy_levels({'Result':pos},greedy2Params,[0.67,0.9,0.95],{'Result':'k'})
902
+ greedy2contourpath=os.path.join(greedytwobinsdir,'%s-%s_greedy2contour.png'%(par1_name,par2_name))
903
+ if greedy2ContourPlot is not None:
904
+ greedy2ContourPlot.savefig(greedy2contourpath)
905
+ if(savepdfs): greedy2ContourPlot.savefig(greedy2contourpath.replace('.png','.pdf'))
906
+ plt.close(greedy2ContourPlot)
907
+
908
+ greedy2HistFig=bppu.plot_two_param_greedy_bins_hist(pos,greedy2Params,confidence_levels)
909
+ greedy2histpath=os.path.join(greedytwobinsdir,'%s-%s_greedy2.png'%(par1_name,par2_name))
910
+ greedy2HistFig.savefig(greedy2histpath)
911
+ if(savepdfs): greedy2HistFig.savefig(greedy2histpath.replace('.png','.pdf'))
912
+ plt.close(greedy2HistFig)
913
+
914
+ greedyFile = open(os.path.join(twobinsdir,'%s_%s_greedy_stats.txt'%(par1_name,par2_name)),'w')
915
+
916
+ #= Write out statistics for greedy bins
917
+ for cl in cls:
918
+ greedyFile.write("%lf %lf\n"%(cl,reses[cl]))
919
+ greedyFile.close()
920
+
921
+ if [par1_name,par2_name] in twoDplots or [par2_name,par1_name] in twoDplots :
922
+ print('Generating %s-%s greedy hist plot'%(par1_name,par2_name))
923
+
924
+ par1_pos=pos[par1_name].samples
925
+ par2_pos=pos[par2_name].samples
926
+
927
+ if (size(unique(par1_pos))<2 or size(unique(par2_pos))<2):
928
+ continue
929
+ head,figname=os.path.split(greedy2histpath)
930
+ head,figname_c=os.path.split(greedy2contourpath)
931
+ if row_count_gb==0:
932
+ html_tgbh_write+='<tr>'
933
+ html_tgbh_write+='<td width="30%"><img width="100%" src="greedy2Dbins/'+figname+'"/>[<a href="greedy2Dbins/'+figname_c+'">contour</a>]</td>'
934
+ row_count_gb+=1
935
+ if row_count_gb==3:
936
+ html_tgbh_write+='</tr>'
937
+ row_count_gb=0
938
+
939
+ #= Generate 2D kde plots =#
940
+
941
+ if twodkdeplots_flag is True:
942
+ if [par1_name,par2_name] in twoDplots or [par2_name,par1_name] in twoDplots :
943
+ print('Generating %s-%s plot'%(par1_name,par2_name))
944
+
945
+ par1_pos=pos[par1_name].samples
946
+ par2_pos=pos[par2_name].samples
947
+
948
+ if (size(unique(par1_pos))<2 or size(unique(par2_pos))<2):
949
+ continue
950
+
951
+ plot2DkdeParams={par1_name:50,par2_name:50}
952
+ myfig=bppu.plot_two_param_kde(pos,plot2DkdeParams)
953
+
954
+ figname=par1_name+'-'+par2_name+'_2Dkernel.png'
955
+ twoDKdePath=os.path.join(margdir,figname)
956
+
957
+ if row_count==0:
958
+ html_tcmp_write+='<tr>'
959
+ html_tcmp_write+='<td width="30%"><img width="100%" src="2Dkde/'+figname+'"/></td>'
960
+ row_count+=1
961
+ if row_count==3:
962
+ html_tcmp_write+='</tr>'
963
+ row_count=0
964
+
965
+ if myfig:
966
+ myfig.savefig(twoDKdePath)
967
+ if(savepdfs): myfig.savefig(twoDKdePath.replace('.png','.pdf'))
968
+ plt.close(myfig)
969
+ else:
970
+ print('Unable to generate 2D kde levels for %s-%s'%(par1_name,par2_name))
971
+
972
+
973
+ #Finish off the BCI table and write it into the etree
974
+ html_tcig_write+='</table>'
975
+ html_tcig.write(html_tcig_write)
976
+
977
+ if twodkdeplots_flag is True:
978
+ #Finish off the 2D kde plot table
979
+ while row_count!=0:
980
+ html_tcmp_write+='<td/>'
981
+ row_count+=1
982
+ if row_count==3:
983
+ row_count=0
984
+ html_tcmp_write+='</tr>'
985
+ html_tcmp_write+='</table>'
986
+ html_tcmp.write(html_tcmp_write)
987
+ #Add a link to all plots
988
+ html_tcmp.a("2Dkde/",'All 2D marginal PDFs (kde)')
989
+
990
+ #Finish off the 2D greedy histogram plot table
991
+ while row_count_gb!=0:
992
+ html_tgbh_write+='<td/>'
993
+ row_count_gb+=1
994
+ if row_count_gb==3:
995
+ row_count_gb=0
996
+ html_tgbh_write+='</tr>'
997
+ html_tgbh_write+='</table>'
998
+ html_tgbh.write(html_tgbh_write)
999
+ #Add a link to all plots
1000
+ html_tgbh.a("greedy2Dbins/",'All 2D Greedy Bin Histograms')
1001
+
1002
+ if RconvergenceTests is True:
1003
+ convergenceResults=bppu.convergenceTests(pos,gelman=False)
1004
+
1005
+ if convergenceResults is not None:
1006
+ tabid='convtable'
1007
+ html_conv_test=html.add_collapse_section('Convergence tests',legend=legend,innertable_id=tabid)
1008
+ data_found=False
1009
+ for test,test_data in convergenceResults.items():
1010
+
1011
+ if test_data:
1012
+ data_found=True
1013
+ html_conv_test.h3(test)
1014
+
1015
+ html_conv_table_rows={}
1016
+ html_conv_table_header=''
1017
+ for chain,chain_data in test_data.items():
1018
+ html_conv_table_header+='<th>%s</th>'%chain
1019
+
1020
+
1021
+ for data in chain_data:
1022
+ if len(data)==2:
1023
+ try:
1024
+ html_conv_table_rows[data[0]]+='<td>'+data[1]+'</td>'
1025
+ except KeyError:
1026
+ html_conv_table_rows[data[0]]='<td>'+data[1]+'</td>'
1027
+
1028
+ html_conv_table='<table id="%s"><tr><th>Chain</th>'%tabid+html_conv_table_header+'</tr>'
1029
+ for row_name,row in html_conv_table_rows.items():
1030
+ html_conv_table+='<tr><td>%s</td>%s</tr>'%(row_name,row)
1031
+ html_conv_table+='</table>'
1032
+ html_conv_test.write(html_conv_table)
1033
+ if data_found is False:
1034
+ html_conv_test.p('No convergence diagnostics generated!')
1035
+
1036
+ #Create a section for the covariance matrix
1037
+ tabid='covtable'
1038
+ html_stats_cov=html.add_collapse_section('Covariance matrix',legend=legend,innertable_id=tabid)
1039
+ pos_samples,table_header_string=pos.samples()
1040
+
1041
+ #calculate cov matrix
1042
+ try:
1043
+ cov_matrix=cov(pos_samples,rowvar=0,bias=1)
1044
+
1045
+ #Create html table
1046
+ table_header_list=table_header_string.split()
1047
+ cov_table_string='<table border="1" id="%s"><tr><th/>'%tabid
1048
+ for header in table_header_list:
1049
+ cov_table_string+='<th>%s</th>'%header
1050
+ cov_table_string+='</tr>'
1051
+
1052
+ cov_column_list=hsplit(cov_matrix,cov_matrix.shape[1])
1053
+
1054
+ for cov_column,cov_column_name in zip(cov_column_list,table_header_list):
1055
+ cov_table_string+='<tr><th>%s</th>'%cov_column_name
1056
+ for cov_column_element in cov_column:
1057
+ cov_table_string+='<td>%.3e</td>'%(cov_column_element[0])
1058
+ cov_table_string+='</tr>'
1059
+ cov_table_string+='</table>'
1060
+ html_stats_cov.write(cov_table_string)
1061
+
1062
+ except:
1063
+ print('Unable to compute the covariance matrix.')
1064
+
1065
+
1066
+ html_footer=html.add_section('')
1067
+ html_footer.p('Produced using cbcBayesPostProc.py at '+strftime("%Y-%m-%d %H:%M:%S")+' .')
1068
+
1069
+ cc_args=''
1070
+ for arg in sys.argv:
1071
+ cc_args+=arg+' '
1072
+
1073
+ html_footer.p('Command line: %s'%cc_args)
1074
+ html_footer.p(git_version.verbose_msg)
1075
+
1076
+ #Save results page
1077
+ resultspage=open(os.path.join(outdir,'posplots.html'),'w')
1078
+ resultspage.write(str(html))
1079
+
1080
+
1081
+ #Close files
1082
+ resultspage.close()
1083
+
1084
+ USAGE='''%prog [options] datafile.dat [datafile2.dat ...]
1085
+ Generate a web page displaying results of parameter estimation based on the contents
1086
+ of one or more datafiles containing samples from one of the bayesian algorithms (MCMC, nested sampling).
1087
+ Options specify which extra statistics to compute and allow specification of additional information.
1088
+ '''
1089
+
1090
+ if __name__=='__main__':
1091
+
1092
+ from optparse import OptionParser
1093
+ parser=OptionParser(USAGE)
1094
+ parser.add_option("-o","--outpath", dest="outpath",help="make page and plots in DIR", metavar="DIR")
1095
+ parser.add_option("-d","--data",dest="data",action="callback",callback=multipleFileCB,help="datafile")
1096
+ #Optional (all)
1097
+ parser.add_option("-i","--inj",dest="injfile",help="SimInsipral injection file",metavar="INJ.XML",default=None)
1098
+ parser.add_option("-t","--trig",dest="trigfile",help="Coinc XML file",metavar="COINC.XML",default=None)
1099
+ parser.add_option("--skyres",dest="skyres",help="Sky resolution to use to calculate sky box size",default=None)
1100
+ parser.add_option("--eventnum",dest="eventnum",action="store",default=None,help="event number in SimInspiral file of this signal",type="int",metavar="NUM")
1101
+ parser.add_option("--trignum",dest="trignum",action="store",default=None,help="trigger number in CoincTable",type="int",metavar="NUM")
1102
+ parser.add_option("--bsn",action="store",default=None,help="Optional file containing the bayes factor signal against noise",type="string")
1103
+ parser.add_option("--bci",action="store",default=None,help="Optional file containing the bayes factor coherent signal model against incoherent signal model.",type="string")
1104
+ parser.add_option("--snr",action="store",default=None,help="Optional file containing the SNRs of the signal in each IFO",type="string")
1105
+ parser.add_option("--dievidence",action="store_true",default=False,help="Calculate the direct integration evidence for the posterior samples")
1106
+ parser.add_option("--boxing",action="store",default=64,help="Boxing parameter for the direct integration evidence calculation",type="int",dest="boxing")
1107
+ parser.add_option("--evidenceFactor",action="store",default=1.0,help="Overall factor (normalization) to apply to evidence",type="float",dest="difactor",metavar="FACTOR")
1108
+
1109
+ parser.add_option('--ellipticEvidence', action='store_true', default=False,help='Estimate the evidence by fitting ellipse to highest-posterior points.', dest='ellevidence')
1110
+
1111
+ parser.add_option("--plot-2d", action="store_true", default=False,help="Make individual 2-D plots.")
1112
+ parser.add_option("--header",action="store",default=None,help="Optional file containing the header line for posterior samples",type="string")
1113
+ #NS
1114
+ parser.add_option("--ns",action="store_true",default=False,help="(inspnest) Parse input as if it was output from parallel nested sampling runs.")
1115
+ parser.add_option("--Nlive",action="store",default=None,help="(inspnest) Number of live points used in each parallel nested sampling run.",type="int")
1116
+ parser.add_option("--xflag",action="store_true",default=False,help="(inspnest) Convert x to iota.")
1117
+ #SS
1118
+ parser.add_option("--ss",action="store_true",default=False,help="(SPINspiral) Parse input as if it was output from SPINspiral.")
1119
+ parser.add_option("--spin",action="store_true",default=False,help="(SPINspiral) Specify spin run (15 parameters). ")
1120
+ #LALInf
1121
+ parser.add_option("--lalinfmcmc",action="store_true",default=False,help="(LALInferenceMCMC) Parse input from LALInferenceMCMC.")
1122
+ parser.add_option("--inj-spin-frame",default='OrbitalL', help="The reference frame used for the injection (default: OrbitalL)")
1123
+ parser.add_option("--downsample",action="store",default=None,help="(LALInferenceMCMC) approximate number of samples to record in the posterior",type="int")
1124
+ parser.add_option("--deltaLogL",action="store",default=None,help="(LALInferenceMCMC) Difference in logL to use for convergence test. (DEPRECATED)",type="float")
1125
+ parser.add_option("--deltaLogP",action="store",default=None,help="(LALInferenceMCMC) Difference in logpost to use for burnin criteria.",type="float")
1126
+ parser.add_option("--fixedBurnin",dest="fixedBurnin",action="callback",callback=multipleFileCB,help="(LALInferenceMCMC) Fixed number of iteration for burnin.")
1127
+ parser.add_option("--oldMassConvention",action="store_true",default=False,help="(LALInferenceMCMC) if activated, m2 > m1; otherwise m1 > m2 in PTMCMC.output.*.00")
1128
+ #FM
1129
+ parser.add_option("--fm",action="store_true",default=False,help="(followupMCMC) Parse input as if it was output from followupMCMC.")
1130
+ # ACF plots off?
1131
+ parser.add_option("--no-acf", action="store_true", default=False, dest="noacf")
1132
+ # Turn on 2D kdes
1133
+ parser.add_option("--twodkdeplots", action="store_true", default=False, dest="twodkdeplots")
1134
+ # Turn on R convergence tests
1135
+ parser.add_option("--RconvergenceTests", action="store_true", default=False, dest="RconvergenceTests")
1136
+ parser.add_option("--nopdfs",action="store_false",default=True,dest="nopdfs")
1137
+ parser.add_option("-c","--covarianceMatrix",dest="covarianceMatrices",action="append",default=None,help="CSV file containing covariance (must give accompanying mean vector CSV. Can add more than one matrix.")
1138
+ parser.add_option("-m","--meanVectors",dest="meanVectors",action="append",default=None,help="Comma separated list of locations of the multivariate gaussian described by the correlation matrix. First line must be list of params in the order used for the covariance matrix. Provide one list per covariance matrix.")
1139
+ parser.add_option("--email",action="store",default=None,type="string",metavar="user@ligo.org",help="Send an e-mail to the given address with a link to the finished page.")
1140
+ parser.add_option("--archive",action="store",default=None,type="string",metavar="results.tar.gz",help="Create the given tarball with all results")
1141
+ parser.add_option("--psdfiles",action="store",default=None,type="string",metavar="H1,L1,V1",help="comma separater list of ASCII files with PSDs, one per IFO")
1142
+ parser.add_option("--kdecredibleregions",action="store_true",default=False,help="If given, will use 2-step KDE trees to estimate 1-d credible regions [default false: use greedy binning]")
1143
+ parser.add_option("--noplot-source-frame", action="store_true", default=False,help="Don't make 1D plots of source-frame masses")
1144
+ (opts,args)=parser.parse_args()
1145
+
1146
+ datafiles=[]
1147
+ if args:
1148
+ datafiles=datafiles+args
1149
+ if opts.data:
1150
+ datafiles=datafiles + opts.data
1151
+
1152
+ if opts.fixedBurnin:
1153
+ # If only one value for multiple chains, assume it's to be applied to all chains
1154
+ if len(opts.fixedBurnin) == 1:
1155
+ fixedBurnins = [int(opts.fixedBurnin[0]) for df in datafiles]
1156
+ else:
1157
+ fixedBurnins = [int(fixedBurnin) for fixedBurnin in opts.fixedBurnin]
1158
+ else:
1159
+ fixedBurnins = None
1160
+ from lalinference.bayespputils import massParams,spinParams,cosmoParam,strongFieldParams,distParams,incParams,polParams,skyParams,phaseParams,timeParams,endTimeParams,statsParams,calibParams,snrParams,tidalParams,fourPiecePolyParams,spectralParams
1161
+
1162
+
1163
+ oneDMenus={'Masses':None,'SourceFrame':None,'Timing':None,'Extrinsic':None,'Spins':None,'StrongField':None,'Others':None}
1164
+
1165
+ oneDMenus['Masses']= massParams
1166
+ oneDMenus['Extrinsic']=incParams+distParams+polParams+skyParams+phaseParams
1167
+ oneDMenus['Spins']= spinParams
1168
+ oneDMenus['Timing']=timeParams+endTimeParams
1169
+ oneDMenus['StrongField']= strongFieldParams
1170
+ oneDMenus['Others']=snrParams+statsParams+calibParams
1171
+ oneDMenus['SourceFrame']= cosmoParam
1172
+
1173
+ if opts.noplot_source_frame:
1174
+ oneDMenus['SourceFrame']= []
1175
+
1176
+ ifos_menu=['h1','l1','v1']
1177
+ from itertools import combinations
1178
+ for ifo1,ifo2 in combinations(ifos_menu,2):
1179
+ oneDMenus['Timing'].append(ifo1+ifo2+'_delay')
1180
+ #oneDMenu=[]
1181
+ twoDGreedyMenu=[]
1182
+ if opts.plot_2d:
1183
+ for mp1,mp2 in combinations(massParams,2):
1184
+ twoDGreedyMenu.append([mp1, mp2])
1185
+ for mp in massParams:
1186
+ for d in distParams:
1187
+ twoDGreedyMenu.append([mp,d])
1188
+ for mp in massParams:
1189
+ for sp in spinParams:
1190
+ twoDGreedyMenu.append([mp,sp])
1191
+ for mp in massParams:
1192
+ for dchi in bppu.tigerParams:
1193
+ twoDGreedyMenu.append([mp,dchi])
1194
+ for mp in massParams:
1195
+ for lvp in bppu.lorentzInvarianceViolationParams:
1196
+ twoDGreedyMenu.append([mp,lvp])
1197
+ for sp in spinParams:
1198
+ for lvp in bppu.lorentzInvarianceViolationParams:
1199
+ twoDGreedyMenu.append([sp,lvp])
1200
+ for dchi in bppu.tigerParams:
1201
+ for lvp in bppu.lorentzInvarianceViolationParams:
1202
+ twoDGreedyMenu.append([dchi, lvp])
1203
+ for eg in bppu.energyParams:
1204
+ for lvp in bppu.lorentzInvarianceViolationParams:
1205
+ twoDGreedyMenu.append([eg, lvp])
1206
+ for dp in distParams:
1207
+ for lvp in bppu.lorentzInvarianceViolationParams:
1208
+ twoDGreedyMenu.append([dp, lvp])
1209
+ for dp in distParams:
1210
+ for sp in snrParams:
1211
+ twoDGreedyMenu.append([dp,sp])
1212
+ for dp in distParams:
1213
+ for ip in incParams:
1214
+ twoDGreedyMenu.append([dp,ip])
1215
+ for dp in distParams:
1216
+ for sp in skyParams:
1217
+ twoDGreedyMenu.append([dp,sp])
1218
+ for dp in distParams:
1219
+ for sp in spinParams:
1220
+ twoDGreedyMenu.append([dp,sp])
1221
+ for ip in incParams:
1222
+ for sp in skyParams:
1223
+ twoDGreedyMenu.append([ip,sp])
1224
+ for ip in incParams:
1225
+ for sp in spinParams:
1226
+ twoDGreedyMenu.append([ip,sp])
1227
+ for phip in phaseParams:
1228
+ twoDGreedyMenu.append([ip,phip])
1229
+ for psip in polParams:
1230
+ twoDGreedyMenu.append([ip,psip])
1231
+ for sp1 in skyParams:
1232
+ for sp2 in skyParams:
1233
+ if not (sp1 == sp2):
1234
+ twoDGreedyMenu.append([sp1, sp2])
1235
+ for sp1,sp2 in combinations(spinParams,2):
1236
+ twoDGreedyMenu.append([sp1, sp2])
1237
+ for dc1,dc2 in combinations(bppu.tigerParams,2):
1238
+ twoDGreedyMenu.append([dc1,dc2])
1239
+ for mp in massParams:
1240
+ for tp in tidalParams:
1241
+ if not (mp == tp):
1242
+ twoDGreedyMenu.append([mp, tp])
1243
+ for tp in fourPiecePolyParams:
1244
+ if not (mp == tp):
1245
+ twoDGreedyMenu.append([mp, tp])
1246
+ for tp in spectralParams:
1247
+ if not (mp == tp):
1248
+ twoDGreedyMenu.append([mp, tp])
1249
+ for sp1,sp2 in combinations(snrParams,2):
1250
+ twoDGreedyMenu.append([sp1,sp2])
1251
+ twoDGreedyMenu.append(['lambda1','lambda2'])
1252
+ twoDGreedyMenu.append(['lam_tilde','dlam_tilde'])
1253
+ twoDGreedyMenu.append(['lambdat','dlambdat'])
1254
+ twoDGreedyMenu.append(['logp1','gamma1','gamma2','gamma3'])
1255
+ twoDGreedyMenu.append(['SDgamma0','SDgamma1','SDgamma2','SDgamma3'])
1256
+ for psip in polParams:
1257
+ for phip in phaseParams:
1258
+ twoDGreedyMenu.append([psip,phip])
1259
+ for sp in skyParams:
1260
+ twoDGreedyMenu.append([psip,sp])
1261
+ for sp in spinParams:
1262
+ twoDGreedyMenu.append([psip,sp])
1263
+
1264
+ for i in calibParams[3:]:
1265
+ twoDGreedyMenu.append([i,'distance'])
1266
+
1267
+ #twoDGreedyMenu=[['mc','eta'],['mchirp','eta'],['m1','m2'],['mtotal','eta'],['distance','iota'],['dist','iota'],['dist','m1'],['ra','dec']]
1268
+ #Bin size/resolution for binning. Need to match (converted) column names.
1269
+ greedyBinSizes=bppu.greedyBinSizes
1270
+
1271
+
1272
+ if opts.plot_2d:
1273
+ for dt1,dt2 in combinations(['h1_end_time','l1_end_time','v1_end_time'],2):
1274
+ twoDGreedyMenu.append([dt1,dt2])
1275
+ for dt1,dt2 in combinations( ['h1l1_delay','l1v1_delay','h1v1_delay'],2):
1276
+ twoDGreedyMenu.append([dt1,dt2])
1277
+
1278
+ if opts.deltaLogL and not opts.deltaLogP:
1279
+ print("DEPRECATION WARNING: --deltaLogL has been replaced by --deltaLogP. Using the posterior to define burnin criteria")
1280
+ deltaLogP = opts.deltaLogL
1281
+ else:
1282
+ deltaLogP = opts.deltaLogP
1283
+
1284
+ confidenceLevels=bppu.confidenceLevels
1285
+ #2D plots list
1286
+ #twoDplots=[['mc','eta'],['mchirp','eta'],['mc', 'time'],['mchirp', 'time'],['m1','m2'],['mtotal','eta'],['distance','iota'],['dist','iota'],['RA','dec'],['ra', 'dec'],['m1','dist'],['m2','dist'],['mc', 'dist'],['psi','iota'],['psi','distance'],['psi','dist'],['psi','phi0'], ['a1', 'a2'], ['a1', 'iota'], ['a2', 'iota'],['eta','time'],['ra','iota'],['dec','iota'],['chi','iota'],['chi','mchirp'],['chi','eta'],['chi','distance'],['chi','ra'],['chi','dec'],['chi','psi']]
1287
+ twoDplots=twoDGreedyMenu
1288
+ cbcBayesPostProc(
1289
+ opts.outpath,datafiles,oneDMenus,twoDGreedyMenu,
1290
+ greedyBinSizes,confidenceLevels,twoDplots,
1291
+ #optional
1292
+ injfile=opts.injfile,eventnum=opts.eventnum,
1293
+ trigfile=opts.trigfile,trignum=opts.trignum,
1294
+ skyres=opts.skyres,
1295
+ # direct integration evidence
1296
+ dievidence=opts.dievidence,boxing=opts.boxing,difactor=opts.difactor,
1297
+ # Ellipitical evidence
1298
+ ellevidence=opts.ellevidence,
1299
+ #manual bayes factor entry
1300
+ bayesfactornoise=opts.bsn,bayesfactorcoherent=opts.bci,
1301
+ #manual input for SNR in the IFOs, optional.
1302
+ snrfactor=opts.snr,
1303
+ #nested sampling options
1304
+ ns_flag=opts.ns,ns_Nlive=opts.Nlive,
1305
+ #spinspiral/mcmc options
1306
+ ss_flag=opts.ss,ss_spin_flag=opts.spin,
1307
+ #LALInferenceMCMC options
1308
+ li_flag=opts.lalinfmcmc,deltaLogP=deltaLogP,fixedBurnins=fixedBurnins,nDownsample=opts.downsample,oldMassConvention=opts.oldMassConvention,
1309
+ #followupMCMC options
1310
+ fm_flag=opts.fm,
1311
+ #injected spin frame
1312
+ inj_spin_frame=opts.inj_spin_frame,
1313
+ # Turn of ACF?
1314
+ noacf=opts.noacf,
1315
+ #Turn on 2D kdes
1316
+ twodkdeplots=opts.twodkdeplots,
1317
+ #Turn on R convergence tests
1318
+ RconvergenceTests=opts.RconvergenceTests,
1319
+ # Also save PDFs?
1320
+ savepdfs=opts.nopdfs,
1321
+ #List of covariance matrix csv files used as analytic likelihood
1322
+ covarianceMatrices=opts.covarianceMatrices,
1323
+ #List of meanVector csv files used, one csv file for each covariance matrix
1324
+ meanVectors=opts.meanVectors,
1325
+ #header file for parameter names in posterior samples
1326
+ header=opts.header,
1327
+ # ascii files (one per IFO) containing freq - PSD columns
1328
+ psd_files=opts.psdfiles,
1329
+ greedy=not(opts.kdecredibleregions)
1330
+ )
1331
+
1332
+ if opts.archive is not None:
1333
+ import subprocess
1334
+ subprocess.call(["tar","cvzf",opts.archive,opts.outpath])
1335
+
1336
+ # Send an email, useful for keeping track of dozens of jobs!
1337
+ # Will only work if the local host runs a mail daemon
1338
+ # that can send mail to the internet
1339
+ if opts.email:
1340
+ try:
1341
+ email_notify(opts.email,opts.outpath)
1342
+ except Exception as e:
1343
+ print('Unable to send notification email')
1344
+ print("The error was %s\n"%str(e))
1345
+ #