PycWB 0.22.0__tar.gz → 0.22.1__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.22.0 → pycwb-0.22.1}/PKG-INFO +2 -1
- {PycWB-0.22.0 → pycwb-0.22.1}/PycWB.egg-info/PKG-INFO +2 -1
- {PycWB-0.22.0 → pycwb-0.22.1}/PycWB.egg-info/SOURCES.txt +3 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/PycWB.egg-info/requires.txt +1 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/_version.py +2 -2
- pycwb-0.22.1/pycwb/cli/run.py +87 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/constants/user_parameters_schema.py +48 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/job_segment/job_segment.py +27 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/statistics/eff.py +55 -17
- pycwb-0.22.1/pycwb/modules/statistics/eff_plot.py +45 -0
- pycwb-0.22.1/pycwb/modules/statistics/merge.py +65 -0
- pycwb-0.22.1/pycwb/modules/statistics/sigmoid_fit.py +81 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/workflow_utils/job_setup.py +18 -6
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/job.py +3 -0
- pycwb-0.22.1/pycwb/workflow/batch.py +168 -0
- pycwb-0.22.1/pycwb/workflow/subflow/__init__.py +2 -0
- pycwb-0.22.1/pycwb/workflow/subflow/prepare_job_runs.py +102 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/setup.py +1 -0
- PycWB-0.22.0/pycwb/cli/run.py +0 -87
- PycWB-0.22.0/pycwb/workflow/batch.py +0 -116
- PycWB-0.22.0/pycwb/workflow/subflow/__init__.py +0 -2
- PycWB-0.22.0/pycwb/workflow/subflow/prepare_job_runs.py +0 -42
- {PycWB-0.22.0 → pycwb-0.22.1}/.gitignore +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/.gitlab-ci.yml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/LICENSE +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/MANIFEST.in +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/Makefile +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/PycWB.egg-info/dependency_links.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/PycWB.egg-info/top_level.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/README.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/README.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/likelihood/README.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/likelihood/generate_data_for_likelihood.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/likelihood/performance_test_dpf.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/likelihood/performance_test_opt_sky.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/likelihood/user_parameters_injection.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/supercluster/README.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/supercluster/generate_data.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/supercluster/generate_data_2.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/supercluster/performance_supercluster.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/benchmark/supercluster/user_parameters_injection.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/bin/pycwb +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/bin/pycwb_search +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/bin/pycwb_show +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Biorthogonal.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Biorthogonal.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/CMakeLists.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Daubechies.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Daubechies.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/FourierCoefficients.icc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Haar.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Haar.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/LineFilter.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/LineFilter.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Makefile +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Meyer.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Meyer.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Symlet.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Symlet.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/SymmArray.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/SymmArray.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/SymmArraySSE.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/SymmArraySSE.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/SymmObjArray.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/SymmObjArray.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/WDM.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/WDM.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/WDMOverlap.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/WDMOverlap.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/WaveDWT.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/WaveDWT.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Wavelet.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/Wavelet.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/alm.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/build.sh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/cluster.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/cluster.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/cmake/FindHealpix.cmake +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/cmake/FindeBBH.cmake +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/cmake/install_function.cmake +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/constants.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/detector.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/detector.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/injection.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/injection.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/lossy.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/lossy.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/monster.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/monster.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/netcluster.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/netcluster.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/netevent.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/netevent.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/netpixel.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/netpixel.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/network.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/network.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/pycwb.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/rdfr.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/rdfr.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/readframe.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/readframe.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/readfrfile.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/readfrfile.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/regression.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/regression.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/skycoord.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/skymap.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/skymap.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/sseries.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/sseries.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/time.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/time.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wat.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/watasm.S +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/watasm_elf64.o +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/watavx.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/watbranch.in +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/watfun.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wathash.in +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/watplot.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/watplot.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/watsse.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wattag.in +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/waturl.in +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/watversion.hh.in +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavearray.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavearray.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavecomplex.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavecomplex.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavecor.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavecor.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavefft.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavefft.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavelet_LinkDef.h +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavelinefilter.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wavelinefilter.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/waverdc.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/waverdc.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wseries.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wseries.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/cwb-core/wslice.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/0.installation_guide.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/1.initialisation_guide.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/2.test_interactive_multistages_2G_analysis.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/3.run_pycwb_with_yaml_config.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/4.py_cwb_inet_2G.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/5.cwb2G_analyse.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/6.wat_codes_notes.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/Makefile +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/diagram.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/make.bat +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/_static/.keep +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/_templates/.keep +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/conf.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/credit.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/index.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/install.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/mod_cwb.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/package.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/schema.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/tutorial_batch_inj.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/tutorial_customized_wf_gen.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/tutorial_injection.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/tutorial_multi_injection.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/tutorial_search.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/tutorials.rst +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/docs/source/workflow.png +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/envs/Dockerfile +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/envs/mamba/Dockerfile +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/autoencoder/pycwb_injection.ipynb +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/autoencoder/user_parameters_injection.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/batch_injection/generate_parameters.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/batch_injection/pycbc_inject/hyperbolicTD/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/batch_injection/pycbc_inject/hyperbolicTD/parameters.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/batch_injection/pycbc_inject/hyperbolicTD/waveform.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/batch_injection/pycwb_injection.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/batch_injection/user_parameters_injection.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/DQ/H1_cat0.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/DQ/H1_cat1.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/DQ/H1_cat2.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/DQ/H1_cat4.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/DQ/L1_cat0.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/DQ/L1_cat1.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/DQ/L1_cat2.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/DQ/L1_cat4.txt +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/input/OPBM.period +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/input/OPBM_H1.frames +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/input/OPBM_L1.frames +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/pycwb_mdc.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/benchmark/user_parameters_mdc.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/colab/pycWB_GW150914.ipynb +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/injection/pycwb_injection.ipynb +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/injection/pycwb_injection.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/injection/user_parameters_injection.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/lvk_sep_2023/demo.ipynb +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/lvk_sep_2023/user_parameters.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/multiple_injection/pycwb_injection.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/multiple_injection/user_parameters_injection.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/pyseobnr_injection/generate_parameters.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/pyseobnr_injection/user_parameters_injection.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/pyseobnr_injection/waveform_model/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/pyseobnr_injection/waveform_model/waveform.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/examples/waveform_reconstruction/reconstruct_waveform_from_cluster.ipynb +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/cwb_core/coherence.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/cwb_core/coherence.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/cwb_core/likelihood.cc +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/cwb_core/likelihood.hh +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/dag/dag.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/dag/dask-prefect.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/dag/prefect_test.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger/server.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger/visualizition.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/.eslintrc.cjs +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/.gitignore +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/.prettierrc.json +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/README.md +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/index.html +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/package-lock.json +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/package.json +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/public/favicon.ico +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/App.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/assets/base.css +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/assets/cwb_icon_modern_blue_alfa.png +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/assets/main.css +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/assets/style.css +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/components/HelloWorld.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/components/TheWelcome.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/components/WelcomeItem.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/components/__tests__/HelloWorld.spec.js +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/components/icons/IconCommunity.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/components/icons/IconDocumentation.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/components/icons/IconEcosystem.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/components/icons/IconSupport.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/components/icons/IconTooling.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/main.js +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/router/index.js +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/stores/counter.js +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/views/drawflow.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/views/nodes/node1.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/views/nodes/node2.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/views/nodes/node3.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/src/views/nodes/nodeHeader.vue +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/messenger-web-interface/vite.config.js +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/performance/numba_test.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/performance/taichi_test.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/prototypes/search.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/cli/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/cli/batch.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/cli/flow.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/cli/server.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/cli/xtalk.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/config/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/config/config.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/constants/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/constants/project_constants.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/autoencoder/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/autoencoder/autoencoder.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/autoencoder/cwb_autoencoder.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/autoencoder/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/catalog/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/catalog/catalog.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/catalog/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/coherence/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/coherence/coherence.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/coherence/coherence_lite.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/coherence/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/condor/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/condor/condor.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/condor/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/cwb_conversions/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/cwb_conversions/cluster.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/cwb_conversions/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/cwb_conversions/pixel.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/cwb_conversions/series.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/cwb_conversions/sparse_series.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/data_conditioning/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/data_conditioning/data_conditioning.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/data_conditioning/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/data_conditioning/regression.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/data_conditioning/whitening.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/job_segment/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/job_segment/dq_segment.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/job_segment/frame.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/job_segment/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/job_segment/plots.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/job_segment/super_lag.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/likelihood/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/likelihood/likelihood.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/likelihood/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/likelihoodWP/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/likelihoodWP/dpf.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/likelihoodWP/dpf_cython.pyx +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/likelihoodWP/likelihood.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/likelihoodWP/sky_stat.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/likelihoodWP/utils.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/logger/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/logger/logger.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/logger/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/multi_resolution_wdm/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/multi_resolution_wdm/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/multi_resolution_wdm/wdm.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot/cluster_statistics.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot/event.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot/spectrogram.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot/waveform.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot_data_quality/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot_data_quality/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot_data_quality/plot.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot_map/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot_map/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/plot_map/world_map.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/read_data/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/read_data/data_check.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/read_data/data_find.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/read_data/mdc.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/read_data/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/read_data/read_data.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/reconstruction/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/reconstruction/getMRAwaveform.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/reconstruction/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/sparse_series/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/sparse_series/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/sparse_series/sparse_table.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/statistics/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/super_cluster/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/super_cluster/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/super_cluster/sub_net_cut.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/super_cluster/super_cluster.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/super_cluster/supercluster.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/super_cluster/utils.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/superlag/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/superlag/superlag.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/web_viewer/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/web_viewer/create.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/web_viewer/module.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/workflow_utils/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/xtalk/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/xtalk/monster.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/modules/xtalk/monster_old.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/prefect_flow/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/prefect_flow/pycwb_flow.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/prefect_flow/tasks/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/prefect_flow/tasks/builtin.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/search.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/data_quality_file.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/detector.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/network.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/network_cluster.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/network_event.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/network_pixel.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/sparse_series.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/time_frequency_series.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/wdm.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/types/wdm_xtalk.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/async_write.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/check_ROOT.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/conversions/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/conversions/timeseries.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/dataclass_object_io.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/dep_check.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/image.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/module.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/network.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/skymap_coord.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/utils/yaml_helper.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/vendor/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/vendor/autoencoder/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/vendor/autoencoder/cwb_autoencoder.h5 +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/vendor/example.yaml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/vendor/lib/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/vendor/web_viewer/event_dump.html +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/vendor/web_viewer/styles.css +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/vendor/web_viewer/viewer.html +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/workflow/__init__.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/workflow/subflow/postprocess_and_plots.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pycwb/workflow/subflow/supercluster_and_likelihood.py +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/pyproject.toml +0 -0
- {PycWB-0.22.0 → pycwb-0.22.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PycWB
|
|
3
|
-
Version: 0.22.
|
|
3
|
+
Version: 0.22.1
|
|
4
4
|
Summary: A Python package for coherent gravitational wave burst analysis
|
|
5
5
|
Home-page: https://git.ligo.org/yumeng.xu/pycwb
|
|
6
6
|
Author-email: The PycWB team <yumeng.xu@ligo.org>
|
|
@@ -30,6 +30,7 @@ Requires-Dist: prefect
|
|
|
30
30
|
Requires-Dist: prefect-dask
|
|
31
31
|
Requires-Dist: dask
|
|
32
32
|
Requires-Dist: dask_jobqueue
|
|
33
|
+
Requires-Dist: htcondor
|
|
33
34
|
|
|
34
35
|
# PycWB
|
|
35
36
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PycWB
|
|
3
|
-
Version: 0.22.
|
|
3
|
+
Version: 0.22.1
|
|
4
4
|
Summary: A Python package for coherent gravitational wave burst analysis
|
|
5
5
|
Home-page: https://git.ligo.org/yumeng.xu/pycwb
|
|
6
6
|
Author-email: The PycWB team <yumeng.xu@ligo.org>
|
|
@@ -30,6 +30,7 @@ Requires-Dist: prefect
|
|
|
30
30
|
Requires-Dist: prefect-dask
|
|
31
31
|
Requires-Dist: dask
|
|
32
32
|
Requires-Dist: dask_jobqueue
|
|
33
|
+
Requires-Dist: htcondor
|
|
33
34
|
|
|
34
35
|
# PycWB
|
|
35
36
|
|
|
@@ -317,6 +317,9 @@ pycwb/modules/sparse_series/module.yaml
|
|
|
317
317
|
pycwb/modules/sparse_series/sparse_table.py
|
|
318
318
|
pycwb/modules/statistics/__init__.py
|
|
319
319
|
pycwb/modules/statistics/eff.py
|
|
320
|
+
pycwb/modules/statistics/eff_plot.py
|
|
321
|
+
pycwb/modules/statistics/merge.py
|
|
322
|
+
pycwb/modules/statistics/sigmoid_fit.py
|
|
320
323
|
pycwb/modules/super_cluster/__init__.py
|
|
321
324
|
pycwb/modules/super_cluster/module.yaml
|
|
322
325
|
pycwb/modules/super_cluster/sub_net_cut.py
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def init_parser(parser):
|
|
5
|
+
# Add the arguments
|
|
6
|
+
parser.add_argument('user_parameter_file',
|
|
7
|
+
metavar='file_path',
|
|
8
|
+
type=str,
|
|
9
|
+
help='the path to the user parameter file')
|
|
10
|
+
|
|
11
|
+
# working dir
|
|
12
|
+
parser.add_argument('--work-dir',
|
|
13
|
+
'-d',
|
|
14
|
+
metavar='work_dir',
|
|
15
|
+
type=str,
|
|
16
|
+
default='.',
|
|
17
|
+
help='the working directory')
|
|
18
|
+
|
|
19
|
+
# force overwrite
|
|
20
|
+
parser.add_argument('--force-overwrite',
|
|
21
|
+
'-f',
|
|
22
|
+
action='store_true',
|
|
23
|
+
default=False,
|
|
24
|
+
help='overwrite the existing results')
|
|
25
|
+
|
|
26
|
+
# threads
|
|
27
|
+
parser.add_argument('--n-proc',
|
|
28
|
+
'-n',
|
|
29
|
+
metavar='n_proc',
|
|
30
|
+
type=int,
|
|
31
|
+
default=0,
|
|
32
|
+
help='the number of cpu to use, if it set to 0, '
|
|
33
|
+
'it will use the value from the user parameter file.')
|
|
34
|
+
|
|
35
|
+
# generate plot
|
|
36
|
+
parser.add_argument('--plot',
|
|
37
|
+
action='store_true',
|
|
38
|
+
default=False,
|
|
39
|
+
help='generate the plot, by default False')
|
|
40
|
+
|
|
41
|
+
# compress json
|
|
42
|
+
parser.add_argument('--compress_json',
|
|
43
|
+
action='store_true',
|
|
44
|
+
default=False,
|
|
45
|
+
help='compress the json files, by default False')
|
|
46
|
+
|
|
47
|
+
# serve name
|
|
48
|
+
parser.add_argument('--name',
|
|
49
|
+
metavar='name',
|
|
50
|
+
type=str,
|
|
51
|
+
default='pycwb',
|
|
52
|
+
help='the name of the serve')
|
|
53
|
+
|
|
54
|
+
# list number of jobs
|
|
55
|
+
parser.add_argument('--list-n-jobs',
|
|
56
|
+
action='store_true',
|
|
57
|
+
default=False,
|
|
58
|
+
help='list number of the jobs in the flow')
|
|
59
|
+
|
|
60
|
+
# list jobs
|
|
61
|
+
parser.add_argument('--list-jobs',
|
|
62
|
+
action='store_true',
|
|
63
|
+
default=False,
|
|
64
|
+
help='list all jobs in the flow')
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def command(args):
|
|
68
|
+
from pycwb.workflow.batch import search
|
|
69
|
+
|
|
70
|
+
if args.list_n_jobs or args.list_jobs:
|
|
71
|
+
jobs = search(args.user_parameter_file, working_dir=args.work_dir, n_proc=1, dry_run=True)
|
|
72
|
+
|
|
73
|
+
print(f"Number of jobs: {len(jobs)}")
|
|
74
|
+
|
|
75
|
+
if args.list_n_jobs:
|
|
76
|
+
print(f"To list all jobs, use --list-jobs option.")
|
|
77
|
+
|
|
78
|
+
# list all jobs
|
|
79
|
+
if args.list_jobs:
|
|
80
|
+
for job in jobs:
|
|
81
|
+
print(job)
|
|
82
|
+
|
|
83
|
+
return 0
|
|
84
|
+
|
|
85
|
+
# Run the search function with the specified user parameter file
|
|
86
|
+
search(args.user_parameter_file, working_dir=args.work_dir, n_proc=args.n_proc, submit=args.submit,
|
|
87
|
+
overwrite=args.force_overwrite, plot=args.plot, compress_json=args.compress_json)
|
|
@@ -21,6 +21,54 @@ schema = {
|
|
|
21
21
|
"default": "log",
|
|
22
22
|
"cwb": False
|
|
23
23
|
},
|
|
24
|
+
"catalog_dir": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "catalog directory",
|
|
27
|
+
"default": "catalog",
|
|
28
|
+
"cwb": False
|
|
29
|
+
},
|
|
30
|
+
"trigger_dir": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"description": "trigger directory",
|
|
33
|
+
"default": "trigger",
|
|
34
|
+
"cwb": False
|
|
35
|
+
},
|
|
36
|
+
"plot_trigger": {
|
|
37
|
+
"type": "boolean",
|
|
38
|
+
"description": "plot triggers",
|
|
39
|
+
"default": False,
|
|
40
|
+
"cwb": False
|
|
41
|
+
},
|
|
42
|
+
"save_waveform": {
|
|
43
|
+
"type": "boolean",
|
|
44
|
+
"description": "save waveform from triggers",
|
|
45
|
+
"default": False,
|
|
46
|
+
"cwb": False
|
|
47
|
+
},
|
|
48
|
+
"plot_waveform": {
|
|
49
|
+
"type": "boolean",
|
|
50
|
+
"description": "plot waveform from triggers",
|
|
51
|
+
"default": False,
|
|
52
|
+
"cwb": False
|
|
53
|
+
},
|
|
54
|
+
"save_sky_map": {
|
|
55
|
+
"type": "boolean",
|
|
56
|
+
"description": "save sky maps to json",
|
|
57
|
+
"default": False,
|
|
58
|
+
"cwb": False
|
|
59
|
+
},
|
|
60
|
+
"plot_sky_map": {
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"description": "plot sky maps",
|
|
63
|
+
"default": False,
|
|
64
|
+
"cwb": False
|
|
65
|
+
},
|
|
66
|
+
"compress_output_json": {
|
|
67
|
+
"type": "boolean",
|
|
68
|
+
"description": "compress output json",
|
|
69
|
+
"default": False,
|
|
70
|
+
"cwb": False
|
|
71
|
+
},
|
|
24
72
|
"nproc": {
|
|
25
73
|
"type": "integer",
|
|
26
74
|
"description": "number of processes",
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import logging
|
|
2
|
+
|
|
3
|
+
import orjson
|
|
4
|
+
|
|
2
5
|
from .super_lag import get_slag_job_list, get_slag_list
|
|
3
6
|
from .dq_segment import read_seg_list, get_seg_list, get_job_list
|
|
4
7
|
from .frame import get_frame_meta, select_frame_list
|
|
@@ -170,3 +173,27 @@ def create_job_segment_from_injection(ifo, simulation_mode, injection):
|
|
|
170
173
|
|
|
171
174
|
return job_segments
|
|
172
175
|
|
|
176
|
+
|
|
177
|
+
def save_job_segments_to_json(job_segments, output_file) -> None:
|
|
178
|
+
"""Save the job segments to a JSON file.
|
|
179
|
+
|
|
180
|
+
:param job_segments: The job segments.
|
|
181
|
+
:type job_segments: list[WaveSegment]
|
|
182
|
+
:param output_file: The output file.
|
|
183
|
+
:type output_file: str
|
|
184
|
+
"""
|
|
185
|
+
with open(output_file, 'wb') as f:
|
|
186
|
+
f.write(orjson.dumps(job_segments))
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
def load_job_segments_from_json(input_file: str) -> list[WaveSegment]:
|
|
190
|
+
"""Load the job segments from a JSON file.
|
|
191
|
+
|
|
192
|
+
:param input_file: The input file.
|
|
193
|
+
:type input_file: str
|
|
194
|
+
:return: The job segments.
|
|
195
|
+
:rtype: list[WaveSegment]
|
|
196
|
+
"""
|
|
197
|
+
with open(input_file, 'rb') as f:
|
|
198
|
+
data = orjson.loads(f.read())
|
|
199
|
+
return data
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import numpy as np
|
|
2
2
|
from scipy.special import erfc
|
|
3
3
|
from scipy.optimize import root_scalar
|
|
4
|
+
import warnings
|
|
5
|
+
|
|
6
|
+
# this function is deprecated, please consider using sigmoid_fit.py to fit the data instead
|
|
7
|
+
# of reading from the fit_parameters file
|
|
8
|
+
warnings.warn("This function is deprecated, please consider using sigmoid_fit.py to fit the data instead"
|
|
9
|
+
" of reading from the fit_parameters file", DeprecationWarning)
|
|
4
10
|
|
|
5
11
|
|
|
6
12
|
def read_inj_type(file_name):
|
|
@@ -191,17 +197,25 @@ def plot_hrss_from_mdc(run_dirs, tags, output_dir='.'):
|
|
|
191
197
|
plt.savefig(f'{output_dir}/hrss50.png')
|
|
192
198
|
|
|
193
199
|
|
|
194
|
-
def
|
|
200
|
+
def sort_key(s):
|
|
201
|
+
import re
|
|
202
|
+
parts = re.match(r"([a-zA-Z]+)(\d+)Q(\d+)", s)
|
|
203
|
+
num_before_q = int(parts.group(2))
|
|
204
|
+
num_after_q = int(parts.group(3))
|
|
205
|
+
return (num_after_q, num_before_q)
|
|
206
|
+
|
|
207
|
+
def barplot_hrss_from_mdc(run_dirs, tags, output_dir='.', filename='hrss50_comparison.png', wf_names_selection=None):
|
|
195
208
|
import matplotlib.pyplot as plt
|
|
196
209
|
import seaborn as sns
|
|
197
210
|
import numpy as np
|
|
198
211
|
|
|
199
|
-
color = sns.color_palette(
|
|
212
|
+
color = sns.color_palette('Paired')
|
|
200
213
|
bar_width = 0.8 / len(run_dirs)
|
|
201
214
|
opacity = 0.8
|
|
202
215
|
|
|
203
216
|
data_sets = []
|
|
204
217
|
for i, (run_dir, tag) in enumerate(zip(run_dirs, tags)):
|
|
218
|
+
print(f"Reading: {tag}")
|
|
205
219
|
injections = read_inj_type(run_dir + 'injectionList.txt')
|
|
206
220
|
imdc_set_hrss10, imdc_set_hrss50, imdc_set_hrss90, imdc_set_hrss50_err = read_hrss_for_mdc(run_dir)
|
|
207
221
|
wf_names_all = []
|
|
@@ -210,8 +224,11 @@ def barplot_hrss_from_mdc(run_dirs, tags, output_dir='.'):
|
|
|
210
224
|
hrss50_errs_all = []
|
|
211
225
|
for j, inj_set_name in enumerate(imdc_set_hrss50.keys()):
|
|
212
226
|
wf_names = list(imdc_set_hrss50[inj_set_name].keys())
|
|
213
|
-
|
|
214
|
-
|
|
227
|
+
# filter out the wf_names containing 5000
|
|
228
|
+
wf_names = [wf_name for wf_name in wf_names if '5000' not in wf_name and '849' not in wf_name]
|
|
229
|
+
hrss50s = [imdc_set_hrss50[inj_set_name][wf_name] for wf_name in wf_names if wf_name in imdc_set_hrss50[inj_set_name]]
|
|
230
|
+
# print(f"inj_set_name: {inj_set_name}, wf_names: {wf_names}, hrss50s: {hrss50s}, hrss50_errs: {[imdc_set_hrss50_err[inj_set_name][wf_name] for wf_name in wf_names]}")
|
|
231
|
+
hrss50_errs = np.array([imdc_set_hrss50_err[inj_set_name][wf_name] for wf_name in wf_names if wf_name in imdc_set_hrss50_err[inj_set_name]]) - hrss50s
|
|
215
232
|
|
|
216
233
|
wf_names_all += wf_names
|
|
217
234
|
hrss50s_all += list(hrss50s)
|
|
@@ -224,26 +241,47 @@ def barplot_hrss_from_mdc(run_dirs, tags, output_dir='.'):
|
|
|
224
241
|
# hrss50_errs_all = np.array(hrss50_errs_all)[sorted_indices]
|
|
225
242
|
# wf_names_sorted = np.array(wf_names_all)[sorted_indices]
|
|
226
243
|
|
|
227
|
-
|
|
228
|
-
|
|
244
|
+
data_set = {}
|
|
245
|
+
for i, wf_name in enumerate(wf_names_all):
|
|
246
|
+
data_set[wf_name] = [hrss50s_all[i], hrss50_errs_all[i]]
|
|
247
|
+
# data_sets.append((wf_names_all, hrss50s_all, hrss50_errs_all, tag))
|
|
248
|
+
data_sets.append((data_set, tag))
|
|
249
|
+
|
|
250
|
+
if wf_names_selection:
|
|
251
|
+
wf_names_plot = wf_names_selection
|
|
252
|
+
else:
|
|
253
|
+
wf_names_plot = set([k for d in data_sets for k in d[0].keys() ])
|
|
254
|
+
wf_names_plot = sorted(wf_names_plot, key=sort_key)
|
|
229
255
|
# Plot the data
|
|
230
256
|
# figure size (10, 5)
|
|
231
257
|
|
|
232
|
-
fig, ax = plt.subplots(figsize=(
|
|
258
|
+
fig, ax = plt.subplots(figsize=(14, 3.5))
|
|
233
259
|
len_data_sets = len(data_sets)
|
|
234
|
-
for i, (
|
|
235
|
-
|
|
236
|
-
|
|
260
|
+
for i, (data_set, label) in enumerate(data_sets):
|
|
261
|
+
indexes = []
|
|
262
|
+
hrss50s = []
|
|
263
|
+
hrss50_errs = []
|
|
264
|
+
for wf_name in data_set.keys():
|
|
265
|
+
if wf_name not in wf_names_plot:
|
|
266
|
+
continue
|
|
267
|
+
indexes.append(wf_names_plot.index(wf_name))
|
|
268
|
+
hrss50s.append(data_set[wf_name][0])
|
|
269
|
+
hrss50_errs.append(data_set[wf_name][1])
|
|
270
|
+
bars = ax.bar(np.array(indexes) + i*bar_width, hrss50s, bar_width, alpha=opacity, color=color[i], yerr=hrss50_errs, label=label,
|
|
237
271
|
error_kw=dict(lw=1, capsize=1.5, capthick=1, alpha=0.7))
|
|
238
|
-
wf_names = data_sets[0][0]
|
|
239
|
-
index = np.arange(len(
|
|
272
|
+
# wf_names = data_sets[0][0]
|
|
273
|
+
index = np.arange(len(wf_names_plot))
|
|
240
274
|
ax.set_yscale('log')
|
|
241
|
-
ax.set_xlabel('Waveform Names')
|
|
275
|
+
# ax.set_xlabel('Waveform Names')
|
|
242
276
|
ax.set_ylabel('hrss50 values')
|
|
243
|
-
ax.set_title('Comparison of hrss50 values')
|
|
277
|
+
# ax.set_title('Comparison of hrss50 values')
|
|
244
278
|
ax.set_xticks(index + bar_width*(len_data_sets-1)/2)
|
|
245
|
-
ax.set_xticklabels(
|
|
246
|
-
ax.legend()
|
|
279
|
+
ax.set_xticklabels(wf_names_plot, rotation=45, ha='right') # Rotate x-labels 45 degrees
|
|
280
|
+
ax.legend(ncol=3)
|
|
247
281
|
|
|
248
282
|
plt.tight_layout()
|
|
249
|
-
|
|
283
|
+
# save the plot with transparent background
|
|
284
|
+
plt.savefig(output_dir + '/' + filename, bbox_inches='tight', transparent=True)
|
|
285
|
+
plt.show()
|
|
286
|
+
|
|
287
|
+
# barplot_hrss_from_mdc([run_dir1, run4_dir], ['v20', 'run4'])
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import matplotlib.pyplot as plt
|
|
2
|
+
import numpy as np
|
|
3
|
+
import pandas as pd
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def hrss50_bar_plot(data_sets: list[tuple[dict[str, pd.DataFrame], str]],
|
|
7
|
+
wf_selections=None, output_dir='.', filename='hrss50_comparison.png'):
|
|
8
|
+
if wf_selections is None:
|
|
9
|
+
wf_names_plot = list(data_sets[0][0].keys())
|
|
10
|
+
else:
|
|
11
|
+
wf_names_plot = wf_selections
|
|
12
|
+
|
|
13
|
+
color = ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c',
|
|
14
|
+
'#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928']
|
|
15
|
+
|
|
16
|
+
bar_width = 0.8 / len(data_sets)
|
|
17
|
+
opacity = 0.8
|
|
18
|
+
|
|
19
|
+
fig, ax = plt.subplots(figsize=(14, 3.5))
|
|
20
|
+
len_data_sets = len(data_sets)
|
|
21
|
+
for i, (data_set, label) in enumerate(data_sets):
|
|
22
|
+
indexes = []
|
|
23
|
+
hrss50s = []
|
|
24
|
+
hrss50_errs = []
|
|
25
|
+
for wf_name in data_set.keys():
|
|
26
|
+
if wf_name not in wf_names_plot:
|
|
27
|
+
continue
|
|
28
|
+
indexes.append(wf_names_plot.index(wf_name))
|
|
29
|
+
hrss50s.append(data_set[wf_name][0])
|
|
30
|
+
hrss50_errs.append(data_set[wf_name][1])
|
|
31
|
+
bars = ax.bar(np.array(indexes) + i * bar_width, hrss50s, bar_width, alpha=opacity, color=color[i],
|
|
32
|
+
yerr=hrss50_errs, label=label,
|
|
33
|
+
error_kw=dict(lw=1, capsize=1.5, capthick=1, alpha=0.7))
|
|
34
|
+
|
|
35
|
+
index = np.arange(len(wf_names_plot))
|
|
36
|
+
ax.set_yscale('log')
|
|
37
|
+
ax.set_ylabel('hrss50')
|
|
38
|
+
ax.set_xticks(index + bar_width * (len_data_sets - 1) / 2)
|
|
39
|
+
ax.set_xticklabels(wf_names_plot, rotation=45, ha='right') # Rotate x-labels 45 degrees
|
|
40
|
+
ax.legend(ncol=3)
|
|
41
|
+
|
|
42
|
+
plt.tight_layout()
|
|
43
|
+
|
|
44
|
+
plt.savefig(output_dir + '/' + filename, bbox_inches='tight', transparent=True)
|
|
45
|
+
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from functools import reduce
|
|
2
|
+
|
|
3
|
+
import pandas as pd
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def read_data_file(file_path: str, i: int) -> pd.DataFrame:
|
|
7
|
+
"""
|
|
8
|
+
Read the data from cwb eff_*.txt files and return a DataFrame
|
|
9
|
+
|
|
10
|
+
Parameters
|
|
11
|
+
----------
|
|
12
|
+
file_path : str
|
|
13
|
+
Path to the file to read
|
|
14
|
+
i : int
|
|
15
|
+
Index of the chunk
|
|
16
|
+
|
|
17
|
+
Returns
|
|
18
|
+
-------
|
|
19
|
+
pd.DataFrame
|
|
20
|
+
DataFrame with the data read from the file
|
|
21
|
+
"""
|
|
22
|
+
data = pd.read_csv(file_path, sep='\s+', header=None, names=['hrss', f'evt_{i}', f'inj_{i}', f'ratio_{i}'])
|
|
23
|
+
|
|
24
|
+
return data
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def get_evt_vs_inj(chunks: list[str], wf_selections: list[str]) -> dict[str, pd.DataFrame]:
|
|
28
|
+
"""
|
|
29
|
+
Merge the data from the chunks into a single DataFrame for each waveform selected
|
|
30
|
+
|
|
31
|
+
Parameters
|
|
32
|
+
----------
|
|
33
|
+
chunks : list[str]
|
|
34
|
+
List of paths to the chunks to merge
|
|
35
|
+
wf_selections : list[str]
|
|
36
|
+
List of waveform selections to merge
|
|
37
|
+
|
|
38
|
+
Returns
|
|
39
|
+
-------
|
|
40
|
+
dict[str, pd.DataFrame]
|
|
41
|
+
A dictionary with the waveform name as the key and the merged DataFrame as the value
|
|
42
|
+
|
|
43
|
+
Examples
|
|
44
|
+
--------
|
|
45
|
+
>>> chunks = ['chunk1', 'chunk2']
|
|
46
|
+
>>> wf_selections = ['waveform1', 'waveform2']
|
|
47
|
+
>>> get_evt_vs_inj(chunks, wf_selections)
|
|
48
|
+
{'waveform1': pd.DataFrame, 'waveform2': pd.DataFrame}
|
|
49
|
+
"""
|
|
50
|
+
wf_data = {}
|
|
51
|
+
for wf in wf_selections:
|
|
52
|
+
data = []
|
|
53
|
+
for i, chunk in enumerate(chunks):
|
|
54
|
+
data.append(read_data_file(f"{chunk}/eff_{wf}.txt", i + 1))
|
|
55
|
+
|
|
56
|
+
merged_df = reduce(lambda left, right: pd.merge(left, right, on='hrss'), data)
|
|
57
|
+
|
|
58
|
+
merged_df['evt_total'] = 0
|
|
59
|
+
merged_df['inj_total'] = 0
|
|
60
|
+
for i in range(len(chunks)):
|
|
61
|
+
merged_df['evt_total'] += merged_df[f'evt_{i + 1}']
|
|
62
|
+
merged_df['inj_total'] += merged_df[f'inj_{i + 1}']
|
|
63
|
+
wf_data[wf] = merged_df
|
|
64
|
+
|
|
65
|
+
return wf_data
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import warnings
|
|
3
|
+
from scipy.optimize import curve_fit
|
|
4
|
+
from scipy.special import erfc
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def logNfit(x, par0, par1, par2, par3, par4):
|
|
8
|
+
# Vectorized computation of y based on par0 and par4
|
|
9
|
+
y = x - par0
|
|
10
|
+
y = np.where(par4, -y, y)
|
|
11
|
+
|
|
12
|
+
# Vectorized computation of s based on y and parameters par1, par2, par3
|
|
13
|
+
s = np.where(y < 0, par1 * np.exp(y * par2), par1 * np.exp(y * par3))
|
|
14
|
+
|
|
15
|
+
# Adjust s when y > 0 and par3 > 1. / y
|
|
16
|
+
mask = (y > 0) & (par3 > 1. / y)
|
|
17
|
+
s = np.where(mask, par1 * par3 * np.exp(1.), s)
|
|
18
|
+
y = np.where(mask, 1, y)
|
|
19
|
+
|
|
20
|
+
# Compute output based on s and y
|
|
21
|
+
ny = np.where(y != 0, np.where(s > 0, np.abs(y / s), 100), y)
|
|
22
|
+
|
|
23
|
+
result = np.where(y > 0, 1 - erfc(ny) / 2, erfc(ny) / 2)
|
|
24
|
+
result = np.where(y == 0, 0.5, result) # Handle the case y == 0
|
|
25
|
+
|
|
26
|
+
return result
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def fit(xdata, ydata, debug=False):
|
|
30
|
+
# find the ydata that close to 0.5 and the corresponding xdata
|
|
31
|
+
xdata = np.array(xdata)
|
|
32
|
+
ydata = np.array(ydata)
|
|
33
|
+
idx = np.argmin(np.abs(ydata - 0.5))
|
|
34
|
+
|
|
35
|
+
# Initial parameters
|
|
36
|
+
initial_guesses = [
|
|
37
|
+
[xdata[idx], 0.3, 1, 1, 0],
|
|
38
|
+
[xdata[idx], 0.7, 1, 1, 0],
|
|
39
|
+
[xdata[idx], 0.3, 2, 0.5, 0],
|
|
40
|
+
[xdata[idx], 0.7, 2, 0.5, 0],
|
|
41
|
+
[xdata[idx], 0.3, 3, 1, 0],
|
|
42
|
+
[xdata[idx], 0.7, 3, 1, 0],
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
best_fit = None
|
|
46
|
+
best_chi2 = 1
|
|
47
|
+
for initial_params in initial_guesses:
|
|
48
|
+
if debug:
|
|
49
|
+
print(initial_params)
|
|
50
|
+
|
|
51
|
+
params_bounds = ([-25, 0, 0, 0, 0], [-19, np.inf, np.inf, 2.5, np.inf])
|
|
52
|
+
|
|
53
|
+
params, covariance = curve_fit(logNfit, xdata, ydata, method='dogbox',
|
|
54
|
+
p0=initial_params, bounds=params_bounds,
|
|
55
|
+
)
|
|
56
|
+
chi2 = np.sum(((logNfit(xdata, *params) - ydata) / ydata.std()) ** 2)
|
|
57
|
+
if debug:
|
|
58
|
+
print(chi2)
|
|
59
|
+
if chi2 < best_chi2:
|
|
60
|
+
best_fit = (params, covariance)
|
|
61
|
+
best_chi2 = chi2
|
|
62
|
+
|
|
63
|
+
if best_chi2 > 0.01:
|
|
64
|
+
warnings.warn(f"Best fit error is high: {best_chi2:.2E} > 0.01")
|
|
65
|
+
|
|
66
|
+
params, covariance = best_fit
|
|
67
|
+
# Calculate derived quantities and errors
|
|
68
|
+
hrss50 = 10 ** params[0]
|
|
69
|
+
hrssEr = (10 ** (params[0] + np.sqrt(np.diag(covariance)[0])) - 10 ** params[0])
|
|
70
|
+
sigma, betam, betap = params[1], params[2], params[3]
|
|
71
|
+
chi2 = np.sum(((logNfit(xdata, *params) - ydata) / ydata.std()) ** 2)
|
|
72
|
+
|
|
73
|
+
# Output results
|
|
74
|
+
if debug:
|
|
75
|
+
print(f"{chi2:.2E} {hrss50:.2E} +- {hrssEr:.2E} {sigma:.2E} {betam:.2E} {betap:.2E}")
|
|
76
|
+
import matplotlib.pyplot as plt
|
|
77
|
+
plt.plot(xdata, ydata, 'o')
|
|
78
|
+
new_xdata = np.linspace(xdata[0], xdata[-1], 1000)
|
|
79
|
+
plt.plot(new_xdata, logNfit(new_xdata, np.log10(hrss50), sigma, betam, betap, 0))
|
|
80
|
+
|
|
81
|
+
return [chi2, hrss50, hrssEr, sigma, betam, betap]
|
|
@@ -23,25 +23,37 @@ def check_if_output_exists(working_dir: str, output_dir: str, overwrite: bool =
|
|
|
23
23
|
f"if you want to overwrite it.")
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
def create_output_directory(working_dir: str, output_dir: str, log_dir: str,
|
|
26
|
+
def create_output_directory(working_dir: str, output_dir: str, log_dir: str, catalog_dir: str,
|
|
27
|
+
trigger_dir: str, user_parameter_file: str) -> None:
|
|
27
28
|
# create folder for output and log
|
|
29
|
+
config_dir = f"{working_dir}/config"
|
|
28
30
|
print(f"Output folder: {working_dir}/{output_dir}")
|
|
31
|
+
print(f"Trigger folder: {working_dir}/{trigger_dir}")
|
|
29
32
|
print(f"Log folder: {working_dir}/{log_dir}")
|
|
33
|
+
print(f"Config folder: {config_dir}")
|
|
34
|
+
print(f"Catalog folder: {working_dir}/{catalog_dir}")
|
|
35
|
+
|
|
30
36
|
if not os.path.exists(output_dir):
|
|
31
37
|
os.makedirs(output_dir)
|
|
32
38
|
if not os.path.exists(log_dir):
|
|
33
39
|
os.makedirs(log_dir)
|
|
40
|
+
if not os.path.exists(config_dir):
|
|
41
|
+
os.makedirs(config_dir)
|
|
42
|
+
if not os.path.exists(catalog_dir):
|
|
43
|
+
os.makedirs(catalog_dir)
|
|
44
|
+
if not os.path.exists(trigger_dir):
|
|
45
|
+
os.makedirs(trigger_dir)
|
|
34
46
|
|
|
35
|
-
if os.path.exists(f"{
|
|
36
|
-
# check if the files are the same with md5
|
|
37
|
-
if not filecmp.cmp(user_parameter_file, f"{
|
|
47
|
+
if os.path.exists(f"{config_dir}/user_parameters.yaml"):
|
|
48
|
+
# check if the files are the same with md5, if not, backup the old file
|
|
49
|
+
if not filecmp.cmp(user_parameter_file, f"{config_dir}/user_parameters.yaml"):
|
|
38
50
|
print(f"Old user_parameters.yaml file is different from the new one.")
|
|
39
51
|
# rename the old user parameter file to user_parameters_old_{date}.yaml
|
|
40
52
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
41
|
-
shutil.move(f"{
|
|
53
|
+
shutil.move(f"{config_dir}/user_parameters.yaml", f"{config_dir}/user_parameters_old_{timestamp}.yaml")
|
|
42
54
|
print(f"Old user_parameters.yaml file is renamed to user_parameters_old_{timestamp}.yaml")
|
|
43
55
|
|
|
44
|
-
shutil.copyfile(user_parameter_file, f"{
|
|
56
|
+
shutil.copyfile(user_parameter_file, f"{config_dir}/user_parameters.yaml")
|
|
45
57
|
|
|
46
58
|
|
|
47
59
|
def check_MRACatalog_setting() -> bool:
|
|
@@ -52,6 +52,8 @@ class WaveSegment:
|
|
|
52
52
|
start time of the segment
|
|
53
53
|
end_time: float
|
|
54
54
|
end time of the segment
|
|
55
|
+
shift: list, optional
|
|
56
|
+
list of shifts for each interferometer, used for superlags
|
|
55
57
|
frames: list, optional
|
|
56
58
|
list of frame files that are within the segment
|
|
57
59
|
noise: dict, optional
|
|
@@ -63,6 +65,7 @@ class WaveSegment:
|
|
|
63
65
|
ifos: List[str]
|
|
64
66
|
start_time: float
|
|
65
67
|
end_time: float
|
|
68
|
+
shift: List[float] = None
|
|
66
69
|
seg_edge: Optional[float] = None
|
|
67
70
|
frames: Optional[List[FrameFile]] = None
|
|
68
71
|
noise: Optional[Dict] = None
|