lalsuite 7.26.2.dev20260106__cp314-cp314-macosx_13_0_x86_64.whl
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.
- lal/.dylibs/Python +0 -0
- lal/.dylibs/libaec.0.dylib +0 -0
- lal/.dylibs/libbrotlicommon.1.2.0.dylib +0 -0
- lal/.dylibs/libbrotlidec.1.2.0.dylib +0 -0
- lal/.dylibs/libcfitsio.10.4.4.1.dylib +0 -0
- lal/.dylibs/libcrypto.3.dylib +0 -0
- lal/.dylibs/libcurl.4.dylib +0 -0
- lal/.dylibs/libfftw3.3.dylib +0 -0
- lal/.dylibs/libfftw3f.3.dylib +0 -0
- lal/.dylibs/libframel.8.48.4.dylib +0 -0
- lal/.dylibs/libgsl.28.dylib +0 -0
- lal/.dylibs/libgslcblas.0.dylib +0 -0
- lal/.dylibs/libhdf5.310.dylib +0 -0
- lal/.dylibs/libhdf5_hl.310.dylib +0 -0
- lal/.dylibs/libiconv.2.dylib +0 -0
- lal/.dylibs/libidn2.0.dylib +0 -0
- lal/.dylibs/libintl.8.dylib +0 -0
- lal/.dylibs/liblal.20.dylib +0 -0
- lal/.dylibs/liblalburst.8.dylib +0 -0
- lal/.dylibs/liblalframe.14.dylib +0 -0
- lal/.dylibs/liblalinference.23.dylib +0 -0
- lal/.dylibs/liblalinspiral.18.dylib +0 -0
- lal/.dylibs/liblalmetaio.11.dylib +0 -0
- lal/.dylibs/liblalpulsar.30.dylib +0 -0
- lal/.dylibs/liblalsimulation.37.dylib +0 -0
- lal/.dylibs/liblalsupport.14.dylib +0 -0
- lal/.dylibs/libmetaio.1.dylib +0 -0
- lal/.dylibs/libnghttp2.14.dylib +0 -0
- lal/.dylibs/libpsl.5.dylib +0 -0
- lal/.dylibs/libssl.3.dylib +0 -0
- lal/.dylibs/libsz.2.dylib +0 -0
- lal/.dylibs/libunistring.5.dylib +0 -0
- lal/.dylibs/libz.1.3.1.dylib +0 -0
- lal/.dylibs/libzstd.1.5.7.dylib +0 -0
- lal/__init__.py +145 -0
- lal/_lal.cpython-314-darwin.so +0 -0
- lal/_lal_swig.py +12 -0
- lal/antenna.py +1200 -0
- lal/git_version.py +64 -0
- lal/gpstime.py +233 -0
- lal/iterutils.py +408 -0
- lal/pipeline.py +3139 -0
- lal/rate.py +2455 -0
- lal/series.py +244 -0
- lal/utils/__init__.py +29 -0
- lal/utils/cache.py +379 -0
- lal/utils/series.py +277 -0
- lalapps/__init__.py +26 -0
- lalapps/bin/lal_cache +0 -0
- lalapps/bin/lal_fftw_wisdom +0 -0
- lalapps/bin/lal_fftwf_wisdom +0 -0
- lalapps/bin/lal_simd_detect +0 -0
- lalapps/bin/lal_tconvert +0 -0
- lalapps/bin/lal_version +0 -0
- lalapps/bin/lalapps_ComputeAntennaPattern +16 -0
- lalapps/bin/lalapps_ComputeFstatBenchmark +16 -0
- lalapps/bin/lalapps_ComputeFstatLatticeCount +16 -0
- lalapps/bin/lalapps_ComputeFstatMCUpperLimit +16 -0
- lalapps/bin/lalapps_ComputeFstatistic_v2 +16 -0
- lalapps/bin/lalapps_ComputePSD +16 -0
- lalapps/bin/lalapps_CopySFTs +16 -0
- lalapps/bin/lalapps_DistanceVsMass +0 -0
- lalapps/bin/lalapps_DriveHoughMulti +16 -0
- lalapps/bin/lalapps_FstatMetric_v2 +16 -0
- lalapps/bin/lalapps_HierarchSearchGCT +16 -0
- lalapps/bin/lalapps_HierarchicalSearch +16 -0
- lalapps/bin/lalapps_MakeSFTDAG +16 -0
- lalapps/bin/lalapps_MakeSFTs +16 -0
- lalapps/bin/lalapps_Makefakedata_v4 +16 -0
- lalapps/bin/lalapps_Makefakedata_v5 +16 -0
- lalapps/bin/lalapps_PredictFstat +16 -0
- lalapps/bin/lalapps_PrintDetectorState +16 -0
- lalapps/bin/lalapps_SFTclean +16 -0
- lalapps/bin/lalapps_SFTvalidate +16 -0
- lalapps/bin/lalapps_StringAddFrame +0 -0
- lalapps/bin/lalapps_StringSearch +0 -0
- lalapps/bin/lalapps_Weave +16 -0
- lalapps/bin/lalapps_WeaveCompare +16 -0
- lalapps/bin/lalapps_WeaveConcat +16 -0
- lalapps/bin/lalapps_WeaveSetup +16 -0
- lalapps/bin/lalapps_WriteSFTsfromSFDBs +16 -0
- lalapps/bin/lalapps_animate +0 -0
- lalapps/bin/lalapps_binj +0 -0
- lalapps/bin/lalapps_blindinj +0 -0
- lalapps/bin/lalapps_cache +16 -0
- lalapps/bin/lalapps_calfacs +0 -0
- lalapps/bin/lalapps_cbc_stochasticbank +0 -0
- lalapps/bin/lalapps_chirplen +0 -0
- lalapps/bin/lalapps_coh_PTF_inspiral +0 -0
- lalapps/bin/lalapps_coinj +0 -0
- lalapps/bin/lalapps_combine_crosscorr_toplists +16 -0
- lalapps/bin/lalapps_compareFstats +16 -0
- lalapps/bin/lalapps_compareSFTs +16 -0
- lalapps/bin/lalapps_create_time_correction_ephemeris +16 -0
- lalapps/bin/lalapps_dumpSFT +16 -0
- lalapps/bin/lalapps_effdist +0 -0
- lalapps/bin/lalapps_exc_resp +0 -0
- lalapps/bin/lalapps_fftw_wisdom +16 -0
- lalapps/bin/lalapps_fftwf_wisdom +16 -0
- lalapps/bin/lalapps_fits_header_getval +16 -0
- lalapps/bin/lalapps_fits_header_list +16 -0
- lalapps/bin/lalapps_fits_overview +16 -0
- lalapps/bin/lalapps_fits_table_list +16 -0
- lalapps/bin/lalapps_fr_ninja +0 -0
- lalapps/bin/lalapps_frextr +0 -0
- lalapps/bin/lalapps_frinfo +0 -0
- lalapps/bin/lalapps_frjoin +0 -0
- lalapps/bin/lalapps_frread +0 -0
- lalapps/bin/lalapps_frview +0 -0
- lalapps/bin/lalapps_gwf2xml +0 -0
- lalapps/bin/lalapps_heterodyne_pulsar +16 -0
- lalapps/bin/lalapps_inspawgfile +0 -0
- lalapps/bin/lalapps_inspfrinj +0 -0
- lalapps/bin/lalapps_inspinj +0 -0
- lalapps/bin/lalapps_inspiralDistance +0 -0
- lalapps/bin/lalapps_knope +16 -0
- lalapps/bin/lalapps_knope_automation_script +16 -0
- lalapps/bin/lalapps_knope_collate_results +16 -0
- lalapps/bin/lalapps_knope_result_page +16 -0
- lalapps/bin/lalapps_makeblindinj +85 -0
- lalapps/bin/lalapps_makeblindinj_himass +67 -0
- lalapps/bin/lalapps_ninja +0 -0
- lalapps/bin/lalapps_path2cache +16 -0
- lalapps/bin/lalapps_power +0 -0
- lalapps/bin/lalapps_pulsar_crosscorr_v2 +16 -0
- lalapps/bin/lalapps_pulsar_frequency_evolution +16 -0
- lalapps/bin/lalapps_pulsar_parameter_estimation_nested +16 -0
- lalapps/bin/lalapps_random_bank +0 -0
- lalapps/bin/lalapps_randombank +0 -0
- lalapps/bin/lalapps_run_pulsar_crosscorr_v2 +16 -0
- lalapps/bin/lalapps_searchsum2cache +16 -0
- lalapps/bin/lalapps_spec_avg +16 -0
- lalapps/bin/lalapps_spec_avg_long +16 -0
- lalapps/bin/lalapps_spec_coherence +16 -0
- lalapps/bin/lalapps_spininj +0 -0
- lalapps/bin/lalapps_splitSFTs +16 -0
- lalapps/bin/lalapps_splitbank +0 -0
- lalapps/bin/lalapps_ssbtodetector +16 -0
- lalapps/bin/lalapps_synthesizeBstatMC +16 -0
- lalapps/bin/lalapps_synthesizeLVStats +16 -0
- lalapps/bin/lalapps_synthesizeTransientStats +16 -0
- lalapps/bin/lalapps_tconvert +16 -0
- lalapps/bin/lalapps_tmpltbank +0 -0
- lalapps/bin/lalapps_version +0 -0
- lalapps/bin/lalapps_xtefitstoframe +0 -0
- lalapps/bin/lalburst_version +0 -0
- lalapps/bin/lalfr-cat +0 -0
- lalapps/bin/lalfr-cksum +0 -0
- lalapps/bin/lalfr-cut +0 -0
- lalapps/bin/lalfr-dump +0 -0
- lalapps/bin/lalfr-fmt +0 -0
- lalapps/bin/lalfr-paste +0 -0
- lalapps/bin/lalfr-print +0 -0
- lalapps/bin/lalfr-split +0 -0
- lalapps/bin/lalfr-stat +0 -0
- lalapps/bin/lalfr-stream +0 -0
- lalapps/bin/lalfr-vis +0 -0
- lalapps/bin/lalframe_version +0 -0
- lalapps/bin/lalinference_bench +0 -0
- lalapps/bin/lalinference_burst +0 -0
- lalapps/bin/lalinference_datadump +0 -0
- lalapps/bin/lalinference_injectedlike +0 -0
- lalapps/bin/lalinference_mpi_wrapper +59 -0
- lalapps/bin/lalinference_nest +0 -0
- lalapps/bin/lalinference_version +0 -0
- lalapps/bin/lalinspiral_version +0 -0
- lalapps/bin/lalmetaio_version +0 -0
- lalapps/bin/lalpulsar_ComputeAntennaPattern +0 -0
- lalapps/bin/lalpulsar_ComputeFstatBenchmark +0 -0
- lalapps/bin/lalpulsar_ComputeFstatLatticeCount +0 -0
- lalapps/bin/lalpulsar_ComputeFstatMCUpperLimit +0 -0
- lalapps/bin/lalpulsar_ComputeFstatistic_v2 +0 -0
- lalapps/bin/lalpulsar_ComputePSD +0 -0
- lalapps/bin/lalpulsar_DriveHoughMulti +0 -0
- lalapps/bin/lalpulsar_FstatMetric_v2 +0 -0
- lalapps/bin/lalpulsar_HierarchSearchGCT +0 -0
- lalapps/bin/lalpulsar_HierarchicalSearch +0 -0
- lalapps/bin/lalpulsar_MakeSFTs +0 -0
- lalapps/bin/lalpulsar_Makefakedata_v4 +0 -0
- lalapps/bin/lalpulsar_Makefakedata_v5 +0 -0
- lalapps/bin/lalpulsar_PredictFstat +0 -0
- lalapps/bin/lalpulsar_PrintDetectorState +0 -0
- lalapps/bin/lalpulsar_SFTclean +0 -0
- lalapps/bin/lalpulsar_SFTvalidate +0 -0
- lalapps/bin/lalpulsar_Weave +0 -0
- lalapps/bin/lalpulsar_WeaveCompare +0 -0
- lalapps/bin/lalpulsar_WeaveConcat +0 -0
- lalapps/bin/lalpulsar_WeaveSetup +0 -0
- lalapps/bin/lalpulsar_WriteSFTsfromSFDBs +0 -0
- lalapps/bin/lalpulsar_compareFstats +0 -0
- lalapps/bin/lalpulsar_compareSFTs +0 -0
- lalapps/bin/lalpulsar_create_time_correction_ephemeris +0 -0
- lalapps/bin/lalpulsar_crosscorr_v2 +0 -0
- lalapps/bin/lalpulsar_dumpSFT +0 -0
- lalapps/bin/lalpulsar_fits_header_getval +0 -0
- lalapps/bin/lalpulsar_fits_header_list +0 -0
- lalapps/bin/lalpulsar_fits_overview +0 -0
- lalapps/bin/lalpulsar_fits_table_list +0 -0
- lalapps/bin/lalpulsar_frequency_evolution +0 -0
- lalapps/bin/lalpulsar_heterodyne +0 -0
- lalapps/bin/lalpulsar_parameter_estimation_nested +0 -0
- lalapps/bin/lalpulsar_spec_avg +0 -0
- lalapps/bin/lalpulsar_spec_avg_long +0 -0
- lalapps/bin/lalpulsar_spec_coherence +0 -0
- lalapps/bin/lalpulsar_splitSFTs +0 -0
- lalapps/bin/lalpulsar_ssbtodetector +0 -0
- lalapps/bin/lalpulsar_synthesizeBstatMC +0 -0
- lalapps/bin/lalpulsar_synthesizeLVStats +0 -0
- lalapps/bin/lalpulsar_synthesizeTransientStats +0 -0
- lalapps/bin/lalpulsar_version +0 -0
- lalapps/bin/lalsim-bh-qnmode +0 -0
- lalapps/bin/lalsim-bh-ringdown +0 -0
- lalapps/bin/lalsim-bh-sphwf +0 -0
- lalapps/bin/lalsim-burst +0 -0
- lalapps/bin/lalsim-detector-noise +0 -0
- lalapps/bin/lalsim-detector-strain +0 -0
- lalapps/bin/lalsim-inject +0 -0
- lalapps/bin/lalsim-inspiral +0 -0
- lalapps/bin/lalsim-ns-eos-table +0 -0
- lalapps/bin/lalsim-ns-mass-radius +0 -0
- lalapps/bin/lalsim-ns-params +0 -0
- lalapps/bin/lalsim-sgwb +0 -0
- lalapps/bin/lalsim-unicorn +0 -0
- lalapps/bin/lalsimulation_version +0 -0
- lalapps/cosmicstring.py +691 -0
- lalapps/data/BNSMasses.dat +65022 -0
- lalapps/data/CorrelationMatrix.csv +15 -0
- lalapps/data/LALSimNeutronStarEOS_ABHT_QMC_RMF1_META.dat +1882 -0
- lalapps/data/LALSimNeutronStarEOS_ABHT_QMC_RMF2_META.dat +1939 -0
- lalapps/data/LALSimNeutronStarEOS_ABHT_QMC_RMF3_META.dat +1784 -0
- lalapps/data/LALSimNeutronStarEOS_ABHT_QMC_RMF4_META.dat +2074 -0
- lalapps/data/LALSimNeutronStarEOS_ALF1.dat +435 -0
- lalapps/data/LALSimNeutronStarEOS_ALF2.dat +453 -0
- lalapps/data/LALSimNeutronStarEOS_ALF3.dat +441 -0
- lalapps/data/LALSimNeutronStarEOS_ALF4.dat +441 -0
- lalapps/data/LALSimNeutronStarEOS_AP1.dat +212 -0
- lalapps/data/LALSimNeutronStarEOS_AP2.dat +212 -0
- lalapps/data/LALSimNeutronStarEOS_AP3.dat +212 -0
- lalapps/data/LALSimNeutronStarEOS_AP4.dat +210 -0
- lalapps/data/LALSimNeutronStarEOS_APR.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_APR4_EPP.dat +1447 -0
- lalapps/data/LALSimNeutronStarEOS_BBB2.dat +84 -0
- lalapps/data/LALSimNeutronStarEOS_BGN1H1.dat +123 -0
- lalapps/data/LALSimNeutronStarEOS_BHF_BBB2.dat +499 -0
- lalapps/data/LALSimNeutronStarEOS_BL_CHIRAL_META.dat +1534 -0
- lalapps/data/LALSimNeutronStarEOS_BPAL12.dat +61 -0
- lalapps/data/LALSimNeutronStarEOS_BSK19.dat +310 -0
- lalapps/data/LALSimNeutronStarEOS_BSK20.dat +310 -0
- lalapps/data/LALSimNeutronStarEOS_BSK21.dat +310 -0
- lalapps/data/LALSimNeutronStarEOS_ENG.dat +108 -0
- lalapps/data/LALSimNeutronStarEOS_FPS.dat +129 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_BSK14_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_DHSL59_BSK24.dat +1009 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_DHSL69_BSK24.dat +1009 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_F0_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_H1_BSK24.dat +1009 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_H2_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_H3_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_H4_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_H5_BSK24.dat +1009 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_LN55_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GMSR_SLY5_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GNH3.dat +71 -0
- lalapps/data/LALSimNeutronStarEOS_GPPVA_DD2_BSK24.dat +1009 -0
- lalapps/data/LALSimNeutronStarEOS_GPPVA_DDME2_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GPPVA_FSU2H_BSK24.dat +1009 -0
- lalapps/data/LALSimNeutronStarEOS_GPPVA_FSU2_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GPPVA_NL3WRL55_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_GS1.dat +136 -0
- lalapps/data/LALSimNeutronStarEOS_GS2.dat +100 -0
- lalapps/data/LALSimNeutronStarEOS_H1.dat +114 -0
- lalapps/data/LALSimNeutronStarEOS_H2.dat +114 -0
- lalapps/data/LALSimNeutronStarEOS_H3.dat +98 -0
- lalapps/data/LALSimNeutronStarEOS_H4.dat +664 -0
- lalapps/data/LALSimNeutronStarEOS_H5.dat +703 -0
- lalapps/data/LALSimNeutronStarEOS_H6.dat +509 -0
- lalapps/data/LALSimNeutronStarEOS_H7.dat +703 -0
- lalapps/data/LALSimNeutronStarEOS_HQC18.dat +388 -0
- lalapps/data/LALSimNeutronStarEOS_KDE0V.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_KDE0V1.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_KDE0V1_BSK24.dat +1388 -0
- lalapps/data/LALSimNeutronStarEOS_KDE0V_BSK24.dat +1398 -0
- lalapps/data/LALSimNeutronStarEOS_MPA1.dat +102 -0
- lalapps/data/LALSimNeutronStarEOS_MS1.dat +122 -0
- lalapps/data/LALSimNeutronStarEOS_MS1B.dat +126 -0
- lalapps/data/LALSimNeutronStarEOS_MS1B_PP.dat +1447 -0
- lalapps/data/LALSimNeutronStarEOS_MS1_PP.dat +1447 -0
- lalapps/data/LALSimNeutronStarEOS_MS2.dat +48 -0
- lalapps/data/LALSimNeutronStarEOS_PAL6.dat +148 -0
- lalapps/data/LALSimNeutronStarEOS_PCL2.dat +134 -0
- lalapps/data/LALSimNeutronStarEOS_PCP_BSK24_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_PS.dat +165 -0
- lalapps/data/LALSimNeutronStarEOS_QMC700.dat +117 -0
- lalapps/data/LALSimNeutronStarEOS_RG_SLY4_BSK24.dat +1010 -0
- lalapps/data/LALSimNeutronStarEOS_RS.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_RS_BSK24.dat +1356 -0
- lalapps/data/LALSimNeutronStarEOS_SK255.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SK255_BSK24.dat +1066 -0
- lalapps/data/LALSimNeutronStarEOS_SK272.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SKA.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SKA_BSK24.dat +1433 -0
- lalapps/data/LALSimNeutronStarEOS_SKB.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SKB_BSK24.dat +1373 -0
- lalapps/data/LALSimNeutronStarEOS_SKI2.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SKI2_BSK24.dat +1348 -0
- lalapps/data/LALSimNeutronStarEOS_SKI3.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SKI3_BSK24.dat +1355 -0
- lalapps/data/LALSimNeutronStarEOS_SKI4.dat +497 -0
- lalapps/data/LALSimNeutronStarEOS_SKI4_BSK24.dat +1348 -0
- lalapps/data/LALSimNeutronStarEOS_SKI5.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SKI6.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SKI6_BSK24.dat +1358 -0
- lalapps/data/LALSimNeutronStarEOS_SKMP.dat +498 -0
- lalapps/data/LALSimNeutronStarEOS_SKOP.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SKOP_BSK24.dat +1373 -0
- lalapps/data/LALSimNeutronStarEOS_SLY.dat +99 -0
- lalapps/data/LALSimNeutronStarEOS_SLY2.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SLY230A.dat +500 -0
- lalapps/data/LALSimNeutronStarEOS_SLY230A_BSK24.dat +1116 -0
- lalapps/data/LALSimNeutronStarEOS_SLY2_BSK24.dat +1106 -0
- lalapps/data/LALSimNeutronStarEOS_SLY4.dat +100 -0
- lalapps/data/LALSimNeutronStarEOS_SLY9.dat +498 -0
- lalapps/data/LALSimNeutronStarEOS_SLY9_BSK24.dat +1083 -0
- lalapps/data/LALSimNeutronStarEOS_SQM1.dat +176 -0
- lalapps/data/LALSimNeutronStarEOS_SQM2.dat +180 -0
- lalapps/data/LALSimNeutronStarEOS_SQM3.dat +176 -0
- lalapps/data/LALSimNeutronStarEOS_WFF1.dat +109 -0
- lalapps/data/LALSimNeutronStarEOS_WFF2.dat +109 -0
- lalapps/data/LALSimNeutronStarEOS_WFF3.dat +107 -0
- lalapps/data/LALSimNeutronStarEOS_XMLSLZ_DDLZ1_BSK24.dat +1227 -0
- lalapps/data/LALSimNeutronStarEOS_XMLSLZ_DDME2_BSK24.dat +1272 -0
- lalapps/data/LALSimNeutronStarEOS_XMLSLZ_DDMEX_BSK24.dat +1280 -0
- lalapps/data/LALSimNeutronStarEOS_XMLSLZ_GM1_BSK24.dat +1288 -0
- lalapps/data/LALSimNeutronStarEOS_XMLSLZ_MTVTC_BSK24.dat +1288 -0
- lalapps/data/LALSimNeutronStarEOS_XMLSLZ_NL3_BSK24.dat +1230 -0
- lalapps/data/LALSimNeutronStarEOS_XMLSLZ_PKDD_BSK24.dat +1288 -0
- lalapps/data/LALSimNeutronStarEOS_XMLSLZ_TM1_BSK24.dat +1288 -0
- lalapps/data/LALSimNeutronStarEOS_XMLSLZ_TW99_BSK24.dat +1288 -0
- lalapps/data/LIGO-P1200087-v18-AdV_BNS_OPTIMIZED.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-AdV_DESIGN.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-AdV_EARLY_HIGH.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-AdV_EARLY_LOW.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-AdV_LATE_HIGH.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-AdV_LATE_LOW.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-AdV_MID_HIGH.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-AdV_MID_LOW.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-aLIGO_BNS_OPTIMIZED.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-aLIGO_DESIGN.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-aLIGO_EARLY_HIGH.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-aLIGO_EARLY_LOW.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-aLIGO_LATE_HIGH.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-aLIGO_LATE_LOW.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-aLIGO_MID_HIGH.txt +3000 -0
- lalapps/data/LIGO-P1200087-v18-aLIGO_MID_LOW.txt +3000 -0
- lalapps/data/LIGO-P1600143-v18-CE.txt +3000 -0
- lalapps/data/LIGO-P1600143-v18-CE_Pessimistic.txt +3000 -0
- lalapps/data/LIGO-P1600143-v18-CE_Wideband.txt +3000 -0
- lalapps/data/LIGO-P1600143-v18-ET_D.txt +3000 -0
- lalapps/data/LIGO-T0900288-v3-BHBH_20deg.txt +3000 -0
- lalapps/data/LIGO-T0900288-v3-High_Freq.txt +3000 -0
- lalapps/data/LIGO-T0900288-v3-NO_SRM.txt +3000 -0
- lalapps/data/LIGO-T0900288-v3-NSNS_Opt.txt +3000 -0
- lalapps/data/LIGO-T0900288-v3-ZERO_DET_high_P.txt +3000 -0
- lalapps/data/LIGO-T0900288-v3-ZERO_DET_low_P.txt +3000 -0
- lalapps/data/LIGO-T1600593-v1-KAGRA_Design.txt +4000 -0
- lalapps/data/LIGO-T1600593-v1-KAGRA_Early.txt +4000 -0
- lalapps/data/LIGO-T1600593-v1-KAGRA_Late.txt +4000 -0
- lalapps/data/LIGO-T1600593-v1-KAGRA_Mid.txt +4000 -0
- lalapps/data/LIGO-T1600593-v1-KAGRA_Opening.txt +4000 -0
- lalapps/data/LIGO-T1800042-v5-aLIGO_APLUS.txt +3000 -0
- lalapps/data/LIGO-T1800044-v5-aLIGO_DESIGN.txt +3000 -0
- lalapps/data/LIGO-T1800545-v1-AdV_O3low.txt +3000 -0
- lalapps/data/LIGO-T1800545-v1-AdV_O4.txt +3000 -0
- lalapps/data/LIGO-T1800545-v1-AdV_O4intermediate.txt +3000 -0
- lalapps/data/LIGO-T1800545-v1-KAGRA_128Mpc.txt +1000 -0
- lalapps/data/LIGO-T1800545-v1-KAGRA_25Mpc.txt +1000 -0
- lalapps/data/LIGO-T1800545-v1-KAGRA_80Mpc.txt +1000 -0
- lalapps/data/LIGO-T1800545-v1-aLIGO_140Mpc.txt +1000 -0
- lalapps/data/LIGO-T1800545-v1-aLIGO_175Mpc.txt +2792 -0
- lalapps/data/LIGO-T1800545-v1-aLIGO_O3low.txt +2792 -0
- lalapps/data/bimodalMeans.csv +3 -0
- lalapps/data/config_tiger_example.ini +150 -0
- lalapps/data/fiducialBBH.xml +67 -0
- lalapps/data/fiducialBNS.xml +67 -0
- lalapps/data/inspsrcs100Mpc.errors +38735 -0
- lalapps/data/lalinference_pipe_example.ini +573 -0
- lalapps/data/lib_pipe_example.ini +303 -0
- lalapps/data/power_pipe.ini +129 -0
- lalapps/data/unimodalMeans.csv +2 -0
- lalapps/git_version.py +64 -0
- lalburst/SimBurstUtils.py +324 -0
- lalburst/SnglBurstUtils.py +367 -0
- lalburst/__init__.py +7 -0
- lalburst/_lalburst.cpython-314-darwin.so +0 -0
- lalburst/_lalburst_swig.py +16 -0
- lalburst/binjfind.py +824 -0
- lalburst/bucluster.py +409 -0
- lalburst/burca.py +315 -0
- lalburst/burca_tailor.py +349 -0
- lalburst/cafe.py +579 -0
- lalburst/calc_likelihood.py +145 -0
- lalburst/cs_gamma.cpython-314-darwin.so +0 -0
- lalburst/date.py +118 -0
- lalburst/git_version.py +64 -0
- lalburst/offsetvector.py +278 -0
- lalburst/packing.py +170 -0
- lalburst/power.py +1457 -0
- lalburst/snglcluster.py +136 -0
- lalburst/snglcoinc.py +2637 -0
- lalburst/stringutils.py +607 -0
- lalburst/timeslides.py +236 -0
- lalframe/__init__.py +7 -0
- lalframe/_lalframe.cpython-314-darwin.so +0 -0
- lalframe/_lalframe_swig.py +14 -0
- lalframe/frread.py +324 -0
- lalframe/git_version.py +64 -0
- lalframe/utils/__init__.py +25 -0
- lalframe/utils/frtools.py +61 -0
- lalinference/__init__.py +7 -0
- lalinference/_bayespputils.cpython-314-darwin.so +0 -0
- lalinference/_lalinference.cpython-314-darwin.so +0 -0
- lalinference/_lalinference_swig.py +19 -0
- lalinference/bayespputils.py +7479 -0
- lalinference/bayestar/__init__.py +2 -0
- lalinference/bayestar/deprecation.py +72 -0
- lalinference/git_version.py +64 -0
- lalinference/imrtgr/__init__.py +0 -0
- lalinference/imrtgr/imrtgrutils.py +168 -0
- lalinference/imrtgr/nrutils.py +1366 -0
- lalinference/imrtgr/pneqns.py +250 -0
- lalinference/io/__init__.py +31 -0
- lalinference/io/hdf5.py +365 -0
- lalinference/lalinference_pipe_utils.py +3617 -0
- lalinference/nest2pos.py +151 -0
- lalinference/plot/__init__.py +34 -0
- lalinference/plot/spindisk.py +104 -0
- lalinference/tiger/__init__.py +0 -0
- lalinference/tiger/make_injtimes.py +634 -0
- lalinference/tiger/omegascans_dag.py +691 -0
- lalinference/tiger/postproc.py +1338 -0
- lalinference/wrapper.py +231 -0
- lalinspiral/__init__.py +7 -0
- lalinspiral/_lalinspiral.cpython-314-darwin.so +0 -0
- lalinspiral/_lalinspiral_swig.py +18 -0
- lalinspiral/_thinca.cpython-314-darwin.so +0 -0
- lalinspiral/git_version.py +64 -0
- lalinspiral/inspinjfind.py +485 -0
- lalinspiral/thinca.py +509 -0
- lalmetaio/__init__.py +7 -0
- lalmetaio/_lalmetaio.cpython-314-darwin.so +0 -0
- lalmetaio/_lalmetaio_swig.py +14 -0
- lalmetaio/git_version.py +64 -0
- lalpulsar/NstarTools.py +259 -0
- lalpulsar/PulsarParametersWrapper.py +938 -0
- lalpulsar/__init__.py +7 -0
- lalpulsar/_lalpulsar.cpython-314-darwin.so +0 -0
- lalpulsar/_lalpulsar_swig.py +17 -0
- lalpulsar/git_version.py +64 -0
- lalpulsar/knope_utils.py +6497 -0
- lalpulsar/lineFileParser.py +264 -0
- lalpulsar/metric_utils.py +78 -0
- lalpulsar/piecewise_model/__init__.py +7 -0
- lalpulsar/piecewise_model/basis_functions.py +156 -0
- lalpulsar/piecewise_model/class_definitions.py +323 -0
- lalpulsar/piecewise_model/errors.py +37 -0
- lalpulsar/piecewise_model/estimating_knots.py +833 -0
- lalpulsar/piecewise_model/gte_and_other_methods.py +189 -0
- lalpulsar/piecewise_model/mols_for_gte.py +269 -0
- lalpulsar/piecewise_model/pw_fstat.py +813 -0
- lalpulsar/piecewise_model/pw_model_simulations.py +156 -0
- lalpulsar/piecewise_model/sampling_methods.py +186 -0
- lalpulsar/piecewise_model/semicoherent_metric_methods.py +375 -0
- lalpulsar/piecewise_model/tbank_estimates.py +293 -0
- lalpulsar/public_sft_directory.py +82 -0
- lalpulsar/pulsarhtmlutils.py +1395 -0
- lalpulsar/pulsarpputils.py +3638 -0
- lalpulsar/simulateCW.py +602 -0
- lalpulsar/simulateHeterodynedCW.py +591 -0
- lalsimulation/__init__.py +7 -0
- lalsimulation/_lalsimulation.cpython-314-darwin.so +0 -0
- lalsimulation/_lalsimulation_swig.py +14 -0
- lalsimulation/git_version.py +64 -0
- lalsimulation/gwsignal/__init__.py +9 -0
- lalsimulation/gwsignal/core/__init__.py +2 -0
- lalsimulation/gwsignal/core/conditioning_subroutines.py +196 -0
- lalsimulation/gwsignal/core/errors.py +136 -0
- lalsimulation/gwsignal/core/gw.py +206 -0
- lalsimulation/gwsignal/core/parameter_conventions.py +122 -0
- lalsimulation/gwsignal/core/utils.py +329 -0
- lalsimulation/gwsignal/core/waveform.py +725 -0
- lalsimulation/gwsignal/core/waveform_conditioning.py +455 -0
- lalsimulation/gwsignal/models/__init__.py +29 -0
- lalsimulation/gwsignal/models/pyseobnr_model.py +452 -0
- lalsimulation/nrfits/NRSur3dq8Remnant.py +92 -0
- lalsimulation/nrfits/NRSur7dq4Remnant.py +469 -0
- lalsimulation/nrfits/__init__.py +1 -0
- lalsimulation/nrfits/eval_fits.py +364 -0
- lalsimulation/nrfits/nrfits.py +78 -0
- lalsimulation/nrfits/pn_spin_evolution_wrapper.py +92 -0
- lalsimulation/nrfits/quaternion_utils.py +74 -0
- lalsimulation/tilts_at_infinity/__init__.py +2 -0
- lalsimulation/tilts_at_infinity/calc_tilts_prec_avg_regularized.py +1424 -0
- lalsimulation/tilts_at_infinity/hybrid_spin_evolution.py +461 -0
- lalsimulation/tilts_at_infinity/tilts_at_infinity_utils.py +167 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesBurstPPAnalysis +305 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesBurstPostProc +1364 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesCombinePTMCMCh5s +100 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesCombinePosteriors +235 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesCompPos +1121 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesDIEvidence +68 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesGraceDBinfo +182 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesMCMC2pos +314 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesPPAnalysis +322 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesPlotSpinDisk +42 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesPosToSimBurst +227 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesPosToSimInspiral +307 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesPostProc +1345 -0
- lalsuite-7.26.2.dev20260106.data/scripts/cbcBayesThermoInt +107 -0
- lalsuite-7.26.2.dev20260106.data/scripts/imrtgr_imr_consistency_test +796 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lal_cache +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lal_fftw_wisdom +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lal_fftwf_wisdom +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lal_path2cache +148 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lal_searchsum2cache +172 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lal_simd_detect +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lal_tconvert +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lal_version +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_ComputeAntennaPattern +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_ComputeFstatBenchmark +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_ComputeFstatLatticeCount +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_ComputeFstatMCUpperLimit +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_ComputeFstatistic_v2 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_ComputePSD +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_CopySFTs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_DistanceVsMass +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_DriveHoughMulti +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_FstatMetric_v2 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_HierarchSearchGCT +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_HierarchicalSearch +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_MakeSFTDAG +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_MakeSFTs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_Makefakedata_v4 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_Makefakedata_v5 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_PredictFstat +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_PrintDetectorState +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_SFTclean +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_SFTvalidate +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_StringAddFrame +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_StringSearch +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_Weave +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_WeaveCompare +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_WeaveConcat +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_WeaveSetup +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_WriteSFTsfromSFDBs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_animate +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_binj +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_blindinj +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_cache +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_cafe +99 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_calfacs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_cbc_stochasticbank +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_chirplen +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_coh_PTF_inspiral +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_coinj +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_combine_crosscorr_toplists +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_compareFstats +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_compareSFTs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_cosmicstring_pipe +525 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_create_time_correction_ephemeris +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_dumpSFT +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_effdist +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_exc_resp +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_fftw_wisdom +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_fftwf_wisdom +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_fits_header_getval +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_fits_header_list +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_fits_overview +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_fits_table_list +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_fr_ninja +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_frextr +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_frinfo +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_frjoin +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_frread +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_frview +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_gwf2xml +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_heterodyne_pulsar +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_inspawgfile +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_inspfrinj +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_inspinj +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_inspiralDistance +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_knope +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_knope_automation_script +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_knope_collate_results +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_knope_result_page +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_makeblindinj +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_makeblindinj_himass +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_ninja +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_path2cache +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_power +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_power_likelihood_pipe +219 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_power_pipe +417 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_pulsar_crosscorr_v2 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_pulsar_frequency_evolution +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_pulsar_parameter_estimation_nested +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_random_bank +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_randombank +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_run_pulsar_crosscorr_v2 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_searchsum2cache +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_spec_avg +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_spec_avg_long +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_spec_coherence +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_spininj +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_splitSFTs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_splitbank +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_ssbtodetector +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_apply_vetoes +171 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_calc_likelihood +172 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_contour_plotter +141 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_contour_plotter_largeloops +133 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_cs_gamma +110 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_cs_gamma_largeloops +119 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_final +1064 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_meas_likelihood +264 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_plot_binj +543 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_string_plot_likelihood +380 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_synthesizeBstatMC +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_synthesizeLVStats +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_synthesizeTransientStats +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_tconvert +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_tmpltbank +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_version +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalapps_xtefitstoframe +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_cluster +156 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_coinc +224 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_cut +425 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_gen_timeslides +254 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_inj_pic +254 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_injfind +170 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_plot_tisi +165 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_power_calc_likelihood +182 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_power_final +1369 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_power_meas_likelihood +206 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_power_plot_binj +934 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_power_plot_binjtf +302 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalburst_version +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-cat +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-cksum +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-cut +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-dump +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-fmt +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-paste +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-print +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-split +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-stat +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-stream +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalfr-vis +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalframe_version +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_bench +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_burst +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_burst_pp_pipe +220 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_coherence_test +139 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_compute_roq_weights +404 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_cpnest +58 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_datadump +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_evolve_spins_and_append_samples +202 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_injectedlike +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_merge_posteriors +57 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_mpi_wrapper +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_multi_pipe +144 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_nest +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_nest2pos +286 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_pipe +512 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_pp_pipe +229 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_review_test +362 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinference_version +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinspiral_injfind +206 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinspiral_thinca +240 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalinspiral_version +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalmetaio_version +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_ComputeAntennaPattern +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_ComputeFstatBenchmark +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_ComputeFstatLatticeCount +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_ComputeFstatMCUpperLimit +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_ComputeFstatistic_v2 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_ComputePSD +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_CopyPublicSFTs +216 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_DriveHoughMulti +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_FstatMetric_v2 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_HierarchSearchGCT +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_HierarchicalSearch +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_MakeSFTDAG +1142 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_MakeSFTs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_Makefakedata_v4 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_Makefakedata_v5 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_MoveSFTs +208 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_PiecewiseSearch +963 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_PredictFstat +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_PrintDetectorState +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_SFTclean +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_SFTvalidate +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_Weave +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_WeaveCompare +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_WeaveConcat +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_WeaveSetup +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_WriteSFTsfromSFDBs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_compareFstats +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_compareSFTs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_create_time_correction_ephemeris +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_crosscorr_v2 +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_dumpSFT +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_fits_header_getval +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_fits_header_list +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_fits_overview +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_fits_table_list +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_frequency_evolution +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_heterodyne +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_knope +145 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_knope_automation_script +731 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_knope_collate_results +675 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_knope_result_page +2977 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_parameter_estimation_nested +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_spec_avg +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_spec_avg_long +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_spec_coherence +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_splitSFTs +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_ssbtodetector +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_synthesizeBstatMC +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_synthesizeLVStats +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_synthesizeTransientStats +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalpulsar_version +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-bh-qnmode +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-bh-ringdown +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-bh-sphwf +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-burst +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-detector-noise +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-detector-strain +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-inject +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-inspiral +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-ns-eos-table +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-ns-mass-radius +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-ns-params +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-sgwb +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsim-unicorn +6 -0
- lalsuite-7.26.2.dev20260106.data/scripts/lalsimulation_version +6 -0
- lalsuite-7.26.2.dev20260106.dist-info/METADATA +90 -0
- lalsuite-7.26.2.dev20260106.dist-info/RECORD +749 -0
- lalsuite-7.26.2.dev20260106.dist-info/WHEEL +6 -0
- lalsuite-7.26.2.dev20260106.dist-info/licenses/COPYING +339 -0
- lalsuite-7.26.2.dev20260106.dist-info/top_level.txt +9 -0
lal/series.py
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# Copyright (C) 2008 Kipp Cannon
|
|
2
|
+
# 2015 Leo Singer
|
|
3
|
+
#
|
|
4
|
+
# Adapted from original pylal.series module to return SWIG lal datatypes
|
|
5
|
+
# instead of pylal datatypes.
|
|
6
|
+
#
|
|
7
|
+
# This program is free software; you can redistribute it and/or modify it
|
|
8
|
+
# under the terms of the GNU General Public License as published by the
|
|
9
|
+
# Free Software Foundation; either version 2 of the License, or (at your
|
|
10
|
+
# option) any later version.
|
|
11
|
+
#
|
|
12
|
+
# This program is distributed in the hope that it will be useful, but
|
|
13
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
15
|
+
# Public License for more details.
|
|
16
|
+
#
|
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
|
18
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
19
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
20
|
+
#
|
|
21
|
+
"""
|
|
22
|
+
Code to assist in reading and writing LAL time- and frequency series data
|
|
23
|
+
encoded in LIGO Light-Weight XML format. The format recognized by the code
|
|
24
|
+
in this module is the same as generated by the array-related functions in
|
|
25
|
+
LAL's XML I/O code. The format is also very similar to the format used by
|
|
26
|
+
the DMT to store time- and frequency-series data in XML files,
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
from igwn_ligolw import ligolw
|
|
31
|
+
import lal
|
|
32
|
+
import numpy as np
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
Attributes = ligolw.sax.xmlreader.AttributesImpl
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
#
|
|
39
|
+
# =============================================================================
|
|
40
|
+
#
|
|
41
|
+
# XML I/O
|
|
42
|
+
#
|
|
43
|
+
# =============================================================================
|
|
44
|
+
#
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _build_series(series, dim_names, comment, delta_name, delta_unit, encoding="Text"):
|
|
48
|
+
elem = ligolw.LIGO_LW(Attributes({u"Name": str(series.__class__.__name__)}))
|
|
49
|
+
if comment is not None:
|
|
50
|
+
elem.appendChild(ligolw.Comment()).pcdata = comment
|
|
51
|
+
elem.appendChild(ligolw.Time.from_gps(series.epoch, u"epoch"))
|
|
52
|
+
elem.appendChild(ligolw.Param.from_pyvalue(u"f0", series.f0, unit=u"s^-1"))
|
|
53
|
+
delta = getattr(series, delta_name)
|
|
54
|
+
if np.iscomplexobj(series.data.data):
|
|
55
|
+
data = np.vstack((np.arange(len(series.data.data)) * delta, series.data.data.real, series.data.data.imag))
|
|
56
|
+
else:
|
|
57
|
+
data = np.vstack((np.arange(len(series.data.data)) * delta, series.data.data))
|
|
58
|
+
a = ligolw.Array.build(series.name, data, dim_names=dim_names, encoding=encoding)
|
|
59
|
+
a.Unit = str(series.sampleUnits)
|
|
60
|
+
dim0 = a.getElementsByTagName(ligolw.Dim.tagName)[0]
|
|
61
|
+
dim0.Unit = delta_unit
|
|
62
|
+
dim0.Start = series.f0
|
|
63
|
+
dim0.Scale = delta
|
|
64
|
+
elem.appendChild(a)
|
|
65
|
+
return elem
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _parse_series(elem, creatorfunc, delta_target_unit_string):
|
|
69
|
+
t, = elem.getElementsByTagName(ligolw.Time.tagName)
|
|
70
|
+
a, = elem.getElementsByTagName(ligolw.Array.tagName)
|
|
71
|
+
dims = a.getElementsByTagName(ligolw.Dim.tagName)
|
|
72
|
+
f0 = ligolw.Param.get_param(elem, u"f0")
|
|
73
|
+
|
|
74
|
+
if t.Type != u"GPS":
|
|
75
|
+
raise ValueError("epoch Type must be GPS")
|
|
76
|
+
epoch = t.pcdata
|
|
77
|
+
|
|
78
|
+
# Target units: inverse seconds
|
|
79
|
+
inverse_seconds_unit = lal.Unit("s^-1")
|
|
80
|
+
|
|
81
|
+
delta_target_unit = lal.Unit(delta_target_unit_string)
|
|
82
|
+
|
|
83
|
+
# Parse units of f0 field
|
|
84
|
+
f0_unit = lal.Unit(str(f0.Unit))
|
|
85
|
+
|
|
86
|
+
# Parse units of deltaF field
|
|
87
|
+
delta_unit = lal.Unit(str(dims[0].Unit))
|
|
88
|
+
|
|
89
|
+
# Parse units of data
|
|
90
|
+
sample_unit = lal.Unit(str(a.Unit))
|
|
91
|
+
|
|
92
|
+
# Initialize data structure
|
|
93
|
+
series = creatorfunc(
|
|
94
|
+
str(a.Name),
|
|
95
|
+
epoch,
|
|
96
|
+
f0.pcdata * float(f0_unit / inverse_seconds_unit),
|
|
97
|
+
dims[0].Scale * float(delta_unit / delta_target_unit),
|
|
98
|
+
sample_unit,
|
|
99
|
+
len(a.array.T)
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# Assign data
|
|
103
|
+
if np.iscomplexobj(series.data.data):
|
|
104
|
+
series.data.data = a.array[1] + 1j * a.array[2]
|
|
105
|
+
else:
|
|
106
|
+
series.data.data = a.array[1]
|
|
107
|
+
|
|
108
|
+
# Done!
|
|
109
|
+
return series
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def build_REAL4FrequencySeries(series, comment=None, encoding="Text"):
|
|
113
|
+
assert isinstance(series, lal.REAL4FrequencySeries)
|
|
114
|
+
return _build_series(series, (u"Frequency,Real", u"Frequency"), comment, 'deltaF', 's^-1', encoding=encoding)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def parse_REAL4FrequencySeries(elem):
|
|
118
|
+
return _parse_series(elem, lal.CreateREAL4FrequencySeries, "s^-1")
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def build_REAL8FrequencySeries(series, comment=None, encoding="Text"):
|
|
122
|
+
assert isinstance(series, lal.REAL8FrequencySeries)
|
|
123
|
+
return _build_series(series, (u"Frequency,Real", u"Frequency"), comment, 'deltaF', 's^-1', encoding=encoding)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def parse_REAL8FrequencySeries(elem):
|
|
127
|
+
return _parse_series(elem, lal.CreateREAL8FrequencySeries, "s^-1")
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def build_COMPLEX8FrequencySeries(series, comment=None, encoding="Text"):
|
|
131
|
+
assert isinstance(series, lal.COMPLEX8FrequencySeries)
|
|
132
|
+
return _build_series(series, (u"Frequency,Real,Imaginary", u"Frequency"), comment, 'deltaF', 's^-1', encoding=encoding)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def parse_COMPLEX8FrequencySeries(elem):
|
|
136
|
+
return _parse_series(elem, lal.CreateCOMPLEX8FrequencySeries, "s^-1")
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def build_COMPLEX16FrequencySeries(series, comment=None, encoding="Text"):
|
|
140
|
+
assert isinstance(series, lal.COMPLEX16FrequencySeries)
|
|
141
|
+
return _build_series(series, (u"Frequency,Real,Imaginary", u"Frequency"), comment, 'deltaF', 's^-1', encoding=encoding)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def parse_COMPLEX16FrequencySeries(elem):
|
|
145
|
+
return _parse_series(elem, lal.CreateCOMPLEX16FrequencySeries, "s^-1")
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def build_REAL4TimeSeries(series, comment=None, encoding="Text"):
|
|
149
|
+
assert isinstance(series, lal.REAL4TimeSeries)
|
|
150
|
+
return _build_series(series, (u"Time,Real", u"Time"), comment, 'deltaT', 's', encoding=encoding)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def parse_REAL4TimeSeries(elem):
|
|
154
|
+
return _parse_series(elem, lal.CreateREAL4TimeSeries, "s")
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def build_REAL8TimeSeries(series, comment=None, encoding="Text"):
|
|
158
|
+
assert isinstance(series, lal.REAL8TimeSeries)
|
|
159
|
+
return _build_series(series, (u"Time,Real", u"Time"), comment, 'deltaT', 's', encoding=encoding)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def parse_REAL8TimeSeries(elem):
|
|
163
|
+
return _parse_series(elem, lal.CreateREAL8TimeSeries, "s")
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def build_COMPLEX8TimeSeries(series, comment=None, encoding="Text"):
|
|
167
|
+
assert isinstance(series, lal.COMPLEX8TimeSeries)
|
|
168
|
+
return _build_series(series, (u"Time,Real,Imaginary", u"Time"), comment, 'deltaT', 's', encoding=encoding)
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def parse_COMPLEX8TimeSeries(elem):
|
|
172
|
+
return _parse_series(elem, lal.CreateCOMPLEX8TimeSeries, "s")
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def build_COMPLEX16TimeSeries(series, comment=None, encoding="Text"):
|
|
176
|
+
assert isinstance(series, lal.COMPLEX16TimeSeries)
|
|
177
|
+
return _build_series(series, (u"Time,Real,Imaginary", u"Time"), comment, 'deltaT', 's', encoding=encoding)
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def parse_COMPLEX16TimeSeries(elem):
|
|
181
|
+
return _parse_series(elem, lal.CreateCOMPLEX16TimeSeries, "s")
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
#
|
|
185
|
+
# =============================================================================
|
|
186
|
+
#
|
|
187
|
+
# XML PSD I/O
|
|
188
|
+
#
|
|
189
|
+
# =============================================================================
|
|
190
|
+
#
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def make_psd_xmldoc(psddict, xmldoc = None, root_name = u"psd", encoding="Text"):
|
|
194
|
+
"""
|
|
195
|
+
Construct an XML document tree representation of a dictionary of
|
|
196
|
+
frequency series objects containing PSDs. See also read_psd_xmldoc()
|
|
197
|
+
for a function to parse the resulting XML documents.
|
|
198
|
+
|
|
199
|
+
If xmldoc is None (the default), then a new XML document is created and
|
|
200
|
+
the PSD dictionary added to it inside a LIGO_LW element. If xmldoc is
|
|
201
|
+
not None then the PSD dictionary is appended to the children of that
|
|
202
|
+
element inside a new LIGO_LW element. In both cases, the LIGO_LW
|
|
203
|
+
element's Name attribute is set to root_name. This will be looked for
|
|
204
|
+
by read_psd_xmldoc() when parsing the PSD document.
|
|
205
|
+
"""
|
|
206
|
+
if xmldoc is None:
|
|
207
|
+
xmldoc = ligolw.Document()
|
|
208
|
+
lw = xmldoc.appendChild(ligolw.LIGO_LW(Attributes({u"Name": root_name})))
|
|
209
|
+
for instrument, psd in psddict.items():
|
|
210
|
+
fs = lw.appendChild(build_REAL8FrequencySeries(psd, encoding=encoding))
|
|
211
|
+
if instrument is not None:
|
|
212
|
+
fs.appendChild(ligolw.Param.from_pyvalue(u"instrument", instrument))
|
|
213
|
+
return xmldoc
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
def read_psd_xmldoc(xmldoc, root_name = u"psd"):
|
|
217
|
+
"""
|
|
218
|
+
Parse a dictionary of PSD frequency series objects from an XML
|
|
219
|
+
document. See also make_psd_xmldoc() for the construction of XML
|
|
220
|
+
documents from a dictionary of PSDs. Interprets an empty frequency
|
|
221
|
+
series for an instrument as None.
|
|
222
|
+
|
|
223
|
+
The XML document tree is searched for a LIGO_LW element whose Name
|
|
224
|
+
attribute is root_name (default is "psd"). If root_name is None all
|
|
225
|
+
REAL8Frequency series objects below xmldoc are included in the return
|
|
226
|
+
value.
|
|
227
|
+
"""
|
|
228
|
+
if root_name is not None:
|
|
229
|
+
xmldoc, = (elem for elem in xmldoc.getElementsByTagName(ligolw.LIGO_LW.tagName) if elem.hasAttribute(u"Name") and elem.Name == root_name)
|
|
230
|
+
result = dict((ligolw.Param.get_param(elem, u"instrument").value, parse_REAL8FrequencySeries(elem)) for elem in xmldoc.getElementsByTagName(ligolw.LIGO_LW.tagName) if elem.hasAttribute(u"Name") and elem.Name == u"REAL8FrequencySeries")
|
|
231
|
+
# interpret empty frequency series as None
|
|
232
|
+
for instrument in result:
|
|
233
|
+
if len(result[instrument].data.data) == 0:
|
|
234
|
+
result[instrument] = None
|
|
235
|
+
return result
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
class PSDContentHandler(ligolw.LIGOLWContentHandler):
|
|
239
|
+
"""A content handler suitable for reading PSD documents. Use like this:
|
|
240
|
+
|
|
241
|
+
>>> from igwn_ligolw.utils import load_filename
|
|
242
|
+
>>> xmldoc = load_filename('psd.xml', contenthandler=PSDContentHandler)
|
|
243
|
+
>>> psds = read_psd_xmldoc(xmldoc)
|
|
244
|
+
"""
|
lal/utils/__init__.py
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Copyright (C) 2013 Duncan Macleod
|
|
2
|
+
#
|
|
3
|
+
# This program is free software; you can redistribute it and/or modify it
|
|
4
|
+
# under the terms of the GNU General Public License as published by the
|
|
5
|
+
# Free Software Foundation; either version 3 of the License, or (at your
|
|
6
|
+
# option) any later version.
|
|
7
|
+
#
|
|
8
|
+
# This program is distributed in the hope that it will be useful, but
|
|
9
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
11
|
+
# Public License for more details.
|
|
12
|
+
#
|
|
13
|
+
# You should have received a copy of the GNU General Public License along
|
|
14
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
15
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
16
|
+
|
|
17
|
+
## \defgroup lal_py_utils Utilities
|
|
18
|
+
## \ingroup lal_python
|
|
19
|
+
"""This module provides utilities for generating LAL objects in python
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
from .. import git_version
|
|
24
|
+
__author__ = "Duncan Macleod <duncan.macleod@ligo.org>"
|
|
25
|
+
__version__ = git_version.id
|
|
26
|
+
__date__ = git_version.date
|
|
27
|
+
|
|
28
|
+
from .series import *
|
|
29
|
+
from .cache import *
|
lal/utils/cache.py
ADDED
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
# Copyright (C) 2013 Duncan Macleod
|
|
2
|
+
# Copyright (C) 2016 Kipp Cannon
|
|
3
|
+
#
|
|
4
|
+
# This program is free software; you can redistribute it and/or modify it
|
|
5
|
+
# under the terms of the GNU General Public License as published by the
|
|
6
|
+
# Free Software Foundation; either version 3 of the License, or (at your
|
|
7
|
+
# option) any later version.
|
|
8
|
+
#
|
|
9
|
+
# This program is distributed in the hope that it will be useful, but
|
|
10
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
12
|
+
# Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU General Public License along
|
|
15
|
+
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
16
|
+
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
17
|
+
from __future__ import print_function
|
|
18
|
+
|
|
19
|
+
"""Modules extending the Cache file functionality from LAL
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
import os
|
|
23
|
+
import re
|
|
24
|
+
import tempfile
|
|
25
|
+
from functools import total_ordering
|
|
26
|
+
from urllib.parse import (
|
|
27
|
+
urlparse,
|
|
28
|
+
urlunparse,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
import igwn_segments as segments
|
|
32
|
+
|
|
33
|
+
from .. import git_version
|
|
34
|
+
from .. import CacheImport
|
|
35
|
+
from .. import LIGOTimeGPS
|
|
36
|
+
|
|
37
|
+
__author__ = "Duncan Macleod <duncan.macleod@ligo.org>"
|
|
38
|
+
__version__ = git_version.id
|
|
39
|
+
__date__ = git_version.date
|
|
40
|
+
|
|
41
|
+
__all__ = ['CacheEntry', 'lalcache_from_gluecache']
|
|
42
|
+
|
|
43
|
+
def lalcache_from_gluecache(cache):
|
|
44
|
+
"""Convert a glue.lal.Cache object to a lal.Cache object.
|
|
45
|
+
Writes cache to temporary file and reads to Cache.
|
|
46
|
+
|
|
47
|
+
@param cache
|
|
48
|
+
LAL cache object from GLUE to convert
|
|
49
|
+
type cache glue.lal.Cache
|
|
50
|
+
|
|
51
|
+
@returns a lal.Cache object representing the same data
|
|
52
|
+
"""
|
|
53
|
+
with tempfile.NamedTemporaryFile(delete=False, mode="w") as t:
|
|
54
|
+
cache = cache
|
|
55
|
+
for e in cache:
|
|
56
|
+
e.segment = type(e.segment)(int(e.segment[0]), int(e.segment[1]))
|
|
57
|
+
cache.tofile(t)
|
|
58
|
+
frcache = CacheImport(t.name)
|
|
59
|
+
os.remove(t.name)
|
|
60
|
+
return frcache
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
#
|
|
64
|
+
# Representation of a line in a LAL cache file
|
|
65
|
+
#
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@total_ordering
|
|
69
|
+
class CacheEntry(object):
|
|
70
|
+
"""
|
|
71
|
+
A Python object representing one line in a LAL cache file.
|
|
72
|
+
|
|
73
|
+
The LAL cache format is defined elsewhere, and what follows is meant
|
|
74
|
+
only to be informative, not an official specification. Each line in a
|
|
75
|
+
LAL cache identifies a single file, and the line consists of five
|
|
76
|
+
columns of white-space delimited text.
|
|
77
|
+
|
|
78
|
+
The first column, "observatory", generally stores the name of an
|
|
79
|
+
observatory site or one or more instruments (preferably delimited by
|
|
80
|
+
",", but often there is no delimiter between instrument names in which
|
|
81
|
+
case they should be 2 characters each).
|
|
82
|
+
|
|
83
|
+
The second column, "description", stores a short string tag that is
|
|
84
|
+
usually all capitals with "_" separating components, in the style of
|
|
85
|
+
the description part of the LIGO-Virgo frame filename format.
|
|
86
|
+
|
|
87
|
+
The third and fourth columns store the start time and duration in GPS
|
|
88
|
+
seconds of the interval spanned by the file identified by the cache
|
|
89
|
+
line. When the file does not start on an integer second or its
|
|
90
|
+
duration is not an integer number of seconds, the conventions of the
|
|
91
|
+
LIGO-Virgo frame filename format apply.
|
|
92
|
+
|
|
93
|
+
The fifth (last) column stores the file's URL.
|
|
94
|
+
|
|
95
|
+
The values for these columns are stored in the .observatory,
|
|
96
|
+
.description, .segment and .url attributes of instances of this class,
|
|
97
|
+
respectively. The .segment attribute stores a igwn_segments.segment
|
|
98
|
+
object describing the interval spanned by the file. Any of these
|
|
99
|
+
attributes except the URL is allowed to be None.
|
|
100
|
+
|
|
101
|
+
Example (parse a string):
|
|
102
|
+
|
|
103
|
+
>>> c = CacheEntry("H1 S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1-815901601-576.xml")
|
|
104
|
+
>>> c.scheme
|
|
105
|
+
'file'
|
|
106
|
+
>>> c.host
|
|
107
|
+
'localhost'
|
|
108
|
+
|
|
109
|
+
Example (one-liners to read and write a cache file):
|
|
110
|
+
|
|
111
|
+
>>> import os
|
|
112
|
+
>>> filename = "874000000-20000.cache"
|
|
113
|
+
>>> # adjustment for doctest in out-of-tree builds
|
|
114
|
+
>>> inname = os.path.join(os.environ.get("LAL_TEST_SRCDIR", "."), filename)
|
|
115
|
+
>>> # one-liner to read
|
|
116
|
+
>>> cache = list(map(CacheEntry, open(inname)))
|
|
117
|
+
>>> # one-liner to write
|
|
118
|
+
>>> print(*cache, sep = "\\n", file = open(filename + ".new", "w"))
|
|
119
|
+
|
|
120
|
+
Example (extract segmentlist dictionary from LAL cache):
|
|
121
|
+
|
|
122
|
+
>>> import igwn_segments as segments
|
|
123
|
+
>>> seglists = segments.segmentlistdict()
|
|
124
|
+
>>> for cacheentry in cache:
|
|
125
|
+
... seglists |= cacheentry.segmentlistdict
|
|
126
|
+
...
|
|
127
|
+
|
|
128
|
+
NOTE: the CacheEntry type defines a comparison operation and a
|
|
129
|
+
.__hash__() implementation, both of which disregard the URL. That is,
|
|
130
|
+
if two CacheEntry objects differ only by URL and otherwise have same
|
|
131
|
+
metadata, they are considered to be redundant copies of the same data.
|
|
132
|
+
For example, uniquification with a set() will retain only one redundant
|
|
133
|
+
copy, selected at random.
|
|
134
|
+
|
|
135
|
+
>>> x = CacheEntry("H1 S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1-815901601-576.xml")
|
|
136
|
+
>>> y = CacheEntry("H1 S5 815901601 576.5 gsiftp://data.server.org/bigpileofdata/H1-815901601-576.xml")
|
|
137
|
+
>>> x == y
|
|
138
|
+
True
|
|
139
|
+
>>> len(set((x, y)))
|
|
140
|
+
1
|
|
141
|
+
|
|
142
|
+
NOTE: this is a pure Python object providing an alternative
|
|
143
|
+
representation of the contents of a LAL cache file to the C
|
|
144
|
+
implementation in the LAL library proper. The two are not
|
|
145
|
+
interchangeable.
|
|
146
|
+
|
|
147
|
+
See also:
|
|
148
|
+
|
|
149
|
+
igwn_segments.utils..fromlalcache()
|
|
150
|
+
"""
|
|
151
|
+
# How to parse a line in a LAL cache file. Five white-space
|
|
152
|
+
# delimited columns.
|
|
153
|
+
_regex = re.compile(r"\A\s*(?P<obs>\S+)\s+(?P<dsc>\S+)\s+(?P<strt>\S+)\s+(?P<dur>\S+)\s+(?P<url>\S+)\s*\Z")
|
|
154
|
+
_url_regex = re.compile(r"\A((.*/)*(?P<obs>[^/]+)-(?P<dsc>[^/]+)-(?P<strt>[^/]+)-(?P<dur>[^/\.]+)\.[^/]+)\Z")
|
|
155
|
+
|
|
156
|
+
def __init__(self, *args, **kwargs):
|
|
157
|
+
"""
|
|
158
|
+
Intialize a CacheEntry object. The arguments can take two forms:
|
|
159
|
+
a single string argument, which is interpreted and parsed as a line
|
|
160
|
+
from a LAL cache file, or four arguments used to explicitly
|
|
161
|
+
initialize the observatory, description, segment and URL in that
|
|
162
|
+
order. When parsing a single line of text from a LAL cache, an
|
|
163
|
+
optional key-word argument "coltype" can be provided to set the
|
|
164
|
+
type the start and durations are parsed as. The default is
|
|
165
|
+
lal.LIGOTimeGPS.
|
|
166
|
+
|
|
167
|
+
Example:
|
|
168
|
+
|
|
169
|
+
>>> c = CacheEntry("H1", "S5", segments.segment(815901601, 815902177.5), "file://localhost/home/kipp/tmp/1/H1-815901601-576.xml")
|
|
170
|
+
>>> print(c.segment)
|
|
171
|
+
[815901601 ... 815902177.5)
|
|
172
|
+
>>> print(str(c))
|
|
173
|
+
H1 S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1-815901601-576.xml
|
|
174
|
+
>>> c = CacheEntry("H1 S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1-815901601-576.xml")
|
|
175
|
+
>>> print(c.segment)
|
|
176
|
+
[815901601 ... 815902177.5)
|
|
177
|
+
>>> print(CacheEntry("H1 S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1-815901601-576.xml", coltype = float).segment)
|
|
178
|
+
[815901601.0 ... 815902177.5)
|
|
179
|
+
|
|
180
|
+
See also the .from_T050017() class method for an
|
|
181
|
+
alternative initialization mechanism.
|
|
182
|
+
"""
|
|
183
|
+
if len(args) == 1:
|
|
184
|
+
# parse line of text as an entry in a cache file
|
|
185
|
+
match = self._regex.search(args[0])
|
|
186
|
+
try:
|
|
187
|
+
match = match.groupdict()
|
|
188
|
+
except AttributeError:
|
|
189
|
+
raise ValueError("could not convert %s to CacheEntry" % repr(args[0]))
|
|
190
|
+
self.observatory = match["obs"]
|
|
191
|
+
self.description = match["dsc"]
|
|
192
|
+
# FIXME: remove typecasts when LIGOTimeGPS can be passed a unicode
|
|
193
|
+
start = str(match["strt"])
|
|
194
|
+
duration = str(match["dur"])
|
|
195
|
+
coltype = kwargs.pop("coltype", LIGOTimeGPS)
|
|
196
|
+
if start == "-" and duration == "-":
|
|
197
|
+
# no segment information
|
|
198
|
+
self.segment = None
|
|
199
|
+
else:
|
|
200
|
+
start = coltype(start)
|
|
201
|
+
self.segment = segments.segment(start, start + coltype(duration))
|
|
202
|
+
self.url = match["url"]
|
|
203
|
+
if kwargs:
|
|
204
|
+
raise TypeError("unrecognized keyword arguments: %s" % ", ".join(kwargs))
|
|
205
|
+
elif len(args) == 4:
|
|
206
|
+
# parse arguments as observatory, description,
|
|
207
|
+
# segment, url
|
|
208
|
+
if kwargs:
|
|
209
|
+
raise TypeError("invalid arguments: %s" % ", ".join(kwargs))
|
|
210
|
+
self.observatory, self.description, self.segment, self.url = args
|
|
211
|
+
else:
|
|
212
|
+
raise TypeError("invalid arguments: %s" % args)
|
|
213
|
+
|
|
214
|
+
# "-" indicates an empty column
|
|
215
|
+
if self.observatory == "-":
|
|
216
|
+
self.observatory = None
|
|
217
|
+
if self.description == "-":
|
|
218
|
+
self.description = None
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def __str__(self):
|
|
222
|
+
"""
|
|
223
|
+
Convert the CacheEntry to a string in the format of a line in a LAL
|
|
224
|
+
cache. Used to write the CacheEntry to a file.
|
|
225
|
+
|
|
226
|
+
Example:
|
|
227
|
+
|
|
228
|
+
>>> c = CacheEntry("H1 S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1-815901601-576.xml")
|
|
229
|
+
>>> str(c)
|
|
230
|
+
'H1 S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1-815901601-576.xml'
|
|
231
|
+
"""
|
|
232
|
+
if self.segment is not None:
|
|
233
|
+
start = str(self.segment[0])
|
|
234
|
+
duration = str(abs(self.segment))
|
|
235
|
+
else:
|
|
236
|
+
start = "-"
|
|
237
|
+
duration = "-"
|
|
238
|
+
return "%s %s %s %s %s" % (self.observatory or "-", self.description or "-", start, duration, self.url)
|
|
239
|
+
|
|
240
|
+
def __lt__(self, other):
|
|
241
|
+
"""
|
|
242
|
+
Compare two CacheEntry objects by observatory, then description,
|
|
243
|
+
then segment. CacheEntry objects that have different URLs but for
|
|
244
|
+
which all other metadata are the same are considered to be
|
|
245
|
+
equivalent. If two entries differ only by their URL, they are
|
|
246
|
+
considered to be redundant copies of the same data, and by
|
|
247
|
+
comparing them as equal the Python sort operation (which is a
|
|
248
|
+
stable sort) will preserve their relative order. By preserving the
|
|
249
|
+
order of redundant copies, we allow the preference for the order in
|
|
250
|
+
which redundant copies are to be attempted to be conveyed by their
|
|
251
|
+
order in the list, and preserved.
|
|
252
|
+
"""
|
|
253
|
+
if not isinstance(other, CacheEntry):
|
|
254
|
+
raise TypeError("can only compare CacheEntry to CacheEntry")
|
|
255
|
+
return (self.observatory, self.description, self.segment) < (other.observatory, other.description, other.segment)
|
|
256
|
+
|
|
257
|
+
def __eq__(self, other):
|
|
258
|
+
"""
|
|
259
|
+
Compare two CacheEntry objects by observatory, then description,
|
|
260
|
+
then segment. CacheEntry objects that have different URLs but for
|
|
261
|
+
which all other metadata are the same are considered to be
|
|
262
|
+
equivalent. If two entries differ only by their URL, they are
|
|
263
|
+
considered to be redundant copies of the same data, and by
|
|
264
|
+
comparing them as equal the Python sort operation (which is a
|
|
265
|
+
stable sort) will preserve their relative order. By preserving the
|
|
266
|
+
order of redundant copies, we allow the preference for the order in
|
|
267
|
+
which redundant copies are to be attempted to be conveyed by their
|
|
268
|
+
order in the list, and preserved.
|
|
269
|
+
"""
|
|
270
|
+
if not isinstance(other, CacheEntry):
|
|
271
|
+
raise TypeError("can only compare CacheEntry to CacheEntry")
|
|
272
|
+
return (self.observatory, self.description, self.segment) == (other.observatory, other.description, other.segment)
|
|
273
|
+
|
|
274
|
+
def __hash__(self):
|
|
275
|
+
"""
|
|
276
|
+
CacheEntry objects are hashed by the tuple (observatory,
|
|
277
|
+
description, segment), i.e., the URL is disregarded.
|
|
278
|
+
"""
|
|
279
|
+
return hash((self.observatory, self.description, self.segment))
|
|
280
|
+
|
|
281
|
+
def __fspath__(self):
|
|
282
|
+
"""
|
|
283
|
+
Return the path component of the URL. This makes CacheEntry
|
|
284
|
+
objects usable as path-like objects in functions that accept
|
|
285
|
+
path-like objects, such as open().
|
|
286
|
+
|
|
287
|
+
Example:
|
|
288
|
+
|
|
289
|
+
>>> c = CacheEntry("H1 S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1-815901601-576.xml")
|
|
290
|
+
>>> os.path.basename(c)
|
|
291
|
+
'H1-815901601-576.xml'
|
|
292
|
+
"""
|
|
293
|
+
if self.scheme not in ("", "file"):
|
|
294
|
+
msg = (
|
|
295
|
+
f"cannot use {type(self).__name__} as path-like object with "
|
|
296
|
+
f"scheme='{self.scheme}'"
|
|
297
|
+
)
|
|
298
|
+
raise ValueError(msg)
|
|
299
|
+
return self.path
|
|
300
|
+
|
|
301
|
+
@property
|
|
302
|
+
def url(self):
|
|
303
|
+
"""
|
|
304
|
+
The cache entry's URL. The URL is constructed from the values of
|
|
305
|
+
the scheme, host, and path attributes. Assigning a value to the
|
|
306
|
+
URL attribute causes the value to be parsed and the scheme, host
|
|
307
|
+
and path attributes updated.
|
|
308
|
+
"""
|
|
309
|
+
return urlunparse((self.scheme, self.host, self.path, None, None, None))
|
|
310
|
+
|
|
311
|
+
@url.setter
|
|
312
|
+
def url(self, url):
|
|
313
|
+
self.scheme, self.host, self.path = urlparse(url)[:3]
|
|
314
|
+
|
|
315
|
+
@property
|
|
316
|
+
def segmentlistdict(self):
|
|
317
|
+
"""
|
|
318
|
+
A segmentlistdict object describing the instruments and time
|
|
319
|
+
spanned by this CacheEntry. A new object is constructed each time
|
|
320
|
+
this attribute is accessed (segments are immutable so there is no
|
|
321
|
+
reason to try to share a reference to the CacheEntry's internal
|
|
322
|
+
segment; modifications of one would not be reflected in the other
|
|
323
|
+
anyway).
|
|
324
|
+
|
|
325
|
+
Example:
|
|
326
|
+
|
|
327
|
+
>>> c = CacheEntry("H1 S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1-815901601-576.xml")
|
|
328
|
+
>>> c.segmentlistdict['H1']
|
|
329
|
+
[segment(LIGOTimeGPS(815901601, 0), LIGOTimeGPS(815902177, 500000000))]
|
|
330
|
+
|
|
331
|
+
The \"observatory\" column of the cache entry, which is frequently
|
|
332
|
+
used to store instrument names, is parsed into instrument names for
|
|
333
|
+
the dictionary keys using the same rules as
|
|
334
|
+
igwn_ligolw.lsctables.instrumentsproperty.get().
|
|
335
|
+
|
|
336
|
+
Example:
|
|
337
|
+
|
|
338
|
+
>>> c = CacheEntry("H1H2, S5 815901601 576.5 file://localhost/home/kipp/tmp/1/H1H2-815901601-576.xml")
|
|
339
|
+
>>> c.segmentlistdict['H1H2']
|
|
340
|
+
[segment(LIGOTimeGPS(815901601, 0), LIGOTimeGPS(815902177, 500000000))]
|
|
341
|
+
"""
|
|
342
|
+
if self.observatory is None:
|
|
343
|
+
instruments = (None,)
|
|
344
|
+
else:
|
|
345
|
+
instruments = {obs for obs in map(str.strip, self.observatory.split(",")) if obs}
|
|
346
|
+
return segments.segmentlistdict((instrument, segments.segmentlist(self.segment is not None and [self.segment] or [])) for instrument in instruments)
|
|
347
|
+
|
|
348
|
+
@classmethod
|
|
349
|
+
def from_T050017(cls, url, coltype = LIGOTimeGPS):
|
|
350
|
+
"""
|
|
351
|
+
Parse a URL in the style of T050017-00 into a CacheEntry. The
|
|
352
|
+
T050017-00 file name format is, essentially,
|
|
353
|
+
|
|
354
|
+
observatory-description-start-duration.extension
|
|
355
|
+
|
|
356
|
+
Example:
|
|
357
|
+
|
|
358
|
+
>>> c = CacheEntry.from_T050017("file://localhost/data/node144/frames/S5/strain-L2/LLO/L-L1_RDS_C03_L2-8365/L-L1_RDS_C03_L2-836562330-83.gwf")
|
|
359
|
+
>>> c.observatory
|
|
360
|
+
'L'
|
|
361
|
+
>>> c.host
|
|
362
|
+
'localhost'
|
|
363
|
+
>>> os.path.basename(c.path)
|
|
364
|
+
'L-L1_RDS_C03_L2-836562330-83.gwf'
|
|
365
|
+
"""
|
|
366
|
+
match = cls._url_regex.search(url)
|
|
367
|
+
if not match:
|
|
368
|
+
raise ValueError("could not convert %s to CacheEntry" % repr(url))
|
|
369
|
+
observatory = match.group("obs")
|
|
370
|
+
description = match.group("dsc")
|
|
371
|
+
# FIXME: remove typecasts when LIGOTimeGPS can be passed a unicode
|
|
372
|
+
start = str(match.group("strt"))
|
|
373
|
+
duration = str(match.group("dur"))
|
|
374
|
+
if start == "-" and duration == "-":
|
|
375
|
+
# no segment information
|
|
376
|
+
segment = None
|
|
377
|
+
else:
|
|
378
|
+
segment = segments.segment(coltype(start), coltype(start) + coltype(duration))
|
|
379
|
+
return cls(observatory, description, segment, url)
|