PycWB 0.27.0__tar.gz → 0.28.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 (420) hide show
  1. {pycwb-0.27.0 → pycwb-0.28.0}/PKG-INFO +6 -2
  2. {pycwb-0.27.0 → pycwb-0.28.0}/PycWB.egg-info/PKG-INFO +6 -2
  3. {pycwb-0.27.0 → pycwb-0.28.0}/PycWB.egg-info/SOURCES.txt +3 -0
  4. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/likelihood/generate_data_for_likelihood.py +15 -7
  5. pycwb-0.28.0/benchmark/likelihood/perf_cuda.py +168 -0
  6. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/_version.py +9 -4
  7. pycwb-0.28.0/pycwb/constants/detectors.py +119 -0
  8. pycwb-0.28.0/pycwb/constants/physics_constants.py +2 -0
  9. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/constants/user_parameters_schema.py +6 -0
  10. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/cwb_conversions/series.py +8 -2
  11. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/job_segment/job_segment.py +1 -1
  12. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/reconstruction/getMRAwaveform.py +3 -3
  13. pycwb-0.28.0/pycwb/types/detector.py +112 -0
  14. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/module.py +10 -0
  15. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/workflow/batch.py +10 -5
  16. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/workflow/run.py +9 -2
  17. pycwb-0.27.0/pycwb/types/detector.py +0 -14
  18. {pycwb-0.27.0 → pycwb-0.28.0}/.gitignore +0 -0
  19. {pycwb-0.27.0 → pycwb-0.28.0}/.gitlab-ci.yml +0 -0
  20. {pycwb-0.27.0 → pycwb-0.28.0}/.readthedocs.yaml +0 -0
  21. {pycwb-0.27.0 → pycwb-0.28.0}/LICENSE +0 -0
  22. {pycwb-0.27.0 → pycwb-0.28.0}/MANIFEST.in +0 -0
  23. {pycwb-0.27.0 → pycwb-0.28.0}/Makefile +0 -0
  24. {pycwb-0.27.0 → pycwb-0.28.0}/PycWB.egg-info/dependency_links.txt +0 -0
  25. {pycwb-0.27.0 → pycwb-0.28.0}/PycWB.egg-info/requires.txt +0 -0
  26. {pycwb-0.27.0 → pycwb-0.28.0}/PycWB.egg-info/top_level.txt +0 -0
  27. {pycwb-0.27.0 → pycwb-0.28.0}/README.md +0 -0
  28. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/README.md +0 -0
  29. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/likelihood/README.md +0 -0
  30. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/likelihood/performance_test_dpf.py +0 -0
  31. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/likelihood/performance_test_opt_sky.py +0 -0
  32. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/likelihood/user_parameters_injection.yaml +0 -0
  33. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/supercluster/README.md +0 -0
  34. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/supercluster/generate_data.py +0 -0
  35. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/supercluster/generate_data_2.py +0 -0
  36. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/supercluster/performance_supercluster.py +0 -0
  37. {pycwb-0.27.0 → pycwb-0.28.0}/benchmark/supercluster/user_parameters_injection.yaml +0 -0
  38. {pycwb-0.27.0 → pycwb-0.28.0}/bin/pycwb +0 -0
  39. {pycwb-0.27.0 → pycwb-0.28.0}/bin/pycwb_search +0 -0
  40. {pycwb-0.27.0 → pycwb-0.28.0}/bin/pycwb_show +0 -0
  41. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Biorthogonal.cc +0 -0
  42. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Biorthogonal.hh +0 -0
  43. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/CMakeLists.txt +0 -0
  44. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Daubechies.cc +0 -0
  45. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Daubechies.hh +0 -0
  46. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/FourierCoefficients.icc +0 -0
  47. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Haar.cc +0 -0
  48. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Haar.hh +0 -0
  49. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/LineFilter.cc +0 -0
  50. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/LineFilter.hh +0 -0
  51. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Makefile +0 -0
  52. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Meyer.cc +0 -0
  53. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Meyer.hh +0 -0
  54. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Symlet.cc +0 -0
  55. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Symlet.hh +0 -0
  56. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/SymmArray.cc +0 -0
  57. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/SymmArray.hh +0 -0
  58. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/SymmArraySSE.cc +0 -0
  59. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/SymmArraySSE.hh +0 -0
  60. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/SymmObjArray.cc +0 -0
  61. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/SymmObjArray.hh +0 -0
  62. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/WDM.cc +0 -0
  63. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/WDM.hh +0 -0
  64. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/WDMOverlap.cc +0 -0
  65. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/WDMOverlap.hh +0 -0
  66. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/WaveDWT.cc +0 -0
  67. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/WaveDWT.hh +0 -0
  68. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Wavelet.cc +0 -0
  69. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/Wavelet.hh +0 -0
  70. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/alm.hh +0 -0
  71. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/build.sh +0 -0
  72. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/cluster.cc +0 -0
  73. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/cluster.hh +0 -0
  74. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/cmake/FindHealpix.cmake +0 -0
  75. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/cmake/FindeBBH.cmake +0 -0
  76. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/cmake/install_function.cmake +0 -0
  77. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/constants.hh +0 -0
  78. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/detector.cc +0 -0
  79. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/detector.hh +0 -0
  80. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/injection.cc +0 -0
  81. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/injection.hh +0 -0
  82. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/lossy.cc +0 -0
  83. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/lossy.hh +0 -0
  84. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/monster.cc +0 -0
  85. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/monster.hh +0 -0
  86. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/netcluster.cc +0 -0
  87. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/netcluster.hh +0 -0
  88. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/netevent.cc +0 -0
  89. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/netevent.hh +0 -0
  90. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/netpixel.cc +0 -0
  91. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/netpixel.hh +0 -0
  92. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/network.cc +0 -0
  93. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/network.hh +0 -0
  94. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/pycwb.hh +0 -0
  95. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/rdfr.cc +0 -0
  96. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/rdfr.hh +0 -0
  97. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/readframe.cc +0 -0
  98. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/readframe.hh +0 -0
  99. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/readfrfile.cc +0 -0
  100. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/readfrfile.hh +0 -0
  101. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/regression.cc +0 -0
  102. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/regression.hh +0 -0
  103. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/skycoord.hh +0 -0
  104. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/skymap.cc +0 -0
  105. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/skymap.hh +0 -0
  106. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/sseries.cc +0 -0
  107. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/sseries.hh +0 -0
  108. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/time.cc +0 -0
  109. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/time.hh +0 -0
  110. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wat.hh +0 -0
  111. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/watasm.S +0 -0
  112. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/watasm_elf64.o +0 -0
  113. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/watavx.hh +0 -0
  114. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/watbranch.in +0 -0
  115. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/watfun.hh +0 -0
  116. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wathash.in +0 -0
  117. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/watplot.cc +0 -0
  118. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/watplot.hh +0 -0
  119. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/watsse.hh +0 -0
  120. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wattag.in +0 -0
  121. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/waturl.in +0 -0
  122. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/watversion.hh.in +0 -0
  123. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavearray.cc +0 -0
  124. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavearray.hh +0 -0
  125. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavecomplex.cc +0 -0
  126. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavecomplex.hh +0 -0
  127. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavecor.cc +0 -0
  128. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavecor.hh +0 -0
  129. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavefft.cc +0 -0
  130. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavefft.hh +0 -0
  131. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavelet_LinkDef.h +0 -0
  132. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavelinefilter.cc +0 -0
  133. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wavelinefilter.hh +0 -0
  134. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/waverdc.cc +0 -0
  135. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/waverdc.hh +0 -0
  136. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wseries.cc +0 -0
  137. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wseries.hh +0 -0
  138. {pycwb-0.27.0 → pycwb-0.28.0}/cwb-core/wslice.hh +0 -0
  139. {pycwb-0.27.0 → pycwb-0.28.0}/docs/0.installation_guide.md +0 -0
  140. {pycwb-0.27.0 → pycwb-0.28.0}/docs/1.initialisation_guide.md +0 -0
  141. {pycwb-0.27.0 → pycwb-0.28.0}/docs/2.test_interactive_multistages_2G_analysis.md +0 -0
  142. {pycwb-0.27.0 → pycwb-0.28.0}/docs/3.run_pycwb_with_yaml_config.md +0 -0
  143. {pycwb-0.27.0 → pycwb-0.28.0}/docs/4.py_cwb_inet_2G.md +0 -0
  144. {pycwb-0.27.0 → pycwb-0.28.0}/docs/5.cwb2G_analyse.md +0 -0
  145. {pycwb-0.27.0 → pycwb-0.28.0}/docs/6.wat_codes_notes.md +0 -0
  146. {pycwb-0.27.0 → pycwb-0.28.0}/docs/Makefile +0 -0
  147. {pycwb-0.27.0 → pycwb-0.28.0}/docs/diagram.py +0 -0
  148. {pycwb-0.27.0 → pycwb-0.28.0}/docs/make.bat +0 -0
  149. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/_static/.keep +0 -0
  150. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/_templates/.keep +0 -0
  151. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/conf.py +0 -0
  152. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/credit.rst +0 -0
  153. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/index.rst +0 -0
  154. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/install.rst +0 -0
  155. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/mod_cwb.rst +0 -0
  156. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/package.rst +0 -0
  157. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/schema.rst +0 -0
  158. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/tutorial_batch_inj.rst +0 -0
  159. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/tutorial_customized_wf_gen.rst +0 -0
  160. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/tutorial_injection.rst +0 -0
  161. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/tutorial_multi_injection.rst +0 -0
  162. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/tutorial_search.rst +0 -0
  163. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/tutorials.rst +0 -0
  164. {pycwb-0.27.0 → pycwb-0.28.0}/docs/source/workflow.png +0 -0
  165. {pycwb-0.27.0 → pycwb-0.28.0}/envs/Dockerfile +0 -0
  166. {pycwb-0.27.0 → pycwb-0.28.0}/envs/environment.yml +0 -0
  167. {pycwb-0.27.0 → pycwb-0.28.0}/envs/mamba/Dockerfile +0 -0
  168. {pycwb-0.27.0 → pycwb-0.28.0}/examples/autoencoder/pycwb_injection.ipynb +0 -0
  169. {pycwb-0.27.0 → pycwb-0.28.0}/examples/autoencoder/user_parameters_injection.yaml +0 -0
  170. {pycwb-0.27.0 → pycwb-0.28.0}/examples/batch_injection/generate_parameters.py +0 -0
  171. {pycwb-0.27.0 → pycwb-0.28.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/__init__.py +0 -0
  172. {pycwb-0.27.0 → pycwb-0.28.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/parameters.py +0 -0
  173. {pycwb-0.27.0 → pycwb-0.28.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/waveform.py +0 -0
  174. {pycwb-0.27.0 → pycwb-0.28.0}/examples/batch_injection/pycwb_injection.py +0 -0
  175. {pycwb-0.27.0 → pycwb-0.28.0}/examples/batch_injection/user_parameters_injection.yaml +0 -0
  176. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/DQ/H1_cat0.txt +0 -0
  177. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/DQ/H1_cat1.txt +0 -0
  178. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/DQ/H1_cat2.txt +0 -0
  179. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/DQ/H1_cat4.txt +0 -0
  180. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/DQ/L1_cat0.txt +0 -0
  181. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/DQ/L1_cat1.txt +0 -0
  182. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/DQ/L1_cat2.txt +0 -0
  183. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/DQ/L1_cat4.txt +0 -0
  184. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/input/OPBM.period +0 -0
  185. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/input/OPBM_H1.frames +0 -0
  186. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/input/OPBM_L1.frames +0 -0
  187. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/pycwb_mdc.py +0 -0
  188. {pycwb-0.27.0 → pycwb-0.28.0}/examples/benchmark/user_parameters_mdc.yaml +0 -0
  189. {pycwb-0.27.0 → pycwb-0.28.0}/examples/colab/pycWB_GW150914.ipynb +0 -0
  190. {pycwb-0.27.0 → pycwb-0.28.0}/examples/gwosc/user_parameters.yaml +0 -0
  191. {pycwb-0.27.0 → pycwb-0.28.0}/examples/injection/pycwb_injection.ipynb +0 -0
  192. {pycwb-0.27.0 → pycwb-0.28.0}/examples/injection/user_parameters_injection.yaml +0 -0
  193. {pycwb-0.27.0 → pycwb-0.28.0}/examples/injection/wdmXTalk/OverlapCatalog16-1024.bin +0 -0
  194. {pycwb-0.27.0 → pycwb-0.28.0}/examples/lvk_sep_2023/demo.ipynb +0 -0
  195. {pycwb-0.27.0 → pycwb-0.28.0}/examples/lvk_sep_2023/user_parameters.yaml +0 -0
  196. {pycwb-0.27.0 → pycwb-0.28.0}/examples/multiple_injection/pycwb_injection.py +0 -0
  197. {pycwb-0.27.0 → pycwb-0.28.0}/examples/multiple_injection/user_parameters_injection.yaml +0 -0
  198. {pycwb-0.27.0 → pycwb-0.28.0}/examples/pyseobnr_injection/generate_parameters.py +0 -0
  199. {pycwb-0.27.0 → pycwb-0.28.0}/examples/pyseobnr_injection/user_parameters_injection.yaml +0 -0
  200. {pycwb-0.27.0 → pycwb-0.28.0}/examples/pyseobnr_injection/waveform_model/__init__.py +0 -0
  201. {pycwb-0.27.0 → pycwb-0.28.0}/examples/pyseobnr_injection/waveform_model/waveform.py +0 -0
  202. {pycwb-0.27.0 → pycwb-0.28.0}/examples/waveform_reconstruction/reconstruct_waveform_from_cluster.ipynb +0 -0
  203. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/cwb_core/coherence.cc +0 -0
  204. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/cwb_core/coherence.hh +0 -0
  205. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/cwb_core/likelihood.cc +0 -0
  206. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/cwb_core/likelihood.hh +0 -0
  207. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/dag/dag.py +0 -0
  208. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/dag/dask-prefect.py +0 -0
  209. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/dag/prefect_test.py +0 -0
  210. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger/__init__.py +0 -0
  211. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger/server.py +0 -0
  212. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger/visualizition.py +0 -0
  213. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/.eslintrc.cjs +0 -0
  214. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/.gitignore +0 -0
  215. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/.prettierrc.json +0 -0
  216. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/README.md +0 -0
  217. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/index.html +0 -0
  218. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/package-lock.json +0 -0
  219. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/package.json +0 -0
  220. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/public/favicon.ico +0 -0
  221. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/App.vue +0 -0
  222. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/assets/base.css +0 -0
  223. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/assets/cwb_icon_modern_blue_alfa.png +0 -0
  224. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/assets/main.css +0 -0
  225. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/assets/style.css +0 -0
  226. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/components/HelloWorld.vue +0 -0
  227. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/components/TheWelcome.vue +0 -0
  228. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/components/WelcomeItem.vue +0 -0
  229. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/components/__tests__/HelloWorld.spec.js +0 -0
  230. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/components/icons/IconCommunity.vue +0 -0
  231. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/components/icons/IconDocumentation.vue +0 -0
  232. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/components/icons/IconEcosystem.vue +0 -0
  233. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/components/icons/IconSupport.vue +0 -0
  234. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/components/icons/IconTooling.vue +0 -0
  235. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/main.js +0 -0
  236. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/router/index.js +0 -0
  237. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/stores/counter.js +0 -0
  238. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/views/drawflow.vue +0 -0
  239. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/views/nodes/node1.vue +0 -0
  240. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/views/nodes/node2.vue +0 -0
  241. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/views/nodes/node3.vue +0 -0
  242. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/src/views/nodes/nodeHeader.vue +0 -0
  243. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/messenger-web-interface/vite.config.js +0 -0
  244. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/performance/numba_test.py +0 -0
  245. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/performance/taichi_test.py +0 -0
  246. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/pp_workflow/simple.yaml +0 -0
  247. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/pp_workflow/simple_module.yaml +0 -0
  248. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/pp_workflow/workflow.yaml +0 -0
  249. {pycwb-0.27.0 → pycwb-0.28.0}/prototypes/search.yaml +0 -0
  250. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/__init__.py +0 -0
  251. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/__init__.py +0 -0
  252. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/batch_runner.py +0 -0
  253. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/batch_setup.py +0 -0
  254. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/flow.py +0 -0
  255. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/gwosc.py +0 -0
  256. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/merge_catalog.py +0 -0
  257. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/post_process.py +0 -0
  258. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/run.py +0 -0
  259. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/server.py +0 -0
  260. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/cli/xtalk.py +0 -0
  261. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/config/__init__.py +0 -0
  262. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/config/config.py +0 -0
  263. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/constants/__init__.py +0 -0
  264. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/constants/project_constants.py +0 -0
  265. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/__init__.py +0 -0
  266. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/autoencoder/__init__.py +0 -0
  267. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/autoencoder/autoencoder.py +0 -0
  268. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/autoencoder/cwb_autoencoder.py +0 -0
  269. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/autoencoder/module.yaml +0 -0
  270. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/catalog/__init__.py +0 -0
  271. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/catalog/catalog.py +0 -0
  272. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/catalog/module.yaml +0 -0
  273. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/coherence/__init__.py +0 -0
  274. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/coherence/coherence.py +0 -0
  275. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/coherence/coherence_lite.py +0 -0
  276. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/coherence/module.yaml +0 -0
  277. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/condor/__init__.py +0 -0
  278. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/condor/condor.py +0 -0
  279. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/condor/module.yaml +0 -0
  280. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/cwb_conversions/__init__.py +0 -0
  281. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/cwb_conversions/cluster.py +0 -0
  282. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/cwb_conversions/module.yaml +0 -0
  283. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/cwb_conversions/pixel.py +0 -0
  284. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/cwb_conversions/sparse_series.py +0 -0
  285. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/data_conditioning/__init__.py +0 -0
  286. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/data_conditioning/data_conditioning.py +0 -0
  287. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/data_conditioning/module.yaml +0 -0
  288. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/data_conditioning/regression.py +0 -0
  289. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/data_conditioning/whitening.py +0 -0
  290. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/energy_threshold/__init__.py +0 -0
  291. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/energy_threshold/threshold.py +0 -0
  292. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/gracedb/__init__.py +0 -0
  293. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/gracedb/gracedb.py +0 -0
  294. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/gracedb/module.yaml +0 -0
  295. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/gracedb/test_gracedb.py +0 -0
  296. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/gwosc/__init__.py +0 -0
  297. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/gwosc/gwosc.py +0 -0
  298. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/job_segment/__init__.py +0 -0
  299. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/job_segment/dq_segment.py +0 -0
  300. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/job_segment/frame.py +0 -0
  301. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/job_segment/module.yaml +0 -0
  302. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/job_segment/plots.py +0 -0
  303. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/job_segment/super_lag.py +0 -0
  304. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/job_segment/test_job_segment.py +0 -0
  305. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/likelihood/__init__.py +0 -0
  306. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/likelihood/likelihood.py +0 -0
  307. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/likelihood/module.yaml +0 -0
  308. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/likelihoodWP/__init__.py +0 -0
  309. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/likelihoodWP/dpf.py +0 -0
  310. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/likelihoodWP/dpf_cython.pyx +0 -0
  311. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/likelihoodWP/likelihood.py +0 -0
  312. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/likelihoodWP/sky_stat.py +0 -0
  313. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/likelihoodWP/utils.py +0 -0
  314. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/logger/__init__.py +0 -0
  315. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/logger/logger.py +0 -0
  316. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/logger/module.yaml +0 -0
  317. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/multi_resolution_wdm/__init__.py +0 -0
  318. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/multi_resolution_wdm/module.yaml +0 -0
  319. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/multi_resolution_wdm/wdm.py +0 -0
  320. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot/__init__.py +0 -0
  321. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot/cluster_statistics.py +0 -0
  322. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot/event.py +0 -0
  323. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot/module.yaml +0 -0
  324. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot/spectrogram.py +0 -0
  325. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot/waveform.py +0 -0
  326. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot_data_quality/__init__.py +0 -0
  327. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot_data_quality/module.yaml +0 -0
  328. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot_data_quality/plot.py +0 -0
  329. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot_map/__init__.py +0 -0
  330. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot_map/module.yaml +0 -0
  331. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/plot_map/world_map.py +0 -0
  332. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/read_data/__init__.py +0 -0
  333. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/read_data/data_check.py +0 -0
  334. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/read_data/data_find.py +0 -0
  335. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/read_data/mdc.py +0 -0
  336. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/read_data/module.yaml +0 -0
  337. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/read_data/read_data.py +0 -0
  338. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/reconstruction/__init__.py +0 -0
  339. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/reconstruction/module.yaml +0 -0
  340. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/report/__init__.py +0 -0
  341. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/report/continues_poisson.py +0 -0
  342. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/report/far_rho.py +0 -0
  343. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/report/read_results.py +0 -0
  344. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/report/report.py +0 -0
  345. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/sparse_series/__init__.py +0 -0
  346. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/sparse_series/module.yaml +0 -0
  347. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/sparse_series/sparse_table.py +0 -0
  348. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/statistics/__init__.py +0 -0
  349. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/statistics/eff.py +0 -0
  350. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/statistics/eff_plot.py +0 -0
  351. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/statistics/merge.py +0 -0
  352. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/statistics/sigmoid_fit.py +0 -0
  353. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/super_cluster/__init__.py +0 -0
  354. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/super_cluster/module.yaml +0 -0
  355. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/super_cluster/sub_net_cut.py +0 -0
  356. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/super_cluster/super_cluster.py +0 -0
  357. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/super_cluster/supercluster.py +0 -0
  358. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/super_cluster/utils.py +0 -0
  359. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/supercluster_naive/__init__.py +0 -0
  360. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/supercluster_naive/supercluster2.py +0 -0
  361. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/superlag/__init__.py +0 -0
  362. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/superlag/module.yaml +0 -0
  363. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/superlag/superlag.py +0 -0
  364. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/web_viewer/__init__.py +0 -0
  365. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/web_viewer/create.py +0 -0
  366. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/web_viewer/module.yaml +0 -0
  367. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/workflow_utils/__init__.py +0 -0
  368. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/workflow_utils/job_setup.py +0 -0
  369. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/xtalk/__init__.py +0 -0
  370. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/xtalk/monster.py +0 -0
  371. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/xtalk/monster_old.py +0 -0
  372. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/modules/xtalk/xtalk_data.py +0 -0
  373. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/post_production/__init__.py +0 -0
  374. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/post_production/workflow.py +0 -0
  375. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/prefect_flow/__init__.py +0 -0
  376. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/prefect_flow/pycwb_flow.py +0 -0
  377. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/prefect_flow/tasks/__init__.py +0 -0
  378. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/prefect_flow/tasks/builtin.py +0 -0
  379. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/__init__.py +0 -0
  380. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/data_quality_file.py +0 -0
  381. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/job.py +0 -0
  382. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/network.py +0 -0
  383. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/network_cluster.py +0 -0
  384. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/network_event.py +0 -0
  385. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/network_pixel.py +0 -0
  386. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/sparse_series.py +0 -0
  387. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/time_frequency_series.py +0 -0
  388. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/wdm.py +0 -0
  389. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/types/wdm_xtalk.py +0 -0
  390. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/__init__.py +0 -0
  391. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/async_write.py +0 -0
  392. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/check_ROOT.py +0 -0
  393. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/conversions/__init__.py +0 -0
  394. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/conversions/timeseries.py +0 -0
  395. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/dataclass_object_io.py +0 -0
  396. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/dep_check.py +0 -0
  397. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/generate_params_table.py +0 -0
  398. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/image.py +0 -0
  399. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/network.py +0 -0
  400. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/parser.py +0 -0
  401. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/skymap_coord.py +0 -0
  402. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/utils/yaml_helper.py +0 -0
  403. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/vendor/__init__.py +0 -0
  404. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/vendor/autoencoder/__init__.py +0 -0
  405. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/vendor/autoencoder/cwb_autoencoder.h5 +0 -0
  406. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/vendor/example.yaml +0 -0
  407. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/vendor/lib/__init__.py +0 -0
  408. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/vendor/template/gwosc/user_parameters.yaml +0 -0
  409. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/vendor/web_viewer/event_dump.html +0 -0
  410. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/vendor/web_viewer/styles.css +0 -0
  411. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/vendor/web_viewer/viewer.html +0 -0
  412. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/workflow/__init__.py +0 -0
  413. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/workflow/merge.py +0 -0
  414. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/workflow/subflow/__init__.py +0 -0
  415. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/workflow/subflow/postprocess_and_plots.py +0 -0
  416. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/workflow/subflow/prepare_job_runs.py +0 -0
  417. {pycwb-0.27.0 → pycwb-0.28.0}/pycwb/workflow/subflow/process_job_segment.py +0 -0
  418. {pycwb-0.27.0 → pycwb-0.28.0}/pyproject.toml +0 -0
  419. {pycwb-0.27.0 → pycwb-0.28.0}/setup.cfg +0 -0
  420. {pycwb-0.27.0 → pycwb-0.28.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: PycWB
3
- Version: 0.27.0
3
+ Version: 0.28.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>
@@ -32,6 +32,10 @@ Requires-Dist: dask
32
32
  Requires-Dist: dask_jobqueue
33
33
  Requires-Dist: htcondor
34
34
  Requires-Dist: psutil
35
+ Dynamic: description
36
+ Dynamic: description-content-type
37
+ Dynamic: home-page
38
+ Dynamic: requires-dist
35
39
 
36
40
  # PycWB
37
41
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: PycWB
3
- Version: 0.27.0
3
+ Version: 0.28.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>
@@ -32,6 +32,10 @@ Requires-Dist: dask
32
32
  Requires-Dist: dask_jobqueue
33
33
  Requires-Dist: htcondor
34
34
  Requires-Dist: psutil
35
+ Dynamic: description
36
+ Dynamic: description-content-type
37
+ Dynamic: home-page
38
+ Dynamic: requires-dist
35
39
 
36
40
  # PycWB
37
41
 
@@ -15,6 +15,7 @@ PycWB.egg-info/top_level.txt
15
15
  benchmark/README.md
16
16
  benchmark/likelihood/README.md
17
17
  benchmark/likelihood/generate_data_for_likelihood.py
18
+ benchmark/likelihood/perf_cuda.py
18
19
  benchmark/likelihood/performance_test_dpf.py
19
20
  benchmark/likelihood/performance_test_opt_sky.py
20
21
  benchmark/likelihood/user_parameters_injection.yaml
@@ -250,6 +251,8 @@ pycwb/cli/xtalk.py
250
251
  pycwb/config/__init__.py
251
252
  pycwb/config/config.py
252
253
  pycwb/constants/__init__.py
254
+ pycwb/constants/detectors.py
255
+ pycwb/constants/physics_constants.py
253
256
  pycwb/constants/project_constants.py
254
257
  pycwb/constants/user_parameters_schema.py
255
258
  pycwb/modules/__init__.py
@@ -3,9 +3,9 @@ import os
3
3
  from pycwb.config import Config
4
4
  from pycwb.modules.logger import logger_init
5
5
 
6
- if not os.environ.get('HOME_WAT_FILTERS'):
7
- print('Please set HOME_WAT_FILTERS to the directory of WAT filters')
8
- exit(1)
6
+ # if not os.environ.get('HOME_WAT_FILTERS'):
7
+ # print('Please set HOME_WAT_FILTERS to the directory of WAT filters')
8
+ # exit(1)
9
9
 
10
10
  logger_init()
11
11
 
@@ -14,13 +14,21 @@ config = Config('./user_parameters_injection.yaml')
14
14
  #%% md
15
15
  ## generate injected data for each detector with given parameters in config
16
16
  #%%
17
- from pycwb.modules.read_data import generate_injection
18
- from pycwb.modules.job_segment import create_job_segment_from_injection
17
+ from pycwb.modules.read_data import generate_injection, read_from_job_segment, generate_noise_for_job_seg
18
+ from pycwb.modules.job_segment import create_job_segment_from_injection, create_job_segment_from_config
19
19
 
20
- job_segments = create_job_segment_from_injection(config.ifo, config.simulation, config.injection)
20
+ job_segments = create_job_segment_from_config(config) #create_job_segment_from_injection(config.ifo, config.simulation, config.injection)
21
21
 
22
- data = generate_injection(config, job_segments[0])
22
+ job_seg = job_segments[0]
23
23
 
24
+ data = None
25
+ # data = generate_injection(config, job_segments[0])
26
+ if job_seg.frames:
27
+ data = read_from_job_segment(config, job_seg)
28
+ if job_seg.noise:
29
+ data = generate_noise_for_job_seg(job_seg, config.inRate, data=data)
30
+ if job_seg.injections:
31
+ data = generate_injection(config, job_seg, data)
24
32
  #%% md
25
33
  ## apply data conditioning to the data
26
34
  #%%
@@ -0,0 +1,168 @@
1
+ import cupy as cp
2
+
3
+ def dpf_cupy(FP, FX, rms):
4
+ """
5
+ Vectorized version of dpf_np using CuPy for GPU acceleration.
6
+
7
+ :param FP: (n_sky, NIFO, 1) array
8
+ :param FX: (n_sky, NIFO, 1) array
9
+ :param rms: (NIFO, NPIX) array
10
+ :return: aa, fp, fx, si, co, ni (all as cupy arrays)
11
+ """
12
+ # Broadcast multiply
13
+ f = FP * rms[cp.newaxis, :, :] # Shape: (n_sky, NIFO, NPIX)
14
+ F = FX * rms[cp.newaxis, :, :]
15
+
16
+ # Sum over NIFO (axis=1)
17
+ _ff = (f ** 2).sum(axis=1)
18
+ _FF = (F ** 2).sum(axis=1)
19
+ _fF = (f * F).sum(axis=1)
20
+
21
+ # Intermediate terms
22
+ _si = 2.0 * _fF
23
+ _co = _ff - _FF
24
+ _AP = _ff + _FF
25
+ _nn = cp.sqrt(_co**2 + _si**2)
26
+ _cc = _co / (_nn + 0.0001)
27
+ fp = (_AP + _nn) / 2.0
28
+
29
+ # Compute co and si with sign correction
30
+ si = cp.sqrt((1.0 - _cc) / 2.0)
31
+ co = cp.where(_si > 0.0,
32
+ cp.sqrt((1.0 + _cc) / 2.0),
33
+ -cp.sqrt((1.0 + _cc) / 2.0))
34
+
35
+ # Expand dimensions for broadcasting
36
+ co_exp = co[:, cp.newaxis, :]
37
+ si_exp = si[:, cp.newaxis, :]
38
+
39
+ # Update basis vectors
40
+ f_new = f * co_exp + F * si_exp
41
+ F_new = F * co_exp - f * si_exp
42
+
43
+ # Compute new correlation
44
+ fF_new = (f_new * F_new).sum(axis=1) / (fp + 0.0001)
45
+
46
+ # Adjust F
47
+ F_adj = F_new - f_new * fF_new[:, cp.newaxis, :]
48
+
49
+ # Final energy terms
50
+ fx = (F_adj ** 2).sum(axis=1)
51
+ ni = (f_new ** 4).sum(axis=1) / (fp**2 + 0.0001)
52
+
53
+ # Network statistics
54
+ NI = (fx / (ni + 0.0001)).sum(axis=1)
55
+ NN = (fp > 0.0).sum(axis=1)
56
+ aa = cp.sqrt(NI / (NN + 0.01))
57
+
58
+ return aa, fp, fx, si, co, ni
59
+
60
+
61
+ def dpf_cupy(Fp0, Fx0, rms):
62
+ """
63
+ :param Fp0: Fp0 is a NIFO x 1 array (CuPy array)
64
+ :param Fx0: Fx0 is a NIFO x 1 array (CuPy array)
65
+ :param rms: rms is a NIFO x NPIX array (CuPy array)
66
+ :return: Tuple of results as CuPy arrays
67
+ """
68
+ f = rms * Fp0
69
+ F = rms * Fx0
70
+
71
+ _ff = cp.sum(f * f, axis=1)
72
+ _FF = cp.sum(F * F, axis=1)
73
+ _fF = cp.sum(f * F, axis=1)
74
+
75
+ _si = 2.0 * _fF
76
+ _co = _ff - _FF
77
+ _AP = _ff + _FF
78
+ _nn = cp.sqrt(_co**2 + _si**2)
79
+ _cc = _co / (_nn + 0.0001)
80
+ fp = (_AP + _nn) / 2.0
81
+
82
+ si = cp.sqrt((1.0 - _cc) / 2.0)
83
+ co = cp.where(_si > 0.0,
84
+ cp.sqrt((1.0 + _cc) / 2.0),
85
+ -cp.sqrt((1.0 + _cc) / 2.0))
86
+
87
+ # Update f and F with broadcasting
88
+ f = f * co[:, cp.newaxis] + F * si[:, cp.newaxis]
89
+ F = F * co[:, cp.newaxis] - f * si[:, cp.newaxis]
90
+
91
+ fF_new = cp.sum(f * F, axis=1) / (fp + 0.0001)
92
+ F -= f * fF_new[:, cp.newaxis]
93
+
94
+ fx = cp.sum(F * F, axis=1)
95
+ ni = cp.sum(f**4, axis=1) / (fp**2 + 0.0001)
96
+
97
+ NI = cp.sum(fx / (ni + 0.0001))
98
+ NN = cp.sum(fp > 0.0)
99
+
100
+ return cp.sqrt(NI / (NN + 0.01)), fp, fx, si, co, ni
101
+
102
+
103
+ def calculate_dpf_gpu(FP, FX, rms, n_sky: int, gamma_regulator: float,
104
+ network_energy_threshold: float):
105
+ """
106
+ GPU-accelerated version of calculate_dpf using CuPy.
107
+
108
+ :param FP: (n_sky, NIFO, 1) array
109
+ :param FX: (n_sky, NIFO, 1) array
110
+ :param rms: (NIFO, NPIX) array
111
+ :return: network energy statistic
112
+ """
113
+ # Convert to float32 and ensure on GPU
114
+ FP = cp.asarray(FP, dtype=cp.float32)
115
+ FX = cp.asarray(FX, dtype=cp.float32)
116
+ rms = cp.asarray(rms, dtype=cp.float32)
117
+
118
+ # Compute all aa values in parallel
119
+ aa, _, _, _, _, _ = dpf_cupy(FP, FX, rms)
120
+
121
+ # Compute selection mask
122
+ mm = (aa > gamma_regulator).astype(cp.uint8)
123
+ ff = mm.sum()
124
+ FF = n_sky # Original code sets all MM[i] = 1
125
+
126
+ # Final calculation
127
+ return (FF**2 / (ff**2 + 1e-9) - 1) * network_energy_threshold
128
+
129
+
130
+
131
+ import pickle
132
+ import numpy as np
133
+
134
+ from pycwb.modules.likelihoodWP.likelihood import load_data_from_pixels
135
+
136
+ # load FP, FX, rms, n_sky, gamma_regulator, network_energy_threshold from pickle
137
+ with open('test_data.pkl', 'rb') as f:
138
+ test_data = pickle.load(f)
139
+
140
+ FP = test_data['FP']
141
+ FX = test_data['FX']
142
+ pixels = test_data['pixels']
143
+ n_ifo = test_data['n_ifo']
144
+ n_sky = test_data['n_sky']
145
+ gamma_regulator = test_data['gamma_regulator']
146
+ network_energy_threshold = test_data['network_energy_threshold']
147
+ rms, td00, td90, td_energy = load_data_from_pixels(pixels, n_ifo)
148
+
149
+
150
+ calculate_dpf_gpu(FP.T, FX.T, rms.T,
151
+ int(n_sky),
152
+ gamma_regulator, network_energy_threshold)
153
+
154
+ print(dpf_cupy(FP.T[1000].astype(np.float32), FX.T[1000].astype(np.float32), rms.T.astype(np.float32))[0])
155
+
156
+ import time
157
+
158
+ total_time = 0
159
+ # # convert FP, FX, rms to float32
160
+ for i in range(10):
161
+ start = time.time()
162
+ calculate_dpf_gpu(FP.T, FX.T, rms.T,
163
+ int(n_sky),
164
+ gamma_regulator, network_energy_threshold)
165
+ end = time.time()
166
+ total_time += end - start
167
+ print(end - start)
168
+ print(f"Average time: {total_time / 10:.4f} s")
@@ -1,8 +1,13 @@
1
- # file generated by setuptools_scm
1
+ # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
+
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
5
+
3
6
  TYPE_CHECKING = False
4
7
  if TYPE_CHECKING:
5
- from typing import Tuple, Union
8
+ from typing import Tuple
9
+ from typing import Union
10
+
6
11
  VERSION_TUPLE = Tuple[Union[int, str], ...]
7
12
  else:
8
13
  VERSION_TUPLE = object
@@ -12,5 +17,5 @@ __version__: str
12
17
  __version_tuple__: VERSION_TUPLE
13
18
  version_tuple: VERSION_TUPLE
14
19
 
15
- __version__ = version = '0.27.0'
16
- __version_tuple__ = version_tuple = (0, 27, 0)
20
+ __version__ = version = '0.28.0'
21
+ __version_tuple__ = version_tuple = (0, 28, 0)
@@ -0,0 +1,119 @@
1
+ DETECTORS = {
2
+ "H1": {
3
+ "name": "LHO_4k",
4
+ "lat": 0.81079526383,
5
+ "lon": -2.08405676917,
6
+ "x": {
7
+ "alt": -0.00061950000,
8
+ "az": 5.65487724844
9
+ },
10
+ "y": {
11
+ "alt": 0.00001250000,
12
+ "az": 4.08408092164
13
+ }
14
+ },
15
+ "L1": {
16
+ "name": "LLO_4k",
17
+ "lat": 0.53342313506,
18
+ "lon": -1.58430937078,
19
+ "x": {
20
+ "alt": -0.00031210000,
21
+ "az": 4.40317772346
22
+ },
23
+ "y": {
24
+ "alt": -0.00061070000,
25
+ "az": 2.83238139666
26
+ }
27
+ },
28
+ "V1": {
29
+ "name": "VIRGO",
30
+ "lat": 0.76151183984,
31
+ "lon": 0.18333805213,
32
+ "x": {
33
+ "alt": 0.00000000000,
34
+ "az": 0.33916285222
35
+ },
36
+ "y": {
37
+ "alt": 0.00000000000,
38
+ "az": 5.05155183261
39
+ }
40
+ },
41
+ "G1": {
42
+ "name": "GEO_600",
43
+ "lat": 0.91184982752,
44
+ "lon": 0.17116780435,
45
+ "x": {
46
+ "alt": 0.00000000000,
47
+ "az": 1.19360100484
48
+ },
49
+ "y": {
50
+ "alt": 0.00000000000,
51
+ "az": 5.83039279401
52
+ }
53
+ },
54
+ "E1": {
55
+ "name": "ET1_T1400308",
56
+ "lat": 0.76151183984,
57
+ "lon": 0.18333805213,
58
+ "x": {
59
+ "alt": 0.00000000000,
60
+ "az": 0.33916285222
61
+ },
62
+ "y": {
63
+ "alt": 0.00000000000,
64
+ "az": 5.57515060820
65
+ }
66
+ },
67
+ "E2": {
68
+ "name": "ET2_T1400308",
69
+ "lat": 0.76299307990,
70
+ "lon": 0.18405858870,
71
+ "x": {
72
+ "alt": 0.00000000000,
73
+ "az": 4.52795305701
74
+ },
75
+ "y": {
76
+ "alt": 0.00000000000,
77
+ "az": 3.48075550581
78
+ }
79
+ },
80
+ "E3": {
81
+ "name": "ET3_T1400308",
82
+ "lat": 0.76270463257,
83
+ "lon": 0.18192996730,
84
+ "x": {
85
+ "alt": 0.00000000000,
86
+ "az": 2.43355795462
87
+ },
88
+ "y": {
89
+ "alt": 0.00000000000,
90
+ "az": 1.38636040342
91
+ }
92
+ },
93
+ "E0": {
94
+ "name": "ET0_T1400308",
95
+ "lat": 0.76270463257,
96
+ "lon": 0.18192996730,
97
+ "x": {
98
+ "alt": 0.00000000000,
99
+ "az": 0.00000000000
100
+ },
101
+ "y": {
102
+ "alt": 0.00000000000,
103
+ "az": 0.00000000000
104
+ }
105
+ },
106
+ "K1": {
107
+ "name": "KAGRA",
108
+ "lat": 0.6355068497,
109
+ "lon": 2.396441015,
110
+ "x": {
111
+ "alt": 0.0031414,
112
+ "az": 1.054113
113
+ },
114
+ "y": {
115
+ "alt": -0.0036270,
116
+ "az": -0.5166798
117
+ }
118
+ }
119
+ }
@@ -0,0 +1,2 @@
1
+ LAL_EARTHFLAT = 0.00335281 # Earth flattening factor (WGS84)
2
+ LAL_REARTH_SI = 6378136.6 # Earth's radius in meters (WGS84)
@@ -81,6 +81,12 @@ schema = {
81
81
  "default": False,
82
82
  "cwb": False
83
83
  },
84
+ "segment_processer": {
85
+ "type": "string",
86
+ "description": "main segment processer function for the analysis, the arguments for the function are: func(working_dir, config, job_seg, **kwargs)",
87
+ "default": "pycwb.workflow.subflow.process_job_segment.process_job_segment",
88
+ "cwb": False
89
+ },
84
90
  "use_root_supercluster": {
85
91
  "type": "boolean",
86
92
  "description": "use cwb supercluster, if false use python version",
@@ -98,7 +98,10 @@ def convert_timeseries_to_wavearray(data: TimeSeries):
98
98
  # if not hasattr(ROOT, "_copy_to_wavearray"):
99
99
  # declare_function()
100
100
 
101
- ROOT.pycwb_copy_to_wavearray(data.value.ctypes.data_as(c_double_p), h, len(data.value))
101
+ # convert it to contiguous array to prevent segmentation fault
102
+ new_data = np.ascontiguousarray(data.value, dtype=np.float64)
103
+
104
+ ROOT.pycwb_copy_to_wavearray(new_data.ctypes.data_as(c_double_p), h, len(data.value))
102
105
 
103
106
  h.start(np.asarray(data.t0, dtype=np.double))
104
107
  h.rate(int(1. / np.asarray(data.dt, dtype=np.double)))
@@ -122,7 +125,10 @@ def convert_pycbc_timeseries_to_wavearray(data: pycbcTimeSeries):
122
125
  # if not hasattr(ROOT, "_copy_to_wavearray"):
123
126
  # declare_function()
124
127
 
125
- ROOT.pycwb_copy_to_wavearray(data.data.ctypes.data_as(c_double_p), h, len(data.data))
128
+ # convert it to contiguous array to prevent segmentation fault
129
+ new_data = np.ascontiguousarray(data.data, dtype=np.float64)
130
+
131
+ ROOT.pycwb_copy_to_wavearray(new_data.ctypes.data_as(c_double_p), h, len(data.data))
126
132
 
127
133
  h.start(np.asarray(data.start_time, dtype=np.double))
128
134
  h.rate(int(1. / np.asarray(data.delta_t, dtype=np.double)))
@@ -148,7 +148,7 @@ def job_segment_from_dq(dq_file_list, ifos, seg_len, seg_mls, seg_edge, seg_over
148
148
  seg_lists = []
149
149
  for ifo in ifos:
150
150
  dq_files = [dq_file for dq_file in dq_file_list if dq_file.ifo == ifo]
151
- cat1_list = read_seg_list(dq_files, 'CWB_CAT1')
151
+ cat1_list = read_seg_list(dq_files, 'CWB_CAT1', periods)
152
152
  seg_lists.append(cat1_list)
153
153
 
154
154
  # for zero super lag, merge the segments, and get the standard job segments
@@ -8,7 +8,7 @@ from numba import njit
8
8
  logger = logging.getLogger(__name__)
9
9
 
10
10
 
11
- def get_MRA_wave(cluster, wdmList, rate, ifo, a_type, mode, nproc, whiten=False):
11
+ def get_MRA_wave(cluster, wdmList, rate, ifo, a_type, mode, nproc, whiten=False) -> TimeSeries:
12
12
  """
13
13
  get MRA waveforms of type atype in time domain given lag nomber and cluster ID
14
14
 
@@ -122,9 +122,9 @@ def get_network_MRA_wave(config, cluster, rate, nIFO, rTDF, a_type, mode, tof, w
122
122
  # apply time delay
123
123
  if tof:
124
124
  R = rTDF # effective time-delay rate
125
- t_shift = v[i] / R
125
+ t_shift = -v[i] / R
126
126
  xf = x.to_frequencyseries()
127
- xf = xf.cyclic_time_shift(t_shift)
127
+ xf.data *= np.exp(-2j * np.pi * xf.sample_frequencies * t_shift)
128
128
  x = xf.to_timeseries()
129
129
 
130
130
  waveforms.append(x)
@@ -0,0 +1,112 @@
1
+ import math
2
+ from dataclasses import dataclass
3
+ from copy import deepcopy
4
+ from pycwb.constants.physics_constants import LAL_EARTHFLAT, LAL_REARTH_SI
5
+
6
+
7
+ @dataclass
8
+ class Detector:
9
+ """
10
+ Class for storing detector information.
11
+
12
+ Parameters
13
+ ----------
14
+ name : str
15
+ detector name
16
+ """
17
+ name: str
18
+ full_name: str
19
+ latitude: float
20
+ longitude: float
21
+ altitude: float
22
+ x_azimuth: float
23
+ x_altitude: float
24
+ y_azimuth: float
25
+ y_altitude: float
26
+
27
+ def __init__(self, name):
28
+ super().__init__(name)
29
+
30
+ @staticmethod
31
+ def get_cartesian_components(alt, az, lat, lon):
32
+ """
33
+ Calculate the Cartesian components of a vector based on Altitude, Azimuth, Latitude, and Longitude.
34
+
35
+ Parameters:
36
+ alt (float): Altitude angle in radians.
37
+ az (float): Azimuth angle in radians.
38
+ lat (float): Latitude in radians.
39
+ lon (float): Longitude in radians.
40
+ """
41
+ cosAlt = math.cos(alt)
42
+ sinAlt = math.sin(alt)
43
+ cosAz = math.cos(az)
44
+ sinAz = math.sin(az)
45
+ cosLat = math.cos(lat)
46
+ sinLat = math.sin(lat)
47
+ cosLon = math.cos(lon)
48
+ sinLon = math.sin(lon)
49
+
50
+ uNorth = cosAlt * cosAz
51
+ uEast = cosAlt * sinAz
52
+ # uUp == sinAlt
53
+ uRho = -sinLat * uNorth + cosLat * sinAlt
54
+ # uLambda == uEast
55
+
56
+ u = [cosLon * uRho - sinLon * uEast,
57
+ sinLon * uRho + cosLon * uEast,
58
+ cosLat * uNorth + sinLat * sinAlt]
59
+
60
+ return u
61
+
62
+ @staticmethod
63
+ def geodetic_to_geocentric(latitude, longitude, elevation):
64
+ """
65
+ Convert geodetic coordinates (latitude, longitude, elevation) to geocentric Cartesian coordinates (X, Y, Z).
66
+
67
+ Parameters:
68
+ latitude (float): Latitude in radians.
69
+ longitude (float): Longitude in radians.
70
+ elevation (float): Elevation above the Earth's surface in meters.
71
+
72
+ Returns:
73
+ tuple: A tuple containing the Cartesian coordinates (X, Y, Z) in meters.
74
+ """
75
+ # Intermediate calculations
76
+ fFac = 1.0 - LAL_EARTHFLAT
77
+ fFac *= fFac
78
+
79
+ cosP = math.cos(latitude)
80
+ sinP = math.sin(latitude)
81
+
82
+ c = math.sqrt(1.0 / (cosP * cosP + fFac * sinP * sinP))
83
+ print(c)
84
+ s = fFac * c
85
+ c = (LAL_REARTH_SI * c + elevation) * cosP
86
+ s = (LAL_REARTH_SI * s + elevation) * sinP
87
+ print(c)
88
+ # Cartesian coordinates
89
+ x = c * math.cos(longitude)
90
+ y = c * math.sin(longitude)
91
+ z = s
92
+
93
+ return x, y, z
94
+
95
+ def time_rotated(self, time):
96
+ """
97
+ Equivalent detector position for a delayed time.
98
+
99
+ Parameters:
100
+ time (float): Time in seconds.
101
+
102
+ Returns:
103
+ Detector: A new detector object with the equivalent position for the delayed time.
104
+ """
105
+ # Rotate the detector
106
+ new_lon = self.longitude + 2 * math.pi * time / 86400
107
+
108
+ # copy the detector
109
+ new_detector = deepcopy(self)
110
+ new_detector.longitude = new_lon
111
+
112
+ return new_detector
@@ -13,3 +13,13 @@ def import_helper(module_str, module_name):
13
13
  module = importlib.import_module(module_str)
14
14
 
15
15
  return module
16
+
17
+
18
+ def import_function(func_str):
19
+ func_name = func_str.split('.')[-1]
20
+ module_name = '.'.join(func_str.split('.')[:-1])
21
+ if not module_name.startswith('pycwb'):
22
+ module_name = f"pycwb.modules.{module_name}"
23
+ module = import_helper(module_name, module_name)
24
+ func = getattr(module, func_name)
25
+ return func
@@ -2,13 +2,13 @@ import multiprocessing
2
2
  import os
3
3
  import getpass
4
4
  import shutil
5
+ import logging
5
6
  from pathlib import Path
6
-
7
- from htcondor import dags
8
-
9
7
  from pycwb.modules.logger import logger_init, log_prints
10
8
  from pycwb.workflow.subflow import prepare_job_runs, load_batch_run
11
- from pycwb.workflow.subflow.process_job_segment import process_job_segment
9
+ from pycwb.utils.module import import_function
10
+
11
+ logger = logging.getLogger(__name__)
12
12
 
13
13
 
14
14
  def batch_setup(file_name, working_dir='.',
@@ -17,6 +17,7 @@ def batch_setup(file_name, working_dir='.',
17
17
  accounting_group=None, job_per_worker=10, n_proc=1, memory="6GB", disk="4GB",
18
18
  dry_run=False, submit=False):
19
19
  import htcondor
20
+ from htcondor import dags
20
21
 
21
22
  logger_init(log_file, log_level)
22
23
  job_segments, config, working_dir = prepare_job_runs(working_dir, file_name, n_proc, dry_run, overwrite,
@@ -139,6 +140,10 @@ def batch_run(config_file, working_dir='.', log_file=None, log_level="INFO",
139
140
  n_proc=n_proc, compress_json=compress_json)
140
141
  logger_init(log_file, log_level)
141
142
 
143
+ logger.info(f"Loading segment processer: {config.segment_processer}")
144
+ main_func = import_function(config.segment_processer)
145
+ logger.info(f"Segment processer loaded: {main_func}")
146
+
142
147
  exceptions = []
143
148
  for job_seg in job_segments:
144
149
  # check if the job is done
@@ -152,7 +157,7 @@ def batch_run(config_file, working_dir='.', log_file=None, log_level="INFO",
152
157
  # args=(working_dir, config, job_seg, compress_json, catalog_file))
153
158
  # process.start()
154
159
  # process.join()
155
- process_job_segment(working_dir, config, job_seg,
160
+ main_func(working_dir, config, job_seg,
156
161
  compress_json=compress_json, catalog_file=catalog_file)
157
162
 
158
163
  # create a flag file to indicate the job is done
@@ -1,6 +1,9 @@
1
1
  from pycwb.modules.logger import logger_init
2
2
  from pycwb.workflow.subflow import prepare_job_runs
3
- from pycwb.workflow.subflow.process_job_segment import process_job_segment
3
+ from pycwb.utils.module import import_function
4
+ import logging
5
+
6
+ logger = logging.getLogger(__name__)
4
7
 
5
8
 
6
9
  def search(file_name, working_dir='.', overwrite=False, log_file=None, log_level="INFO",
@@ -17,7 +20,11 @@ def search(file_name, working_dir='.', overwrite=False, log_file=None, log_level
17
20
  # cluster.scale(n_proc)
18
21
  # client = Client(cluster)
19
22
 
23
+ logger.info(f"Loading segment processer: {config.segment_processer}")
24
+ main_func = import_function(config.segment_processer)
25
+ logger.info(f"Segment processer loaded: {main_func}")
26
+
20
27
  for job_seg in job_segments:
21
- process_job_segment(working_dir, config, job_seg, compress_json=compress_json)
28
+ main_func(working_dir, config, job_seg, compress_json=compress_json)
22
29
 
23
30
  # client.close()