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