PycWB 0.26.0__tar.gz → 0.27.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. {pycwb-0.26.0 → pycwb-0.27.0}/PKG-INFO +1 -1
  2. {pycwb-0.26.0 → pycwb-0.27.0}/PycWB.egg-info/PKG-INFO +1 -1
  3. {pycwb-0.26.0 → pycwb-0.27.0}/PycWB.egg-info/SOURCES.txt +6 -0
  4. {pycwb-0.26.0 → pycwb-0.27.0}/bin/pycwb +6 -0
  5. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/index.rst +4 -0
  6. pycwb-0.27.0/examples/gwosc/user_parameters.yaml +89 -0
  7. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/pp_workflow/simple_module.yaml +10 -6
  8. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/_version.py +2 -2
  9. pycwb-0.27.0/pycwb/cli/gwosc.py +84 -0
  10. pycwb-0.27.0/pycwb/modules/gwosc/gwosc.py +142 -0
  11. pycwb-0.27.0/pycwb/modules/report/continues_poisson.py +129 -0
  12. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/report/read_results.py +3 -1
  13. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/report/report.py +14 -4
  14. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/network_event.py +1 -1
  15. pycwb-0.27.0/pycwb/vendor/template/gwosc/user_parameters.yaml +89 -0
  16. pycwb-0.27.0/pycwb/workflow/__init__.py +0 -0
  17. {pycwb-0.26.0 → pycwb-0.27.0}/.gitignore +0 -0
  18. {pycwb-0.26.0 → pycwb-0.27.0}/.gitlab-ci.yml +0 -0
  19. {pycwb-0.26.0 → pycwb-0.27.0}/.readthedocs.yaml +0 -0
  20. {pycwb-0.26.0 → pycwb-0.27.0}/LICENSE +0 -0
  21. {pycwb-0.26.0 → pycwb-0.27.0}/MANIFEST.in +0 -0
  22. {pycwb-0.26.0 → pycwb-0.27.0}/Makefile +0 -0
  23. {pycwb-0.26.0 → pycwb-0.27.0}/PycWB.egg-info/dependency_links.txt +0 -0
  24. {pycwb-0.26.0 → pycwb-0.27.0}/PycWB.egg-info/requires.txt +0 -0
  25. {pycwb-0.26.0 → pycwb-0.27.0}/PycWB.egg-info/top_level.txt +0 -0
  26. {pycwb-0.26.0 → pycwb-0.27.0}/README.md +0 -0
  27. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/README.md +0 -0
  28. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/likelihood/README.md +0 -0
  29. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/likelihood/generate_data_for_likelihood.py +0 -0
  30. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/likelihood/performance_test_dpf.py +0 -0
  31. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/likelihood/performance_test_opt_sky.py +0 -0
  32. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/likelihood/user_parameters_injection.yaml +0 -0
  33. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/supercluster/README.md +0 -0
  34. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/supercluster/generate_data.py +0 -0
  35. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/supercluster/generate_data_2.py +0 -0
  36. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/supercluster/performance_supercluster.py +0 -0
  37. {pycwb-0.26.0 → pycwb-0.27.0}/benchmark/supercluster/user_parameters_injection.yaml +0 -0
  38. {pycwb-0.26.0 → pycwb-0.27.0}/bin/pycwb_search +0 -0
  39. {pycwb-0.26.0 → pycwb-0.27.0}/bin/pycwb_show +0 -0
  40. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Biorthogonal.cc +0 -0
  41. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Biorthogonal.hh +0 -0
  42. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/CMakeLists.txt +0 -0
  43. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Daubechies.cc +0 -0
  44. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Daubechies.hh +0 -0
  45. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/FourierCoefficients.icc +0 -0
  46. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Haar.cc +0 -0
  47. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Haar.hh +0 -0
  48. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/LineFilter.cc +0 -0
  49. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/LineFilter.hh +0 -0
  50. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Makefile +0 -0
  51. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Meyer.cc +0 -0
  52. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Meyer.hh +0 -0
  53. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Symlet.cc +0 -0
  54. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Symlet.hh +0 -0
  55. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/SymmArray.cc +0 -0
  56. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/SymmArray.hh +0 -0
  57. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/SymmArraySSE.cc +0 -0
  58. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/SymmArraySSE.hh +0 -0
  59. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/SymmObjArray.cc +0 -0
  60. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/SymmObjArray.hh +0 -0
  61. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/WDM.cc +0 -0
  62. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/WDM.hh +0 -0
  63. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/WDMOverlap.cc +0 -0
  64. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/WDMOverlap.hh +0 -0
  65. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/WaveDWT.cc +0 -0
  66. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/WaveDWT.hh +0 -0
  67. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Wavelet.cc +0 -0
  68. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/Wavelet.hh +0 -0
  69. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/alm.hh +0 -0
  70. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/build.sh +0 -0
  71. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/cluster.cc +0 -0
  72. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/cluster.hh +0 -0
  73. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/cmake/FindHealpix.cmake +0 -0
  74. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/cmake/FindeBBH.cmake +0 -0
  75. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/cmake/install_function.cmake +0 -0
  76. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/constants.hh +0 -0
  77. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/detector.cc +0 -0
  78. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/detector.hh +0 -0
  79. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/injection.cc +0 -0
  80. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/injection.hh +0 -0
  81. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/lossy.cc +0 -0
  82. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/lossy.hh +0 -0
  83. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/monster.cc +0 -0
  84. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/monster.hh +0 -0
  85. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/netcluster.cc +0 -0
  86. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/netcluster.hh +0 -0
  87. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/netevent.cc +0 -0
  88. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/netevent.hh +0 -0
  89. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/netpixel.cc +0 -0
  90. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/netpixel.hh +0 -0
  91. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/network.cc +0 -0
  92. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/network.hh +0 -0
  93. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/pycwb.hh +0 -0
  94. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/rdfr.cc +0 -0
  95. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/rdfr.hh +0 -0
  96. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/readframe.cc +0 -0
  97. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/readframe.hh +0 -0
  98. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/readfrfile.cc +0 -0
  99. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/readfrfile.hh +0 -0
  100. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/regression.cc +0 -0
  101. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/regression.hh +0 -0
  102. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/skycoord.hh +0 -0
  103. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/skymap.cc +0 -0
  104. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/skymap.hh +0 -0
  105. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/sseries.cc +0 -0
  106. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/sseries.hh +0 -0
  107. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/time.cc +0 -0
  108. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/time.hh +0 -0
  109. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wat.hh +0 -0
  110. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/watasm.S +0 -0
  111. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/watasm_elf64.o +0 -0
  112. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/watavx.hh +0 -0
  113. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/watbranch.in +0 -0
  114. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/watfun.hh +0 -0
  115. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wathash.in +0 -0
  116. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/watplot.cc +0 -0
  117. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/watplot.hh +0 -0
  118. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/watsse.hh +0 -0
  119. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wattag.in +0 -0
  120. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/waturl.in +0 -0
  121. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/watversion.hh.in +0 -0
  122. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavearray.cc +0 -0
  123. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavearray.hh +0 -0
  124. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavecomplex.cc +0 -0
  125. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavecomplex.hh +0 -0
  126. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavecor.cc +0 -0
  127. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavecor.hh +0 -0
  128. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavefft.cc +0 -0
  129. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavefft.hh +0 -0
  130. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavelet_LinkDef.h +0 -0
  131. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavelinefilter.cc +0 -0
  132. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wavelinefilter.hh +0 -0
  133. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/waverdc.cc +0 -0
  134. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/waverdc.hh +0 -0
  135. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wseries.cc +0 -0
  136. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wseries.hh +0 -0
  137. {pycwb-0.26.0 → pycwb-0.27.0}/cwb-core/wslice.hh +0 -0
  138. {pycwb-0.26.0 → pycwb-0.27.0}/docs/0.installation_guide.md +0 -0
  139. {pycwb-0.26.0 → pycwb-0.27.0}/docs/1.initialisation_guide.md +0 -0
  140. {pycwb-0.26.0 → pycwb-0.27.0}/docs/2.test_interactive_multistages_2G_analysis.md +0 -0
  141. {pycwb-0.26.0 → pycwb-0.27.0}/docs/3.run_pycwb_with_yaml_config.md +0 -0
  142. {pycwb-0.26.0 → pycwb-0.27.0}/docs/4.py_cwb_inet_2G.md +0 -0
  143. {pycwb-0.26.0 → pycwb-0.27.0}/docs/5.cwb2G_analyse.md +0 -0
  144. {pycwb-0.26.0 → pycwb-0.27.0}/docs/6.wat_codes_notes.md +0 -0
  145. {pycwb-0.26.0 → pycwb-0.27.0}/docs/Makefile +0 -0
  146. {pycwb-0.26.0 → pycwb-0.27.0}/docs/diagram.py +0 -0
  147. {pycwb-0.26.0 → pycwb-0.27.0}/docs/make.bat +0 -0
  148. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/_static/.keep +0 -0
  149. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/_templates/.keep +0 -0
  150. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/conf.py +0 -0
  151. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/credit.rst +0 -0
  152. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/install.rst +0 -0
  153. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/mod_cwb.rst +0 -0
  154. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/package.rst +0 -0
  155. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/schema.rst +0 -0
  156. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/tutorial_batch_inj.rst +0 -0
  157. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/tutorial_customized_wf_gen.rst +0 -0
  158. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/tutorial_injection.rst +0 -0
  159. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/tutorial_multi_injection.rst +0 -0
  160. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/tutorial_search.rst +0 -0
  161. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/tutorials.rst +0 -0
  162. {pycwb-0.26.0 → pycwb-0.27.0}/docs/source/workflow.png +0 -0
  163. {pycwb-0.26.0 → pycwb-0.27.0}/envs/Dockerfile +0 -0
  164. {pycwb-0.26.0 → pycwb-0.27.0}/envs/environment.yml +0 -0
  165. {pycwb-0.26.0 → pycwb-0.27.0}/envs/mamba/Dockerfile +0 -0
  166. {pycwb-0.26.0 → pycwb-0.27.0}/examples/autoencoder/pycwb_injection.ipynb +0 -0
  167. {pycwb-0.26.0 → pycwb-0.27.0}/examples/autoencoder/user_parameters_injection.yaml +0 -0
  168. {pycwb-0.26.0 → pycwb-0.27.0}/examples/batch_injection/generate_parameters.py +0 -0
  169. {pycwb-0.26.0 → pycwb-0.27.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/__init__.py +0 -0
  170. {pycwb-0.26.0 → pycwb-0.27.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/parameters.py +0 -0
  171. {pycwb-0.26.0 → pycwb-0.27.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/waveform.py +0 -0
  172. {pycwb-0.26.0 → pycwb-0.27.0}/examples/batch_injection/pycwb_injection.py +0 -0
  173. {pycwb-0.26.0 → pycwb-0.27.0}/examples/batch_injection/user_parameters_injection.yaml +0 -0
  174. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/DQ/H1_cat0.txt +0 -0
  175. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/DQ/H1_cat1.txt +0 -0
  176. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/DQ/H1_cat2.txt +0 -0
  177. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/DQ/H1_cat4.txt +0 -0
  178. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/DQ/L1_cat0.txt +0 -0
  179. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/DQ/L1_cat1.txt +0 -0
  180. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/DQ/L1_cat2.txt +0 -0
  181. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/DQ/L1_cat4.txt +0 -0
  182. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/input/OPBM.period +0 -0
  183. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/input/OPBM_H1.frames +0 -0
  184. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/input/OPBM_L1.frames +0 -0
  185. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/pycwb_mdc.py +0 -0
  186. {pycwb-0.26.0 → pycwb-0.27.0}/examples/benchmark/user_parameters_mdc.yaml +0 -0
  187. {pycwb-0.26.0 → pycwb-0.27.0}/examples/colab/pycWB_GW150914.ipynb +0 -0
  188. {pycwb-0.26.0 → pycwb-0.27.0}/examples/injection/pycwb_injection.ipynb +0 -0
  189. {pycwb-0.26.0 → pycwb-0.27.0}/examples/injection/user_parameters_injection.yaml +0 -0
  190. {pycwb-0.26.0 → pycwb-0.27.0}/examples/injection/wdmXTalk/OverlapCatalog16-1024.bin +0 -0
  191. {pycwb-0.26.0 → pycwb-0.27.0}/examples/lvk_sep_2023/demo.ipynb +0 -0
  192. {pycwb-0.26.0 → pycwb-0.27.0}/examples/lvk_sep_2023/user_parameters.yaml +0 -0
  193. {pycwb-0.26.0 → pycwb-0.27.0}/examples/multiple_injection/pycwb_injection.py +0 -0
  194. {pycwb-0.26.0 → pycwb-0.27.0}/examples/multiple_injection/user_parameters_injection.yaml +0 -0
  195. {pycwb-0.26.0 → pycwb-0.27.0}/examples/pyseobnr_injection/generate_parameters.py +0 -0
  196. {pycwb-0.26.0 → pycwb-0.27.0}/examples/pyseobnr_injection/user_parameters_injection.yaml +0 -0
  197. {pycwb-0.26.0 → pycwb-0.27.0}/examples/pyseobnr_injection/waveform_model/__init__.py +0 -0
  198. {pycwb-0.26.0 → pycwb-0.27.0}/examples/pyseobnr_injection/waveform_model/waveform.py +0 -0
  199. {pycwb-0.26.0 → pycwb-0.27.0}/examples/waveform_reconstruction/reconstruct_waveform_from_cluster.ipynb +0 -0
  200. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/cwb_core/coherence.cc +0 -0
  201. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/cwb_core/coherence.hh +0 -0
  202. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/cwb_core/likelihood.cc +0 -0
  203. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/cwb_core/likelihood.hh +0 -0
  204. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/dag/dag.py +0 -0
  205. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/dag/dask-prefect.py +0 -0
  206. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/dag/prefect_test.py +0 -0
  207. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger/__init__.py +0 -0
  208. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger/server.py +0 -0
  209. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger/visualizition.py +0 -0
  210. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/.eslintrc.cjs +0 -0
  211. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/.gitignore +0 -0
  212. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/.prettierrc.json +0 -0
  213. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/README.md +0 -0
  214. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/index.html +0 -0
  215. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/package-lock.json +0 -0
  216. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/package.json +0 -0
  217. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/public/favicon.ico +0 -0
  218. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/App.vue +0 -0
  219. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/assets/base.css +0 -0
  220. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/assets/cwb_icon_modern_blue_alfa.png +0 -0
  221. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/assets/main.css +0 -0
  222. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/assets/style.css +0 -0
  223. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/components/HelloWorld.vue +0 -0
  224. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/components/TheWelcome.vue +0 -0
  225. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/components/WelcomeItem.vue +0 -0
  226. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/components/__tests__/HelloWorld.spec.js +0 -0
  227. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/components/icons/IconCommunity.vue +0 -0
  228. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/components/icons/IconDocumentation.vue +0 -0
  229. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/components/icons/IconEcosystem.vue +0 -0
  230. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/components/icons/IconSupport.vue +0 -0
  231. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/components/icons/IconTooling.vue +0 -0
  232. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/main.js +0 -0
  233. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/router/index.js +0 -0
  234. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/stores/counter.js +0 -0
  235. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/views/drawflow.vue +0 -0
  236. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/views/nodes/node1.vue +0 -0
  237. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/views/nodes/node2.vue +0 -0
  238. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/views/nodes/node3.vue +0 -0
  239. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/src/views/nodes/nodeHeader.vue +0 -0
  240. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/messenger-web-interface/vite.config.js +0 -0
  241. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/performance/numba_test.py +0 -0
  242. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/performance/taichi_test.py +0 -0
  243. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/pp_workflow/simple.yaml +0 -0
  244. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/pp_workflow/workflow.yaml +0 -0
  245. {pycwb-0.26.0 → pycwb-0.27.0}/prototypes/search.yaml +0 -0
  246. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/__init__.py +0 -0
  247. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/cli/__init__.py +0 -0
  248. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/cli/batch_runner.py +0 -0
  249. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/cli/batch_setup.py +0 -0
  250. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/cli/flow.py +0 -0
  251. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/cli/merge_catalog.py +0 -0
  252. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/cli/post_process.py +0 -0
  253. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/cli/run.py +0 -0
  254. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/cli/server.py +0 -0
  255. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/cli/xtalk.py +0 -0
  256. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/config/__init__.py +0 -0
  257. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/config/config.py +0 -0
  258. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/constants/__init__.py +0 -0
  259. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/constants/project_constants.py +0 -0
  260. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/constants/user_parameters_schema.py +0 -0
  261. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/__init__.py +0 -0
  262. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/autoencoder/__init__.py +0 -0
  263. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/autoencoder/autoencoder.py +0 -0
  264. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/autoencoder/cwb_autoencoder.py +0 -0
  265. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/autoencoder/module.yaml +0 -0
  266. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/catalog/__init__.py +0 -0
  267. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/catalog/catalog.py +0 -0
  268. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/catalog/module.yaml +0 -0
  269. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/coherence/__init__.py +0 -0
  270. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/coherence/coherence.py +0 -0
  271. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/coherence/coherence_lite.py +0 -0
  272. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/coherence/module.yaml +0 -0
  273. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/condor/__init__.py +0 -0
  274. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/condor/condor.py +0 -0
  275. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/condor/module.yaml +0 -0
  276. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/cwb_conversions/__init__.py +0 -0
  277. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/cwb_conversions/cluster.py +0 -0
  278. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/cwb_conversions/module.yaml +0 -0
  279. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/cwb_conversions/pixel.py +0 -0
  280. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/cwb_conversions/series.py +0 -0
  281. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/cwb_conversions/sparse_series.py +0 -0
  282. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/data_conditioning/__init__.py +0 -0
  283. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/data_conditioning/data_conditioning.py +0 -0
  284. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/data_conditioning/module.yaml +0 -0
  285. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/data_conditioning/regression.py +0 -0
  286. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/data_conditioning/whitening.py +0 -0
  287. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/energy_threshold/__init__.py +0 -0
  288. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/energy_threshold/threshold.py +0 -0
  289. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/gracedb/__init__.py +0 -0
  290. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/gracedb/gracedb.py +0 -0
  291. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/gracedb/module.yaml +0 -0
  292. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/gracedb/test_gracedb.py +0 -0
  293. {pycwb-0.26.0/pycwb/modules/likelihoodWP → pycwb-0.27.0/pycwb/modules/gwosc}/__init__.py +0 -0
  294. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/job_segment/__init__.py +0 -0
  295. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/job_segment/dq_segment.py +0 -0
  296. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/job_segment/frame.py +0 -0
  297. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/job_segment/job_segment.py +0 -0
  298. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/job_segment/module.yaml +0 -0
  299. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/job_segment/plots.py +0 -0
  300. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/job_segment/super_lag.py +0 -0
  301. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/job_segment/test_job_segment.py +0 -0
  302. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/likelihood/__init__.py +0 -0
  303. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/likelihood/likelihood.py +0 -0
  304. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/likelihood/module.yaml +0 -0
  305. {pycwb-0.26.0/pycwb/modules/plot_map → pycwb-0.27.0/pycwb/modules/likelihoodWP}/__init__.py +0 -0
  306. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/likelihoodWP/dpf.py +0 -0
  307. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/likelihoodWP/dpf_cython.pyx +0 -0
  308. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/likelihoodWP/likelihood.py +0 -0
  309. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/likelihoodWP/sky_stat.py +0 -0
  310. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/likelihoodWP/utils.py +0 -0
  311. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/logger/__init__.py +0 -0
  312. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/logger/logger.py +0 -0
  313. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/logger/module.yaml +0 -0
  314. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/multi_resolution_wdm/__init__.py +0 -0
  315. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/multi_resolution_wdm/module.yaml +0 -0
  316. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/multi_resolution_wdm/wdm.py +0 -0
  317. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot/__init__.py +0 -0
  318. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot/cluster_statistics.py +0 -0
  319. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot/event.py +0 -0
  320. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot/module.yaml +0 -0
  321. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot/spectrogram.py +0 -0
  322. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot/waveform.py +0 -0
  323. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot_data_quality/__init__.py +0 -0
  324. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot_data_quality/module.yaml +0 -0
  325. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot_data_quality/plot.py +0 -0
  326. {pycwb-0.26.0/pycwb/modules/report → pycwb-0.27.0/pycwb/modules/plot_map}/__init__.py +0 -0
  327. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot_map/module.yaml +0 -0
  328. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/plot_map/world_map.py +0 -0
  329. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/read_data/__init__.py +0 -0
  330. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/read_data/data_check.py +0 -0
  331. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/read_data/data_find.py +0 -0
  332. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/read_data/mdc.py +0 -0
  333. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/read_data/module.yaml +0 -0
  334. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/read_data/read_data.py +0 -0
  335. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/reconstruction/__init__.py +0 -0
  336. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/reconstruction/getMRAwaveform.py +0 -0
  337. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/reconstruction/module.yaml +0 -0
  338. {pycwb-0.26.0/pycwb/modules/statistics → pycwb-0.27.0/pycwb/modules/report}/__init__.py +0 -0
  339. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/report/far_rho.py +0 -0
  340. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/sparse_series/__init__.py +0 -0
  341. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/sparse_series/module.yaml +0 -0
  342. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/sparse_series/sparse_table.py +0 -0
  343. {pycwb-0.26.0/pycwb/modules/supercluster_naive → pycwb-0.27.0/pycwb/modules/statistics}/__init__.py +0 -0
  344. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/statistics/eff.py +0 -0
  345. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/statistics/eff_plot.py +0 -0
  346. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/statistics/merge.py +0 -0
  347. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/statistics/sigmoid_fit.py +0 -0
  348. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/super_cluster/__init__.py +0 -0
  349. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/super_cluster/module.yaml +0 -0
  350. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/super_cluster/sub_net_cut.py +0 -0
  351. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/super_cluster/super_cluster.py +0 -0
  352. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/super_cluster/supercluster.py +0 -0
  353. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/super_cluster/utils.py +0 -0
  354. {pycwb-0.26.0/pycwb/modules/web_viewer → pycwb-0.27.0/pycwb/modules/supercluster_naive}/__init__.py +0 -0
  355. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/supercluster_naive/supercluster2.py +0 -0
  356. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/superlag/__init__.py +0 -0
  357. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/superlag/module.yaml +0 -0
  358. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/superlag/superlag.py +0 -0
  359. {pycwb-0.26.0/pycwb/modules/workflow_utils → pycwb-0.27.0/pycwb/modules/web_viewer}/__init__.py +0 -0
  360. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/web_viewer/create.py +0 -0
  361. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/web_viewer/module.yaml +0 -0
  362. {pycwb-0.26.0/pycwb/modules/xtalk → pycwb-0.27.0/pycwb/modules/workflow_utils}/__init__.py +0 -0
  363. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/workflow_utils/job_setup.py +0 -0
  364. {pycwb-0.26.0/pycwb/post_production → pycwb-0.27.0/pycwb/modules/xtalk}/__init__.py +0 -0
  365. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/xtalk/monster.py +0 -0
  366. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/xtalk/monster_old.py +0 -0
  367. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/modules/xtalk/xtalk_data.py +0 -0
  368. {pycwb-0.26.0/pycwb/prefect_flow → pycwb-0.27.0/pycwb/post_production}/__init__.py +0 -0
  369. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/post_production/workflow.py +0 -0
  370. {pycwb-0.26.0/pycwb/prefect_flow/tasks → pycwb-0.27.0/pycwb/prefect_flow}/__init__.py +0 -0
  371. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/prefect_flow/pycwb_flow.py +0 -0
  372. {pycwb-0.26.0/pycwb/types → pycwb-0.27.0/pycwb/prefect_flow/tasks}/__init__.py +0 -0
  373. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/prefect_flow/tasks/builtin.py +0 -0
  374. {pycwb-0.26.0/pycwb/utils → pycwb-0.27.0/pycwb/types}/__init__.py +0 -0
  375. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/data_quality_file.py +0 -0
  376. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/detector.py +0 -0
  377. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/job.py +0 -0
  378. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/network.py +0 -0
  379. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/network_cluster.py +0 -0
  380. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/network_pixel.py +0 -0
  381. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/sparse_series.py +0 -0
  382. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/time_frequency_series.py +0 -0
  383. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/wdm.py +0 -0
  384. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/types/wdm_xtalk.py +0 -0
  385. {pycwb-0.26.0/pycwb/utils/conversions → pycwb-0.27.0/pycwb/utils}/__init__.py +0 -0
  386. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/async_write.py +0 -0
  387. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/check_ROOT.py +0 -0
  388. {pycwb-0.26.0/pycwb/vendor → pycwb-0.27.0/pycwb/utils/conversions}/__init__.py +0 -0
  389. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/conversions/timeseries.py +0 -0
  390. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/dataclass_object_io.py +0 -0
  391. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/dep_check.py +0 -0
  392. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/generate_params_table.py +0 -0
  393. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/image.py +0 -0
  394. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/module.py +0 -0
  395. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/network.py +0 -0
  396. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/parser.py +0 -0
  397. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/skymap_coord.py +0 -0
  398. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/utils/yaml_helper.py +0 -0
  399. {pycwb-0.26.0/pycwb/vendor/autoencoder → pycwb-0.27.0/pycwb/vendor}/__init__.py +0 -0
  400. {pycwb-0.26.0/pycwb/vendor/lib → pycwb-0.27.0/pycwb/vendor/autoencoder}/__init__.py +0 -0
  401. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/vendor/autoencoder/cwb_autoencoder.h5 +0 -0
  402. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/vendor/example.yaml +0 -0
  403. {pycwb-0.26.0/pycwb/workflow → pycwb-0.27.0/pycwb/vendor/lib}/__init__.py +0 -0
  404. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/vendor/web_viewer/event_dump.html +0 -0
  405. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/vendor/web_viewer/styles.css +0 -0
  406. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/vendor/web_viewer/viewer.html +0 -0
  407. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/workflow/batch.py +0 -0
  408. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/workflow/merge.py +0 -0
  409. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/workflow/run.py +0 -0
  410. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/workflow/subflow/__init__.py +0 -0
  411. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/workflow/subflow/postprocess_and_plots.py +0 -0
  412. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/workflow/subflow/prepare_job_runs.py +0 -0
  413. {pycwb-0.26.0 → pycwb-0.27.0}/pycwb/workflow/subflow/process_job_segment.py +0 -0
  414. {pycwb-0.26.0 → pycwb-0.27.0}/pyproject.toml +0 -0
  415. {pycwb-0.26.0 → pycwb-0.27.0}/setup.cfg +0 -0
  416. {pycwb-0.26.0 → pycwb-0.27.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PycWB
3
- Version: 0.26.0
3
+ Version: 0.27.0
4
4
  Summary: A Python package for coherent gravitational wave burst analysis
5
5
  Home-page: https://git.ligo.org/yumeng.xu/pycwb
6
6
  Author-email: The PycWB team <yumeng.xu@ligo.org>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PycWB
3
- Version: 0.26.0
3
+ Version: 0.27.0
4
4
  Summary: A Python package for coherent gravitational wave burst analysis
5
5
  Home-page: https://git.ligo.org/yumeng.xu/pycwb
6
6
  Author-email: The PycWB team <yumeng.xu@ligo.org>
@@ -175,6 +175,7 @@ examples/benchmark/input/OPBM.period
175
175
  examples/benchmark/input/OPBM_H1.frames
176
176
  examples/benchmark/input/OPBM_L1.frames
177
177
  examples/colab/pycWB_GW150914.ipynb
178
+ examples/gwosc/user_parameters.yaml
178
179
  examples/injection/pycwb_injection.ipynb
179
180
  examples/injection/user_parameters_injection.yaml
180
181
  examples/injection/wdmXTalk/OverlapCatalog16-1024.bin
@@ -240,6 +241,7 @@ pycwb/cli/__init__.py
240
241
  pycwb/cli/batch_runner.py
241
242
  pycwb/cli/batch_setup.py
242
243
  pycwb/cli/flow.py
244
+ pycwb/cli/gwosc.py
243
245
  pycwb/cli/merge_catalog.py
244
246
  pycwb/cli/post_process.py
245
247
  pycwb/cli/run.py
@@ -282,6 +284,8 @@ pycwb/modules/gracedb/__init__.py
282
284
  pycwb/modules/gracedb/gracedb.py
283
285
  pycwb/modules/gracedb/module.yaml
284
286
  pycwb/modules/gracedb/test_gracedb.py
287
+ pycwb/modules/gwosc/__init__.py
288
+ pycwb/modules/gwosc/gwosc.py
285
289
  pycwb/modules/job_segment/__init__.py
286
290
  pycwb/modules/job_segment/dq_segment.py
287
291
  pycwb/modules/job_segment/frame.py
@@ -327,6 +331,7 @@ pycwb/modules/reconstruction/__init__.py
327
331
  pycwb/modules/reconstruction/getMRAwaveform.py
328
332
  pycwb/modules/reconstruction/module.yaml
329
333
  pycwb/modules/report/__init__.py
334
+ pycwb/modules/report/continues_poisson.py
330
335
  pycwb/modules/report/far_rho.py
331
336
  pycwb/modules/report/read_results.py
332
337
  pycwb/modules/report/report.py
@@ -395,6 +400,7 @@ pycwb/vendor/example.yaml
395
400
  pycwb/vendor/autoencoder/__init__.py
396
401
  pycwb/vendor/autoencoder/cwb_autoencoder.h5
397
402
  pycwb/vendor/lib/__init__.py
403
+ pycwb/vendor/template/gwosc/user_parameters.yaml
398
404
  pycwb/vendor/web_viewer/event_dump.html
399
405
  pycwb/vendor/web_viewer/styles.css
400
406
  pycwb/vendor/web_viewer/viewer.html
@@ -12,6 +12,7 @@ import pycwb.cli.batch_runner as batch_runner
12
12
  import pycwb.cli.xtalk as xtalk
13
13
  import pycwb.cli.merge_catalog as merge_catalog
14
14
  import pycwb.cli.post_process as post_process
15
+ import pycwb.cli.gwosc as gwosc
15
16
 
16
17
  def main():
17
18
  parser = argparse.ArgumentParser(prog='pycwb')
@@ -51,6 +52,11 @@ def main():
51
52
  post_process.init_parser(post_process_parser)
52
53
  post_process_parser.set_defaults(func=post_process.command)
53
54
 
55
+ #gwosc subcommand
56
+ gwosc_parser = subparsers.add_parser('gwosc', help='Download files to run a pycwb analysis of a GW event of your choice')
57
+ gwosc.init_parser(gwosc_parser)
58
+ gwosc_parser.set_defaults(func=gwosc.command)
59
+
54
60
  args = parser.parse_args()
55
61
  if hasattr(args, 'func'):
56
62
  args.func(args)
@@ -124,6 +124,10 @@ You can get help by running the command with the ``-h`` option. Here are the cur
124
124
  - Setup batch run
125
125
  * - ``pycwb batch-runner``
126
126
  - Runner for batch run, used for the job submission
127
+ * - ``pycwb post-process``
128
+ - Run the post process workflow
129
+ * - ``pycwb gwosc``
130
+ - Download data from GWOSC and setup the search
127
131
  * - ``pycwb flow``
128
132
  - Run search with prefect flow
129
133
  * - ``pycwb xtalk``
@@ -0,0 +1,89 @@
1
+
2
+ outputDir: "output"
3
+ nproc: 6
4
+ plot_trigger: True
5
+ plot_waveform: True
6
+ plot_injection: True
7
+ plot_sky_map: True
8
+ save_sky_map: True
9
+ save_injection: True
10
+ save_waveform: True
11
+
12
+ analysis: "2G"
13
+ cfg_search: "r"
14
+
15
+ optim: False
16
+
17
+ ###### network configuration ######
18
+ ifo: ["L1","H1"]
19
+ refIFO: "L1"
20
+
21
+ inRate: 16384
22
+ # lags
23
+ lagSize: 1
24
+ lagStep: 1.
25
+ lagOff: 0
26
+ lagMax: 0
27
+
28
+ # superlags
29
+ slagSize: 0 # number of super lags (simulation=1) - if slagSize=0 -> Standard Segments
30
+ slagMin: 0
31
+ slagMax: 0
32
+ slagOff: 0
33
+
34
+ # job
35
+ segLen: 1200
36
+ segMLS: 600
37
+ segTHR: 200
38
+ segEdge: 10
39
+
40
+ # frequency
41
+ fLow: 16.
42
+ fHigh: 1024.
43
+
44
+
45
+ levelR: 3
46
+ l_low: 4 # low frequency resolution level // std (sthr = 2)
47
+ l_high: 10 # high frequency resolution level // std (sthr = 8)
48
+
49
+ wdmXTalk: "wdmXTalk/OverlapCatalog16-1024.bin"
50
+
51
+ healpix: 7
52
+
53
+ ###### cWB production thresholds & regulators ######
54
+
55
+ bpp: 0.001
56
+ subnet: 0.5
57
+ subcut: 0.0
58
+ netRHO: 5.5
59
+ netCC: 0.5
60
+ Acore: 1.7
61
+ Tgap: 0.2
62
+ Fgap: 128.0
63
+ delta: 0.5
64
+ cfg_gamma: -1.0
65
+ LOUD: 300
66
+
67
+ pattern: 5
68
+
69
+ iwindow: 30
70
+
71
+ nSky: 196608
72
+
73
+ # simulation
74
+ simulation: None #PREVIOUSLY COMMENTED
75
+ nfactor: 1
76
+
77
+ channelNamesRaw: ["L1:GWOSC-4KHZ_R1_STRAIN","H1:GWOSC-4KHZ_R1_STRAIN"]
78
+ frFiles: ["./GW170104/input/L1_frames.in", "./GW170104/input/H1_frames.in"]
79
+
80
+ DQF: [
81
+ [ "L1" ,"./GW170104/input/L1_cat0.txt", CWB_CAT0, 0., False, False ],
82
+ [ "H1" ,"./GW170104/input/H1_cat0.txt", CWB_CAT0, 0., False, False ],
83
+ [ "L1" ,"./GW170104/input/L1_cat1.txt", CWB_CAT1, 0., False, False ],
84
+ [ "H1" ,"./GW170104/input/H1_cat1.txt", CWB_CAT1, 0., False, False ],
85
+ [ "L1" ,"./GW170104/input/L1_cat2.txt", CWB_CAT2, 0., False, False ],
86
+ [ "H1" ,"./GW170104/input/H1_cat2.txt", CWB_CAT2, 0., False, False ],
87
+ [ "L1" ,"./GW170104/input/cwb_period.txt", CWB_CAT0, 0., False, False ],
88
+ [ "H1" ,"./GW170104/input/cwb_period.txt", CWB_CAT0, 0., False, False ],
89
+ ]
@@ -4,14 +4,14 @@ steps:
4
4
  - action: report.read_results.read_triggers
5
5
  args:
6
6
  run_dir: background
7
- filters:
8
- - "lag[0]>0"
7
+ prefilters:
8
+ - "shift[0] != 0 or shift[1] != 0 or lag != 0"
9
9
  output_alias: 'background'
10
10
  - action: report.read_results.read_live_time
11
11
  args:
12
12
  run_dir: background
13
13
  filters:
14
- - "lag[0]>0"
14
+ - "shift[0] != 0 or shift[1] != 0 or lag != 0"
15
15
  output_alias: 'livetime'
16
16
  - action: report.far_rho.far_rho # this module will calculate the far_rho and pass the output to the downstream modules
17
17
  args:
@@ -24,14 +24,18 @@ steps:
24
24
  - action: report.read_results.read_triggers
25
25
  args:
26
26
  run_dir: background
27
- filters:
28
- - "lag[0]==0"
27
+ prefilters:
28
+ - "lag==0"
29
+ - "slag[0]==0"
30
+ - "slag[1]==0"
29
31
  output_alias: 'zero_lag'
30
32
  - action: report.read_results.read_live_time
31
33
  args:
32
34
  run_dir: background
33
35
  filters:
34
- - "lag[0]==0"
36
+ - "lag==0"
37
+ - "shift[0]==0"
38
+ - "shift[1]==0"
35
39
  output_alias: 'livetime_zerolag'
36
40
  - action: report.report.report_zero_lag
37
41
  args:
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.26.0'
16
- __version_tuple__ = version_tuple = (0, 26, 0)
15
+ __version__ = version = '0.27.0'
16
+ __version_tuple__ = version_tuple = (0, 27, 0)
@@ -0,0 +1,84 @@
1
+ import os
2
+ import shutil
3
+ import pycwb
4
+ from pycwb.modules.gwosc.gwosc import download_frames_files
5
+ from pycwb.modules.gwosc.gwosc import get_cat_files
6
+ from pycwb.modules.gwosc.gwosc import analysis_period
7
+
8
+ def init_parser(parser):
9
+
10
+ # Select the GW event
11
+ parser.add_argument('event_name',
12
+ metavar='event_name', # Corrected metavar
13
+ type=str,
14
+ help='The name of the GW event you want (e.g., "GW150914").')
15
+
16
+ # Time left for cWB analysis
17
+ parser.add_argument('--time_left',
18
+ metavar='time_left',
19
+ type=float,
20
+ default=610,
21
+ help='The pycWB analysis interval is '
22
+ '[event_gps_time - time_left; event_gps_time + time_right]. Default: 610 seconds.')
23
+
24
+ # Time right for cWB analysis
25
+ parser.add_argument('--time_right',
26
+ metavar='time_right',
27
+ type=float,
28
+ default=610,
29
+ help='The pycWB analysis interval is: '
30
+ '[event_gps_time - time_left; event_gps_time + time_right]. Default: 610 seconds.')
31
+
32
+ # List of detectors
33
+ parser.add_argument('--ifos',
34
+ metavar='ifos',
35
+ type=str,
36
+ nargs='+',
37
+ default=['H1', 'L1'],
38
+ help='List of the detectors you want data from. For example: --ifos H1 L1. The default is H1 L1.')
39
+
40
+ parser.add_argument('--user_parameters_path',
41
+ metavar='user_parameters_path',
42
+ type=str,
43
+ default=None,
44
+ help='Path of the user_parameters file, default pycwb/vendor/template/gwosc/')
45
+
46
+
47
+ def copy_user_parameters(user_parameters_path):
48
+
49
+
50
+ file_to_copy = os.path.join(user_parameters_path, 'user_parameters.yaml')
51
+
52
+ # Check if the file exists
53
+ if not os.path.exists(file_to_copy):
54
+ raise FileNotFoundError(f"The file {file_to_copy} does not exist. The default file is {file_to_copy}")
55
+
56
+ # Define the destination directory for the event
57
+ destination_dir = os.path.join(".")
58
+ os.makedirs(destination_dir, exist_ok=True) # Ensure the directory exists
59
+
60
+ # Define the destination file path
61
+ destination_file = os.path.join(destination_dir, os.path.basename(file_to_copy))
62
+
63
+ # Copy the file
64
+ shutil.copy(file_to_copy, destination_file)
65
+ print(f"Copied {file_to_copy} to {destination_file}")
66
+
67
+
68
+ def command(args):
69
+
70
+ if not all(ifo in ["H1", "L1"] for ifo in args.ifos) and not args.user_parameters_path:
71
+ raise ValueError("Only H1 and L1 are supported in ifos with the default user_parameters file, "
72
+ "please provide a custom user_parameters file")
73
+
74
+ output = './input'
75
+
76
+ if args.user_parameters_path is None:
77
+ package_abs_path = os.path.dirname(os.path.abspath(pycwb.__file__))
78
+ args.user_parameters_path = os.path.join(package_abs_path, 'vendor/template/gwosc')
79
+ print(f'{args.user_parameters_path}')
80
+
81
+ download_frames_files(args.event_name, output, args.ifos)
82
+ get_cat_files(args.event_name, output, args.ifos)
83
+ analysis_period(args.event_name, output, args.time_left, args.time_right, args.ifos)
84
+ copy_user_parameters(args.user_parameters_path)
@@ -0,0 +1,142 @@
1
+ from gwosc.datasets import event_gps, event_detectors, event_segment
2
+ from gwosc.locate import get_urls
3
+ from gwosc.timeline import get_segments
4
+ import os
5
+ import requests
6
+
7
+ def event_info(event_name, ifos):
8
+ """
9
+ Retrieve key information about the specified gravitational wave event.
10
+
11
+ Parameters:
12
+ -----------
13
+ event_name : str
14
+ The name of the gravitational wave event (e.g., "GW150914").
15
+
16
+ Returns:
17
+ --------
18
+ tuple :
19
+ - A list of detectors that observed the event, filtered to include only allowed detectors.
20
+ - The GPS time of the event.
21
+ - The start and end GPS time of the event segment.
22
+ """
23
+ allowed_cWB_detectors = ifos
24
+ detectors = event_detectors(event_name)
25
+ detectors = [detector for detector in detectors if detector in allowed_cWB_detectors]
26
+ event_gps_time = event_gps(event_name)
27
+ start_time, end_time = event_segment(event_name)
28
+
29
+ return detectors, event_gps_time, start_time, end_time
30
+
31
+ def download_frames_files(event_name, output_dir, ifos):
32
+ """
33
+ Download frame files for the given gravitational wave event and save a list of their paths.
34
+
35
+ Parameters:
36
+ -----------
37
+ event_name : str
38
+ The name of the gravitational wave event (e.g., "GW150914").
39
+ output_dir : str
40
+ The directory where frame files and associated lists will be saved.
41
+
42
+ Returns:
43
+ --------
44
+ None
45
+ """
46
+ os.makedirs(output_dir, exist_ok=True)
47
+
48
+ detectors, event_gps_time, start_time, end_time = event_info(event_name, ifos)
49
+
50
+ for detector in detectors:
51
+ urls = get_urls(detector=detector, start=start_time, end=end_time, dataset=event_name, format='gwf', sample_rate=4096)
52
+
53
+ # Exclude files with '-32.gwf'
54
+ urls = [url for url in urls if "-32.gwf" not in url]
55
+
56
+ frame_dir = os.path.join(f"{output_dir}/frames/", f"{detector}_frames")
57
+ os.makedirs(frame_dir, exist_ok=True)
58
+
59
+ local_paths = []
60
+
61
+ # Download files
62
+ for url in urls:
63
+ frame_file_path = os.path.join(frame_dir, os.path.basename(url))
64
+ print(f"Downloading {frame_file_path} from {url}...")
65
+ response = requests.get(url)
66
+ with open(frame_file_path, 'wb') as frame_file:
67
+ frame_file.write(response.content)
68
+ local_paths.append(frame_file_path)
69
+
70
+ # Save *_frames.in file
71
+ frame_list_file = os.path.join(output_dir, f"{detector}_frames.in")
72
+ with open(frame_list_file, 'w') as f:
73
+ for path in local_paths:
74
+ f.write(path + "\n")
75
+
76
+ print(f"Frame list saved to {frame_list_file}")
77
+
78
+ def get_cat_files(event_name, output_dir, ifos):
79
+ """
80
+ Generate files containing Data Quality (DQ) segments for the given gravitational wave event.
81
+
82
+ Parameters:
83
+ -----------
84
+ event_name : str
85
+ The name of the gravitational wave event (e.g., "GW150914").
86
+ output_dir : str
87
+ The directory where DQ segment files will be saved.
88
+
89
+ Returns:
90
+ --------
91
+ None
92
+ """
93
+ os.makedirs(output_dir, exist_ok=True)
94
+
95
+ detectors, event_gps_time, start_time, end_time = event_info(event_name, ifos)
96
+
97
+ for detector in detectors:
98
+ for category, cat_name in [
99
+ (f'{detector}_DATA', f'{detector}_cat0.txt'),
100
+ (f'{detector}_BURST_CAT1', f'{detector}_cat1.txt'),
101
+ (f'{detector}_BURST_CAT2', f'{detector}_cat2.txt'),
102
+ ]:
103
+ segments = get_segments(category, start_time, end_time)
104
+ cat_file_path = os.path.join(output_dir, cat_name)
105
+
106
+ with open(cat_file_path, 'w') as cat_file:
107
+ for segment in segments:
108
+ cat_file.write(f"{segment[0]} {segment[1]}\n")
109
+
110
+ print(f"Segments saved in {cat_file_path}")
111
+
112
+ def analysis_period(event_name, output_dir, time_left, time_right, ifos):
113
+ """
114
+ Calculate the analysis period for cWB based on the event GPS time and save it to a file.
115
+
116
+ This function calculates the start and end times for the cWB analysis period by subtracting
117
+ and adding the specified offsets (`time_left` and `time_right`) to the GPS time of the
118
+ gravitational wave event. The resulting period is saved in a file named `cwb_period.txt`.
119
+
120
+ Parameters:
121
+ -----------
122
+ event_name : str
123
+ The name of the gravitational wave event (e.g., "GW150914").
124
+ time_left : int, optional
125
+ Time in seconds to subtract from the event GPS time to determine the start of the analysis period
126
+ (default is 610 seconds).
127
+ time_right : int, optional
128
+ Time in seconds to add to the event GPS time to determine the end of the analysis period
129
+ (default is 610 seconds).
130
+
131
+ Returns:
132
+ --------
133
+ None
134
+ """
135
+ _, event_gps_time, _, _ = event_info(event_name, ifos)
136
+ print(f"Event gps time: {event_gps_time}")
137
+ analysis_period = [event_gps_time - time_left, event_gps_time + time_right]
138
+
139
+ cwb_period_file_path = os.path.join(output_dir, "cwb_period.txt")
140
+ with open(cwb_period_file_path, 'w') as cwb_period_file:
141
+ cwb_period_file.write(f"{analysis_period[0]} {analysis_period[1]}\n")
142
+ print(f"cWB analysis period saved in {cwb_period_file_path}")
@@ -0,0 +1,129 @@
1
+ """
2
+ This module is inspired by ROOT::TMath::Poisson and ROOT::TF1::GetQuantiles
3
+ """
4
+ import numpy as np
5
+ from scipy.special import gammaln
6
+ from scipy.integrate import quad
7
+ from scipy.interpolate import interp1d
8
+ from numba import njit, prange
9
+
10
+
11
+ @njit(fastmath=True,error_model='numpy',parallel=True)
12
+ def gammaln_nr(z):
13
+ """Numerical Recipes 6.1"""
14
+ #Don't use global variables.. (They only can be changed if you recompile the function)
15
+ coefs = np.array([
16
+ 57.1562356658629235, -59.5979603554754912,
17
+ 14.1360979747417471, -0.491913816097620199,
18
+ .339946499848118887e-4, .465236289270485756e-4,
19
+ -.983744753048795646e-4, .158088703224912494e-3,
20
+ -.210264441724104883e-3, .217439618115212643e-3,
21
+ -.164318106536763890e-3, .844182239838527433e-4,
22
+ -.261908384015814087e-4, .368991826595316234e-5])
23
+
24
+ y = z
25
+ tmp = z + 5.24218750000000000
26
+ tmp = (z + 0.5) * np.log(tmp) - tmp
27
+ ser = 0.999999999999997092
28
+
29
+ n = coefs.shape[0]
30
+ for j in range(n):
31
+ y = y + 1.
32
+ ser = ser + coefs[j] / y
33
+
34
+ return tmp + np.log(2.5066282746310005 * ser / z)
35
+
36
+
37
+ @njit(fastmath=True,error_model='numpy',parallel=True)
38
+ def gammaln_nr_p(z):
39
+ """Numerical Recipes 6.1"""
40
+ #Don't use global variables.. (They only can be changed if you recompile the function)
41
+ coefs = np.array([
42
+ 57.1562356658629235, -59.5979603554754912,
43
+ 14.1360979747417471, -0.491913816097620199,
44
+ .339946499848118887e-4, .465236289270485756e-4,
45
+ -.983744753048795646e-4, .158088703224912494e-3,
46
+ -.210264441724104883e-3, .217439618115212643e-3,
47
+ -.164318106536763890e-3, .844182239838527433e-4,
48
+ -.261908384015814087e-4, .368991826595316234e-5])
49
+
50
+ out=np.empty(z.shape[0])
51
+
52
+
53
+ for i in prange(z.shape[0]):
54
+ y = z[i]
55
+ tmp = z[i] + 5.24218750000000000
56
+ tmp = (z[i] + 0.5) * np.log(tmp) - tmp
57
+ ser = 0.999999999999997092
58
+
59
+ n = coefs.shape[0]
60
+ for j in range(n):
61
+ y = y + 1.
62
+ ser = ser + coefs[j] / y
63
+
64
+ out[i] = tmp + np.log(2.5066282746310005 * ser / z[i])
65
+ return out
66
+
67
+
68
+ @njit
69
+ def continues_poisson(x, mu):
70
+ """
71
+ compute the Poisson distribution function for (x,mu)
72
+ The Poisson PDF is implemented by means of Euler's Gamma-function
73
+ (for the factorial), so for any x integer argument it is correct.
74
+ BUT for non-integer x values, it IS NOT equal to the Poisson distribution.
75
+
76
+ Parameters
77
+ ----------
78
+ x : float or array_like
79
+ The number of events
80
+ mu : float
81
+ The mean number of events
82
+
83
+ Returns
84
+ -------
85
+ float or array_like
86
+ The Poisson distribution function for (x, mu)
87
+ """
88
+ return np.exp(x * np.log(mu) - mu - gammaln_nr(x + 1))
89
+
90
+
91
+ def get_percentiles(mu, percentiles):
92
+ """
93
+ Get the quantiles for a Poisson distribution with mean mu and given percentiles
94
+
95
+ Parameters
96
+ ----------
97
+ mu : float
98
+ The mean number of events
99
+ percentiles : float or array_like
100
+ The percentiles to compute the quantiles for
101
+
102
+ Returns
103
+ -------
104
+ float or array_like
105
+ The quantiles for the Poisson distribution with mean mu and given percentiles
106
+ """
107
+ max_val = 10 * mu if mu > 10 else 100 # Maximum range for interpolation
108
+ x = np.linspace(0, max_val, 1000) # Fine grid of x-values for interpolation
109
+
110
+ # integrate the pmf to get the cdf
111
+ # FIXME: the integration can't reach 1 for mu <= 2
112
+ cdf = [quad(continues_poisson, 0, x_val, args=(mu))[0] for x_val in x]
113
+
114
+ # interpolate the cdf to get the quantiles
115
+ interpolate = interp1d(cdf, x, bounds_error=False, fill_value="extrapolate")
116
+ return interpolate(percentiles)
117
+
118
+
119
+ def get_percentiles_ROOT(mu, prob_sum):
120
+ import ROOT
121
+
122
+ q = np.array([0., 0., 0., 0., 0., 0.])
123
+ max_val = 10 * mu if mu > 10 else 100
124
+ f = ROOT.TF1("poisson", "TMath::Poisson(x,[1])", 0, max_val)
125
+ f.SetParameter(1, mu)
126
+ f.SetNpx(1000)
127
+
128
+ f.GetQuantiles(6, q, prob_sum)
129
+ return q
@@ -29,7 +29,7 @@ def list_dict_filter(data, conditions, name='event'):
29
29
  print(f"number of {name} after filtering: {len(filtered_events)}")
30
30
  return filtered_events
31
31
 
32
- def read_triggers(work_dir, run_dir, filters=None, file='catalog/catalog.json',**kwargs):
32
+ def read_triggers(work_dir, run_dir, prefilters=None, filters=None, file='catalog/catalog.json',**kwargs):
33
33
  print(f"Reading results from {os.path.join(work_dir, run_dir, file)}")
34
34
  catalog = read_catalog(os.path.join(work_dir, run_dir, file))
35
35
 
@@ -40,6 +40,8 @@ def read_triggers(work_dir, run_dir, filters=None, file='catalog/catalog.json',*
40
40
  # print(f"Reading event {i}/{n_events}", end='\r')
41
41
  # event_file = os.path.join(work_dir, run_dir, f"trigger/trigger_{event['job_id']}_{event['id']}/event.json")
42
42
  # events.append(read_event(event_file))
43
+ if prefilters:
44
+ catalog['events'] = list_dict_filter(catalog['events'], prefilters, name='catalog triggers')
43
45
 
44
46
  with ThreadPoolExecutor() as executor:
45
47
  futures = [executor.submit(read_event, os.path.join(work_dir, run_dir, f"trigger/trigger_{event['job_id']}_{event['id']}/event.json"))
@@ -1,6 +1,7 @@
1
1
  import matplotlib.pyplot as plt
2
2
  import numpy as np
3
3
  from scipy.stats import poisson
4
+ from .continues_poisson import get_percentiles, get_percentiles_ROOT
4
5
 
5
6
 
6
7
  def report(far_rho_source=None, **kwargs):
@@ -100,19 +101,28 @@ def report_zero_lag(source, livetime_key='livetime_zerolag', far_rho_source='far
100
101
 
101
102
  # Calculate the Poisson confidence intervals
102
103
  # generate the ifar range which is denser at the higher ifar
103
- ifar_range = np.linspace(ifar_min, ifar_max, 100000)
104
+ ifar_range = np.linspace(ifar_min, ifar_max, 500)
104
105
  n_events_range = livetime_in_years / ifar_range
105
106
  sigma_levels = [1, 2, 3]
106
107
  confidence_levels = [0.6827, 0.9545, 0.9973]
107
- conf_intervals = {sigma: poisson.interval(confidence, n_events_range) for sigma, confidence in zip(sigma_levels, confidence_levels)}
108
+ # conf_intervals = {sigma: poisson.interval(confidence, n_events_range) for sigma, confidence in zip(sigma_levels, confidence_levels)}
109
+ # # Plot the Poisson confidence intervals
110
+ # colors = ['gray', 'gray', 'gray']
111
+ # for sigma, color in zip(sigma_levels, colors):
112
+ # lower, upper = conf_intervals[sigma]
113
+ precentiles = np.array([[(1 - c) / 2, 1 - (1 - c) / 2] for c in confidence_levels]).reshape(-1)
114
+ #conf_intervals = {sigma: poisson.interval(confidence, n_events_range) for sigma, confidence in zip(sigma_levels, confidence_levels)}
115
+ conf_intervals = np.array([get_percentiles_ROOT(n, precentiles).reshape((len(confidence_levels), 2)) for n in n_events_range])
108
116
  # Plot the Poisson confidence intervals
109
117
  colors = ['gray', 'gray', 'gray']
110
118
  for sigma, color in zip(sigma_levels, colors):
111
- lower, upper = conf_intervals[sigma]
112
- plt.fill_between(ifar_range, lower, upper, color=color, alpha=0.6 / sigma, label=f'{sigma} sigma', linewidth=0.4)
119
+ lower, upper = conf_intervals[:, sigma-1, 0], conf_intervals[:, sigma-1, 1]
120
+ plt.fill_between(ifar_range, lower, upper, color=color, alpha=0.6 / sigma, label=f'{sigma} sigma', linewidth=0.4,interpolate=True)
113
121
 
114
122
  plt.xlabel('ifar')
115
123
  plt.ylabel('n_events')
124
+ plt.xlim(ifar_min, ifar_max)
125
+ plt.ylim(8e-1, max(n_events_range))
116
126
  plt.xscale('log')
117
127
  plt.yscale('log')
118
128
  plt.legend()
@@ -160,7 +160,7 @@ class Event:
160
160
  self.neted = [0, 0, 0]
161
161
  self.eventID = [0, 0, 0]
162
162
  self.type = [0, 0, 0]
163
- self.slag = shifts if shifts else [0, 0, 0]
163
+ self.slag = shifts if shifts is not None else [0, 0, 0]
164
164
 
165
165
 
166
166
  pwc = net.getwc(LAG)