PycWB 0.24.0__tar.gz → 0.25.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 (404) hide show
  1. {pycwb-0.24.0 → pycwb-0.25.0}/PKG-INFO +2 -1
  2. {pycwb-0.24.0 → pycwb-0.25.0}/PycWB.egg-info/PKG-INFO +2 -1
  3. {pycwb-0.24.0 → pycwb-0.25.0}/PycWB.egg-info/SOURCES.txt +3 -2
  4. {pycwb-0.24.0 → pycwb-0.25.0}/PycWB.egg-info/requires.txt +1 -0
  5. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/conf.py +1 -1
  6. pycwb-0.25.0/docs/source/schema.rst +15 -0
  7. {pycwb-0.24.0 → pycwb-0.25.0}/envs/environment.yml +2 -1
  8. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/_version.py +2 -2
  9. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/cli/batch_setup.py +19 -1
  10. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/catalog/catalog.py +7 -7
  11. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/data_conditioning/whitening.py +1 -0
  12. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/job_segment/dq_segment.py +15 -11
  13. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/job_segment/frame.py +19 -17
  14. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/job_segment/job_segment.py +98 -42
  15. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/job_segment/module.yaml +1 -1
  16. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/likelihood/likelihood.py +67 -56
  17. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/read_data/read_data.py +40 -4
  18. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/sparse_series/sparse_table.py +7 -3
  19. pycwb-0.25.0/pycwb/modules/superlag/module.yaml +4 -0
  20. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/workflow_utils/job_setup.py +1 -0
  21. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/xtalk/xtalk_data.py +8 -8
  22. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/data_quality_file.py +10 -21
  23. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/job.py +28 -0
  24. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/network_cluster.py +3 -0
  25. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/sparse_series.py +9 -3
  26. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/wdm_xtalk.py +6 -1
  27. pycwb-0.25.0/pycwb/utils/generate_params_table.py +53 -0
  28. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/workflow/batch.py +13 -9
  29. pycwb-0.25.0/pycwb/workflow/subflow/__init__.py +3 -0
  30. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/workflow/subflow/prepare_job_runs.py +42 -2
  31. pycwb-0.25.0/pycwb/workflow/subflow/process_job_segment.py +170 -0
  32. {pycwb-0.24.0 → pycwb-0.25.0}/setup.py +1 -0
  33. pycwb-0.24.0/docs/source/schema.rst +0 -12
  34. pycwb-0.24.0/pycwb/workflow/subflow/__init__.py +0 -2
  35. pycwb-0.24.0/pycwb/workflow/subflow/process_job_segment.py +0 -115
  36. pycwb-0.24.0/pycwb/workflow/subflow/supercluster_and_likelihood.py +0 -86
  37. {pycwb-0.24.0 → pycwb-0.25.0}/.gitignore +0 -0
  38. {pycwb-0.24.0 → pycwb-0.25.0}/.gitlab-ci.yml +0 -0
  39. {pycwb-0.24.0 → pycwb-0.25.0}/.readthedocs.yaml +0 -0
  40. {pycwb-0.24.0 → pycwb-0.25.0}/LICENSE +0 -0
  41. {pycwb-0.24.0 → pycwb-0.25.0}/MANIFEST.in +0 -0
  42. {pycwb-0.24.0 → pycwb-0.25.0}/Makefile +0 -0
  43. {pycwb-0.24.0 → pycwb-0.25.0}/PycWB.egg-info/dependency_links.txt +0 -0
  44. {pycwb-0.24.0 → pycwb-0.25.0}/PycWB.egg-info/top_level.txt +0 -0
  45. {pycwb-0.24.0 → pycwb-0.25.0}/README.md +0 -0
  46. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/README.md +0 -0
  47. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/likelihood/README.md +0 -0
  48. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/likelihood/generate_data_for_likelihood.py +0 -0
  49. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/likelihood/performance_test_dpf.py +0 -0
  50. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/likelihood/performance_test_opt_sky.py +0 -0
  51. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/likelihood/user_parameters_injection.yaml +0 -0
  52. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/supercluster/README.md +0 -0
  53. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/supercluster/generate_data.py +0 -0
  54. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/supercluster/generate_data_2.py +0 -0
  55. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/supercluster/performance_supercluster.py +0 -0
  56. {pycwb-0.24.0 → pycwb-0.25.0}/benchmark/supercluster/user_parameters_injection.yaml +0 -0
  57. {pycwb-0.24.0 → pycwb-0.25.0}/bin/pycwb +0 -0
  58. {pycwb-0.24.0 → pycwb-0.25.0}/bin/pycwb_search +0 -0
  59. {pycwb-0.24.0 → pycwb-0.25.0}/bin/pycwb_show +0 -0
  60. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Biorthogonal.cc +0 -0
  61. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Biorthogonal.hh +0 -0
  62. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/CMakeLists.txt +0 -0
  63. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Daubechies.cc +0 -0
  64. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Daubechies.hh +0 -0
  65. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/FourierCoefficients.icc +0 -0
  66. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Haar.cc +0 -0
  67. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Haar.hh +0 -0
  68. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/LineFilter.cc +0 -0
  69. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/LineFilter.hh +0 -0
  70. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Makefile +0 -0
  71. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Meyer.cc +0 -0
  72. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Meyer.hh +0 -0
  73. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Symlet.cc +0 -0
  74. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Symlet.hh +0 -0
  75. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/SymmArray.cc +0 -0
  76. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/SymmArray.hh +0 -0
  77. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/SymmArraySSE.cc +0 -0
  78. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/SymmArraySSE.hh +0 -0
  79. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/SymmObjArray.cc +0 -0
  80. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/SymmObjArray.hh +0 -0
  81. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/WDM.cc +0 -0
  82. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/WDM.hh +0 -0
  83. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/WDMOverlap.cc +0 -0
  84. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/WDMOverlap.hh +0 -0
  85. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/WaveDWT.cc +0 -0
  86. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/WaveDWT.hh +0 -0
  87. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Wavelet.cc +0 -0
  88. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/Wavelet.hh +0 -0
  89. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/alm.hh +0 -0
  90. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/build.sh +0 -0
  91. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/cluster.cc +0 -0
  92. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/cluster.hh +0 -0
  93. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/cmake/FindHealpix.cmake +0 -0
  94. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/cmake/FindeBBH.cmake +0 -0
  95. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/cmake/install_function.cmake +0 -0
  96. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/constants.hh +0 -0
  97. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/detector.cc +0 -0
  98. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/detector.hh +0 -0
  99. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/injection.cc +0 -0
  100. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/injection.hh +0 -0
  101. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/lossy.cc +0 -0
  102. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/lossy.hh +0 -0
  103. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/monster.cc +0 -0
  104. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/monster.hh +0 -0
  105. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/netcluster.cc +0 -0
  106. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/netcluster.hh +0 -0
  107. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/netevent.cc +0 -0
  108. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/netevent.hh +0 -0
  109. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/netpixel.cc +0 -0
  110. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/netpixel.hh +0 -0
  111. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/network.cc +0 -0
  112. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/network.hh +0 -0
  113. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/pycwb.hh +0 -0
  114. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/rdfr.cc +0 -0
  115. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/rdfr.hh +0 -0
  116. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/readframe.cc +0 -0
  117. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/readframe.hh +0 -0
  118. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/readfrfile.cc +0 -0
  119. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/readfrfile.hh +0 -0
  120. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/regression.cc +0 -0
  121. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/regression.hh +0 -0
  122. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/skycoord.hh +0 -0
  123. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/skymap.cc +0 -0
  124. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/skymap.hh +0 -0
  125. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/sseries.cc +0 -0
  126. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/sseries.hh +0 -0
  127. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/time.cc +0 -0
  128. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/time.hh +0 -0
  129. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wat.hh +0 -0
  130. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/watasm.S +0 -0
  131. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/watasm_elf64.o +0 -0
  132. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/watavx.hh +0 -0
  133. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/watbranch.in +0 -0
  134. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/watfun.hh +0 -0
  135. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wathash.in +0 -0
  136. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/watplot.cc +0 -0
  137. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/watplot.hh +0 -0
  138. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/watsse.hh +0 -0
  139. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wattag.in +0 -0
  140. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/waturl.in +0 -0
  141. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/watversion.hh.in +0 -0
  142. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavearray.cc +0 -0
  143. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavearray.hh +0 -0
  144. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavecomplex.cc +0 -0
  145. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavecomplex.hh +0 -0
  146. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavecor.cc +0 -0
  147. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavecor.hh +0 -0
  148. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavefft.cc +0 -0
  149. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavefft.hh +0 -0
  150. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavelet_LinkDef.h +0 -0
  151. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavelinefilter.cc +0 -0
  152. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wavelinefilter.hh +0 -0
  153. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/waverdc.cc +0 -0
  154. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/waverdc.hh +0 -0
  155. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wseries.cc +0 -0
  156. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wseries.hh +0 -0
  157. {pycwb-0.24.0 → pycwb-0.25.0}/cwb-core/wslice.hh +0 -0
  158. {pycwb-0.24.0 → pycwb-0.25.0}/docs/0.installation_guide.md +0 -0
  159. {pycwb-0.24.0 → pycwb-0.25.0}/docs/1.initialisation_guide.md +0 -0
  160. {pycwb-0.24.0 → pycwb-0.25.0}/docs/2.test_interactive_multistages_2G_analysis.md +0 -0
  161. {pycwb-0.24.0 → pycwb-0.25.0}/docs/3.run_pycwb_with_yaml_config.md +0 -0
  162. {pycwb-0.24.0 → pycwb-0.25.0}/docs/4.py_cwb_inet_2G.md +0 -0
  163. {pycwb-0.24.0 → pycwb-0.25.0}/docs/5.cwb2G_analyse.md +0 -0
  164. {pycwb-0.24.0 → pycwb-0.25.0}/docs/6.wat_codes_notes.md +0 -0
  165. {pycwb-0.24.0 → pycwb-0.25.0}/docs/Makefile +0 -0
  166. {pycwb-0.24.0 → pycwb-0.25.0}/docs/diagram.py +0 -0
  167. {pycwb-0.24.0 → pycwb-0.25.0}/docs/make.bat +0 -0
  168. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/_static/.keep +0 -0
  169. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/_templates/.keep +0 -0
  170. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/credit.rst +0 -0
  171. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/index.rst +0 -0
  172. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/install.rst +0 -0
  173. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/mod_cwb.rst +0 -0
  174. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/package.rst +0 -0
  175. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/tutorial_batch_inj.rst +0 -0
  176. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/tutorial_customized_wf_gen.rst +0 -0
  177. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/tutorial_injection.rst +0 -0
  178. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/tutorial_multi_injection.rst +0 -0
  179. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/tutorial_search.rst +0 -0
  180. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/tutorials.rst +0 -0
  181. {pycwb-0.24.0 → pycwb-0.25.0}/docs/source/workflow.png +0 -0
  182. {pycwb-0.24.0 → pycwb-0.25.0}/envs/Dockerfile +0 -0
  183. {pycwb-0.24.0 → pycwb-0.25.0}/envs/mamba/Dockerfile +0 -0
  184. {pycwb-0.24.0 → pycwb-0.25.0}/examples/autoencoder/pycwb_injection.ipynb +0 -0
  185. {pycwb-0.24.0 → pycwb-0.25.0}/examples/autoencoder/user_parameters_injection.yaml +0 -0
  186. {pycwb-0.24.0 → pycwb-0.25.0}/examples/batch_injection/generate_parameters.py +0 -0
  187. {pycwb-0.24.0 → pycwb-0.25.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/__init__.py +0 -0
  188. {pycwb-0.24.0 → pycwb-0.25.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/parameters.py +0 -0
  189. {pycwb-0.24.0 → pycwb-0.25.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/waveform.py +0 -0
  190. {pycwb-0.24.0 → pycwb-0.25.0}/examples/batch_injection/pycwb_injection.py +0 -0
  191. {pycwb-0.24.0 → pycwb-0.25.0}/examples/batch_injection/user_parameters_injection.yaml +0 -0
  192. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/DQ/H1_cat0.txt +0 -0
  193. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/DQ/H1_cat1.txt +0 -0
  194. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/DQ/H1_cat2.txt +0 -0
  195. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/DQ/H1_cat4.txt +0 -0
  196. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/DQ/L1_cat0.txt +0 -0
  197. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/DQ/L1_cat1.txt +0 -0
  198. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/DQ/L1_cat2.txt +0 -0
  199. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/DQ/L1_cat4.txt +0 -0
  200. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/input/OPBM.period +0 -0
  201. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/input/OPBM_H1.frames +0 -0
  202. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/input/OPBM_L1.frames +0 -0
  203. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/pycwb_mdc.py +0 -0
  204. {pycwb-0.24.0 → pycwb-0.25.0}/examples/benchmark/user_parameters_mdc.yaml +0 -0
  205. {pycwb-0.24.0 → pycwb-0.25.0}/examples/colab/pycWB_GW150914.ipynb +0 -0
  206. {pycwb-0.24.0 → pycwb-0.25.0}/examples/injection/pycwb_injection.ipynb +0 -0
  207. {pycwb-0.24.0 → pycwb-0.25.0}/examples/injection/user_parameters_injection.yaml +0 -0
  208. {pycwb-0.24.0 → pycwb-0.25.0}/examples/injection/wdmXTalk/OverlapCatalog16-1024.bin +0 -0
  209. {pycwb-0.24.0 → pycwb-0.25.0}/examples/lvk_sep_2023/demo.ipynb +0 -0
  210. {pycwb-0.24.0 → pycwb-0.25.0}/examples/lvk_sep_2023/user_parameters.yaml +0 -0
  211. {pycwb-0.24.0 → pycwb-0.25.0}/examples/multiple_injection/pycwb_injection.py +0 -0
  212. {pycwb-0.24.0 → pycwb-0.25.0}/examples/multiple_injection/user_parameters_injection.yaml +0 -0
  213. {pycwb-0.24.0 → pycwb-0.25.0}/examples/pyseobnr_injection/generate_parameters.py +0 -0
  214. {pycwb-0.24.0 → pycwb-0.25.0}/examples/pyseobnr_injection/user_parameters_injection.yaml +0 -0
  215. {pycwb-0.24.0 → pycwb-0.25.0}/examples/pyseobnr_injection/waveform_model/__init__.py +0 -0
  216. {pycwb-0.24.0 → pycwb-0.25.0}/examples/pyseobnr_injection/waveform_model/waveform.py +0 -0
  217. {pycwb-0.24.0 → pycwb-0.25.0}/examples/waveform_reconstruction/reconstruct_waveform_from_cluster.ipynb +0 -0
  218. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/cwb_core/coherence.cc +0 -0
  219. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/cwb_core/coherence.hh +0 -0
  220. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/cwb_core/likelihood.cc +0 -0
  221. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/cwb_core/likelihood.hh +0 -0
  222. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/dag/dag.py +0 -0
  223. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/dag/dask-prefect.py +0 -0
  224. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/dag/prefect_test.py +0 -0
  225. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger/__init__.py +0 -0
  226. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger/server.py +0 -0
  227. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger/visualizition.py +0 -0
  228. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/.eslintrc.cjs +0 -0
  229. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/.gitignore +0 -0
  230. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/.prettierrc.json +0 -0
  231. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/README.md +0 -0
  232. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/index.html +0 -0
  233. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/package-lock.json +0 -0
  234. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/package.json +0 -0
  235. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/public/favicon.ico +0 -0
  236. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/App.vue +0 -0
  237. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/assets/base.css +0 -0
  238. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/assets/cwb_icon_modern_blue_alfa.png +0 -0
  239. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/assets/main.css +0 -0
  240. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/assets/style.css +0 -0
  241. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/components/HelloWorld.vue +0 -0
  242. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/components/TheWelcome.vue +0 -0
  243. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/components/WelcomeItem.vue +0 -0
  244. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/components/__tests__/HelloWorld.spec.js +0 -0
  245. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/components/icons/IconCommunity.vue +0 -0
  246. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/components/icons/IconDocumentation.vue +0 -0
  247. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/components/icons/IconEcosystem.vue +0 -0
  248. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/components/icons/IconSupport.vue +0 -0
  249. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/components/icons/IconTooling.vue +0 -0
  250. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/main.js +0 -0
  251. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/router/index.js +0 -0
  252. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/stores/counter.js +0 -0
  253. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/views/drawflow.vue +0 -0
  254. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/views/nodes/node1.vue +0 -0
  255. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/views/nodes/node2.vue +0 -0
  256. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/views/nodes/node3.vue +0 -0
  257. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/src/views/nodes/nodeHeader.vue +0 -0
  258. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/messenger-web-interface/vite.config.js +0 -0
  259. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/performance/numba_test.py +0 -0
  260. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/performance/taichi_test.py +0 -0
  261. {pycwb-0.24.0 → pycwb-0.25.0}/prototypes/search.yaml +0 -0
  262. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/__init__.py +0 -0
  263. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/cli/__init__.py +0 -0
  264. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/cli/batch_runner.py +0 -0
  265. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/cli/flow.py +0 -0
  266. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/cli/merge_catalog.py +0 -0
  267. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/cli/run.py +0 -0
  268. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/cli/server.py +0 -0
  269. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/cli/xtalk.py +0 -0
  270. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/config/__init__.py +0 -0
  271. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/config/config.py +0 -0
  272. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/constants/__init__.py +0 -0
  273. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/constants/project_constants.py +0 -0
  274. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/constants/user_parameters_schema.py +0 -0
  275. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/__init__.py +0 -0
  276. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/autoencoder/__init__.py +0 -0
  277. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/autoencoder/autoencoder.py +0 -0
  278. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/autoencoder/cwb_autoencoder.py +0 -0
  279. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/autoencoder/module.yaml +0 -0
  280. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/catalog/__init__.py +0 -0
  281. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/catalog/module.yaml +0 -0
  282. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/coherence/__init__.py +0 -0
  283. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/coherence/coherence.py +0 -0
  284. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/coherence/coherence_lite.py +0 -0
  285. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/coherence/module.yaml +0 -0
  286. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/condor/__init__.py +0 -0
  287. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/condor/condor.py +0 -0
  288. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/condor/module.yaml +0 -0
  289. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/cwb_conversions/__init__.py +0 -0
  290. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/cwb_conversions/cluster.py +0 -0
  291. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/cwb_conversions/module.yaml +0 -0
  292. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/cwb_conversions/pixel.py +0 -0
  293. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/cwb_conversions/series.py +0 -0
  294. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/cwb_conversions/sparse_series.py +0 -0
  295. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/data_conditioning/__init__.py +0 -0
  296. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/data_conditioning/data_conditioning.py +0 -0
  297. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/data_conditioning/module.yaml +0 -0
  298. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/data_conditioning/regression.py +0 -0
  299. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/energy_threshold/__init__.py +0 -0
  300. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/energy_threshold/threshold.py +0 -0
  301. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/gracedb/__init__.py +0 -0
  302. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/gracedb/gracedb.py +0 -0
  303. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/gracedb/module.yaml +0 -0
  304. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/gracedb/test_gracedb.py +0 -0
  305. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/job_segment/__init__.py +0 -0
  306. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/job_segment/plots.py +0 -0
  307. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/job_segment/super_lag.py +0 -0
  308. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/job_segment/test_job_segment.py +0 -0
  309. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/likelihood/__init__.py +0 -0
  310. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/likelihood/module.yaml +0 -0
  311. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/likelihoodWP/__init__.py +0 -0
  312. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/likelihoodWP/dpf.py +0 -0
  313. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/likelihoodWP/dpf_cython.pyx +0 -0
  314. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/likelihoodWP/likelihood.py +0 -0
  315. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/likelihoodWP/sky_stat.py +0 -0
  316. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/likelihoodWP/utils.py +0 -0
  317. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/logger/__init__.py +0 -0
  318. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/logger/logger.py +0 -0
  319. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/logger/module.yaml +0 -0
  320. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/multi_resolution_wdm/__init__.py +0 -0
  321. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/multi_resolution_wdm/module.yaml +0 -0
  322. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/multi_resolution_wdm/wdm.py +0 -0
  323. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot/__init__.py +0 -0
  324. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot/cluster_statistics.py +0 -0
  325. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot/event.py +0 -0
  326. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot/module.yaml +0 -0
  327. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot/spectrogram.py +0 -0
  328. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot/waveform.py +0 -0
  329. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot_data_quality/__init__.py +0 -0
  330. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot_data_quality/module.yaml +0 -0
  331. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot_data_quality/plot.py +0 -0
  332. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot_map/__init__.py +0 -0
  333. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot_map/module.yaml +0 -0
  334. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/plot_map/world_map.py +0 -0
  335. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/read_data/__init__.py +0 -0
  336. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/read_data/data_check.py +0 -0
  337. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/read_data/data_find.py +0 -0
  338. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/read_data/mdc.py +0 -0
  339. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/read_data/module.yaml +0 -0
  340. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/reconstruction/__init__.py +0 -0
  341. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/reconstruction/getMRAwaveform.py +0 -0
  342. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/reconstruction/module.yaml +0 -0
  343. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/sparse_series/__init__.py +0 -0
  344. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/sparse_series/module.yaml +0 -0
  345. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/statistics/__init__.py +0 -0
  346. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/statistics/eff.py +0 -0
  347. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/statistics/eff_plot.py +0 -0
  348. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/statistics/merge.py +0 -0
  349. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/statistics/sigmoid_fit.py +0 -0
  350. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/super_cluster/__init__.py +0 -0
  351. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/super_cluster/module.yaml +0 -0
  352. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/super_cluster/sub_net_cut.py +0 -0
  353. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/super_cluster/super_cluster.py +0 -0
  354. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/super_cluster/supercluster.py +0 -0
  355. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/super_cluster/utils.py +0 -0
  356. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/supercluster_naive/__init__.py +0 -0
  357. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/supercluster_naive/supercluster2.py +0 -0
  358. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/superlag/__init__.py +0 -0
  359. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/superlag/superlag.py +0 -0
  360. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/web_viewer/__init__.py +0 -0
  361. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/web_viewer/create.py +0 -0
  362. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/web_viewer/module.yaml +0 -0
  363. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/workflow_utils/__init__.py +0 -0
  364. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/xtalk/__init__.py +0 -0
  365. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/xtalk/monster.py +0 -0
  366. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/modules/xtalk/monster_old.py +0 -0
  367. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/prefect_flow/__init__.py +0 -0
  368. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/prefect_flow/pycwb_flow.py +0 -0
  369. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/prefect_flow/tasks/__init__.py +0 -0
  370. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/prefect_flow/tasks/builtin.py +0 -0
  371. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/__init__.py +0 -0
  372. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/detector.py +0 -0
  373. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/network.py +0 -0
  374. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/network_event.py +0 -0
  375. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/network_pixel.py +0 -0
  376. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/time_frequency_series.py +0 -0
  377. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/types/wdm.py +0 -0
  378. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/__init__.py +0 -0
  379. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/async_write.py +0 -0
  380. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/check_ROOT.py +0 -0
  381. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/conversions/__init__.py +0 -0
  382. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/conversions/timeseries.py +0 -0
  383. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/dataclass_object_io.py +0 -0
  384. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/dep_check.py +0 -0
  385. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/image.py +0 -0
  386. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/module.py +0 -0
  387. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/network.py +0 -0
  388. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/parser.py +0 -0
  389. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/skymap_coord.py +0 -0
  390. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/utils/yaml_helper.py +0 -0
  391. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/vendor/__init__.py +0 -0
  392. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/vendor/autoencoder/__init__.py +0 -0
  393. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/vendor/autoencoder/cwb_autoencoder.h5 +0 -0
  394. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/vendor/example.yaml +0 -0
  395. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/vendor/lib/__init__.py +0 -0
  396. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/vendor/web_viewer/event_dump.html +0 -0
  397. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/vendor/web_viewer/styles.css +0 -0
  398. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/vendor/web_viewer/viewer.html +0 -0
  399. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/workflow/__init__.py +0 -0
  400. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/workflow/merge.py +0 -0
  401. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/workflow/run.py +0 -0
  402. {pycwb-0.24.0 → pycwb-0.25.0}/pycwb/workflow/subflow/postprocess_and_plots.py +0 -0
  403. {pycwb-0.24.0 → pycwb-0.25.0}/pyproject.toml +0 -0
  404. {pycwb-0.24.0 → pycwb-0.25.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PycWB
3
- Version: 0.24.0
3
+ Version: 0.25.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>
@@ -31,6 +31,7 @@ Requires-Dist: prefect-dask
31
31
  Requires-Dist: dask
32
32
  Requires-Dist: dask_jobqueue
33
33
  Requires-Dist: htcondor
34
+ Requires-Dist: psutil
34
35
 
35
36
  # PycWB
36
37
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PycWB
3
- Version: 0.24.0
3
+ Version: 0.25.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>
@@ -31,6 +31,7 @@ Requires-Dist: prefect-dask
31
31
  Requires-Dist: dask
32
32
  Requires-Dist: dask_jobqueue
33
33
  Requires-Dist: htcondor
34
+ Requires-Dist: psutil
34
35
 
35
36
  # PycWB
36
37
 
@@ -339,6 +339,7 @@ pycwb/modules/super_cluster/utils.py
339
339
  pycwb/modules/supercluster_naive/__init__.py
340
340
  pycwb/modules/supercluster_naive/supercluster2.py
341
341
  pycwb/modules/superlag/__init__.py
342
+ pycwb/modules/superlag/module.yaml
342
343
  pycwb/modules/superlag/superlag.py
343
344
  pycwb/modules/web_viewer/__init__.py
344
345
  pycwb/modules/web_viewer/create.py
@@ -370,6 +371,7 @@ pycwb/utils/async_write.py
370
371
  pycwb/utils/check_ROOT.py
371
372
  pycwb/utils/dataclass_object_io.py
372
373
  pycwb/utils/dep_check.py
374
+ pycwb/utils/generate_params_table.py
373
375
  pycwb/utils/image.py
374
376
  pycwb/utils/module.py
375
377
  pycwb/utils/network.py
@@ -393,5 +395,4 @@ pycwb/workflow/run.py
393
395
  pycwb/workflow/subflow/__init__.py
394
396
  pycwb/workflow/subflow/postprocess_and_plots.py
395
397
  pycwb/workflow/subflow/prepare_job_runs.py
396
- pycwb/workflow/subflow/process_job_segment.py
397
- pycwb/workflow/subflow/supercluster_and_likelihood.py
398
+ pycwb/workflow/subflow/process_job_segment.py
@@ -21,3 +21,4 @@ prefect-dask
21
21
  dask
22
22
  dask_jobqueue
23
23
  htcondor
24
+ psutil
@@ -27,7 +27,7 @@ exclude_patterns = ["pycwb/vendor/*", ".DS_Store"]
27
27
  # -- Options for HTML output -------------------------------------------------
28
28
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
29
29
 
30
- html_theme = 'sphinx_rtd_theme'
30
+ html_theme = "furo"
31
31
  html_static_path = ['_static']
32
32
 
33
33
  # -- external links ----------------------------------------------------------
@@ -0,0 +1,15 @@
1
+ .. _schema:
2
+
3
+ User Parameters
4
+ ----------------
5
+
6
+ The default schema for user parameters is:
7
+
8
+ .. exec::
9
+ import json
10
+ from pycwb.constants import user_parameters_schema
11
+ from pycwb.utils.generate_params_table import generate_rst_table, parse_description, parse_type_or_enum
12
+
13
+ print(generate_rst_table(user_parameters_schema["properties"]))
14
+ # json_obj = json.dumps(user_parameters_schema, sort_keys=True, indent=4)
15
+ # print('.. code-block:: JavaScript\n\n %s\n\n' % json_obj)
@@ -12,4 +12,5 @@ dependencies:
12
12
  - python=3.10
13
13
  - root=6.26.10
14
14
  - setuptools_scm
15
- - sphinx_rtd_theme
15
+ - sphinx_rtd_theme
16
+ - furo
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.24.0'
16
- __version_tuple__ = version_tuple = (0, 24, 0)
15
+ __version__ = version = '0.25.0'
16
+ __version_tuple__ = version_tuple = (0, 25, 0)
@@ -73,9 +73,25 @@ def init_parser(parser):
73
73
  '-j',
74
74
  metavar='job_per_worker',
75
75
  type=int,
76
- default=5,
76
+ default=1,
77
77
  help='the number of jobs per worker')
78
78
 
79
+ # memory
80
+ parser.add_argument('--memory',
81
+ '-m',
82
+ metavar='memory',
83
+ type=str,
84
+ default='6GB',
85
+ help='the memory for each job')
86
+
87
+ # disk
88
+ parser.add_argument('--disk',
89
+ '-k',
90
+ metavar='disk',
91
+ type=str,
92
+ default='4GB',
93
+ help='the disk space for each job')
94
+
79
95
  # compress json
80
96
  parser.add_argument('--compress_json',
81
97
  action='store_true',
@@ -124,6 +140,8 @@ def command(args):
124
140
  conda_env=args.conda_env,
125
141
  additional_init=args.additional_init,
126
142
  n_proc=args.n_proc,
143
+ memory=args.memory,
144
+ disk=args.disk,
127
145
  accounting_group=args.accounting_group,
128
146
  job_per_worker=args.job_per_worker,
129
147
  submit=args.submit,
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import logging
3
3
  from filelock import SoftFileLock
4
- import json
4
+ import orjson
5
5
  import pycwb
6
6
  from pycwb.config import Config
7
7
  from pycwb.types.job import WaveSegment
@@ -32,13 +32,13 @@ def create_catalog(filename: str, config: Config, jobs: list[WaveSegment]) -> No
32
32
  output = {
33
33
  "config": config.__dict__,
34
34
  "version": pycwb.__version__,
35
- "jobs": [job.to_dict() for job in jobs],
35
+ "jobs": jobs,
36
36
  "events": []
37
37
  }
38
38
 
39
39
  with SoftFileLock(filename + ".lock", timeout=10):
40
- with open(filename, 'w') as f:
41
- json.dump(output, f, default=vars)
40
+ with open(filename, 'wb') as f:
41
+ f.write(orjson.dumps(output, option=orjson.OPT_SERIALIZE_NUMPY))
42
42
 
43
43
 
44
44
  def add_events_to_catalog(filename: str, events: list[Event]) -> None:
@@ -64,13 +64,13 @@ def add_events_to_catalog(filename: str, events: list[Event]) -> None:
64
64
  if os.path.exists(filename):
65
65
  with SoftFileLock(filename + ".lock", timeout=10):
66
66
  # read the json file
67
- with open(filename, 'r+') as f:
68
- catalog = json.load(f)
67
+ with open(filename, 'rb+') as f:
68
+ catalog = orjson.loads(f.read())
69
69
  # append events
70
70
  catalog["events"].extend(events)
71
71
  # write the json file
72
72
  f.seek(0)
73
- json.dump(catalog, f)
73
+ f.write(orjson.dumps(catalog, option=orjson.OPT_SERIALIZE_NUMPY))
74
74
  else:
75
75
  logger.warning("Catalog file does not exist. Event will not be saved to catalog.")
76
76
 
@@ -24,6 +24,7 @@ def whitening(config, h):
24
24
  layers_white = 2 ** config.l_white if config.l_white > 0 else 2 ** config.l_high
25
25
  wdm_white = WDM(layers_white, layers_white, config.WDM_beta_order, config.WDM_precision)
26
26
 
27
+ # TODO: check the length of data and white parameters to prevent freezing
27
28
  # check if whitening WDM filter lenght is less than cwb scratch
28
29
  wdmFlen = wdm_white.m_H / config.rateANA
29
30
  if wdmFlen > config.segEdge + 0.001:
@@ -101,7 +101,7 @@ def get_seg_list(ifo, dq_list, seg_len, seg_mls, seg_edge):
101
101
  return []
102
102
 
103
103
 
104
- def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge, sample_rate):
104
+ def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge, sample_rate, shift=None, index_start=0):
105
105
  """
106
106
  Build the job segment list.
107
107
 
@@ -128,6 +128,10 @@ def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge, sample_rate):
128
128
  :type seg_edge: int
129
129
  :param sample_rate: sample rate [Hz]
130
130
  :type sample_rate: int
131
+ :param shift: list of shifts for each interferometer, used for superlags
132
+ :type shift: list[float]
133
+ :param index_start: index of the first segment
134
+ :type index_start: int
131
135
  :return: Return the job segment list
132
136
  :rtype: list[WaveSegment]
133
137
  """
@@ -138,7 +142,7 @@ def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge, sample_rate):
138
142
  lostlivetime = 0
139
143
  job_list = []
140
144
 
141
- seg_index = 0
145
+ seg_index = index_start
142
146
 
143
147
  for i in range(len(dq_list[0])):
144
148
  start = math.ceil(dq_list[0][i]) + seg_edge
@@ -154,7 +158,7 @@ def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge, sample_rate):
154
158
  continue
155
159
  seg_index += 1
156
160
  job_list.append(WaveSegment(seg_index, ifos, start, stop,
157
- seg_edge=seg_edge, sample_rate=sample_rate))
161
+ seg_edge=seg_edge, sample_rate=sample_rate, shift=shift))
158
162
  continue
159
163
  if n == 1:
160
164
  if length > seg_len:
@@ -163,39 +167,39 @@ def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge, sample_rate):
163
167
  if half >= seg_mls:
164
168
  seg_index += 1
165
169
  job_list.append(WaveSegment(seg_index, ifos, start, start + half,
166
- seg_edge=seg_edge, sample_rate=sample_rate))
170
+ seg_edge=seg_edge, sample_rate=sample_rate, shift=shift))
167
171
 
168
172
  seg_index += 1
169
173
  job_list.append(WaveSegment(seg_index, ifos, start + half, stop,
170
- seg_edge=seg_edge, sample_rate=sample_rate))
174
+ seg_edge=seg_edge, sample_rate=sample_rate, shift=shift))
171
175
  else:
172
176
  seg_index += 1
173
177
  job_list.append(WaveSegment(seg_index, ifos, start, start + seg_len,
174
- seg_edge=seg_edge, sample_rate=sample_rate))
178
+ seg_edge=seg_edge, sample_rate=sample_rate, shift=shift))
175
179
  else:
176
180
  seg_index += 1
177
181
  job_list.append(WaveSegment(i, ifos, start, stop,
178
- seg_edge=seg_edge, sample_rate=sample_rate))
182
+ seg_edge=seg_edge, sample_rate=sample_rate, shift=shift))
179
183
  continue
180
184
 
181
185
  for j in range(n - 1):
182
186
  seg_index += 1
183
187
  job_list.append(WaveSegment(seg_index, ifos, seg_len * j + start, seg_len * j + start + seg_len,
184
- seg_edge=seg_edge, sample_rate=sample_rate))
188
+ seg_edge=seg_edge, sample_rate=sample_rate, shift=shift))
185
189
 
186
190
  remainder = stop - job_list[-1].end_time
187
191
  half = int(remainder / 2)
188
192
  if half >= seg_mls:
189
193
  seg_index += 1
190
194
  job_list.append(WaveSegment(seg_index, ifos, job_list[-1].end_time, job_list[-1].end_time + half,
191
- seg_edge=seg_edge, sample_rate=sample_rate))
195
+ seg_edge=seg_edge, sample_rate=sample_rate, shift=shift))
192
196
  seg_index += 1
193
197
  job_list.append(WaveSegment(seg_index, ifos, job_list[-1].end_time, stop,
194
- seg_edge=seg_edge, sample_rate=sample_rate))
198
+ seg_edge=seg_edge, sample_rate=sample_rate, shift=shift))
195
199
  else:
196
200
  seg_index += 1
197
201
  job_list.append(WaveSegment(seg_index, ifos, job_list[-1].end_time, job_list[-1].end_time + seg_len,
198
- seg_edge=seg_edge, sample_rate=sample_rate))
202
+ seg_edge=seg_edge, sample_rate=sample_rate, shift=shift))
199
203
 
200
204
  logger.info('lost livetime after building of the standard job list = %d sec' % lostlivetime)
201
205
 
@@ -81,16 +81,16 @@ def select_frame_list(frame_list, start, stop, seg_edge):
81
81
  return frame_list
82
82
 
83
83
 
84
- def get_frame_files_from_gwdatafind(ifos, sites, frametypes, start, stop, seg_edge, host=None):
84
+ def get_frame_files_from_gwdatafind(ifo, site, frametype, start, stop, seg_edge, host=None):
85
85
  """
86
86
  Use gwdatafind to get the frame files for the job segments
87
87
 
88
- :param ifos: list of interferometers
89
- :type ifos: list[str]
90
- :param sites: list of sites
91
- :type sites: list[str]
92
- :param frametypes: list of frame types
93
- :type frametypes: list[str]
88
+ :param ifo: name of the interferometer
89
+ :type ifo: str
90
+ :param site: site name of the interferometer
91
+ :type site: str
92
+ :param frametype: frame type
93
+ :type frametype: str
94
94
  :param start: start time of the segment
95
95
  :type start: int or float
96
96
  :param stop: stop time of the segment
@@ -109,17 +109,19 @@ def get_frame_files_from_gwdatafind(ifos, sites, frametypes, start, stop, seg_ed
109
109
  seg_stop = stop + seg_edge
110
110
 
111
111
  frame_list = []
112
- for i, frametype in enumerate(frametypes):
113
- url = find_urls(sites[i], frametype, seg_start, seg_stop, host=host)
114
- frame_paths = [fp.replace("file://localhost", "") for fp in url]
115
112
 
116
- for frame_path in frame_paths:
117
- # get the file name without the extension with pathlib
118
- frame_name = Path(frame_path).stem
119
- # get the gps time and duration with int type
120
- gps_start, duration = [int(i) for i in frame_name.split("-")[-2:]]
121
- # append the frame file to the list
122
- frame_list.append(FrameFile(ifos[i], frame_path, gps_start, duration))
113
+ url = find_urls(site, frametype, seg_start, seg_stop, host=host)
114
+ frame_paths = [fp.replace("file://localhost", "") for fp in url]
115
+
116
+ for frame_path in frame_paths:
117
+ # get the file name without the extension with pathlib
118
+ frame_name = Path(frame_path).stem
119
+ # get the gps time and duration with int type
120
+ gps_start, duration = [int(i) for i in frame_name.split("-")[-2:]]
121
+ # append the frame file to the list
122
+ frame_list.append(FrameFile(ifo, frame_path, gps_start, duration))
123
+
124
+ # TODO: check if the framefiles match with the seg_start and seg_stop
123
125
 
124
126
  return frame_list
125
127
 
@@ -1,11 +1,12 @@
1
1
  import logging
2
2
 
3
+ import numpy as np
3
4
  import orjson
4
5
 
5
- from .super_lag import get_slag_job_list, get_slag_list
6
- from .dq_segment import read_seg_list, get_seg_list, get_job_list
6
+ from .dq_segment import read_seg_list, get_job_list, merge_seg_list
7
7
  from .frame import get_frame_meta, select_frame_list, get_frame_files_from_gwdatafind
8
8
  from pycwb.types.job import WaveSegment
9
+ from ..superlag import generate_slags
9
10
  from ...utils.module import import_helper
10
11
  from pycwb.modules.gracedb import get_superevent_t0
11
12
 
@@ -36,7 +37,11 @@ def create_job_segment_from_config(config):
36
37
  job_segments = None
37
38
  periods = None
38
39
 
40
+ ############################################
39
41
  ## generate job segments based on the configuration if the DQ files or periods are specified
42
+ ############################################
43
+
44
+ ## generate the period with given gps times or superevent id
40
45
  # case 1: gps_start and gps_end are specified
41
46
  if config.gps_start and config.gps_end:
42
47
  periods = ([config.gps_start], [config.gps_end])
@@ -53,34 +58,46 @@ def create_job_segment_from_config(config):
53
58
  gps_center = int(get_superevent_t0(config.superevent))
54
59
  periods = ([gps_center - config.time_left], [gps_center + config.time_right])
55
60
 
56
- # create job segments
61
+ ## create job segments
57
62
  if config.dq_files or periods:
58
63
  # get the job segments from the DQ files
59
64
  job_segments = job_segment_from_dq(config.dq_files, config.ifo,
60
- config.segLen, config.segMLS, config.segEdge, config.segOverlap,
61
- config.rateANA, config.l_high, config.inRate,
62
- periods=periods)
65
+ config.segLen, config.segMLS, config.segEdge, config.segOverlap,
66
+ config.rateANA, config.l_high, config.inRate, periods=periods,
67
+ slag_size=config.slagSize, slag_off=config.slagOff,
68
+ slag_min=config.slagMin, slag_max=config.slagMax)
69
+
70
+ ############################################
71
+ ## injections on job segments
72
+ ############################################
63
73
 
64
- ## if only simulation mode is specified without DQ files or periods,
74
+ ## Case 1: if only simulation mode is specified without DQ files or periods,
65
75
  # create job segments based on the injection parameters
66
76
  if config.simulation and job_segments is None:
67
77
  # TODO: split out the injection part for other job types
68
78
  job_segments = create_job_segment_from_injection(config.ifo, config.simulation, config.injection,
69
79
  config.inRate, config.segEdge)
70
80
 
71
- ## TODO: when the DQ files and simulation both are specified, inject the parameters into the job segments
81
+ ## TODO: Case 2: when the DQ files and simulation both are specified, inject the parameters into the job segments
72
82
 
83
+ ############################################
84
+ ## Load the frames if frFiles or gwdatafind specified
85
+ ############################################
73
86
  # attach the frame files to the job segments if defined
74
87
  if config.frFiles:
88
+ # if frFiles exist, attach the given framefiles to the job segments
75
89
  attach_frame_files_to_job_segments(job_segments, config.ifo, config.frFiles, config.segEdge)
76
90
 
77
91
  if config.gwdatafind:
92
+ # if gwdatafind specified, use gwdatafind to fetch the frame files for each job segment
78
93
  gwdatafind_frames_for_job_segments(job_segments, config.ifo, config.gwdatafind, config.segEdge)
79
- # attach the channel names to the job segments
94
+
95
+ # attach the channel names to the job segments from config for self-contained information
80
96
  if config.channelNamesRaw:
81
97
  for job_seg in job_segments:
82
98
  job_seg.channels = config.channelNamesRaw
83
99
 
100
+ ############################################
84
101
  ## TODO: check if the job segments are valid
85
102
  logger.info(f"Number of segments: {len(job_segments)}")
86
103
  logger.info("-" * 80)
@@ -127,34 +144,60 @@ def job_segment_from_dq(dq_file_list, ifos, seg_len, seg_mls, seg_edge, seg_over
127
144
  :return: The job segment.
128
145
  :rtype: WaveSegment
129
146
  """
147
+ # merge the DQ segments for each interferometer
148
+ seg_lists = []
149
+ for ifo in ifos:
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')
152
+ seg_lists.append(cat1_list)
153
+
154
+ # for zero super lag, merge the segments, and get the standard job segments
155
+ merged_seg_list = seg_lists[0]
156
+ for seg_list in seg_lists[1:]:
157
+ merged_seg_list = merge_seg_list(merged_seg_list, seg_list)
158
+
159
+ job_segments = []
160
+ # for super lag, shift the cat1 list and merge the segments
130
161
  if slag_size > 0:
131
- # TODO: not finished
132
- cat1_list = read_seg_list(dq_file_list, 'CWB_CAT1', periods)
133
-
134
- # Get number/list of available super lag jobs
135
- # Compute the available segments with length=segLen contained between the interval [min,max]
136
- # Where min,max are the minimum and macimum times in the cat1List list
137
- # The start time of each segment is forced to be a multiple of segLen
138
- slag_job_list = get_slag_job_list(cat1_list, seg_len)
139
-
140
- slag_segments = len(slag_job_list)
141
-
142
- # Get super lag list : slagList
143
- # Is the list of available segment shifts according to the slag configuration parameters
144
- slag_list = get_slag_list(slag_segments, slag_size, slag_segments, slag_off, slag_min, slag_max, slag_site,
145
- slag_file)
146
-
147
- for slag in slag_list:
148
- logger.info(f"SuperLag={slag.slag_id[0]} jobID={slag.job_id}")
149
- for n in range(len(ifos)):
150
- logger.info(f"segID[{slag.slag_id[1]}]={slag.seg_id[n]}")
151
-
152
- raise Exception("Not finished")
153
-
162
+ # TODO: add checks on maximum super lag size
163
+ slags = generate_slags(len(ifos), slag_min, slag_max, slag_off, slag_size)
164
+
165
+ for slag in slags:
166
+ slag_seg_lists = []
167
+ for ifo, j in enumerate(slag):
168
+ slag_seg_lists.append(np.array(seg_lists[ifo]) + j * seg_len)
169
+
170
+ merged_slag_seg_list = slag_seg_lists[0]
171
+ for seg_list in slag_seg_lists[1:]:
172
+ merged_slag_seg_list = merge_seg_list(merged_slag_seg_list, seg_list)
173
+ print('live time', merged_slag_seg_list[1][0] - merged_slag_seg_list[0][0])
174
+ job_segments += get_job_list(ifos, merged_seg_list, seg_len, seg_mls,
175
+ seg_edge=seg_edge, sample_rate=sample_rate,
176
+ shift=np.array(slag) * seg_len, index_start=len(job_segments))
154
177
  else:
155
- cat1_list = read_seg_list(dq_file_list, 'CWB_CAT1', periods)
156
-
157
- job_segments = get_job_list(ifos, cat1_list, seg_len, seg_mls, seg_edge, sample_rate)
178
+ job_segments += get_job_list(ifos, merged_seg_list, seg_len, seg_mls, seg_edge, sample_rate)
179
+
180
+
181
+ # cat1_list = read_seg_list(dq_file_list, 'CWB_CAT1', periods)
182
+ #
183
+ # # Get number/list of available super lag jobs
184
+ # # Compute the available segments with length=segLen contained between the interval [min,max]
185
+ # # Where min,max are the minimum and macimum times in the cat1List list
186
+ # # The start time of each segment is forced to be a multiple of segLen
187
+ # slag_job_list = get_slag_job_list(cat1_list, seg_len)
188
+ #
189
+ # slag_segments = len(slag_job_list)
190
+ #
191
+ # # Get super lag list : slagList
192
+ # # Is the list of available segment shifts according to the slag configuration parameters
193
+ # slag_list = get_slag_list(slag_segments, slag_size, slag_segments, slag_off, slag_min, slag_max, slag_site,
194
+ # slag_file)
195
+ #
196
+ # for slag in slag_list:
197
+ # logger.info(f"SuperLag={slag.slag_id[0]} jobID={slag.job_id}")
198
+ # for n in range(len(ifos)):
199
+ # logger.info(f"segID[{slag.slag_id[1]}]={slag.seg_id[n]}")
200
+ # raise Exception("Not finished")
158
201
 
159
202
  rate_min = rateANA >> l_high
160
203
  for job_seg in job_segments:
@@ -178,14 +221,20 @@ def job_segment_from_dq(dq_file_list, ifos, seg_len, seg_mls, seg_edge, seg_over
178
221
 
179
222
  def attach_frame_files_to_job_segments(job_segments, ifos, fr_files, seg_edge):
180
223
  # Get frame file list
181
- frame_files = []
182
- for i in range(len(ifos)):
183
- frame_files += get_frame_meta(fr_files[i], ifos[i])
224
+ frame_files = {}
225
+ for i, ifo in enumerate(ifos):
226
+ frame_files[ifo] = get_frame_meta(fr_files[i], ifo)
184
227
 
185
228
  # Select frame files for each job segment
186
- # TODO: this is only for simple job segment
187
229
  for job_seg in job_segments:
188
- job_seg.frames = select_frame_list(frame_files, job_seg.start_time, job_seg.end_time, seg_edge)
230
+ if job_seg.frames is None:
231
+ job_seg.frames = []
232
+ for ifo in ifos:
233
+ job_seg.frames += select_frame_list(frame_files[ifo],
234
+ job_seg.physical_start_times[ifo],
235
+ job_seg.physical_end_times[ifo],
236
+ seg_edge)
237
+ # job_seg.frames = select_frame_list(frame_files, job_seg.start_time, job_seg.end_time, seg_edge)
189
238
 
190
239
 
191
240
  def gwdatafind_frames_for_job_segments(job_segments, ifos, gwdatafind, seg_edge):
@@ -211,8 +260,15 @@ def gwdatafind_frames_for_job_segments(job_segments, ifos, gwdatafind, seg_edge)
211
260
  host = gwdatafind.get('host')
212
261
 
213
262
  for job_seg in job_segments:
214
- job_seg.frames = get_frame_files_from_gwdatafind(ifos, gwdatafind['site'], gwdatafind['frametype'],
215
- job_seg.start_time, job_seg.end_time, seg_edge, host=host)
263
+ if job_seg.frames is None:
264
+ job_seg.frames = []
265
+ for i, ifo in enumerate(ifos):
266
+ job_seg.frames += get_frame_files_from_gwdatafind(ifo, gwdatafind['site'][i], gwdatafind['frametype'][i],
267
+ job_seg.physical_start_times[ifo],
268
+ job_seg.physical_end_times[ifo],
269
+ seg_edge, host=host)
270
+ # job_seg.frames = get_frame_files_from_gwdatafind(ifos, gwdatafind['site'], gwdatafind['frametype'],
271
+ # job_seg.start_time, job_seg.end_time, seg_edge, host=host)
216
272
 
217
273
 
218
274
  def create_job_segment_from_injection(ifo, simulation_mode, injection, sample_rate, seg_edge):
@@ -1,4 +1,4 @@
1
1
  name: job_segment
2
2
  author: pycWB
3
3
  description: Job segment module
4
- dependencies: ["numpy", "matplotlib"]
4
+ dependencies: ["numpy", "matplotlib", "@gracedb", "@superlag"]