PycWB 1.0.0a1__tar.gz → 1.0.0a2__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-1.0.0a1 → pycwb-1.0.0a2}/PKG-INFO +1 -1
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/PKG-INFO +1 -1
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/SOURCES.txt +1 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/_version.py +3 -3
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/catalog.py +7 -0
- pycwb-1.0.0a2/pycwb/modules/catalog/tests/test_write_table_atomic_permissions.py +94 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/sky_distribution.py +6 -2
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/dpf.py +16 -16
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/likelihood.py +22 -9
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/sky_stat.py +2 -2
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/typing.py +1 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/utils.py +3 -3
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/data_quality_file.py +9 -9
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/.gitattributes +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/.gitignore +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/.gitlab-ci.yml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/.readthedocs.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/Dockerfile +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/LICENSE +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/MANIFEST.in +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/Makefile +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/dependency_links.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/requires.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/PycWB.egg-info/top_level.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/data_gen.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/parquet_perf.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/parquet_read_perf.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/io_performance/read_pref.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/benchmark_cpu_vs_gpu.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/data_generator.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/data_generator_native.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/perf_cuda.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/performance_test_dpf.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/performance_test_opt_sky.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/user_parameters_injection.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/user_parameters_injection_native_1030.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/user_parameters_likelihood_test.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/workflow_with_new_likelihood.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/benchmark_queries.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/generate_params.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/parquet_perf.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/parquet_perf/write_parquet.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/generate_data.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/generate_data_2.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/performance_supercluster.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/supercluster/user_parameters_injection.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/bin/pycwb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/bin/pycwb_search +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/bin/pycwb_show +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Biorthogonal.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Biorthogonal.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/CMakeLists.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Daubechies.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Daubechies.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/FourierCoefficients.icc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Haar.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Haar.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/LineFilter.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/LineFilter.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Makefile +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Meyer.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Meyer.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Symlet.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Symlet.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmArray.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmArray.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmArraySSE.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmArraySSE.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmObjArray.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/SymmObjArray.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WDM.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WDM.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WDMOverlap.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WDMOverlap.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WaveDWT.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/WaveDWT.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Wavelet.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/Wavelet.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/alm.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/build.sh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cluster.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cluster.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cmake/FindHealpix.cmake +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cmake/FindeBBH.cmake +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/cmake/install_function.cmake +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/constants.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/detector.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/detector.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/injection.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/injection.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/lossy.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/lossy.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/monster.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/monster.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netcluster.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netcluster.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netevent.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netevent.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netpixel.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/netpixel.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/network.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/network.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/pycwb.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/rdfr.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/rdfr.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/readframe.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/readframe.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/readfrfile.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/readfrfile.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/regression.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/regression.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/skycoord.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/skymap.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/skymap.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/sseries.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/sseries.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/time.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/time.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wat.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watasm.S +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watasm_elf64.o +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watavx.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watbranch.in +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watfun.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wathash.in +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watplot.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watplot.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watsse.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wattag.in +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/waturl.in +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/watversion.hh.in +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavearray.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavearray.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavecomplex.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavecomplex.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavecor.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavecor.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavefft.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavefft.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavelet_LinkDef.h +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavelinefilter.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wavelinefilter.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/waverdc.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/waverdc.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wseries.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wseries.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/cwb-core/wslice.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/0.installation_guide.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/1.initialisation_guide.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/2.test_interactive_multistages_2G_analysis.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/3.run_pycwb_with_yaml_config.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/4.py_cwb_inet_2G.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/5.cwb2G_analyse.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/6.wat_codes_notes.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/Makefile +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/dev/mr_description_guide.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/dev/review_guide.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/diagram.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/likelihood/likelihoodWP.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/likelihood/likelihoodWPGPU_bottleneck_report.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/make.bat +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/_static/.keep +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/_templates/.keep +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/conf.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/credit.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/index.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/install.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/mod_cwb.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/package.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/schema.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_batch_inj.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_customized_wf_gen.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_injection.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_multi_injection.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorial_search.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/tutorials.rst +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/docs/source/workflow.png +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/Dockerfile +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/Dockerfile.ci +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/Dockerfile.ci-conda +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/Dockerfile.ci-native +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/environment.yml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/mamba/Dockerfile +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/envs/pycwb.def +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/GW190521_search/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/GW190521_search/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/autoencoder/pycwb_injection.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/autoencoder/user_parameters_injection.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/generate_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/pycbc_inject/hyperbolicTD/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/pycbc_inject/hyperbolicTD/parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/pycbc_inject/hyperbolicTD/waveform.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/pycwb_injection.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/batch_injection/user_parameters_injection.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/H1_cat0.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/H1_cat1.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/H1_cat2.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/H1_cat4.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/L1_cat0.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/L1_cat1.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/L1_cat2.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/DQ/L1_cat4.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/input/OPBM.period +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/input/OPBM_H1.frames +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/input/OPBM_L1.frames +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/pycwb_mdc.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/benchmark/user_parameters_mdc.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/catalog/process_data.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/colab/GW150914.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/colab/notebook_updated/pycWB_GW150914_VScode_adapted.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/colab/pycWB_GW150914.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/cwb_results_conversion/convert_root_to_parquet.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/cwb_results_conversion/train_xgb.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/cwb_results_conversion/xgb_config.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/data_injection/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/data_injection/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/data_injection/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/gwosc/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection/pycwb_injection.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection/user_parameters_injection.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection/wdmXTalk/OverlapCatalog16-1024.bin +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection_with_coordinate_system/injection_module_test.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/injection_with_coordinate_system/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/lvk_sep_2023/demo.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/lvk_sep_2023/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/mesa_testing/config/schema_extension.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/mesa_testing/config/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/mesa_testing/input/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/mesa_testing/input/process_job_segment.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/multiple_injection/pycwb_injection.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/multiple_injection/user_parameters_injection.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/analyze_events.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/input/LIGO_zero_det_HP.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/input/aligo_O4high.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/input/avirgo_O4high_NEW.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_LHV/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_gaussian_noise/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_gaussian_noise/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_gaussian_noise/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_real_data/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_real_data/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_real_data/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/analyze_events.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/input/aligo_O4high.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/new_injection_infra_with_sky_patch/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/_test_integration.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/_test_pipeline.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/debug_run.sh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/fake_data_generator.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/online_schema_extension.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/run.sh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/online_shm_run/user_parameters_debug.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pycwb_cwb_consistency/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pycwb_cwb_consistency/compare_pycwb_vs_cwb.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pyseobnr_injection/generate_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pyseobnr_injection/user_parameters_injection.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pyseobnr_injection/waveform_model/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/pyseobnr_injection/waveform_model/waveform.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/sine_gaussian_injection/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/sine_gaussian_injection/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/sine_gaussian_injection/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/waveform_reconstruction/reconstruct_waveform_from_cluster.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/white_noise_burst_injection/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/white_noise_burst_injection/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/examples/white_noise_burst_injection/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/cwb_core/coherence.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/cwb_core/coherence.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/cwb_core/likelihood.cc +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/cwb_core/likelihood.hh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/dag/dag.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/dag/dask-prefect.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/dag/prefect_test.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger/server.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger/visualizition.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/.eslintrc.cjs +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/.gitignore +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/.prettierrc.json +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/index.html +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/package-lock.json +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/package.json +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/public/favicon.ico +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/App.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/assets/base.css +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/assets/cwb_icon_modern_blue_alfa.png +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/assets/main.css +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/assets/style.css +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/HelloWorld.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/TheWelcome.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/WelcomeItem.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/__tests__/HelloWorld.spec.js +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconCommunity.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconDocumentation.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconEcosystem.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconSupport.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/components/icons/IconTooling.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/main.js +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/router/index.js +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/stores/counter.js +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/drawflow.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/nodes/node1.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/nodes/node2.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/nodes/node3.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/src/views/nodes/nodeHeader.vue +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/messenger-web-interface/vite.config.js +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/performance/numba_test.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/performance/taichi_test.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/pp_workflow/simple.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/pp_workflow/simple_module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/pp_workflow/workflow.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/prototypes/search.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/batch_runner.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/batch_setup.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/clone_dir.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/config_setup.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/flow.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/get_external_modules.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/gwosc.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/gwosc_data.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/match_simulations.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/merge_catalog.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/online.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/post_process.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/progress.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/run.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/run_waveform_reconstruction.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/server.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/simulation_summary.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/cli/xtalk.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/config/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/config/config.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/detectors.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/physics_constants.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/project_constants.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/constants/user_parameters_schema.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/autoencoder/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/autoencoder/autoencoder.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/autoencoder/cwb_autoencoder.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/autoencoder/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/catalog_json.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/convert_root.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/tests/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/tests/test_remove_stale_triggers.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/catalog/tests/test_triggers_deduplicate.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/coherence/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/coherence/coherence.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/coherence/coherence_lite.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/coherence/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/condor/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/condor/condor.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/condor/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/config_repo_parser/README.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/config_repo_parser/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/config_repo_parser/config_repo_parser.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/config_repo_parser/setup.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/FIXES.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/coherence.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/excess_energy.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/tf_batch_generation.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_coherence/time_delay_max_energy.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/cluster.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/detector.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/pixel.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/series.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_conversions/sparse_series.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_interop/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_interop/cwb_workdir_setup.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/config.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/cwb_xgboost.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/plots.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/prediction.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/read_data.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/training.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/utils.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/cwb_xgboost/utils_extended.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/PSD_correction.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/data_conditioning.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/data_conditioning_python.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/fake_conditioning.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/regression.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/regression_jax_layer.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/regression_py.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_cwb.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_mdc.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_mesa.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_mesa_py.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/data_conditioning/whitening_py.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/energy_threshold/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/energy_threshold/threshold.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/config_schema.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/manager.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/test/sample_config.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/external_module_manager/test/test.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gracedb/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gracedb/gracedb.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gracedb/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gracedb/test_gracedb.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gwosc/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gwosc/gwosc.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/gwosc/utils.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/distribution_utils.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/gwsignal_waveform.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/inj_generators.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/injection.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/par_generator.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/scripts/injection_module_test.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/scripts/injection_parameters.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/tests/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/tests/test_injection.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/injection/wf_generator.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/dq_segment.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/frame.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/job_segment.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/plots.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/super_lag.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/job_segment/test_job_segment.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihood/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihood/likelihood.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihood/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/FIXES.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/dpf_cython.pyx +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/pixel_batch_ops.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/sky_mask.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWP/tests/test_compute_sky_valid_indices.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/dpf.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/likelihood.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/sky_scan.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/sky_stat.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/types.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/utils.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/likelihoodWPGPU/xtalk_ops.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/logger/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/logger/logger.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/logger/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/multi_resolution_wdm/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/multi_resolution_wdm/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/multi_resolution_wdm/wdm.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/gaussian.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/glitch.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/non_gaussian.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/noise/psd.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/ONLINE_WORKFLOW_IMPLEMENTATION.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/background.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/data_acquisition.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/data_source.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/deduplication.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/latency_monitor.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/ring_buffer.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/significance.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/online/trigger_handler.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/cluster_statistics.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/event.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/fragment_cluster_viz.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/spectrogram.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot/waveform.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_data_quality/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_data_quality/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_data_quality/plot.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_map/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_map/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/plot_map/world_map.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/post_production/waveform_reconstruction.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/post_production/waveform_reconstruction_plot.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/qveto/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/qveto/qveto.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/qveto/qveto_ext.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/qveto/utils.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/data_check.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/data_find.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/mdc.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/read_data.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/tests/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/read_data/tests/test_mdc.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/getINJwaveform.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/getMRAwaveform.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/getResiduals.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/reconstruction/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/continues_poisson.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/far_rho.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/read_results.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/report/report.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/skymask/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/skymask/skymask.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/slurm/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/slurm/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/slurm/slurm.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/sparse_series/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/sparse_series/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/sparse_series/sparse_table.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/eff.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/eff_plot.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/merge.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/statistics/sigmoid_fit.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/FIX_MIN_SKYRES_HEALPIX.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/FIX_TD_RESOLUTION_AND_WDMSHIFT.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/sub_net_cut.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/super_cluster.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/super_cluster_cwb.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/super_cluster/utils.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/supercluster_naive/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/supercluster_naive/supercluster2.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/superlag/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/superlag/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/superlag/superlag.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/web_viewer/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/web_viewer/create.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/web_viewer/module.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/workflow_utils/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/workflow_utils/job_setup.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/workflow_utils/trigger_utils.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/monster.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/monster_old.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/type.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/modules/xtalk/xtalk_data.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/post_production/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/post_production/workflow.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/prefect_flow/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/prefect_flow/pycwb_flow.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/prefect_flow/tasks/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/prefect_flow/tasks/builtin.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/FIX_SKY_COORDINATE_CONVENTION.md +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/base_catalog.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/detector.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/job.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/network.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/network_cluster.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/network_event.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/network_pixel.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/online.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/pixel_arrays.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/simulation.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/sparse_series.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/time_frequency_map.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/time_frequency_series.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/time_series.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/trigger.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/waveform.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/wavelet.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/wdm.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/types/wdm_xtalk.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/async_write.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/check_ROOT.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/conversions/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/conversions/timeseries.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/dataclass_object_io.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/dep_check.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/generate_params_table.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/image.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/memory.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/module.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/network.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/parser.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/skymap_coord.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/td_vector_batch.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/utils/yaml_helper.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/autoencoder/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/autoencoder/cwb_autoencoder.h5 +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/example.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/lib/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/online/online_schema_extension.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/online/user_parameters_online.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/template/gwosc/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/web_viewer/event_dump.html +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/web_viewer/styles.css +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/vendor/web_viewer/viewer.html +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/batch.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/matching.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/merge.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/online.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/run.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/__init__.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/fake_processor.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/postprocess_and_plots.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/prepare_job_runs.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/process_job_segment.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/process_job_segment_native.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/process_job_segment_parallel.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/process_online_segment.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/simulation_summary.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pycwb/workflow/subflow/waveform_reconstruction_report.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/pyproject.toml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/setup.cfg +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/setup.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/compare_with_cwb/activate.sh +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/compare_with_cwb/compare_native_vs_cwb.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/compare_with_cwb/config/user_parameters.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/input/LIGO_zero_det_HP.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/input/aligo_O4high.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/input/avirgo_O4high_NEW.txt +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/run.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/run_mix.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_coherence.ipynb +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_coherence.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_regression.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_supercluster.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/test_whitening.py +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/user_parameters_injection.yaml +0 -0
- {pycwb-1.0.0a1 → pycwb-1.0.0a2}/tests/sample/user_parameters_injection_cwb.yaml +0 -0
|
@@ -354,6 +354,7 @@ pycwb/modules/catalog/module.yaml
|
|
|
354
354
|
pycwb/modules/catalog/tests/__init__.py
|
|
355
355
|
pycwb/modules/catalog/tests/test_remove_stale_triggers.py
|
|
356
356
|
pycwb/modules/catalog/tests/test_triggers_deduplicate.py
|
|
357
|
+
pycwb/modules/catalog/tests/test_write_table_atomic_permissions.py
|
|
357
358
|
pycwb/modules/coherence/__init__.py
|
|
358
359
|
pycwb/modules/coherence/coherence.py
|
|
359
360
|
pycwb/modules/coherence/coherence_lite.py
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0, 0, '
|
|
21
|
+
__version__ = version = '1.0.0a2'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 0, 'a2')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g979003768'
|
|
@@ -125,6 +125,13 @@ def _write_table_atomic(table: pa.Table, filename: str, compression: str = "snap
|
|
|
125
125
|
os.makedirs(target_dir, exist_ok=True)
|
|
126
126
|
|
|
127
127
|
fd, tmp_path = tempfile.mkstemp(prefix=".catalog_tmp_", suffix=".parquet", dir=target_dir)
|
|
128
|
+
# mkstemp creates files with mode 0o600, bypassing the system umask.
|
|
129
|
+
# Restore umask-respecting permissions so catalog files are group/world
|
|
130
|
+
# readable as expected (equivalent to what a normal open(O_CREAT, 0666)
|
|
131
|
+
# would produce after the umask is applied).
|
|
132
|
+
_umask = os.umask(0)
|
|
133
|
+
os.umask(_umask)
|
|
134
|
+
os.fchmod(fd, 0o666 & ~_umask)
|
|
128
135
|
os.close(fd)
|
|
129
136
|
try:
|
|
130
137
|
pq.write_table(table, tmp_path, compression=compression)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"""Unit tests for permission handling in ``_write_table_atomic``."""
|
|
2
|
+
import os
|
|
3
|
+
import stat
|
|
4
|
+
import tempfile
|
|
5
|
+
import unittest
|
|
6
|
+
|
|
7
|
+
import pyarrow as pa
|
|
8
|
+
|
|
9
|
+
from pycwb.modules.catalog.catalog import _write_table_atomic
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _simple_table() -> pa.Table:
|
|
13
|
+
return pa.table({"x": pa.array([1, 2, 3], type=pa.int32())})
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class TestWriteTableAtomicPermissions(unittest.TestCase):
|
|
17
|
+
"""_write_table_atomic must respect the process umask, not fix at 0o600."""
|
|
18
|
+
|
|
19
|
+
def _file_mode(self, path: str) -> int:
|
|
20
|
+
return stat.S_IMODE(os.stat(path).st_mode)
|
|
21
|
+
|
|
22
|
+
def _call_with_umask(self, umask: int) -> int:
|
|
23
|
+
"""Write a table with a specific umask and return the resulting file mode."""
|
|
24
|
+
with tempfile.TemporaryDirectory() as d:
|
|
25
|
+
dest = os.path.join(d, "catalog.parquet")
|
|
26
|
+
old_umask = os.umask(umask)
|
|
27
|
+
try:
|
|
28
|
+
_write_table_atomic(_simple_table(), dest)
|
|
29
|
+
finally:
|
|
30
|
+
os.umask(old_umask)
|
|
31
|
+
return self._file_mode(dest)
|
|
32
|
+
|
|
33
|
+
def test_permissions_with_umask_022(self):
|
|
34
|
+
"""File mode should be 0o644 when umask is 0o022."""
|
|
35
|
+
mode = self._call_with_umask(0o022)
|
|
36
|
+
expected = 0o666 & ~0o022 # 0o644
|
|
37
|
+
self.assertEqual(
|
|
38
|
+
mode, expected,
|
|
39
|
+
f"Expected 0o{expected:03o} but got 0o{mode:03o} (umask=0o022)",
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
def test_permissions_with_umask_002(self):
|
|
43
|
+
"""File mode should be 0o664 when umask is 0o002."""
|
|
44
|
+
mode = self._call_with_umask(0o002)
|
|
45
|
+
expected = 0o666 & ~0o002 # 0o664
|
|
46
|
+
self.assertEqual(
|
|
47
|
+
mode, expected,
|
|
48
|
+
f"Expected 0o{expected:03o} but got 0o{mode:03o} (umask=0o002)",
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
def test_permissions_with_umask_077(self):
|
|
52
|
+
"""File mode should be 0o600 when umask is 0o077."""
|
|
53
|
+
mode = self._call_with_umask(0o077)
|
|
54
|
+
expected = 0o666 & ~0o077 # 0o600
|
|
55
|
+
self.assertEqual(
|
|
56
|
+
mode, expected,
|
|
57
|
+
f"Expected 0o{expected:03o} but got 0o{mode:03o} (umask=0o077)",
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
def test_permissions_not_hardcoded_600(self):
|
|
61
|
+
"""File mode must NOT be 0o600 when umask allows more permissions."""
|
|
62
|
+
mode = self._call_with_umask(0o022)
|
|
63
|
+
self.assertNotEqual(
|
|
64
|
+
mode, 0o600,
|
|
65
|
+
"File mode was 0o600, indicating mkstemp permissions were not corrected.",
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
def test_no_temp_file_left_after_success(self):
|
|
69
|
+
"""No temporary .catalog_tmp_* files should remain after a successful write."""
|
|
70
|
+
with tempfile.TemporaryDirectory() as d:
|
|
71
|
+
dest = os.path.join(d, "catalog.parquet")
|
|
72
|
+
_write_table_atomic(_simple_table(), dest)
|
|
73
|
+
tmp_files = [
|
|
74
|
+
f for f in os.listdir(d) if f.startswith(".catalog_tmp_")
|
|
75
|
+
]
|
|
76
|
+
self.assertEqual(tmp_files, [], f"Stale temp files found: {tmp_files}")
|
|
77
|
+
|
|
78
|
+
def test_destination_file_created(self):
|
|
79
|
+
"""The destination file must exist after a successful write."""
|
|
80
|
+
with tempfile.TemporaryDirectory() as d:
|
|
81
|
+
dest = os.path.join(d, "catalog.parquet")
|
|
82
|
+
_write_table_atomic(_simple_table(), dest)
|
|
83
|
+
self.assertTrue(os.path.exists(dest))
|
|
84
|
+
|
|
85
|
+
def test_destination_dir_created(self):
|
|
86
|
+
"""Parent directory is created if it does not exist."""
|
|
87
|
+
with tempfile.TemporaryDirectory() as d:
|
|
88
|
+
dest = os.path.join(d, "nested", "subdir", "catalog.parquet")
|
|
89
|
+
_write_table_atomic(_simple_table(), dest)
|
|
90
|
+
self.assertTrue(os.path.exists(dest))
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
if __name__ == "__main__":
|
|
94
|
+
unittest.main()
|
|
@@ -125,8 +125,12 @@ def distribute_injections_on_sky(injections, sky_locations, shuffle=True, coords
|
|
|
125
125
|
|
|
126
126
|
# shuffle the sky locations
|
|
127
127
|
if shuffle:
|
|
128
|
-
np.
|
|
129
|
-
np.random.shuffle(
|
|
128
|
+
coords = np.column_stack((phi, theta))
|
|
129
|
+
np.random.shuffle(coords)
|
|
130
|
+
|
|
131
|
+
theta = coords[:, 1]
|
|
132
|
+
phi = coords[:, 0]
|
|
133
|
+
|
|
130
134
|
|
|
131
135
|
if coordsys == 'icrs':
|
|
132
136
|
# If the coordinate system is ICRS, save the sky location directly in ra and dec attributes
|
|
@@ -64,7 +64,7 @@ def avx_dpf_ps(Fp0, Fx0, rms):
|
|
|
64
64
|
ss = si ** 2
|
|
65
65
|
nn = sqrt(cc + ss) # co/si norm
|
|
66
66
|
fp = (AP + nn) / 2 # |f+|^2
|
|
67
|
-
cc = co / (nn +
|
|
67
|
+
cc = co / (nn + 1e-9) # cos(2p)
|
|
68
68
|
ss = 1 if si > 0 else -1 # 1 if sin(2p)>0. or-1 if sin(2p)<0.
|
|
69
69
|
si = sqrt((1 - cc) / 2) # |sin(p)|
|
|
70
70
|
co = sqrt((1 + cc) / 2) # |cos(p)|
|
|
@@ -75,13 +75,13 @@ def avx_dpf_ps(Fp0, Fx0, rms):
|
|
|
75
75
|
nn = np.dot(_cc, _cc)
|
|
76
76
|
fF = np.dot(f, F)
|
|
77
77
|
|
|
78
|
-
fF = fF / (fp +
|
|
78
|
+
fF = fF / (fp + 1e-9)
|
|
79
79
|
|
|
80
80
|
F -= f * fF
|
|
81
81
|
fx = np.dot(F, F)
|
|
82
82
|
|
|
83
|
-
ni = nn / (fp ** 2 +
|
|
84
|
-
ff = ni +
|
|
83
|
+
ni = nn / (fp ** 2 + 1e-9) # network index
|
|
84
|
+
ff = ni + 1e-9 # network index
|
|
85
85
|
NI += fx / ff # sum of |fx|^2/2/ni
|
|
86
86
|
NN += 1 if fp > 0 else 0 # pixel count
|
|
87
87
|
|
|
@@ -108,7 +108,7 @@ def dpf_np_loops_local(Fp0, Fx0, rms):
|
|
|
108
108
|
ni = np.zeros(NPIX, dtype=np.float32)
|
|
109
109
|
|
|
110
110
|
# Prepare constants
|
|
111
|
-
_o = np.float32(
|
|
111
|
+
_o = np.float32(1e-9)
|
|
112
112
|
# _0 = np.float32(0)
|
|
113
113
|
# _2 = np.float32(2)
|
|
114
114
|
# _1 = np.float32(1)
|
|
@@ -202,7 +202,7 @@ def dpf_np_loops(Fp0, Fx0, rms):
|
|
|
202
202
|
AP[i] = ff[i] + FF[i]
|
|
203
203
|
nn[i] = sqrt(co[i] * co[i] + si[i] * si[i])
|
|
204
204
|
fp[i] = (AP[i] + nn[i]) / 2
|
|
205
|
-
cc[i] = co[i] / (nn[i] +
|
|
205
|
+
cc[i] = co[i] / (nn[i] + 1e-9)
|
|
206
206
|
si[i], co[i] = sqrt((1 - cc[i]) / 2), sqrt((1 + cc[i]) / 2) * (1 if si[i] > 0 else -1)
|
|
207
207
|
|
|
208
208
|
# Compute f_new, F_new, fF_new, F_new, fx, ni
|
|
@@ -210,7 +210,7 @@ def dpf_np_loops(Fp0, Fx0, rms):
|
|
|
210
210
|
for j in range(NIFO):
|
|
211
211
|
f[i, j], F[i, j] = f[i, j] * co[i] + F[i, j] * si[i], F[i, j] * co[i] - f[i, j] * si[i]
|
|
212
212
|
fF_new[i] += f[i, j] * F[i, j]
|
|
213
|
-
fF_new[i] /= (fp[i] +
|
|
213
|
+
fF_new[i] /= (fp[i] + 1e-9)
|
|
214
214
|
for j in range(NIFO):
|
|
215
215
|
F[i, j] -= f[i, j] * fF_new[i]
|
|
216
216
|
fx[i] += F[i, j] * F[i, j]
|
|
@@ -220,8 +220,8 @@ def dpf_np_loops(Fp0, Fx0, rms):
|
|
|
220
220
|
NI = 0
|
|
221
221
|
NN = 0
|
|
222
222
|
for i in range(NPIX):
|
|
223
|
-
ni[i] /= (fp[i] * fp[i] +
|
|
224
|
-
NI += fx[i] / (ni[i] +
|
|
223
|
+
ni[i] /= (fp[i] * fp[i] + 1e-9)
|
|
224
|
+
NI += fx[i] / (ni[i] + 1e-9)
|
|
225
225
|
NN += 1 if fp[i] > 0 else 0
|
|
226
226
|
|
|
227
227
|
return sqrt(NI / (NN + 0.01)), fp, fx, si, co, ni
|
|
@@ -250,20 +250,20 @@ def dpf_np(Fp0, Fx0, rms):
|
|
|
250
250
|
|
|
251
251
|
nn = np.sqrt(co * co + si * si) # co/si norm
|
|
252
252
|
fp = (AP + nn) / 2 # |f+|^2
|
|
253
|
-
cc = co / (nn +
|
|
253
|
+
cc = co / (nn + 1e-9) # cos(2p)
|
|
254
254
|
si, co = np.sqrt((1 - cc) / 2), np.sqrt((1 + cc) / 2) * np.where(si > 0, 1, -1)
|
|
255
255
|
|
|
256
256
|
f, F = f * co[:, np.newaxis] + F * si[:, np.newaxis], F * co[:, np.newaxis] - f * si[:, np.newaxis]
|
|
257
257
|
|
|
258
|
-
fF = (f * F).sum(axis=1) / (fp +
|
|
258
|
+
fF = (f * F).sum(axis=1) / (fp + 1e-9)
|
|
259
259
|
|
|
260
260
|
F -= f * fF[:, None]
|
|
261
261
|
|
|
262
262
|
fx = (F * F).sum(axis=1)
|
|
263
263
|
|
|
264
|
-
ni = (f ** 4).sum(axis=1) / (fp * fp +
|
|
264
|
+
ni = (f ** 4).sum(axis=1) / (fp * fp + 1e-9) # network index
|
|
265
265
|
|
|
266
|
-
NI = (fx / (ni +
|
|
266
|
+
NI = (fx / (ni + 1e-9)).sum() # sum of |fx|^2/2/ni
|
|
267
267
|
|
|
268
268
|
NN = (fp > 0).sum() # pixel count
|
|
269
269
|
|
|
@@ -277,7 +277,7 @@ def mul_vec(a, b):
|
|
|
277
277
|
|
|
278
278
|
@vectorize([float32(float32, float32)])
|
|
279
279
|
def div_vec(a, b):
|
|
280
|
-
_o = float32(
|
|
280
|
+
_o = float32(1e-9)
|
|
281
281
|
return a / (b + _o)
|
|
282
282
|
|
|
283
283
|
|
|
@@ -386,7 +386,7 @@ def dpf_np_loops_vec(Fp0, Fx0, rms):
|
|
|
386
386
|
fx = np.zeros(NPIX, dtype=np.float32)
|
|
387
387
|
ni = np.zeros(NPIX, dtype=np.float32)
|
|
388
388
|
|
|
389
|
-
_o = float32(
|
|
389
|
+
_o = float32(1e-9)
|
|
390
390
|
|
|
391
391
|
# Prepare constants
|
|
392
392
|
# NI = np.float32(0.0)
|
|
@@ -414,7 +414,7 @@ def dpf_np_loops_vec(Fp0, Fx0, rms):
|
|
|
414
414
|
_co = sub_vec(_ff, _FF) # rotation (cos^2-sin^2)*norm
|
|
415
415
|
_AP = add_vec(_ff, _FF) # total antenna norm
|
|
416
416
|
_nn = norm_vec(_co, _si) # co/si norm np.sqrt(_co * _co + _si * _si)
|
|
417
|
-
_cc = div_vec(_co, _nn) # cos(2p) _co / (_nn +
|
|
417
|
+
_cc = div_vec(_co, _nn) # cos(2p) _co / (_nn + 1e-9)
|
|
418
418
|
fp[i] = avg_vec(_AP, _nn) # |f+|^2 (_AP + _nn) / 2.
|
|
419
419
|
si[i] = sin_from_cc(_cc) # |sin(p)| sqrt((1. - _cc) / 2.)
|
|
420
420
|
co[i] = cos_from_cc(_cc, _si) # cos(p) (sqrt((1. + _cc) / 2.) if _si > 0.0 else - sqrt((1. + _cc) / 2.))
|
|
@@ -455,6 +455,15 @@ def likelihood(
|
|
|
455
455
|
skymap_statistics = SkyMapStatistics.from_tuple(skymap_statistics)
|
|
456
456
|
stage_timings["sky_scan"] = time.perf_counter() - _t0
|
|
457
457
|
|
|
458
|
+
if skymap_statistics.sky_stat_max <= 0.0:
|
|
459
|
+
logger.info("Cluster rejected: non-positive sky_stat_max=%.3f", skymap_statistics.sky_stat_max)
|
|
460
|
+
stage_timings["total"] = time.perf_counter() - timer_start
|
|
461
|
+
logger.info("-------------------------------------------------------")
|
|
462
|
+
logger.info("Total events: %d", 0)
|
|
463
|
+
logger.info("Total time: %.2f s", stage_timings["total"])
|
|
464
|
+
logger.info("-------------------------------------------------------")
|
|
465
|
+
return None, None
|
|
466
|
+
|
|
458
467
|
# --- Compute normalised sky probability map (softmax over nSkyStat) ---
|
|
459
468
|
_t0 = time.perf_counter()
|
|
460
469
|
_sky_stat_f64 = skymap_statistics.nSkyStat.astype(np.float64)
|
|
@@ -479,8 +488,8 @@ def likelihood(
|
|
|
479
488
|
# calculate sky statistics for the cluster at the optimal sky location l_max,
|
|
480
489
|
# dozens of parameters will be returned in SkyStatistics dataclass
|
|
481
490
|
_t0 = time.perf_counter()
|
|
482
|
-
sky_statistics: SkyStatistics = calculate_sky_statistics(skymap_statistics.l_max, nIFO, n_pix,
|
|
483
|
-
FP, FX, rms, td00, td90, ml, REG,
|
|
491
|
+
sky_statistics: SkyStatistics = calculate_sky_statistics(skymap_statistics.l_max, nIFO, n_pix,
|
|
492
|
+
FP, FX, rms, td00, td90, ml, REG,
|
|
484
493
|
network_energy_threshold,
|
|
485
494
|
cluster_xtalk, cluster_xtalk_lookup,
|
|
486
495
|
xgb_rho_mode=xgb_rho_mode)
|
|
@@ -786,7 +795,7 @@ def find_optimal_sky_localization(n_ifo, n_pix, n_sky, FP, FX, rms, td00, td90,
|
|
|
786
795
|
cc = CH if CH > float(1.0) else 1.0 # noise correction factor in TF domain
|
|
787
796
|
Co = Ec / (Ec + No * cc - Mo * (n_ifo - 1)) # network correlation coefficient in TF
|
|
788
797
|
|
|
789
|
-
if Cr < netCC:
|
|
798
|
+
if not np.isfinite(Cr) or Cr < netCC:
|
|
790
799
|
continue
|
|
791
800
|
|
|
792
801
|
# --- Sky statistics: likelihood and cross-correlation ---
|
|
@@ -823,16 +832,16 @@ def find_optimal_sky_localization(n_ifo, n_pix, n_sky, FP, FX, rms, td00, td90,
|
|
|
823
832
|
# Mirror C++ tie-breaking: C++ uses `if (AA >= STAT)` in a forward loop,
|
|
824
833
|
# so the LAST pixel with the maximum value wins on ties.
|
|
825
834
|
# Iterate only over valid (unmasked) indices to match C++ behaviour.
|
|
826
|
-
|
|
835
|
+
sky_stat_max = 0
|
|
827
836
|
l_max = int(sky_valid_indices[0])
|
|
828
837
|
for _k in range(n_valid):
|
|
829
838
|
_l = sky_valid_indices[_k]
|
|
830
|
-
if AA_array[_l] >=
|
|
831
|
-
|
|
839
|
+
if AA_array[_l] >= sky_stat_max:
|
|
840
|
+
sky_stat_max = AA_array[_l]
|
|
832
841
|
l_max = _l
|
|
833
842
|
|
|
834
843
|
return (l_max, nAntenaPrior, nAlignment, nLikelihood, nNullEnergy, nCorrEnergy, \
|
|
835
|
-
nCorrelation, nSkyStat, nDisbalance, nNetIndex, nEllipticity, nPolarisation)
|
|
844
|
+
nCorrelation, nSkyStat, nDisbalance, nNetIndex, nEllipticity, nPolarisation, sky_stat_max)
|
|
836
845
|
|
|
837
846
|
|
|
838
847
|
def calculate_sky_statistics(
|
|
@@ -974,7 +983,11 @@ def calculate_sky_statistics(
|
|
|
974
983
|
else: # XGB.rho0
|
|
975
984
|
penalty = ch
|
|
976
985
|
ecor = Ec
|
|
977
|
-
|
|
986
|
+
# TODO: The ecor can be negative for certain cases, which causes rho to be NaN.
|
|
987
|
+
# And in Python NaN < netRHO is always False, which means the cluster will never be rejected by the rho threshold cut.
|
|
988
|
+
# This is fixed in cWB 6.9.6.9. The investigation of the root cause of negative ecor is leave to the future,
|
|
989
|
+
# for now we clamp it to zero to avoid NaN issues and ensure proper thresholding.
|
|
990
|
+
rho = np.sqrt(ecor / (1 + penalty * (max(float(1), penalty) - 1))) if ecor > 0 else 0
|
|
978
991
|
cc = ch if ch > 1 else 1 # noise correction factor (kept for xrho)
|
|
979
992
|
xrho = np.sqrt(Ec * Rc / 2.) if Ec > 0 else 0 # original 2G rho (reference only)
|
|
980
993
|
if DEBUG:
|
|
@@ -1496,7 +1509,7 @@ def threshold_cut(
|
|
|
1496
1509
|
net_rho_threshold = (netEC_threshold / 2.0) ** 0.5
|
|
1497
1510
|
condition_1 = Lm <= 0.
|
|
1498
1511
|
condition_2 = (Eo - Eh) <= 0.
|
|
1499
|
-
condition_3 = rho < net_rho_threshold
|
|
1512
|
+
condition_3 = not np.isfinite(rho) or rho < net_rho_threshold
|
|
1500
1513
|
condition_4 = N < 1 # C++: N < 1 (pixel count)
|
|
1501
1514
|
if condition_1 or condition_2 or condition_3 or condition_4:
|
|
1502
1515
|
rejection_reason = ""
|
|
@@ -148,7 +148,7 @@ def avx_GW_ps(v00, v90, f, F, fp, fx, ni, et, mask, reg):
|
|
|
148
148
|
p_updated = np.empty((n_ifo, n_pix), dtype=np.float32)
|
|
149
149
|
q_updated = np.empty((n_ifo, n_pix), dtype=np.float32)
|
|
150
150
|
|
|
151
|
-
_o = np.float32(1e-
|
|
151
|
+
_o = np.float32(1e-9)
|
|
152
152
|
_rr = np.float32(reg[0])
|
|
153
153
|
_RR = np.float32(reg[1])
|
|
154
154
|
NN = np.int32(0)
|
|
@@ -337,7 +337,7 @@ def avx_stat_ps(v00, v90, s, S, si, co, mask):
|
|
|
337
337
|
n_ifo = len(v00) # Number of interferometers
|
|
338
338
|
n_pix = len(v00[0]) # Number of pixels
|
|
339
339
|
|
|
340
|
-
_o = np.float32(
|
|
340
|
+
_o = np.float32(1.e-9)
|
|
341
341
|
_0 = np.float32(0)
|
|
342
342
|
_1 = np.float32(1)
|
|
343
343
|
_2 = np.float32(2)
|
|
@@ -89,6 +89,7 @@ class SkyMapStatistics:
|
|
|
89
89
|
nNetIndex: np.array # cc
|
|
90
90
|
nEllipticity: np.array # Cr
|
|
91
91
|
nPolarisation: np.array # Mp
|
|
92
|
+
sky_stat_max: float = 0
|
|
92
93
|
nProbability: np.array = None # normalized sky probability (softmax of nSkyStat)
|
|
93
94
|
stage_timings: dict = None # per-stage wall-clock timings (GPU only)
|
|
94
95
|
|
|
@@ -383,7 +383,7 @@ def avx_loadNULL_ps(d, D, h, H):
|
|
|
383
383
|
|
|
384
384
|
# static const __m128 _0 = _mm_set1_ps(0);
|
|
385
385
|
# static const __m128 _1 = _mm_set1_ps(1);
|
|
386
|
-
# static const __m128 _o = _mm_set1_ps(1.e-
|
|
386
|
+
# static const __m128 _o = _mm_set1_ps(1.e-9);
|
|
387
387
|
|
|
388
388
|
# __m128 _ss,_cc,_SS,_CC;
|
|
389
389
|
# float rpol[4],cpol[4],spol[4];
|
|
@@ -596,7 +596,7 @@ def avx_pol_ps(p, q, MK, fp, fx, f, F):
|
|
|
596
596
|
new_p = np.empty((n_ifo, n_pix), dtype=np.float32)
|
|
597
597
|
new_q = np.empty((n_ifo, n_pix), dtype=np.float32)
|
|
598
598
|
|
|
599
|
-
_o = float(1.e-
|
|
599
|
+
_o = float(1.e-9)
|
|
600
600
|
|
|
601
601
|
# Vectorized pixel loop — replaces the interpreted for i in range(n_pix) loop
|
|
602
602
|
p_arr = np.asarray(p, dtype=np.float64) # (n_ifo, n_pix)
|
|
@@ -692,7 +692,7 @@ def avx_packet_ps(v00, v90, mask):
|
|
|
692
692
|
"""
|
|
693
693
|
n_ifo = len(v00)
|
|
694
694
|
n_pix = len(v00[0])
|
|
695
|
-
_o = float(
|
|
695
|
+
_o = float(1.e-9)
|
|
696
696
|
|
|
697
697
|
mk = np.empty(n_pix, dtype=np.float32)
|
|
698
698
|
aa = np.zeros(n_ifo, dtype=np.float32)
|
|
@@ -98,24 +98,24 @@ class DQFile:
|
|
|
98
98
|
|
|
99
99
|
# check if all start > 0
|
|
100
100
|
if np.any(start < 0):
|
|
101
|
-
error_indexes = np.where(start < 0)
|
|
101
|
+
error_indexes = np.where(start < 0)[0]
|
|
102
102
|
for i in error_indexes:
|
|
103
|
-
logger.error(f"
|
|
104
|
-
raise Exception("Error Ranges")
|
|
103
|
+
logger.error(f"Negative start time at index {i}: start={float(start[i])} stop={float(stop[i])}")
|
|
104
|
+
raise Exception("Error Ranges: negative start times found")
|
|
105
105
|
|
|
106
106
|
# check if all start < stop
|
|
107
107
|
if np.any(start > stop):
|
|
108
|
-
error_indexes = np.where(start > stop)
|
|
108
|
+
error_indexes = np.where(start > stop)[0]
|
|
109
109
|
for i in error_indexes:
|
|
110
|
-
logger.error(f"
|
|
111
|
-
raise Exception("Error Ranges")
|
|
110
|
+
logger.error(f"Start exceeds stop at index {i}: start={float(start[i])} stop={float(stop[i])}")
|
|
111
|
+
raise Exception("Error Ranges: start > stop")
|
|
112
112
|
|
|
113
113
|
# check if all stop < next start
|
|
114
114
|
if np.any(stop[:-1] > start[1:]):
|
|
115
|
-
error_indexes = np.where(stop[:-1] > start[1:])
|
|
115
|
+
error_indexes = np.where(stop[:-1] > start[1:])[0]
|
|
116
116
|
for i in error_indexes:
|
|
117
|
-
logger.error(f"
|
|
118
|
-
raise Exception("Error Ranges")
|
|
117
|
+
logger.error(f"Overlapping segments at index {i}-{i+1}: [{float(start[i])}, {float(stop[i])}] overlaps [{float(start[i+1])}, {float(stop[i+1])}]")
|
|
118
|
+
raise Exception("Error Ranges: overlapping segments")
|
|
119
119
|
|
|
120
120
|
if self.invert:
|
|
121
121
|
start, stop = np.append(0, stop), np.append(start, np.inf)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pycwb-1.0.0a1 → pycwb-1.0.0a2}/benchmark/likelihood/user_parameters_injection_native_1030.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|