PycWB 0.23.2__tar.gz → 0.24.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.
- {pycwb-0.23.2 → pycwb-0.24.0}/PKG-INFO +1 -1
- {pycwb-0.23.2 → pycwb-0.24.0}/PycWB.egg-info/PKG-INFO +1 -1
- {pycwb-0.23.2 → pycwb-0.24.0}/PycWB.egg-info/SOURCES.txt +5 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/_version.py +2 -2
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/constants/user_parameters_schema.py +40 -0
- pycwb-0.24.0/pycwb/modules/gracedb/__init__.py +1 -0
- pycwb-0.24.0/pycwb/modules/gracedb/gracedb.py +40 -0
- pycwb-0.24.0/pycwb/modules/gracedb/module.yaml +4 -0
- pycwb-0.24.0/pycwb/modules/gracedb/test_gracedb.py +27 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/job_segment/dq_segment.py +36 -15
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/job_segment/frame.py +45 -2
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/job_segment/job_segment.py +109 -17
- pycwb-0.24.0/pycwb/modules/job_segment/test_job_segment.py +30 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/read_data/read_data.py +7 -7
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/job.py +9 -1
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/yaml_helper.py +1 -1
- {pycwb-0.23.2 → pycwb-0.24.0}/.gitignore +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/.gitlab-ci.yml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/.readthedocs.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/LICENSE +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/MANIFEST.in +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/Makefile +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/PycWB.egg-info/dependency_links.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/PycWB.egg-info/requires.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/PycWB.egg-info/top_level.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/README.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/README.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/likelihood/README.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/likelihood/generate_data_for_likelihood.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/likelihood/performance_test_dpf.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/likelihood/performance_test_opt_sky.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/likelihood/user_parameters_injection.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/supercluster/README.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/supercluster/generate_data.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/supercluster/generate_data_2.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/supercluster/performance_supercluster.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/benchmark/supercluster/user_parameters_injection.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/bin/pycwb +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/bin/pycwb_search +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/bin/pycwb_show +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Biorthogonal.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Biorthogonal.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/CMakeLists.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Daubechies.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Daubechies.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/FourierCoefficients.icc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Haar.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Haar.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/LineFilter.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/LineFilter.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Makefile +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Meyer.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Meyer.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Symlet.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Symlet.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/SymmArray.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/SymmArray.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/SymmArraySSE.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/SymmArraySSE.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/SymmObjArray.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/SymmObjArray.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/WDM.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/WDM.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/WDMOverlap.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/WDMOverlap.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/WaveDWT.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/WaveDWT.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Wavelet.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/Wavelet.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/alm.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/build.sh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/cluster.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/cluster.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/cmake/FindHealpix.cmake +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/cmake/FindeBBH.cmake +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/cmake/install_function.cmake +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/constants.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/detector.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/detector.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/injection.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/injection.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/lossy.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/lossy.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/monster.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/monster.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/netcluster.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/netcluster.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/netevent.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/netevent.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/netpixel.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/netpixel.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/network.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/network.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/pycwb.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/rdfr.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/rdfr.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/readframe.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/readframe.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/readfrfile.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/readfrfile.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/regression.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/regression.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/skycoord.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/skymap.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/skymap.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/sseries.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/sseries.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/time.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/time.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wat.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/watasm.S +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/watasm_elf64.o +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/watavx.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/watbranch.in +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/watfun.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wathash.in +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/watplot.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/watplot.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/watsse.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wattag.in +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/waturl.in +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/watversion.hh.in +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavearray.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavearray.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavecomplex.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavecomplex.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavecor.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavecor.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavefft.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavefft.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavelet_LinkDef.h +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavelinefilter.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wavelinefilter.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/waverdc.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/waverdc.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wseries.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wseries.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/cwb-core/wslice.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/0.installation_guide.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/1.initialisation_guide.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/2.test_interactive_multistages_2G_analysis.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/3.run_pycwb_with_yaml_config.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/4.py_cwb_inet_2G.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/5.cwb2G_analyse.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/6.wat_codes_notes.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/Makefile +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/diagram.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/make.bat +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/_static/.keep +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/_templates/.keep +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/conf.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/credit.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/index.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/install.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/mod_cwb.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/package.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/schema.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/tutorial_batch_inj.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/tutorial_customized_wf_gen.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/tutorial_injection.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/tutorial_multi_injection.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/tutorial_search.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/tutorials.rst +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/docs/source/workflow.png +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/envs/Dockerfile +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/envs/environment.yml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/envs/mamba/Dockerfile +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/autoencoder/pycwb_injection.ipynb +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/autoencoder/user_parameters_injection.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/batch_injection/generate_parameters.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/parameters.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/batch_injection/pycbc_inject/hyperbolicTD/waveform.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/batch_injection/pycwb_injection.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/batch_injection/user_parameters_injection.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/DQ/H1_cat0.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/DQ/H1_cat1.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/DQ/H1_cat2.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/DQ/H1_cat4.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/DQ/L1_cat0.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/DQ/L1_cat1.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/DQ/L1_cat2.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/DQ/L1_cat4.txt +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/input/OPBM.period +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/input/OPBM_H1.frames +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/input/OPBM_L1.frames +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/pycwb_mdc.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/benchmark/user_parameters_mdc.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/colab/pycWB_GW150914.ipynb +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/injection/pycwb_injection.ipynb +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/injection/user_parameters_injection.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/injection/wdmXTalk/OverlapCatalog16-1024.bin +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/lvk_sep_2023/demo.ipynb +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/lvk_sep_2023/user_parameters.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/multiple_injection/pycwb_injection.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/multiple_injection/user_parameters_injection.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/pyseobnr_injection/generate_parameters.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/pyseobnr_injection/user_parameters_injection.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/pyseobnr_injection/waveform_model/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/pyseobnr_injection/waveform_model/waveform.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/examples/waveform_reconstruction/reconstruct_waveform_from_cluster.ipynb +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/cwb_core/coherence.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/cwb_core/coherence.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/cwb_core/likelihood.cc +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/cwb_core/likelihood.hh +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/dag/dag.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/dag/dask-prefect.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/dag/prefect_test.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger/server.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger/visualizition.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/.eslintrc.cjs +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/.gitignore +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/.prettierrc.json +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/README.md +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/index.html +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/package-lock.json +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/package.json +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/public/favicon.ico +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/App.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/assets/base.css +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/assets/cwb_icon_modern_blue_alfa.png +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/assets/main.css +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/assets/style.css +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/components/HelloWorld.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/components/TheWelcome.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/components/WelcomeItem.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/components/__tests__/HelloWorld.spec.js +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/components/icons/IconCommunity.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/components/icons/IconDocumentation.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/components/icons/IconEcosystem.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/components/icons/IconSupport.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/components/icons/IconTooling.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/main.js +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/router/index.js +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/stores/counter.js +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/views/drawflow.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/views/nodes/node1.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/views/nodes/node2.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/views/nodes/node3.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/src/views/nodes/nodeHeader.vue +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/messenger-web-interface/vite.config.js +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/performance/numba_test.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/performance/taichi_test.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/prototypes/search.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/cli/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/cli/batch_runner.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/cli/batch_setup.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/cli/flow.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/cli/merge_catalog.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/cli/run.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/cli/server.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/cli/xtalk.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/config/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/config/config.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/constants/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/constants/project_constants.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/autoencoder/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/autoencoder/autoencoder.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/autoencoder/cwb_autoencoder.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/autoencoder/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/catalog/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/catalog/catalog.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/catalog/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/coherence/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/coherence/coherence.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/coherence/coherence_lite.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/coherence/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/condor/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/condor/condor.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/condor/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/cwb_conversions/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/cwb_conversions/cluster.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/cwb_conversions/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/cwb_conversions/pixel.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/cwb_conversions/series.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/cwb_conversions/sparse_series.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/data_conditioning/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/data_conditioning/data_conditioning.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/data_conditioning/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/data_conditioning/regression.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/data_conditioning/whitening.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/energy_threshold/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/energy_threshold/threshold.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/job_segment/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/job_segment/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/job_segment/plots.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/job_segment/super_lag.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/likelihood/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/likelihood/likelihood.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/likelihood/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/likelihoodWP/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/likelihoodWP/dpf.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/likelihoodWP/dpf_cython.pyx +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/likelihoodWP/likelihood.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/likelihoodWP/sky_stat.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/likelihoodWP/utils.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/logger/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/logger/logger.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/logger/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/multi_resolution_wdm/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/multi_resolution_wdm/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/multi_resolution_wdm/wdm.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot/cluster_statistics.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot/event.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot/spectrogram.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot/waveform.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot_data_quality/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot_data_quality/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot_data_quality/plot.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot_map/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot_map/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/plot_map/world_map.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/read_data/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/read_data/data_check.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/read_data/data_find.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/read_data/mdc.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/read_data/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/reconstruction/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/reconstruction/getMRAwaveform.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/reconstruction/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/sparse_series/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/sparse_series/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/sparse_series/sparse_table.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/statistics/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/statistics/eff.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/statistics/eff_plot.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/statistics/merge.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/statistics/sigmoid_fit.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/super_cluster/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/super_cluster/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/super_cluster/sub_net_cut.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/super_cluster/super_cluster.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/super_cluster/supercluster.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/super_cluster/utils.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/supercluster_naive/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/supercluster_naive/supercluster2.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/superlag/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/superlag/superlag.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/web_viewer/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/web_viewer/create.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/web_viewer/module.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/workflow_utils/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/workflow_utils/job_setup.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/xtalk/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/xtalk/monster.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/xtalk/monster_old.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/modules/xtalk/xtalk_data.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/prefect_flow/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/prefect_flow/pycwb_flow.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/prefect_flow/tasks/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/prefect_flow/tasks/builtin.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/data_quality_file.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/detector.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/network.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/network_cluster.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/network_event.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/network_pixel.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/sparse_series.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/time_frequency_series.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/wdm.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/types/wdm_xtalk.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/async_write.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/check_ROOT.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/conversions/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/conversions/timeseries.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/dataclass_object_io.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/dep_check.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/image.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/module.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/network.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/parser.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/utils/skymap_coord.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/vendor/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/vendor/autoencoder/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/vendor/autoencoder/cwb_autoencoder.h5 +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/vendor/example.yaml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/vendor/lib/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/vendor/web_viewer/event_dump.html +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/vendor/web_viewer/styles.css +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/vendor/web_viewer/viewer.html +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/workflow/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/workflow/batch.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/workflow/merge.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/workflow/run.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/workflow/subflow/__init__.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/workflow/subflow/postprocess_and_plots.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/workflow/subflow/prepare_job_runs.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/workflow/subflow/process_job_segment.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pycwb/workflow/subflow/supercluster_and_likelihood.py +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/pyproject.toml +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/setup.cfg +0 -0
- {pycwb-0.23.2 → pycwb-0.24.0}/setup.py +0 -0
|
@@ -274,6 +274,10 @@ pycwb/modules/data_conditioning/regression.py
|
|
|
274
274
|
pycwb/modules/data_conditioning/whitening.py
|
|
275
275
|
pycwb/modules/energy_threshold/__init__.py
|
|
276
276
|
pycwb/modules/energy_threshold/threshold.py
|
|
277
|
+
pycwb/modules/gracedb/__init__.py
|
|
278
|
+
pycwb/modules/gracedb/gracedb.py
|
|
279
|
+
pycwb/modules/gracedb/module.yaml
|
|
280
|
+
pycwb/modules/gracedb/test_gracedb.py
|
|
277
281
|
pycwb/modules/job_segment/__init__.py
|
|
278
282
|
pycwb/modules/job_segment/dq_segment.py
|
|
279
283
|
pycwb/modules/job_segment/frame.py
|
|
@@ -281,6 +285,7 @@ pycwb/modules/job_segment/job_segment.py
|
|
|
281
285
|
pycwb/modules/job_segment/module.yaml
|
|
282
286
|
pycwb/modules/job_segment/plots.py
|
|
283
287
|
pycwb/modules/job_segment/super_lag.py
|
|
288
|
+
pycwb/modules/job_segment/test_job_segment.py
|
|
284
289
|
pycwb/modules/likelihood/__init__.py
|
|
285
290
|
pycwb/modules/likelihood/likelihood.py
|
|
286
291
|
pycwb/modules/likelihood/module.yaml
|
|
@@ -99,6 +99,46 @@ schema = {
|
|
|
99
99
|
"default": {},
|
|
100
100
|
"cwb": False
|
|
101
101
|
},
|
|
102
|
+
"gps_start": {
|
|
103
|
+
"type": "number",
|
|
104
|
+
"description": "start gps time, used together with gps_end for generating job segments",
|
|
105
|
+
"cwb": False
|
|
106
|
+
},
|
|
107
|
+
"gps_end": {
|
|
108
|
+
"type": "number",
|
|
109
|
+
"description": "end gps time, used together with gps_start for generating job segments",
|
|
110
|
+
"cwb": False
|
|
111
|
+
},
|
|
112
|
+
"gps_center": {
|
|
113
|
+
"type": "number",
|
|
114
|
+
"description": "center gps time, used together with time_left and time_right for generating job segments",
|
|
115
|
+
"cwb": False
|
|
116
|
+
},
|
|
117
|
+
"time_left": {
|
|
118
|
+
"type": "number",
|
|
119
|
+
"description": "left time offset from gps_center, used together with gps_center and time_right for generating job segments",
|
|
120
|
+
"cwb": False
|
|
121
|
+
},
|
|
122
|
+
"time_right": {
|
|
123
|
+
"type": "number",
|
|
124
|
+
"description": "right time offset from gps_center, used together with gps_center and time_left for generating job segments",
|
|
125
|
+
"cwb": False
|
|
126
|
+
},
|
|
127
|
+
"superevent": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"description": "superevent name, used together with time_left and time_right for generating job segments",
|
|
130
|
+
"cwb": False
|
|
131
|
+
},
|
|
132
|
+
"gwdatafind": {
|
|
133
|
+
"type": "object",
|
|
134
|
+
"description": "If the gwdatafind is set, the framefiles can be pulled from the LIGO data server, "
|
|
135
|
+
"the support keys are: site, frametype, host. Example: ",
|
|
136
|
+
" site: ['L','H']"
|
|
137
|
+
" frametype: ['L1_HOFT_C00','H1_HOFT_C00']"
|
|
138
|
+
" host: 'datafind.ldas.cit:80'"
|
|
139
|
+
"default": {},
|
|
140
|
+
"cwb": False
|
|
141
|
+
},
|
|
102
142
|
"WDM_beta_order": {
|
|
103
143
|
"type": "integer",
|
|
104
144
|
"description": "WDM default parameters: beta function order for Meyer",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .gracedb import *
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from ligo.gracedb.rest import GraceDb
|
|
2
|
+
from ligo.gracedb.exceptions import HTTPError
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def get_superevent(event_name):
|
|
6
|
+
"""
|
|
7
|
+
Get the super event for a given event name.
|
|
8
|
+
|
|
9
|
+
:param event_name: The name of the event.
|
|
10
|
+
:type event_name: str
|
|
11
|
+
:return: The super event.
|
|
12
|
+
:rtype: dict
|
|
13
|
+
"""
|
|
14
|
+
client = GraceDb()
|
|
15
|
+
try:
|
|
16
|
+
response = client.superevent(event_name).json()
|
|
17
|
+
except HTTPError as e:
|
|
18
|
+
if e.response.status_code == 404:
|
|
19
|
+
print('No super event found for event {}'.format(event_name))
|
|
20
|
+
return None
|
|
21
|
+
else:
|
|
22
|
+
raise
|
|
23
|
+
|
|
24
|
+
return response
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def get_superevent_t0(event_name):
|
|
28
|
+
"""
|
|
29
|
+
Get the GPS time of the super event for a given event name.
|
|
30
|
+
|
|
31
|
+
:param event_name: The name of the event.
|
|
32
|
+
:type event_name: str
|
|
33
|
+
:return: The GPS time of the super event.
|
|
34
|
+
:rtype: float
|
|
35
|
+
"""
|
|
36
|
+
super_event = get_superevent(event_name)
|
|
37
|
+
if super_event is None:
|
|
38
|
+
return None
|
|
39
|
+
|
|
40
|
+
return super_event['t_0']
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
from .gracedb import get_superevent_t0, get_superevent
|
|
3
|
+
|
|
4
|
+
class TestGraceDB(unittest.TestCase):
|
|
5
|
+
|
|
6
|
+
def test_get_superevent_t0(self):
|
|
7
|
+
event_name = 'S241011k'
|
|
8
|
+
t0 = get_superevent_t0(event_name)
|
|
9
|
+
self.assertAlmostEqual(t0, 1412725132.96, places=1)
|
|
10
|
+
|
|
11
|
+
def test_get_superevent_t0_no_event(self):
|
|
12
|
+
event_name = 'S000000a'
|
|
13
|
+
t0 = get_superevent_t0(event_name)
|
|
14
|
+
self.assertIsNone(t0)
|
|
15
|
+
|
|
16
|
+
def test_get_superevent(self):
|
|
17
|
+
event_name = 'S241011k'
|
|
18
|
+
super_event = get_superevent(event_name)
|
|
19
|
+
self.assertEqual(super_event['superevent_id'], event_name)
|
|
20
|
+
|
|
21
|
+
def test_get_superevent_no_event(self):
|
|
22
|
+
event_name = 'S000000a'
|
|
23
|
+
super_event = get_superevent(event_name)
|
|
24
|
+
self.assertIsNone(super_event)
|
|
25
|
+
|
|
26
|
+
if __name__ == '__main__':
|
|
27
|
+
unittest.main()
|
|
@@ -6,7 +6,7 @@ from pycwb.types.job import WaveSegment
|
|
|
6
6
|
logger = logging.getLogger(__name__)
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
def read_seg_list(dq_file_list, dq_cat):
|
|
9
|
+
def read_seg_list(dq_file_list=None, dq_cat='CWB_CAT1', periods=None):
|
|
10
10
|
"""Load the files contains segment list from the data quality files below the data quality category (dq_file.load_file)).
|
|
11
11
|
Then merge the segment list (merge_seg_list) and return the merged segment list.
|
|
12
12
|
|
|
@@ -14,14 +14,22 @@ def read_seg_list(dq_file_list, dq_cat):
|
|
|
14
14
|
:type dq_file_list: list[DQFile]
|
|
15
15
|
:param dq_cat: The data quality category.
|
|
16
16
|
:type dq_cat: str
|
|
17
|
+
:param periods: Given start and stop periods.
|
|
18
|
+
:type periods: tuple[list[int], list[int]]
|
|
17
19
|
:return: A list of segments.
|
|
18
20
|
:rtype: list[WaveSegment]
|
|
19
21
|
"""
|
|
20
22
|
seg_list = []
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
if dq_file_list is None or len(dq_file_list) == 0:
|
|
24
|
+
seg_list.append(([0], [np.inf]))
|
|
25
|
+
else:
|
|
26
|
+
for dq_file in dq_file_list:
|
|
27
|
+
if dq_file.dq_cat <= dq_cat:
|
|
28
|
+
logger.info(f"Loading data quality file {dq_file.file}")
|
|
29
|
+
seg_list.append(dq_file.get_periods())
|
|
30
|
+
|
|
31
|
+
if periods is not None:
|
|
32
|
+
seg_list.append(periods)
|
|
25
33
|
|
|
26
34
|
if len(seg_list) == 0:
|
|
27
35
|
logger.error("No CWB_CAT=%s files in the list", dq_cat)
|
|
@@ -93,7 +101,7 @@ def get_seg_list(ifo, dq_list, seg_len, seg_mls, seg_edge):
|
|
|
93
101
|
return []
|
|
94
102
|
|
|
95
103
|
|
|
96
|
-
def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge):
|
|
104
|
+
def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge, sample_rate):
|
|
97
105
|
"""
|
|
98
106
|
Build the job segment list.
|
|
99
107
|
|
|
@@ -108,6 +116,8 @@ def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge):
|
|
|
108
116
|
output segA : xxx---------xxx \n
|
|
109
117
|
output segB : xxx----------xxx \n
|
|
110
118
|
|
|
119
|
+
:param ifos: list of interferometers
|
|
120
|
+
:type ifos: list[str]
|
|
111
121
|
:param dq_list: number of detectors
|
|
112
122
|
:type dq_list: list[DQFile]
|
|
113
123
|
:param seg_len: Segment length [sec]
|
|
@@ -116,6 +126,8 @@ def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge):
|
|
|
116
126
|
:type seg_mls: int
|
|
117
127
|
:param seg_edge: wavelet boundary offset [sec]
|
|
118
128
|
:type seg_edge: int
|
|
129
|
+
:param sample_rate: sample rate [Hz]
|
|
130
|
+
:type sample_rate: int
|
|
119
131
|
:return: Return the job segment list
|
|
120
132
|
:rtype: list[WaveSegment]
|
|
121
133
|
"""
|
|
@@ -141,7 +153,8 @@ def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge):
|
|
|
141
153
|
lostlivetime += length
|
|
142
154
|
continue
|
|
143
155
|
seg_index += 1
|
|
144
|
-
job_list.append(WaveSegment(seg_index, ifos, start, stop
|
|
156
|
+
job_list.append(WaveSegment(seg_index, ifos, start, stop,
|
|
157
|
+
seg_edge=seg_edge, sample_rate=sample_rate))
|
|
145
158
|
continue
|
|
146
159
|
if n == 1:
|
|
147
160
|
if length > seg_len:
|
|
@@ -149,32 +162,40 @@ def get_job_list(ifos, dq_list, seg_len, seg_mls, seg_edge):
|
|
|
149
162
|
half = int(remainder / 2)
|
|
150
163
|
if half >= seg_mls:
|
|
151
164
|
seg_index += 1
|
|
152
|
-
job_list.append(WaveSegment(seg_index, ifos, start, start + half
|
|
165
|
+
job_list.append(WaveSegment(seg_index, ifos, start, start + half,
|
|
166
|
+
seg_edge=seg_edge, sample_rate=sample_rate))
|
|
153
167
|
|
|
154
168
|
seg_index += 1
|
|
155
|
-
job_list.append(WaveSegment(seg_index, ifos, start + half, stop
|
|
169
|
+
job_list.append(WaveSegment(seg_index, ifos, start + half, stop,
|
|
170
|
+
seg_edge=seg_edge, sample_rate=sample_rate))
|
|
156
171
|
else:
|
|
157
172
|
seg_index += 1
|
|
158
|
-
job_list.append(WaveSegment(seg_index, ifos, start, start + seg_len
|
|
173
|
+
job_list.append(WaveSegment(seg_index, ifos, start, start + seg_len,
|
|
174
|
+
seg_edge=seg_edge, sample_rate=sample_rate))
|
|
159
175
|
else:
|
|
160
176
|
seg_index += 1
|
|
161
|
-
job_list.append(WaveSegment(i, ifos, start, stop
|
|
177
|
+
job_list.append(WaveSegment(i, ifos, start, stop,
|
|
178
|
+
seg_edge=seg_edge, sample_rate=sample_rate))
|
|
162
179
|
continue
|
|
163
180
|
|
|
164
181
|
for j in range(n - 1):
|
|
165
182
|
seg_index += 1
|
|
166
|
-
job_list.append(WaveSegment(seg_index, ifos, seg_len * j + start, seg_len * j + start + seg_len
|
|
183
|
+
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))
|
|
167
185
|
|
|
168
186
|
remainder = stop - job_list[-1].end_time
|
|
169
187
|
half = int(remainder / 2)
|
|
170
188
|
if half >= seg_mls:
|
|
171
189
|
seg_index += 1
|
|
172
|
-
job_list.append(WaveSegment(seg_index, ifos, job_list[-1].end_time, job_list[-1].end_time + half
|
|
190
|
+
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))
|
|
173
192
|
seg_index += 1
|
|
174
|
-
job_list.append(WaveSegment(seg_index, ifos, job_list[-1].end_time, stop
|
|
193
|
+
job_list.append(WaveSegment(seg_index, ifos, job_list[-1].end_time, stop,
|
|
194
|
+
seg_edge=seg_edge, sample_rate=sample_rate))
|
|
175
195
|
else:
|
|
176
196
|
seg_index += 1
|
|
177
|
-
job_list.append(WaveSegment(seg_index, ifos, job_list[-1].end_time, job_list[-1].end_time + seg_len
|
|
197
|
+
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))
|
|
178
199
|
|
|
179
200
|
logger.info('lost livetime after building of the standard job list = %d sec' % lostlivetime)
|
|
180
201
|
|
|
@@ -65,9 +65,9 @@ def select_frame_list(frame_list, start, stop, seg_edge):
|
|
|
65
65
|
:param frame_list: list of frame metadata
|
|
66
66
|
:type frame_list: list[FrameFile]
|
|
67
67
|
:param start: start time of the segment
|
|
68
|
-
:type start: int
|
|
68
|
+
:type start: int or float
|
|
69
69
|
:param stop: stop time of the segment
|
|
70
|
-
:type stop: int
|
|
70
|
+
:type stop: int or float
|
|
71
71
|
:param seg_edge: buffer of the segment
|
|
72
72
|
:type seg_edge: int or float
|
|
73
73
|
:return: list of frame
|
|
@@ -81,3 +81,46 @@ 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):
|
|
85
|
+
"""
|
|
86
|
+
Use gwdatafind to get the frame files for the job segments
|
|
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]
|
|
94
|
+
:param start: start time of the segment
|
|
95
|
+
:type start: int or float
|
|
96
|
+
:param stop: stop time of the segment
|
|
97
|
+
:type stop: int or float
|
|
98
|
+
:param seg_edge: buffer of the segment
|
|
99
|
+
:type seg_edge: int or float
|
|
100
|
+
:param host: host name of the frame server
|
|
101
|
+
:type host: str
|
|
102
|
+
|
|
103
|
+
:return: list of frame files
|
|
104
|
+
:rtype: list[FrameFile]
|
|
105
|
+
"""
|
|
106
|
+
from gwdatafind import find_urls
|
|
107
|
+
|
|
108
|
+
seg_start = start - seg_edge
|
|
109
|
+
seg_stop = stop + seg_edge
|
|
110
|
+
|
|
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
|
+
|
|
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))
|
|
123
|
+
|
|
124
|
+
return frame_list
|
|
125
|
+
|
|
126
|
+
|
|
@@ -4,32 +4,91 @@ import orjson
|
|
|
4
4
|
|
|
5
5
|
from .super_lag import get_slag_job_list, get_slag_list
|
|
6
6
|
from .dq_segment import read_seg_list, get_seg_list, get_job_list
|
|
7
|
-
from .frame import get_frame_meta, select_frame_list
|
|
7
|
+
from .frame import get_frame_meta, select_frame_list, get_frame_files_from_gwdatafind
|
|
8
8
|
from pycwb.types.job import WaveSegment
|
|
9
9
|
from ...utils.module import import_helper
|
|
10
|
+
from pycwb.modules.gracedb import get_superevent_t0
|
|
10
11
|
|
|
11
12
|
logger = logging.getLogger(__name__)
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
def create_job_segment_from_config(config):
|
|
16
|
+
"""
|
|
17
|
+
Create job segments based on the configuration file. Currently, the following cases are supported:
|
|
18
|
+
1. pure simulation mode: only injection parameters are specified
|
|
19
|
+
2. gps_start and gps_end are specified, only one job segment will be created
|
|
20
|
+
3. gps_center, time_left, and time_right are specified, only one job segment will be created
|
|
21
|
+
4. superevent, time_left, and time_right are specified, only one job segment will be created
|
|
22
|
+
5. DQ files are specified
|
|
23
|
+
|
|
24
|
+
The frame files will be attached to the job segments if fr_files are specified.
|
|
25
|
+
Otherwise, the start and end times of the job segments can be used with the channel names to fetch the data.
|
|
26
|
+
|
|
27
|
+
:param config: The configuration object.
|
|
28
|
+
:type config: Config
|
|
29
|
+
:return:
|
|
30
|
+
:rtype: list[WaveSegment]
|
|
31
|
+
"""
|
|
15
32
|
logger.info("-" * 80)
|
|
16
33
|
logger.info("Initializing job segments")
|
|
17
34
|
|
|
18
|
-
|
|
19
|
-
|
|
35
|
+
|
|
36
|
+
job_segments = None
|
|
37
|
+
periods = None
|
|
38
|
+
|
|
39
|
+
## generate job segments based on the configuration if the DQ files or periods are specified
|
|
40
|
+
# case 1: gps_start and gps_end are specified
|
|
41
|
+
if config.gps_start and config.gps_end:
|
|
42
|
+
periods = ([config.gps_start], [config.gps_end])
|
|
43
|
+
# case 2: gps_center, time_left, and time_right are specified
|
|
44
|
+
elif config.gps_center:
|
|
45
|
+
gps_center = int(config.gps_center)
|
|
46
|
+
if not config.time_left and not config.time_right:
|
|
47
|
+
raise ValueError("Please specify either time_left or time_right for the job segment")
|
|
48
|
+
periods = ([gps_center - config.time_left], [gps_center + config.time_right])
|
|
49
|
+
# case 3: superevent, time_left, and time_right are specified
|
|
50
|
+
elif config.superevent:
|
|
51
|
+
if not config.time_left and not config.time_right:
|
|
52
|
+
raise ValueError("Please specify either time_left or time_right for the superevent")
|
|
53
|
+
gps_center = int(get_superevent_t0(config.superevent))
|
|
54
|
+
periods = ([gps_center - config.time_left], [gps_center + config.time_right])
|
|
55
|
+
|
|
56
|
+
# create job segments
|
|
57
|
+
if config.dq_files or periods:
|
|
58
|
+
# get the job segments from the DQ files
|
|
59
|
+
job_segments = job_segment_from_dq(config.dq_files, config.ifo,
|
|
20
60
|
config.segLen, config.segMLS, config.segEdge, config.segOverlap,
|
|
21
|
-
config.rateANA, config.l_high
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
61
|
+
config.rateANA, config.l_high, config.inRate,
|
|
62
|
+
periods=periods)
|
|
63
|
+
|
|
64
|
+
## if only simulation mode is specified without DQ files or periods,
|
|
65
|
+
# create job segments based on the injection parameters
|
|
66
|
+
if config.simulation and job_segments is None:
|
|
67
|
+
# TODO: split out the injection part for other job types
|
|
68
|
+
job_segments = create_job_segment_from_injection(config.ifo, config.simulation, config.injection,
|
|
69
|
+
config.inRate, config.segEdge)
|
|
70
|
+
|
|
71
|
+
## TODO: when the DQ files and simulation both are specified, inject the parameters into the job segments
|
|
72
|
+
|
|
73
|
+
# attach the frame files to the job segments if defined
|
|
74
|
+
if config.frFiles:
|
|
75
|
+
attach_frame_files_to_job_segments(job_segments, config.ifo, config.frFiles, config.segEdge)
|
|
76
|
+
|
|
77
|
+
if config.gwdatafind:
|
|
78
|
+
gwdatafind_frames_for_job_segments(job_segments, config.ifo, config.gwdatafind, config.segEdge)
|
|
79
|
+
# attach the channel names to the job segments
|
|
80
|
+
if config.channelNamesRaw:
|
|
81
|
+
for job_seg in job_segments:
|
|
82
|
+
job_seg.channels = config.channelNamesRaw
|
|
83
|
+
|
|
84
|
+
## TODO: check if the job segments are valid
|
|
27
85
|
logger.info(f"Number of segments: {len(job_segments)}")
|
|
28
86
|
logger.info("-" * 80)
|
|
29
87
|
return job_segments
|
|
30
88
|
|
|
31
89
|
|
|
32
|
-
def
|
|
90
|
+
def job_segment_from_dq(dq_file_list, ifos, seg_len, seg_mls, seg_edge, seg_overlap, rateANA, l_high, sample_rate,
|
|
91
|
+
periods=None,
|
|
33
92
|
slag_size=0, slag_off=0, slag_min=0, slag_max=0, slag_site=0, slag_file=0):
|
|
34
93
|
"""Select a job segment from the database.
|
|
35
94
|
|
|
@@ -37,8 +96,6 @@ def select_job_segment(dq_file_list, ifos, fr_files, seg_len, seg_mls, seg_edge,
|
|
|
37
96
|
:type dq_file_list: list[DQFile]
|
|
38
97
|
:param ifos: The list of interferometers.
|
|
39
98
|
:type ifos: list[str]
|
|
40
|
-
:param fr_files: The list of frame files.
|
|
41
|
-
:type fr_files: list[FrameFile]
|
|
42
99
|
:param seg_len: The segment length.
|
|
43
100
|
:type seg_len: int
|
|
44
101
|
:param seg_mls: The minimum segment length after DQ_CAT1.
|
|
@@ -51,6 +108,10 @@ def select_job_segment(dq_file_list, ifos, fr_files, seg_len, seg_mls, seg_edge,
|
|
|
51
108
|
:type rateANA: int
|
|
52
109
|
:param l_high: The high frequency cutoff.
|
|
53
110
|
:type l_high: int
|
|
111
|
+
:param sample_rate: The sample rate.
|
|
112
|
+
:type sample_rate: int
|
|
113
|
+
:param periods: Given start and stop periods, will be added with the dq_file_list
|
|
114
|
+
:type periods: tuple[list[int], list[int]]
|
|
54
115
|
:param slag_size: The super lag size.
|
|
55
116
|
:type slag_size: int, optional
|
|
56
117
|
:param slag_off: The super lag offset.
|
|
@@ -68,7 +129,7 @@ def select_job_segment(dq_file_list, ifos, fr_files, seg_len, seg_mls, seg_edge,
|
|
|
68
129
|
"""
|
|
69
130
|
if slag_size > 0:
|
|
70
131
|
# TODO: not finished
|
|
71
|
-
cat1_list = read_seg_list(dq_file_list, 'CWB_CAT1')
|
|
132
|
+
cat1_list = read_seg_list(dq_file_list, 'CWB_CAT1', periods)
|
|
72
133
|
|
|
73
134
|
# Get number/list of available super lag jobs
|
|
74
135
|
# Compute the available segments with length=segLen contained between the interval [min,max]
|
|
@@ -91,9 +152,9 @@ def select_job_segment(dq_file_list, ifos, fr_files, seg_len, seg_mls, seg_edge,
|
|
|
91
152
|
raise Exception("Not finished")
|
|
92
153
|
|
|
93
154
|
else:
|
|
94
|
-
cat1_list = read_seg_list(dq_file_list, 'CWB_CAT1')
|
|
155
|
+
cat1_list = read_seg_list(dq_file_list, 'CWB_CAT1', periods)
|
|
95
156
|
|
|
96
|
-
job_segments = get_job_list(ifos, cat1_list, seg_len, seg_mls, seg_edge)
|
|
157
|
+
job_segments = get_job_list(ifos, cat1_list, seg_len, seg_mls, seg_edge, sample_rate)
|
|
97
158
|
|
|
98
159
|
rate_min = rateANA >> l_high
|
|
99
160
|
for job_seg in job_segments:
|
|
@@ -112,6 +173,10 @@ def select_job_segment(dq_file_list, ifos, fr_files, seg_len, seg_mls, seg_edge,
|
|
|
112
173
|
logger.debug(f"job segment gps range = {job_seg.start_time} - {job_seg.end_time}")
|
|
113
174
|
logger.info(f"Number of job segments = {len(job_segments)}")
|
|
114
175
|
|
|
176
|
+
return job_segments
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def attach_frame_files_to_job_segments(job_segments, ifos, fr_files, seg_edge):
|
|
115
180
|
# Get frame file list
|
|
116
181
|
frame_files = []
|
|
117
182
|
for i in range(len(ifos)):
|
|
@@ -122,10 +187,35 @@ def select_job_segment(dq_file_list, ifos, fr_files, seg_len, seg_mls, seg_edge,
|
|
|
122
187
|
for job_seg in job_segments:
|
|
123
188
|
job_seg.frames = select_frame_list(frame_files, job_seg.start_time, job_seg.end_time, seg_edge)
|
|
124
189
|
|
|
125
|
-
|
|
190
|
+
|
|
191
|
+
def gwdatafind_frames_for_job_segments(job_segments, ifos, gwdatafind, seg_edge):
|
|
192
|
+
"""
|
|
193
|
+
Use gwdatafind to get the frame files for the job segments
|
|
194
|
+
|
|
195
|
+
:param job_segments: The job segments.
|
|
196
|
+
:type job_segments: list[WaveSegment]
|
|
197
|
+
:param ifos: The list of interferometers.
|
|
198
|
+
:type ifos: list[str]
|
|
199
|
+
:param gwdatafind: The gwdatafind setting.
|
|
200
|
+
:type gwdatafind: dict
|
|
201
|
+
:param seg_edge: The wavelet boundary offset.
|
|
202
|
+
:type seg_edge: int
|
|
203
|
+
|
|
204
|
+
:return: None
|
|
205
|
+
"""
|
|
206
|
+
from gwdatafind import find_urls
|
|
207
|
+
|
|
208
|
+
# prepare the gwdatafind.find_urls arguments
|
|
209
|
+
if 'site' not in gwdatafind:
|
|
210
|
+
gwdatafind['site'] = [ifo[0] for ifo in ifos]
|
|
211
|
+
host = gwdatafind.get('host')
|
|
212
|
+
|
|
213
|
+
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)
|
|
126
216
|
|
|
127
217
|
|
|
128
|
-
def create_job_segment_from_injection(ifo, simulation_mode, injection):
|
|
218
|
+
def create_job_segment_from_injection(ifo, simulation_mode, injection, sample_rate, seg_edge):
|
|
129
219
|
# get the injection parameters
|
|
130
220
|
if 'parameters' in injection:
|
|
131
221
|
if isinstance(injection['parameters'], list):
|
|
@@ -158,6 +248,7 @@ def create_job_segment_from_injection(ifo, simulation_mode, injection):
|
|
|
158
248
|
if simulation_mode == "all_inject_in_one_segment":
|
|
159
249
|
# inject all the parameters in one job segment
|
|
160
250
|
job_segments = [WaveSegment(0, ifo, injection['segment']['start'], injection['segment']['end'],
|
|
251
|
+
sample_rate=sample_rate, seg_edge=seg_edge,
|
|
161
252
|
noise=noise, injections=injections)]
|
|
162
253
|
elif simulation_mode == "one_inject_in_one_segment":
|
|
163
254
|
# repeat the injection N times for the same job segment
|
|
@@ -166,6 +257,7 @@ def create_job_segment_from_injection(ifo, simulation_mode, injection):
|
|
|
166
257
|
# raise ValueError(f"The number of injections ({len(injections)}) does not match the number of repeats ({repeat})")
|
|
167
258
|
|
|
168
259
|
job_segments = [WaveSegment(i, ifo, injection['segment']['start'], injection['segment']['end'],
|
|
260
|
+
sample_rate=sample_rate, seg_edge=seg_edge,
|
|
169
261
|
noise=noise, injections=[injections[i]])
|
|
170
262
|
for i in range(repeat)]
|
|
171
263
|
else:
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
from .job_segment import read_seg_list, get_job_list
|
|
3
|
+
|
|
4
|
+
class TestJobSegment(unittest.TestCase):
|
|
5
|
+
def test_read_seg_list(self):
|
|
6
|
+
periods = ([100000], [100000 + 2400])
|
|
7
|
+
expected_output = ([100000], [102400])
|
|
8
|
+
cat1_list = read_seg_list(periods=periods)
|
|
9
|
+
|
|
10
|
+
self.assertEqual(cat1_list, expected_output)
|
|
11
|
+
|
|
12
|
+
def test_get_job_list(self):
|
|
13
|
+
periods = ([100000], [100000 + 2400])
|
|
14
|
+
ifos = ['H1', 'L1']
|
|
15
|
+
seg_len = 1200
|
|
16
|
+
seg_mls = 600
|
|
17
|
+
seg_edge = 10
|
|
18
|
+
sample_rate = 4096
|
|
19
|
+
cat1_list = read_seg_list(periods=periods)
|
|
20
|
+
|
|
21
|
+
job_segments = get_job_list(ifos, cat1_list, seg_len, seg_mls, seg_edge, sample_rate)
|
|
22
|
+
self.assertEqual(len(job_segments), 2)
|
|
23
|
+
self.assertEqual(job_segments[0].start_time, 100010)
|
|
24
|
+
self.assertEqual(job_segments[0].end_time, 101200)
|
|
25
|
+
self.assertEqual(job_segments[1].start_time, 101200)
|
|
26
|
+
self.assertEqual(job_segments[1].end_time, 102390)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
if __name__ == '__main__':
|
|
30
|
+
unittest.main()
|
|
@@ -185,8 +185,8 @@ def merge_frames(job_seg, data, seg_edge):
|
|
|
185
185
|
|
|
186
186
|
def read_single_frame_from_job_segment(config, frame, job_seg: WaveSegment):
|
|
187
187
|
# should read data with segment edge
|
|
188
|
-
start = job_seg.start_time -
|
|
189
|
-
end = job_seg.end_time +
|
|
188
|
+
start = job_seg.start_time - job_seg.seg_edge
|
|
189
|
+
end = job_seg.end_time + job_seg.seg_edge
|
|
190
190
|
|
|
191
191
|
# for each frame, if the frame start time is later than the job segment start time, use the frame start time
|
|
192
192
|
if frame.start_time > start:
|
|
@@ -196,14 +196,14 @@ def read_single_frame_from_job_segment(config, frame, job_seg: WaveSegment):
|
|
|
196
196
|
if frame.end_time < end:
|
|
197
197
|
end = frame.end_time
|
|
198
198
|
|
|
199
|
-
i =
|
|
200
|
-
data = read_from_gwf(frame.path,
|
|
199
|
+
i = job_seg.ifos.index(frame.ifo)
|
|
200
|
+
data = read_from_gwf(frame.path, job_seg.channels[i], start=start, end=end)
|
|
201
201
|
print(f'Read data: start={data.t0}, duration={data.duration}, rate={data.sample_rate}')
|
|
202
|
-
if int(data.sample_rate.value) != int(
|
|
202
|
+
if int(data.sample_rate.value) != int(job_seg.sample_rate):
|
|
203
203
|
sample_rate_old = data.sample_rate.value
|
|
204
204
|
w = convert_to_wavearray(data)
|
|
205
|
-
w.Resample(
|
|
205
|
+
w.Resample(job_seg.sample_rate)
|
|
206
206
|
data = convert_wavearray_to_timeseries(w)
|
|
207
207
|
# data = data.resample(config.inRate)
|
|
208
|
-
print(f'Resample data from {sample_rate_old} to {
|
|
208
|
+
print(f'Resample data from {sample_rate_old} to {job_seg.sample_rate}')
|
|
209
209
|
return check_and_resample(data, config, i)
|
|
@@ -52,8 +52,14 @@ class WaveSegment:
|
|
|
52
52
|
start time of the segment
|
|
53
53
|
end_time: float
|
|
54
54
|
end time of the segment
|
|
55
|
+
sample_rate: float
|
|
56
|
+
sample rate of the segment
|
|
55
57
|
shift: list, optional
|
|
56
58
|
list of shifts for each interferometer, used for superlags
|
|
59
|
+
seg_edge: float, optional
|
|
60
|
+
the edge of the segment
|
|
61
|
+
channels: list, optional
|
|
62
|
+
list of data channels for each interferometer
|
|
57
63
|
frames: list, optional
|
|
58
64
|
list of frame files that are within the segment
|
|
59
65
|
noise: dict, optional
|
|
@@ -65,8 +71,10 @@ class WaveSegment:
|
|
|
65
71
|
ifos: List[str]
|
|
66
72
|
start_time: float
|
|
67
73
|
end_time: float
|
|
74
|
+
sample_rate: float
|
|
75
|
+
seg_edge: float
|
|
68
76
|
shift: List[float] = None
|
|
69
|
-
|
|
77
|
+
channels: Optional[List[str]] = None
|
|
70
78
|
frames: Optional[List[FrameFile]] = None
|
|
71
79
|
noise: Optional[Dict] = None
|
|
72
80
|
injections: Optional[List[Dict]] = None
|
|
@@ -43,6 +43,6 @@ def set_default(params, schema):
|
|
|
43
43
|
"""
|
|
44
44
|
for key in schema['properties'].keys():
|
|
45
45
|
if key not in params:
|
|
46
|
-
params[key] = schema['properties'][key]['default']
|
|
46
|
+
params[key] = schema['properties'][key]['default'] if 'default' in schema['properties'][key] else None
|
|
47
47
|
|
|
48
48
|
return params
|
|
File without changes
|
|
File without changes
|
|
File without changes
|