PycWB 1.0.0a1__tar.gz → 1.0.0a2__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 (648) hide show
  1. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PKG-INFO +1 -1
  2. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/PKG-INFO +1 -1
  3. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/SOURCES.txt +1 -0
  4. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/_version.py +3 -3
  5. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/catalog.py +7 -0
  6. pycwb-1.0.0a2/pycwb/modules/catalog/tests/test_write_table_atomic_permissions.py +94 -0
  7. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/sky_distribution.py +6 -2
  8. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/dpf.py +16 -16
  9. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/likelihood.py +22 -9
  10. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/sky_stat.py +2 -2
  11. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/typing.py +1 -0
  12. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/utils.py +3 -3
  13. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/data_quality_file.py +9 -9
  14. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/.gitattributes +0 -0
  15. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/.gitignore +0 -0
  16. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/.gitlab-ci.yml +0 -0
  17. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/.readthedocs.yaml +0 -0
  18. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/Dockerfile +0 -0
  19. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/LICENSE +0 -0
  20. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/MANIFEST.in +0 -0
  21. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/Makefile +0 -0
  22. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/dependency_links.txt +0 -0
  23. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/requires.txt +0 -0
  24. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/top_level.txt +0 -0
  25. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/README.md +0 -0
  26. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/README.md +0 -0
  27. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/README.md +0 -0
  28. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/data_gen.py +0 -0
  29. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/parquet_perf.py +0 -0
  30. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/parquet_read_perf.py +0 -0
  31. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/read_pref.py +0 -0
  32. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/README.md +0 -0
  33. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/benchmark_cpu_vs_gpu.py +0 -0
  34. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/data_generator.py +0 -0
  35. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/data_generator_native.py +0 -0
  36. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/perf_cuda.py +0 -0
  37. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/performance_test_dpf.py +0 -0
  38. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/performance_test_opt_sky.py +0 -0
  39. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/user_parameters_injection.yaml +0 -0
  40. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/user_parameters_injection_native_1030.yaml +0 -0
  41. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/user_parameters_likelihood_test.yaml +0 -0
  42. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/workflow_with_new_likelihood.py +0 -0
  43. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/README.md +0 -0
  44. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/benchmark_queries.py +0 -0
  45. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/generate_params.py +0 -0
  46. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/parquet_perf.ipynb +0 -0
  47. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/write_parquet.py +0 -0
  48. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/README.md +0 -0
  49. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/generate_data.py +0 -0
  50. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/generate_data_2.py +0 -0
  51. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/performance_supercluster.py +0 -0
  52. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/user_parameters_injection.yaml +0 -0
  53. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/bin/pycwb +0 -0
  54. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/bin/pycwb_search +0 -0
  55. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/bin/pycwb_show +0 -0
  56. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Biorthogonal.cc +0 -0
  57. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Biorthogonal.hh +0 -0
  58. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/CMakeLists.txt +0 -0
  59. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Daubechies.cc +0 -0
  60. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Daubechies.hh +0 -0
  61. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/FourierCoefficients.icc +0 -0
  62. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Haar.cc +0 -0
  63. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Haar.hh +0 -0
  64. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/LineFilter.cc +0 -0
  65. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/LineFilter.hh +0 -0
  66. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Makefile +0 -0
  67. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Meyer.cc +0 -0
  68. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Meyer.hh +0 -0
  69. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Symlet.cc +0 -0
  70. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Symlet.hh +0 -0
  71. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmArray.cc +0 -0
  72. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmArray.hh +0 -0
  73. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmArraySSE.cc +0 -0
  74. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmArraySSE.hh +0 -0
  75. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmObjArray.cc +0 -0
  76. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmObjArray.hh +0 -0
  77. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WDM.cc +0 -0
  78. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WDM.hh +0 -0
  79. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WDMOverlap.cc +0 -0
  80. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WDMOverlap.hh +0 -0
  81. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WaveDWT.cc +0 -0
  82. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WaveDWT.hh +0 -0
  83. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Wavelet.cc +0 -0
  84. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Wavelet.hh +0 -0
  85. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/alm.hh +0 -0
  86. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/build.sh +0 -0
  87. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cluster.cc +0 -0
  88. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cluster.hh +0 -0
  89. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cmake/FindHealpix.cmake +0 -0
  90. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cmake/FindeBBH.cmake +0 -0
  91. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cmake/install_function.cmake +0 -0
  92. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/constants.hh +0 -0
  93. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/detector.cc +0 -0
  94. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/detector.hh +0 -0
  95. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/injection.cc +0 -0
  96. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/injection.hh +0 -0
  97. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/lossy.cc +0 -0
  98. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/lossy.hh +0 -0
  99. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/monster.cc +0 -0
  100. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/monster.hh +0 -0
  101. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netcluster.cc +0 -0
  102. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netcluster.hh +0 -0
  103. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netevent.cc +0 -0
  104. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netevent.hh +0 -0
  105. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netpixel.cc +0 -0
  106. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netpixel.hh +0 -0
  107. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/network.cc +0 -0
  108. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/network.hh +0 -0
  109. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/pycwb.hh +0 -0
  110. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/rdfr.cc +0 -0
  111. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/rdfr.hh +0 -0
  112. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/readframe.cc +0 -0
  113. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/readframe.hh +0 -0
  114. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/readfrfile.cc +0 -0
  115. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/readfrfile.hh +0 -0
  116. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/regression.cc +0 -0
  117. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/regression.hh +0 -0
  118. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/skycoord.hh +0 -0
  119. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/skymap.cc +0 -0
  120. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/skymap.hh +0 -0
  121. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/sseries.cc +0 -0
  122. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/sseries.hh +0 -0
  123. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/time.cc +0 -0
  124. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/time.hh +0 -0
  125. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wat.hh +0 -0
  126. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watasm.S +0 -0
  127. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watasm_elf64.o +0 -0
  128. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watavx.hh +0 -0
  129. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watbranch.in +0 -0
  130. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watfun.hh +0 -0
  131. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wathash.in +0 -0
  132. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watplot.cc +0 -0
  133. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watplot.hh +0 -0
  134. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watsse.hh +0 -0
  135. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wattag.in +0 -0
  136. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/waturl.in +0 -0
  137. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watversion.hh.in +0 -0
  138. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavearray.cc +0 -0
  139. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavearray.hh +0 -0
  140. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavecomplex.cc +0 -0
  141. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavecomplex.hh +0 -0
  142. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavecor.cc +0 -0
  143. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavecor.hh +0 -0
  144. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavefft.cc +0 -0
  145. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavefft.hh +0 -0
  146. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavelet_LinkDef.h +0 -0
  147. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavelinefilter.cc +0 -0
  148. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavelinefilter.hh +0 -0
  149. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/waverdc.cc +0 -0
  150. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/waverdc.hh +0 -0
  151. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wseries.cc +0 -0
  152. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wseries.hh +0 -0
  153. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wslice.hh +0 -0
  154. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/0.installation_guide.md +0 -0
  155. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/1.initialisation_guide.md +0 -0
  156. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/2.test_interactive_multistages_2G_analysis.md +0 -0
  157. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/3.run_pycwb_with_yaml_config.md +0 -0
  158. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/4.py_cwb_inet_2G.md +0 -0
  159. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/5.cwb2G_analyse.md +0 -0
  160. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/6.wat_codes_notes.md +0 -0
  161. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/Makefile +0 -0
  162. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/dev/mr_description_guide.md +0 -0
  163. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/dev/review_guide.md +0 -0
  164. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/diagram.py +0 -0
  165. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/likelihood/likelihoodWP.md +0 -0
  166. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/likelihood/likelihoodWPGPU_bottleneck_report.md +0 -0
  167. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/make.bat +0 -0
  168. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/_static/.keep +0 -0
  169. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/_templates/.keep +0 -0
  170. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/conf.py +0 -0
  171. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/credit.rst +0 -0
  172. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/index.rst +0 -0
  173. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/install.rst +0 -0
  174. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/mod_cwb.rst +0 -0
  175. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/package.rst +0 -0
  176. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/schema.rst +0 -0
  177. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_batch_inj.rst +0 -0
  178. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_customized_wf_gen.rst +0 -0
  179. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_injection.rst +0 -0
  180. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_multi_injection.rst +0 -0
  181. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_search.rst +0 -0
  182. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorials.rst +0 -0
  183. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/workflow.png +0 -0
  184. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/Dockerfile +0 -0
  185. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/Dockerfile.ci +0 -0
  186. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/Dockerfile.ci-conda +0 -0
  187. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/Dockerfile.ci-native +0 -0
  188. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/environment.yml +0 -0
  189. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/mamba/Dockerfile +0 -0
  190. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/pycwb.def +0 -0
  191. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/GW190521_search/README.md +0 -0
  192. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/GW190521_search/user_parameters.yaml +0 -0
  193. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/autoencoder/pycwb_injection.ipynb +0 -0
  194. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/autoencoder/user_parameters_injection.yaml +0 -0
  195. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/generate_parameters.py +0 -0
  196. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/pycbc_inject/hyperbolicTD/__init__.py +0 -0
  197. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/pycbc_inject/hyperbolicTD/parameters.py +0 -0
  198. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/pycbc_inject/hyperbolicTD/waveform.py +0 -0
  199. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/pycwb_injection.py +0 -0
  200. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/user_parameters_injection.yaml +0 -0
  201. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/H1_cat0.txt +0 -0
  202. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/H1_cat1.txt +0 -0
  203. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/H1_cat2.txt +0 -0
  204. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/H1_cat4.txt +0 -0
  205. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/L1_cat0.txt +0 -0
  206. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/L1_cat1.txt +0 -0
  207. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/L1_cat2.txt +0 -0
  208. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/L1_cat4.txt +0 -0
  209. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/input/OPBM.period +0 -0
  210. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/input/OPBM_H1.frames +0 -0
  211. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/input/OPBM_L1.frames +0 -0
  212. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/pycwb_mdc.py +0 -0
  213. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/user_parameters_mdc.yaml +0 -0
  214. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/catalog/process_data.md +0 -0
  215. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/colab/GW150914.ipynb +0 -0
  216. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/colab/notebook_updated/pycWB_GW150914_VScode_adapted.ipynb +0 -0
  217. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/colab/pycWB_GW150914.ipynb +0 -0
  218. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/cwb_results_conversion/convert_root_to_parquet.py +0 -0
  219. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/cwb_results_conversion/train_xgb.py +0 -0
  220. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/cwb_results_conversion/xgb_config.py +0 -0
  221. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/data_injection/README.md +0 -0
  222. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/data_injection/injection_parameters.py +0 -0
  223. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/data_injection/user_parameters.yaml +0 -0
  224. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/gwosc/user_parameters.yaml +0 -0
  225. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection/pycwb_injection.ipynb +0 -0
  226. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection/user_parameters_injection.yaml +0 -0
  227. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection/wdmXTalk/OverlapCatalog16-1024.bin +0 -0
  228. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection_with_coordinate_system/injection_module_test.ipynb +0 -0
  229. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection_with_coordinate_system/injection_parameters.py +0 -0
  230. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/lvk_sep_2023/demo.ipynb +0 -0
  231. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/lvk_sep_2023/user_parameters.yaml +0 -0
  232. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/mesa_testing/config/schema_extension.yaml +0 -0
  233. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/mesa_testing/config/user_parameters.yaml +0 -0
  234. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/mesa_testing/input/injection_parameters.py +0 -0
  235. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/mesa_testing/input/process_job_segment.py +0 -0
  236. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/multiple_injection/pycwb_injection.py +0 -0
  237. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/multiple_injection/user_parameters_injection.yaml +0 -0
  238. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/README.md +0 -0
  239. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/analyze_events.ipynb +0 -0
  240. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/injection_parameters.py +0 -0
  241. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/input/LIGO_zero_det_HP.txt +0 -0
  242. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/input/aligo_O4high.txt +0 -0
  243. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/input/avirgo_O4high_NEW.txt +0 -0
  244. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/user_parameters.yaml +0 -0
  245. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_gaussian_noise/README.md +0 -0
  246. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_gaussian_noise/injection_parameters.py +0 -0
  247. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_gaussian_noise/user_parameters.yaml +0 -0
  248. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_real_data/README.md +0 -0
  249. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_real_data/injection_parameters.py +0 -0
  250. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_real_data/user_parameters.yaml +0 -0
  251. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/README.md +0 -0
  252. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/analyze_events.ipynb +0 -0
  253. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/injection_parameters.py +0 -0
  254. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/input/aligo_O4high.txt +0 -0
  255. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/user_parameters.yaml +0 -0
  256. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/README.md +0 -0
  257. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/_test_integration.py +0 -0
  258. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/_test_pipeline.py +0 -0
  259. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/debug_run.sh +0 -0
  260. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/fake_data_generator.py +0 -0
  261. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/online_schema_extension.yaml +0 -0
  262. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/run.sh +0 -0
  263. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/user_parameters.yaml +0 -0
  264. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/user_parameters_debug.yaml +0 -0
  265. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pycwb_cwb_consistency/README.md +0 -0
  266. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pycwb_cwb_consistency/compare_pycwb_vs_cwb.py +0 -0
  267. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pyseobnr_injection/generate_parameters.py +0 -0
  268. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pyseobnr_injection/user_parameters_injection.yaml +0 -0
  269. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pyseobnr_injection/waveform_model/__init__.py +0 -0
  270. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pyseobnr_injection/waveform_model/waveform.py +0 -0
  271. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/sine_gaussian_injection/README.md +0 -0
  272. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/sine_gaussian_injection/injection_parameters.py +0 -0
  273. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/sine_gaussian_injection/user_parameters.yaml +0 -0
  274. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/waveform_reconstruction/reconstruct_waveform_from_cluster.ipynb +0 -0
  275. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/white_noise_burst_injection/README.md +0 -0
  276. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/white_noise_burst_injection/injection_parameters.py +0 -0
  277. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/white_noise_burst_injection/user_parameters.yaml +0 -0
  278. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/cwb_core/coherence.cc +0 -0
  279. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/cwb_core/coherence.hh +0 -0
  280. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/cwb_core/likelihood.cc +0 -0
  281. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/cwb_core/likelihood.hh +0 -0
  282. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/dag/dag.py +0 -0
  283. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/dag/dask-prefect.py +0 -0
  284. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/dag/prefect_test.py +0 -0
  285. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger/__init__.py +0 -0
  286. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger/server.py +0 -0
  287. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger/visualizition.py +0 -0
  288. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/.eslintrc.cjs +0 -0
  289. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/.gitignore +0 -0
  290. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/.prettierrc.json +0 -0
  291. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/README.md +0 -0
  292. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/index.html +0 -0
  293. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/package-lock.json +0 -0
  294. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/package.json +0 -0
  295. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/public/favicon.ico +0 -0
  296. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/App.vue +0 -0
  297. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/assets/base.css +0 -0
  298. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/assets/cwb_icon_modern_blue_alfa.png +0 -0
  299. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/assets/main.css +0 -0
  300. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/assets/style.css +0 -0
  301. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/HelloWorld.vue +0 -0
  302. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/TheWelcome.vue +0 -0
  303. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/WelcomeItem.vue +0 -0
  304. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/__tests__/HelloWorld.spec.js +0 -0
  305. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconCommunity.vue +0 -0
  306. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconDocumentation.vue +0 -0
  307. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconEcosystem.vue +0 -0
  308. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconSupport.vue +0 -0
  309. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconTooling.vue +0 -0
  310. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/main.js +0 -0
  311. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/router/index.js +0 -0
  312. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/stores/counter.js +0 -0
  313. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/drawflow.vue +0 -0
  314. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/nodes/node1.vue +0 -0
  315. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/nodes/node2.vue +0 -0
  316. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/nodes/node3.vue +0 -0
  317. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/nodes/nodeHeader.vue +0 -0
  318. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/vite.config.js +0 -0
  319. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/performance/numba_test.py +0 -0
  320. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/performance/taichi_test.py +0 -0
  321. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/pp_workflow/simple.yaml +0 -0
  322. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/pp_workflow/simple_module.yaml +0 -0
  323. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/pp_workflow/workflow.yaml +0 -0
  324. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/search.yaml +0 -0
  325. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/__init__.py +0 -0
  326. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/__init__.py +0 -0
  327. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/batch_runner.py +0 -0
  328. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/batch_setup.py +0 -0
  329. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/clone_dir.py +0 -0
  330. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/config_setup.py +0 -0
  331. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/flow.py +0 -0
  332. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/get_external_modules.py +0 -0
  333. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/gwosc.py +0 -0
  334. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/gwosc_data.py +0 -0
  335. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/match_simulations.py +0 -0
  336. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/merge_catalog.py +0 -0
  337. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/online.py +0 -0
  338. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/post_process.py +0 -0
  339. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/progress.py +0 -0
  340. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/run.py +0 -0
  341. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/run_waveform_reconstruction.py +0 -0
  342. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/server.py +0 -0
  343. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/simulation_summary.py +0 -0
  344. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/xtalk.py +0 -0
  345. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/config/__init__.py +0 -0
  346. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/config/config.py +0 -0
  347. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/__init__.py +0 -0
  348. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/detectors.py +0 -0
  349. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/physics_constants.py +0 -0
  350. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/project_constants.py +0 -0
  351. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/user_parameters_schema.py +0 -0
  352. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/__init__.py +0 -0
  353. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/autoencoder/__init__.py +0 -0
  354. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/autoencoder/autoencoder.py +0 -0
  355. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/autoencoder/cwb_autoencoder.py +0 -0
  356. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/autoencoder/module.yaml +0 -0
  357. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/__init__.py +0 -0
  358. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/catalog_json.py +0 -0
  359. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/convert_root.py +0 -0
  360. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/module.yaml +0 -0
  361. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/tests/__init__.py +0 -0
  362. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/tests/test_remove_stale_triggers.py +0 -0
  363. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/tests/test_triggers_deduplicate.py +0 -0
  364. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/coherence/__init__.py +0 -0
  365. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/coherence/coherence.py +0 -0
  366. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/coherence/coherence_lite.py +0 -0
  367. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/coherence/module.yaml +0 -0
  368. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/condor/__init__.py +0 -0
  369. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/condor/condor.py +0 -0
  370. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/condor/module.yaml +0 -0
  371. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/config_repo_parser/README.md +0 -0
  372. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/config_repo_parser/__init__.py +0 -0
  373. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/config_repo_parser/config_repo_parser.py +0 -0
  374. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/config_repo_parser/setup.py +0 -0
  375. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/FIXES.md +0 -0
  376. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/__init__.py +0 -0
  377. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/coherence.py +0 -0
  378. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/excess_energy.py +0 -0
  379. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/tf_batch_generation.py +0 -0
  380. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/time_delay_max_energy.py +0 -0
  381. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/__init__.py +0 -0
  382. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/cluster.py +0 -0
  383. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/detector.py +0 -0
  384. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/module.yaml +0 -0
  385. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/pixel.py +0 -0
  386. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/series.py +0 -0
  387. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/sparse_series.py +0 -0
  388. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_interop/__init__.py +0 -0
  389. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_interop/cwb_workdir_setup.py +0 -0
  390. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/__init__.py +0 -0
  391. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/config.py +0 -0
  392. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/cwb_xgboost.py +0 -0
  393. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/module.yaml +0 -0
  394. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/plots.py +0 -0
  395. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/prediction.py +0 -0
  396. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/read_data.py +0 -0
  397. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/training.py +0 -0
  398. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/utils.py +0 -0
  399. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/utils_extended.py +0 -0
  400. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/PSD_correction.py +0 -0
  401. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/__init__.py +0 -0
  402. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/data_conditioning.py +0 -0
  403. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/data_conditioning_python.py +0 -0
  404. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/fake_conditioning.py +0 -0
  405. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/module.yaml +0 -0
  406. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/regression.py +0 -0
  407. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/regression_jax_layer.py +0 -0
  408. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/regression_py.py +0 -0
  409. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_cwb.py +0 -0
  410. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_mdc.py +0 -0
  411. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_mesa.py +0 -0
  412. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_mesa_py.py +0 -0
  413. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_py.py +0 -0
  414. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/energy_threshold/__init__.py +0 -0
  415. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/energy_threshold/threshold.py +0 -0
  416. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/__init__.py +0 -0
  417. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/config_schema.py +0 -0
  418. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/manager.py +0 -0
  419. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/test/sample_config.yaml +0 -0
  420. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/test/test.ipynb +0 -0
  421. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gracedb/__init__.py +0 -0
  422. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gracedb/gracedb.py +0 -0
  423. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gracedb/module.yaml +0 -0
  424. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gracedb/test_gracedb.py +0 -0
  425. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gwosc/__init__.py +0 -0
  426. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gwosc/gwosc.py +0 -0
  427. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gwosc/utils.py +0 -0
  428. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/__init__.py +0 -0
  429. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/distribution_utils.py +0 -0
  430. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/gwsignal_waveform.py +0 -0
  431. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/inj_generators.py +0 -0
  432. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/injection.py +0 -0
  433. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/module.yaml +0 -0
  434. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/par_generator.py +0 -0
  435. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/scripts/injection_module_test.ipynb +0 -0
  436. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/scripts/injection_parameters.py +0 -0
  437. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/tests/__init__.py +0 -0
  438. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/tests/test_injection.py +0 -0
  439. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/wf_generator.py +0 -0
  440. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/__init__.py +0 -0
  441. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/dq_segment.py +0 -0
  442. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/frame.py +0 -0
  443. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/job_segment.py +0 -0
  444. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/module.yaml +0 -0
  445. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/plots.py +0 -0
  446. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/super_lag.py +0 -0
  447. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/test_job_segment.py +0 -0
  448. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihood/__init__.py +0 -0
  449. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihood/likelihood.py +0 -0
  450. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihood/module.yaml +0 -0
  451. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/FIXES.md +0 -0
  452. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/__init__.py +0 -0
  453. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/dpf_cython.pyx +0 -0
  454. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/pixel_batch_ops.py +0 -0
  455. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/sky_mask.py +0 -0
  456. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/tests/test_compute_sky_valid_indices.py +0 -0
  457. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/__init__.py +0 -0
  458. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/dpf.py +0 -0
  459. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/likelihood.py +0 -0
  460. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/sky_scan.py +0 -0
  461. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/sky_stat.py +0 -0
  462. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/types.py +0 -0
  463. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/utils.py +0 -0
  464. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/xtalk_ops.py +0 -0
  465. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/logger/__init__.py +0 -0
  466. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/logger/logger.py +0 -0
  467. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/logger/module.yaml +0 -0
  468. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/multi_resolution_wdm/__init__.py +0 -0
  469. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/multi_resolution_wdm/module.yaml +0 -0
  470. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/multi_resolution_wdm/wdm.py +0 -0
  471. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/__init__.py +0 -0
  472. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/gaussian.py +0 -0
  473. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/glitch.py +0 -0
  474. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/non_gaussian.py +0 -0
  475. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/psd.py +0 -0
  476. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/ONLINE_WORKFLOW_IMPLEMENTATION.md +0 -0
  477. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/__init__.py +0 -0
  478. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/background.py +0 -0
  479. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/data_acquisition.py +0 -0
  480. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/data_source.py +0 -0
  481. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/deduplication.py +0 -0
  482. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/latency_monitor.py +0 -0
  483. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/ring_buffer.py +0 -0
  484. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/significance.py +0 -0
  485. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/trigger_handler.py +0 -0
  486. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/__init__.py +0 -0
  487. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/cluster_statistics.py +0 -0
  488. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/event.py +0 -0
  489. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/fragment_cluster_viz.py +0 -0
  490. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/module.yaml +0 -0
  491. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/spectrogram.py +0 -0
  492. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/waveform.py +0 -0
  493. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_data_quality/__init__.py +0 -0
  494. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_data_quality/module.yaml +0 -0
  495. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_data_quality/plot.py +0 -0
  496. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_map/__init__.py +0 -0
  497. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_map/module.yaml +0 -0
  498. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_map/world_map.py +0 -0
  499. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/post_production/waveform_reconstruction.py +0 -0
  500. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/post_production/waveform_reconstruction_plot.py +0 -0
  501. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/qveto/__init__.py +0 -0
  502. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/qveto/qveto.py +0 -0
  503. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/qveto/qveto_ext.py +0 -0
  504. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/qveto/utils.py +0 -0
  505. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/__init__.py +0 -0
  506. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/data_check.py +0 -0
  507. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/data_find.py +0 -0
  508. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/mdc.py +0 -0
  509. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/module.yaml +0 -0
  510. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/read_data.py +0 -0
  511. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/tests/__init__.py +0 -0
  512. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/tests/test_mdc.py +0 -0
  513. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/__init__.py +0 -0
  514. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/getINJwaveform.py +0 -0
  515. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/getMRAwaveform.py +0 -0
  516. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/getResiduals.py +0 -0
  517. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/module.yaml +0 -0
  518. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/__init__.py +0 -0
  519. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/continues_poisson.py +0 -0
  520. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/far_rho.py +0 -0
  521. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/read_results.py +0 -0
  522. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/report.py +0 -0
  523. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/skymask/__init__.py +0 -0
  524. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/skymask/skymask.py +0 -0
  525. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/slurm/__init__.py +0 -0
  526. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/slurm/module.yaml +0 -0
  527. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/slurm/slurm.py +0 -0
  528. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/sparse_series/__init__.py +0 -0
  529. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/sparse_series/module.yaml +0 -0
  530. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/sparse_series/sparse_table.py +0 -0
  531. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/__init__.py +0 -0
  532. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/eff.py +0 -0
  533. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/eff_plot.py +0 -0
  534. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/merge.py +0 -0
  535. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/sigmoid_fit.py +0 -0
  536. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/FIX_MIN_SKYRES_HEALPIX.md +0 -0
  537. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/FIX_TD_RESOLUTION_AND_WDMSHIFT.md +0 -0
  538. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/__init__.py +0 -0
  539. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/module.yaml +0 -0
  540. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/sub_net_cut.py +0 -0
  541. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/super_cluster.py +0 -0
  542. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/super_cluster_cwb.py +0 -0
  543. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/utils.py +0 -0
  544. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/supercluster_naive/__init__.py +0 -0
  545. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/supercluster_naive/supercluster2.py +0 -0
  546. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/superlag/__init__.py +0 -0
  547. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/superlag/module.yaml +0 -0
  548. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/superlag/superlag.py +0 -0
  549. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/web_viewer/__init__.py +0 -0
  550. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/web_viewer/create.py +0 -0
  551. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/web_viewer/module.yaml +0 -0
  552. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/workflow_utils/__init__.py +0 -0
  553. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/workflow_utils/job_setup.py +0 -0
  554. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/workflow_utils/trigger_utils.py +0 -0
  555. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/__init__.py +0 -0
  556. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/monster.py +0 -0
  557. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/monster_old.py +0 -0
  558. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/type.py +0 -0
  559. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/xtalk_data.py +0 -0
  560. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/post_production/__init__.py +0 -0
  561. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/post_production/workflow.py +0 -0
  562. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/prefect_flow/__init__.py +0 -0
  563. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/prefect_flow/pycwb_flow.py +0 -0
  564. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/prefect_flow/tasks/__init__.py +0 -0
  565. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/prefect_flow/tasks/builtin.py +0 -0
  566. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/FIX_SKY_COORDINATE_CONVENTION.md +0 -0
  567. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/__init__.py +0 -0
  568. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/base_catalog.py +0 -0
  569. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/detector.py +0 -0
  570. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/job.py +0 -0
  571. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/network.py +0 -0
  572. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/network_cluster.py +0 -0
  573. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/network_event.py +0 -0
  574. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/network_pixel.py +0 -0
  575. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/online.py +0 -0
  576. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/pixel_arrays.py +0 -0
  577. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/simulation.py +0 -0
  578. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/sparse_series.py +0 -0
  579. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/time_frequency_map.py +0 -0
  580. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/time_frequency_series.py +0 -0
  581. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/time_series.py +0 -0
  582. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/trigger.py +0 -0
  583. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/waveform.py +0 -0
  584. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/wavelet.py +0 -0
  585. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/wdm.py +0 -0
  586. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/wdm_xtalk.py +0 -0
  587. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/__init__.py +0 -0
  588. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/async_write.py +0 -0
  589. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/check_ROOT.py +0 -0
  590. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/conversions/__init__.py +0 -0
  591. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/conversions/timeseries.py +0 -0
  592. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/dataclass_object_io.py +0 -0
  593. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/dep_check.py +0 -0
  594. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/generate_params_table.py +0 -0
  595. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/image.py +0 -0
  596. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/memory.py +0 -0
  597. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/module.py +0 -0
  598. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/network.py +0 -0
  599. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/parser.py +0 -0
  600. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/skymap_coord.py +0 -0
  601. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/td_vector_batch.py +0 -0
  602. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/yaml_helper.py +0 -0
  603. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/__init__.py +0 -0
  604. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/autoencoder/__init__.py +0 -0
  605. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/autoencoder/cwb_autoencoder.h5 +0 -0
  606. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/example.yaml +0 -0
  607. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/lib/__init__.py +0 -0
  608. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/online/online_schema_extension.yaml +0 -0
  609. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/online/user_parameters_online.yaml +0 -0
  610. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/template/gwosc/user_parameters.yaml +0 -0
  611. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/web_viewer/event_dump.html +0 -0
  612. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/web_viewer/styles.css +0 -0
  613. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/web_viewer/viewer.html +0 -0
  614. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/__init__.py +0 -0
  615. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/batch.py +0 -0
  616. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/matching.py +0 -0
  617. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/merge.py +0 -0
  618. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/online.py +0 -0
  619. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/run.py +0 -0
  620. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/__init__.py +0 -0
  621. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/fake_processor.py +0 -0
  622. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/postprocess_and_plots.py +0 -0
  623. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/prepare_job_runs.py +0 -0
  624. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/process_job_segment.py +0 -0
  625. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/process_job_segment_native.py +0 -0
  626. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/process_job_segment_parallel.py +0 -0
  627. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/process_online_segment.py +0 -0
  628. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/simulation_summary.py +0 -0
  629. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/waveform_reconstruction_report.py +0 -0
  630. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pyproject.toml +0 -0
  631. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/setup.cfg +0 -0
  632. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/setup.py +0 -0
  633. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/compare_with_cwb/activate.sh +0 -0
  634. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/compare_with_cwb/compare_native_vs_cwb.py +0 -0
  635. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/compare_with_cwb/config/user_parameters.yaml +0 -0
  636. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/input/LIGO_zero_det_HP.txt +0 -0
  637. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/input/aligo_O4high.txt +0 -0
  638. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/input/avirgo_O4high_NEW.txt +0 -0
  639. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/run.py +0 -0
  640. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/run_mix.py +0 -0
  641. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test.ipynb +0 -0
  642. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_coherence.ipynb +0 -0
  643. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_coherence.py +0 -0
  644. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_regression.py +0 -0
  645. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_supercluster.py +0 -0
  646. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_whitening.py +0 -0
  647. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/user_parameters_injection.yaml +0 -0
  648. {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/user_parameters_injection_cwb.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PycWB
3
- Version: 1.0.0a1
3
+ Version: 1.0.0a2
4
4
  Summary: A Python package for coherent gravitational wave burst analysis
5
5
  Author-email: The PycWB team <yumeng.xu@ligo.org>
6
6
  License: GPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PycWB
3
- Version: 1.0.0a1
3
+ Version: 1.0.0a2
4
4
  Summary: A Python package for coherent gravitational wave burst analysis
5
5
  Author-email: The PycWB team <yumeng.xu@ligo.org>
6
6
  License: GPL-3.0-or-later
@@ -354,6 +354,7 @@ pycwb/modules/catalog/module.yaml
354
354
  pycwb/modules/catalog/tests/__init__.py
355
355
  pycwb/modules/catalog/tests/test_remove_stale_triggers.py
356
356
  pycwb/modules/catalog/tests/test_triggers_deduplicate.py
357
+ pycwb/modules/catalog/tests/test_write_table_atomic_permissions.py
357
358
  pycwb/modules/coherence/__init__.py
358
359
  pycwb/modules/coherence/coherence.py
359
360
  pycwb/modules/coherence/coherence_lite.py
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.0.0a1'
22
- __version_tuple__ = version_tuple = (1, 0, 0, 'a1')
21
+ __version__ = version = '1.0.0a2'
22
+ __version_tuple__ = version_tuple = (1, 0, 0, 'a2')
23
23
 
24
- __commit_id__ = commit_id = 'g880416389'
24
+ __commit_id__ = commit_id = 'g979003768'
@@ -125,6 +125,13 @@ def _write_table_atomic(table: pa.Table, filename: str, compression: str = "snap
125
125
  os.makedirs(target_dir, exist_ok=True)
126
126
 
127
127
  fd, tmp_path = tempfile.mkstemp(prefix=".catalog_tmp_", suffix=".parquet", dir=target_dir)
128
+ # mkstemp creates files with mode 0o600, bypassing the system umask.
129
+ # Restore umask-respecting permissions so catalog files are group/world
130
+ # readable as expected (equivalent to what a normal open(O_CREAT, 0666)
131
+ # would produce after the umask is applied).
132
+ _umask = os.umask(0)
133
+ os.umask(_umask)
134
+ os.fchmod(fd, 0o666 & ~_umask)
128
135
  os.close(fd)
129
136
  try:
130
137
  pq.write_table(table, tmp_path, compression=compression)
@@ -0,0 +1,94 @@
1
+ """Unit tests for permission handling in ``_write_table_atomic``."""
2
+ import os
3
+ import stat
4
+ import tempfile
5
+ import unittest
6
+
7
+ import pyarrow as pa
8
+
9
+ from pycwb.modules.catalog.catalog import _write_table_atomic
10
+
11
+
12
+ def _simple_table() -> pa.Table:
13
+ return pa.table({"x": pa.array([1, 2, 3], type=pa.int32())})
14
+
15
+
16
+ class TestWriteTableAtomicPermissions(unittest.TestCase):
17
+ """_write_table_atomic must respect the process umask, not fix at 0o600."""
18
+
19
+ def _file_mode(self, path: str) -> int:
20
+ return stat.S_IMODE(os.stat(path).st_mode)
21
+
22
+ def _call_with_umask(self, umask: int) -> int:
23
+ """Write a table with a specific umask and return the resulting file mode."""
24
+ with tempfile.TemporaryDirectory() as d:
25
+ dest = os.path.join(d, "catalog.parquet")
26
+ old_umask = os.umask(umask)
27
+ try:
28
+ _write_table_atomic(_simple_table(), dest)
29
+ finally:
30
+ os.umask(old_umask)
31
+ return self._file_mode(dest)
32
+
33
+ def test_permissions_with_umask_022(self):
34
+ """File mode should be 0o644 when umask is 0o022."""
35
+ mode = self._call_with_umask(0o022)
36
+ expected = 0o666 & ~0o022 # 0o644
37
+ self.assertEqual(
38
+ mode, expected,
39
+ f"Expected 0o{expected:03o} but got 0o{mode:03o} (umask=0o022)",
40
+ )
41
+
42
+ def test_permissions_with_umask_002(self):
43
+ """File mode should be 0o664 when umask is 0o002."""
44
+ mode = self._call_with_umask(0o002)
45
+ expected = 0o666 & ~0o002 # 0o664
46
+ self.assertEqual(
47
+ mode, expected,
48
+ f"Expected 0o{expected:03o} but got 0o{mode:03o} (umask=0o002)",
49
+ )
50
+
51
+ def test_permissions_with_umask_077(self):
52
+ """File mode should be 0o600 when umask is 0o077."""
53
+ mode = self._call_with_umask(0o077)
54
+ expected = 0o666 & ~0o077 # 0o600
55
+ self.assertEqual(
56
+ mode, expected,
57
+ f"Expected 0o{expected:03o} but got 0o{mode:03o} (umask=0o077)",
58
+ )
59
+
60
+ def test_permissions_not_hardcoded_600(self):
61
+ """File mode must NOT be 0o600 when umask allows more permissions."""
62
+ mode = self._call_with_umask(0o022)
63
+ self.assertNotEqual(
64
+ mode, 0o600,
65
+ "File mode was 0o600, indicating mkstemp permissions were not corrected.",
66
+ )
67
+
68
+ def test_no_temp_file_left_after_success(self):
69
+ """No temporary .catalog_tmp_* files should remain after a successful write."""
70
+ with tempfile.TemporaryDirectory() as d:
71
+ dest = os.path.join(d, "catalog.parquet")
72
+ _write_table_atomic(_simple_table(), dest)
73
+ tmp_files = [
74
+ f for f in os.listdir(d) if f.startswith(".catalog_tmp_")
75
+ ]
76
+ self.assertEqual(tmp_files, [], f"Stale temp files found: {tmp_files}")
77
+
78
+ def test_destination_file_created(self):
79
+ """The destination file must exist after a successful write."""
80
+ with tempfile.TemporaryDirectory() as d:
81
+ dest = os.path.join(d, "catalog.parquet")
82
+ _write_table_atomic(_simple_table(), dest)
83
+ self.assertTrue(os.path.exists(dest))
84
+
85
+ def test_destination_dir_created(self):
86
+ """Parent directory is created if it does not exist."""
87
+ with tempfile.TemporaryDirectory() as d:
88
+ dest = os.path.join(d, "nested", "subdir", "catalog.parquet")
89
+ _write_table_atomic(_simple_table(), dest)
90
+ self.assertTrue(os.path.exists(dest))
91
+
92
+
93
+ if __name__ == "__main__":
94
+ unittest.main()
@@ -125,8 +125,12 @@ def distribute_injections_on_sky(injections, sky_locations, shuffle=True, coords
125
125
 
126
126
  # shuffle the sky locations
127
127
  if shuffle:
128
- np.random.shuffle(phi)
129
- np.random.shuffle(theta)
128
+ coords = np.column_stack((phi, theta))
129
+ np.random.shuffle(coords)
130
+
131
+ theta = coords[:, 1]
132
+ phi = coords[:, 0]
133
+
130
134
 
131
135
  if coordsys == 'icrs':
132
136
  # If the coordinate system is ICRS, save the sky location directly in ra and dec attributes
@@ -64,7 +64,7 @@ def avx_dpf_ps(Fp0, Fx0, rms):
64
64
  ss = si ** 2
65
65
  nn = sqrt(cc + ss) # co/si norm
66
66
  fp = (AP + nn) / 2 # |f+|^2
67
- cc = co / (nn + 0.0001) # cos(2p)
67
+ cc = co / (nn + 1e-9) # cos(2p)
68
68
  ss = 1 if si > 0 else -1 # 1 if sin(2p)>0. or-1 if sin(2p)<0.
69
69
  si = sqrt((1 - cc) / 2) # |sin(p)|
70
70
  co = sqrt((1 + cc) / 2) # |cos(p)|
@@ -75,13 +75,13 @@ def avx_dpf_ps(Fp0, Fx0, rms):
75
75
  nn = np.dot(_cc, _cc)
76
76
  fF = np.dot(f, F)
77
77
 
78
- fF = fF / (fp + 0.0001)
78
+ fF = fF / (fp + 1e-9)
79
79
 
80
80
  F -= f * fF
81
81
  fx = np.dot(F, F)
82
82
 
83
- ni = nn / (fp ** 2 + 0.0001) # network index
84
- ff = ni + 0.0001 # network index
83
+ ni = nn / (fp ** 2 + 1e-9) # network index
84
+ ff = ni + 1e-9 # network index
85
85
  NI += fx / ff # sum of |fx|^2/2/ni
86
86
  NN += 1 if fp > 0 else 0 # pixel count
87
87
 
@@ -108,7 +108,7 @@ def dpf_np_loops_local(Fp0, Fx0, rms):
108
108
  ni = np.zeros(NPIX, dtype=np.float32)
109
109
 
110
110
  # Prepare constants
111
- _o = np.float32(0.0001)
111
+ _o = np.float32(1e-9)
112
112
  # _0 = np.float32(0)
113
113
  # _2 = np.float32(2)
114
114
  # _1 = np.float32(1)
@@ -202,7 +202,7 @@ def dpf_np_loops(Fp0, Fx0, rms):
202
202
  AP[i] = ff[i] + FF[i]
203
203
  nn[i] = sqrt(co[i] * co[i] + si[i] * si[i])
204
204
  fp[i] = (AP[i] + nn[i]) / 2
205
- cc[i] = co[i] / (nn[i] + 0.0001)
205
+ cc[i] = co[i] / (nn[i] + 1e-9)
206
206
  si[i], co[i] = sqrt((1 - cc[i]) / 2), sqrt((1 + cc[i]) / 2) * (1 if si[i] > 0 else -1)
207
207
 
208
208
  # Compute f_new, F_new, fF_new, F_new, fx, ni
@@ -210,7 +210,7 @@ def dpf_np_loops(Fp0, Fx0, rms):
210
210
  for j in range(NIFO):
211
211
  f[i, j], F[i, j] = f[i, j] * co[i] + F[i, j] * si[i], F[i, j] * co[i] - f[i, j] * si[i]
212
212
  fF_new[i] += f[i, j] * F[i, j]
213
- fF_new[i] /= (fp[i] + 0.0001)
213
+ fF_new[i] /= (fp[i] + 1e-9)
214
214
  for j in range(NIFO):
215
215
  F[i, j] -= f[i, j] * fF_new[i]
216
216
  fx[i] += F[i, j] * F[i, j]
@@ -220,8 +220,8 @@ def dpf_np_loops(Fp0, Fx0, rms):
220
220
  NI = 0
221
221
  NN = 0
222
222
  for i in range(NPIX):
223
- ni[i] /= (fp[i] * fp[i] + 0.0001)
224
- NI += fx[i] / (ni[i] + 0.0001)
223
+ ni[i] /= (fp[i] * fp[i] + 1e-9)
224
+ NI += fx[i] / (ni[i] + 1e-9)
225
225
  NN += 1 if fp[i] > 0 else 0
226
226
 
227
227
  return sqrt(NI / (NN + 0.01)), fp, fx, si, co, ni
@@ -250,20 +250,20 @@ def dpf_np(Fp0, Fx0, rms):
250
250
 
251
251
  nn = np.sqrt(co * co + si * si) # co/si norm
252
252
  fp = (AP + nn) / 2 # |f+|^2
253
- cc = co / (nn + 0.0001) # cos(2p)
253
+ cc = co / (nn + 1e-9) # cos(2p)
254
254
  si, co = np.sqrt((1 - cc) / 2), np.sqrt((1 + cc) / 2) * np.where(si > 0, 1, -1)
255
255
 
256
256
  f, F = f * co[:, np.newaxis] + F * si[:, np.newaxis], F * co[:, np.newaxis] - f * si[:, np.newaxis]
257
257
 
258
- fF = (f * F).sum(axis=1) / (fp + 0.0001)
258
+ fF = (f * F).sum(axis=1) / (fp + 1e-9)
259
259
 
260
260
  F -= f * fF[:, None]
261
261
 
262
262
  fx = (F * F).sum(axis=1)
263
263
 
264
- ni = (f ** 4).sum(axis=1) / (fp * fp + 0.0001) # network index
264
+ ni = (f ** 4).sum(axis=1) / (fp * fp + 1e-9) # network index
265
265
 
266
- NI = (fx / (ni + 0.0001)).sum() # sum of |fx|^2/2/ni
266
+ NI = (fx / (ni + 1e-9)).sum() # sum of |fx|^2/2/ni
267
267
 
268
268
  NN = (fp > 0).sum() # pixel count
269
269
 
@@ -277,7 +277,7 @@ def mul_vec(a, b):
277
277
 
278
278
  @vectorize([float32(float32, float32)])
279
279
  def div_vec(a, b):
280
- _o = float32(0.0001)
280
+ _o = float32(1e-9)
281
281
  return a / (b + _o)
282
282
 
283
283
 
@@ -386,7 +386,7 @@ def dpf_np_loops_vec(Fp0, Fx0, rms):
386
386
  fx = np.zeros(NPIX, dtype=np.float32)
387
387
  ni = np.zeros(NPIX, dtype=np.float32)
388
388
 
389
- _o = float32(0.0001)
389
+ _o = float32(1e-9)
390
390
 
391
391
  # Prepare constants
392
392
  # NI = np.float32(0.0)
@@ -414,7 +414,7 @@ def dpf_np_loops_vec(Fp0, Fx0, rms):
414
414
  _co = sub_vec(_ff, _FF) # rotation (cos^2-sin^2)*norm
415
415
  _AP = add_vec(_ff, _FF) # total antenna norm
416
416
  _nn = norm_vec(_co, _si) # co/si norm np.sqrt(_co * _co + _si * _si)
417
- _cc = div_vec(_co, _nn) # cos(2p) _co / (_nn + 0.0001)
417
+ _cc = div_vec(_co, _nn) # cos(2p) _co / (_nn + 1e-9)
418
418
  fp[i] = avg_vec(_AP, _nn) # |f+|^2 (_AP + _nn) / 2.
419
419
  si[i] = sin_from_cc(_cc) # |sin(p)| sqrt((1. - _cc) / 2.)
420
420
  co[i] = cos_from_cc(_cc, _si) # cos(p) (sqrt((1. + _cc) / 2.) if _si > 0.0 else - sqrt((1. + _cc) / 2.))
@@ -455,6 +455,15 @@ def likelihood(
455
455
  skymap_statistics = SkyMapStatistics.from_tuple(skymap_statistics)
456
456
  stage_timings["sky_scan"] = time.perf_counter() - _t0
457
457
 
458
+ if skymap_statistics.sky_stat_max <= 0.0:
459
+ logger.info("Cluster rejected: non-positive sky_stat_max=%.3f", skymap_statistics.sky_stat_max)
460
+ stage_timings["total"] = time.perf_counter() - timer_start
461
+ logger.info("-------------------------------------------------------")
462
+ logger.info("Total events: %d", 0)
463
+ logger.info("Total time: %.2f s", stage_timings["total"])
464
+ logger.info("-------------------------------------------------------")
465
+ return None, None
466
+
458
467
  # --- Compute normalised sky probability map (softmax over nSkyStat) ---
459
468
  _t0 = time.perf_counter()
460
469
  _sky_stat_f64 = skymap_statistics.nSkyStat.astype(np.float64)
@@ -479,8 +488,8 @@ def likelihood(
479
488
  # calculate sky statistics for the cluster at the optimal sky location l_max,
480
489
  # dozens of parameters will be returned in SkyStatistics dataclass
481
490
  _t0 = time.perf_counter()
482
- sky_statistics: SkyStatistics = calculate_sky_statistics(skymap_statistics.l_max, nIFO, n_pix,
483
- FP, FX, rms, td00, td90, ml, REG,
491
+ sky_statistics: SkyStatistics = calculate_sky_statistics(skymap_statistics.l_max, nIFO, n_pix,
492
+ FP, FX, rms, td00, td90, ml, REG,
484
493
  network_energy_threshold,
485
494
  cluster_xtalk, cluster_xtalk_lookup,
486
495
  xgb_rho_mode=xgb_rho_mode)
@@ -786,7 +795,7 @@ def find_optimal_sky_localization(n_ifo, n_pix, n_sky, FP, FX, rms, td00, td90,
786
795
  cc = CH if CH > float(1.0) else 1.0 # noise correction factor in TF domain
787
796
  Co = Ec / (Ec + No * cc - Mo * (n_ifo - 1)) # network correlation coefficient in TF
788
797
 
789
- if Cr < netCC:
798
+ if not np.isfinite(Cr) or Cr < netCC:
790
799
  continue
791
800
 
792
801
  # --- Sky statistics: likelihood and cross-correlation ---
@@ -823,16 +832,16 @@ def find_optimal_sky_localization(n_ifo, n_pix, n_sky, FP, FX, rms, td00, td90,
823
832
  # Mirror C++ tie-breaking: C++ uses `if (AA >= STAT)` in a forward loop,
824
833
  # so the LAST pixel with the maximum value wins on ties.
825
834
  # Iterate only over valid (unmasked) indices to match C++ behaviour.
826
- STAT = np.float32(-1.e12)
835
+ sky_stat_max = 0
827
836
  l_max = int(sky_valid_indices[0])
828
837
  for _k in range(n_valid):
829
838
  _l = sky_valid_indices[_k]
830
- if AA_array[_l] >= STAT:
831
- STAT = AA_array[_l]
839
+ if AA_array[_l] >= sky_stat_max:
840
+ sky_stat_max = AA_array[_l]
832
841
  l_max = _l
833
842
 
834
843
  return (l_max, nAntenaPrior, nAlignment, nLikelihood, nNullEnergy, nCorrEnergy, \
835
- nCorrelation, nSkyStat, nDisbalance, nNetIndex, nEllipticity, nPolarisation)
844
+ nCorrelation, nSkyStat, nDisbalance, nNetIndex, nEllipticity, nPolarisation, sky_stat_max)
836
845
 
837
846
 
838
847
  def calculate_sky_statistics(
@@ -974,7 +983,11 @@ def calculate_sky_statistics(
974
983
  else: # XGB.rho0
975
984
  penalty = ch
976
985
  ecor = Ec
977
- rho = np.sqrt(ecor / (1 + penalty * (max(float(1), penalty) - 1)))
986
+ # TODO: The ecor can be negative for certain cases, which causes rho to be NaN.
987
+ # And in Python NaN < netRHO is always False, which means the cluster will never be rejected by the rho threshold cut.
988
+ # This is fixed in cWB 6.9.6.9. The investigation of the root cause of negative ecor is leave to the future,
989
+ # for now we clamp it to zero to avoid NaN issues and ensure proper thresholding.
990
+ rho = np.sqrt(ecor / (1 + penalty * (max(float(1), penalty) - 1))) if ecor > 0 else 0
978
991
  cc = ch if ch > 1 else 1 # noise correction factor (kept for xrho)
979
992
  xrho = np.sqrt(Ec * Rc / 2.) if Ec > 0 else 0 # original 2G rho (reference only)
980
993
  if DEBUG:
@@ -1496,7 +1509,7 @@ def threshold_cut(
1496
1509
  net_rho_threshold = (netEC_threshold / 2.0) ** 0.5
1497
1510
  condition_1 = Lm <= 0.
1498
1511
  condition_2 = (Eo - Eh) <= 0.
1499
- condition_3 = rho < net_rho_threshold
1512
+ condition_3 = not np.isfinite(rho) or rho < net_rho_threshold
1500
1513
  condition_4 = N < 1 # C++: N < 1 (pixel count)
1501
1514
  if condition_1 or condition_2 or condition_3 or condition_4:
1502
1515
  rejection_reason = ""
@@ -148,7 +148,7 @@ def avx_GW_ps(v00, v90, f, F, fp, fx, ni, et, mask, reg):
148
148
  p_updated = np.empty((n_ifo, n_pix), dtype=np.float32)
149
149
  q_updated = np.empty((n_ifo, n_pix), dtype=np.float32)
150
150
 
151
- _o = np.float32(1e-5)
151
+ _o = np.float32(1e-9)
152
152
  _rr = np.float32(reg[0])
153
153
  _RR = np.float32(reg[1])
154
154
  NN = np.int32(0)
@@ -337,7 +337,7 @@ def avx_stat_ps(v00, v90, s, S, si, co, mask):
337
337
  n_ifo = len(v00) # Number of interferometers
338
338
  n_pix = len(v00[0]) # Number of pixels
339
339
 
340
- _o = np.float32(0.001)
340
+ _o = np.float32(1.e-9)
341
341
  _0 = np.float32(0)
342
342
  _1 = np.float32(1)
343
343
  _2 = np.float32(2)
@@ -89,6 +89,7 @@ class SkyMapStatistics:
89
89
  nNetIndex: np.array # cc
90
90
  nEllipticity: np.array # Cr
91
91
  nPolarisation: np.array # Mp
92
+ sky_stat_max: float = 0
92
93
  nProbability: np.array = None # normalized sky probability (softmax of nSkyStat)
93
94
  stage_timings: dict = None # per-stage wall-clock timings (GPU only)
94
95
 
@@ -383,7 +383,7 @@ def avx_loadNULL_ps(d, D, h, H):
383
383
 
384
384
  # static const __m128 _0 = _mm_set1_ps(0);
385
385
  # static const __m128 _1 = _mm_set1_ps(1);
386
- # static const __m128 _o = _mm_set1_ps(1.e-5);
386
+ # static const __m128 _o = _mm_set1_ps(1.e-9);
387
387
 
388
388
  # __m128 _ss,_cc,_SS,_CC;
389
389
  # float rpol[4],cpol[4],spol[4];
@@ -596,7 +596,7 @@ def avx_pol_ps(p, q, MK, fp, fx, f, F):
596
596
  new_p = np.empty((n_ifo, n_pix), dtype=np.float32)
597
597
  new_q = np.empty((n_ifo, n_pix), dtype=np.float32)
598
598
 
599
- _o = float(1.e-5)
599
+ _o = float(1.e-9)
600
600
 
601
601
  # Vectorized pixel loop — replaces the interpreted for i in range(n_pix) loop
602
602
  p_arr = np.asarray(p, dtype=np.float64) # (n_ifo, n_pix)
@@ -692,7 +692,7 @@ def avx_packet_ps(v00, v90, mask):
692
692
  """
693
693
  n_ifo = len(v00)
694
694
  n_pix = len(v00[0])
695
- _o = float(0.0001)
695
+ _o = float(1.e-9)
696
696
 
697
697
  mk = np.empty(n_pix, dtype=np.float32)
698
698
  aa = np.zeros(n_ifo, dtype=np.float32)
@@ -98,24 +98,24 @@ class DQFile:
98
98
 
99
99
  # check if all start > 0
100
100
  if np.any(start < 0):
101
- error_indexes = np.where(start < 0)
101
+ error_indexes = np.where(start < 0)[0]
102
102
  for i in error_indexes:
103
- logger.error(f"Error Ranges : {float(start[i])} {float(stop[i])}")
104
- raise Exception("Error Ranges")
103
+ logger.error(f"Negative start time at index {i}: start={float(start[i])} stop={float(stop[i])}")
104
+ raise Exception("Error Ranges: negative start times found")
105
105
 
106
106
  # check if all start < stop
107
107
  if np.any(start > stop):
108
- error_indexes = np.where(start > stop)
108
+ error_indexes = np.where(start > stop)[0]
109
109
  for i in error_indexes:
110
- logger.error(f"Error Ranges : {float(start[i])} {float(stop[i])}")
111
- raise Exception("Error Ranges")
110
+ logger.error(f"Start exceeds stop at index {i}: start={float(start[i])} stop={float(stop[i])}")
111
+ raise Exception("Error Ranges: start > stop")
112
112
 
113
113
  # check if all stop < next start
114
114
  if np.any(stop[:-1] > start[1:]):
115
- error_indexes = np.where(stop[:-1] > start[1:])
115
+ error_indexes = np.where(stop[:-1] > start[1:])[0]
116
116
  for i in error_indexes:
117
- logger.error(f"Error Ranges : {float(start[i])} {float(stop[i])}")
118
- raise Exception("Error Ranges")
117
+ logger.error(f"Overlapping segments at index {i}-{i+1}: [{float(start[i])}, {float(stop[i])}] overlaps [{float(start[i+1])}, {float(stop[i+1])}]")
118
+ raise Exception("Error Ranges: overlapping segments")
119
119
 
120
120
  if self.invert:
121
121
  start, stop = np.append(0, stop), np.append(start, np.inf)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes