lalsuite 7.26.2.dev20251210__cp312-cp312-macosx_12_0_arm64.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-312-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-312-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-312-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-312-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-312-darwin.so +0 -0
- lalinference/_lalinference.cpython-312-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-312-darwin.so +0 -0
- lalinspiral/_lalinspiral_swig.py +18 -0
- lalinspiral/_thinca.cpython-312-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-312-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-312-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-312-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.dev20251210.data/scripts/cbcBayesBurstPPAnalysis +305 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesBurstPostProc +1364 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesCombinePTMCMCh5s +100 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesCombinePosteriors +235 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesCompPos +1121 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesDIEvidence +68 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesGraceDBinfo +182 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesMCMC2pos +314 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesPPAnalysis +322 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesPlotSpinDisk +42 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesPosToSimBurst +227 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesPosToSimInspiral +307 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesPostProc +1345 -0
- lalsuite-7.26.2.dev20251210.data/scripts/cbcBayesThermoInt +107 -0
- lalsuite-7.26.2.dev20251210.data/scripts/imrtgr_imr_consistency_test +796 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lal_cache +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lal_fftw_wisdom +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lal_fftwf_wisdom +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lal_path2cache +148 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lal_searchsum2cache +172 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lal_simd_detect +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lal_tconvert +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lal_version +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_ComputeAntennaPattern +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_ComputeFstatBenchmark +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_ComputeFstatLatticeCount +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_ComputeFstatMCUpperLimit +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_ComputeFstatistic_v2 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_ComputePSD +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_CopySFTs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_DistanceVsMass +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_DriveHoughMulti +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_FstatMetric_v2 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_HierarchSearchGCT +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_HierarchicalSearch +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_MakeSFTDAG +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_MakeSFTs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_Makefakedata_v4 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_Makefakedata_v5 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_PredictFstat +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_PrintDetectorState +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_SFTclean +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_SFTvalidate +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_StringAddFrame +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_StringSearch +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_Weave +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_WeaveCompare +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_WeaveConcat +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_WeaveSetup +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_WriteSFTsfromSFDBs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_animate +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_binj +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_blindinj +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_cache +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_cafe +99 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_calfacs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_cbc_stochasticbank +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_chirplen +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_coh_PTF_inspiral +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_coinj +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_combine_crosscorr_toplists +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_compareFstats +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_compareSFTs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_cosmicstring_pipe +525 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_create_time_correction_ephemeris +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_dumpSFT +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_effdist +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_exc_resp +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_fftw_wisdom +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_fftwf_wisdom +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_fits_header_getval +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_fits_header_list +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_fits_overview +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_fits_table_list +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_fr_ninja +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_frextr +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_frinfo +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_frjoin +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_frread +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_frview +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_gwf2xml +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_heterodyne_pulsar +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_inspawgfile +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_inspfrinj +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_inspinj +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_inspiralDistance +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_knope +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_knope_automation_script +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_knope_collate_results +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_knope_result_page +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_makeblindinj +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_makeblindinj_himass +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_ninja +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_path2cache +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_power +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_power_likelihood_pipe +219 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_power_pipe +417 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_pulsar_crosscorr_v2 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_pulsar_frequency_evolution +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_pulsar_parameter_estimation_nested +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_random_bank +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_randombank +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_run_pulsar_crosscorr_v2 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_searchsum2cache +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_spec_avg +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_spec_avg_long +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_spec_coherence +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_spininj +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_splitSFTs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_splitbank +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_ssbtodetector +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_apply_vetoes +171 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_calc_likelihood +172 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_contour_plotter +141 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_contour_plotter_largeloops +133 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_cs_gamma +110 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_cs_gamma_largeloops +119 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_final +1064 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_meas_likelihood +264 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_plot_binj +543 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_string_plot_likelihood +380 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_synthesizeBstatMC +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_synthesizeLVStats +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_synthesizeTransientStats +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_tconvert +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_tmpltbank +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_version +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalapps_xtefitstoframe +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_cluster +156 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_coinc +224 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_cut +425 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_gen_timeslides +254 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_inj_pic +254 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_injfind +170 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_plot_tisi +165 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_power_calc_likelihood +182 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_power_final +1369 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_power_meas_likelihood +206 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_power_plot_binj +934 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_power_plot_binjtf +302 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalburst_version +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-cat +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-cksum +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-cut +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-dump +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-fmt +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-paste +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-print +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-split +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-stat +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-stream +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalfr-vis +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalframe_version +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_bench +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_burst +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_burst_pp_pipe +220 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_coherence_test +139 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_compute_roq_weights +404 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_cpnest +58 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_datadump +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_evolve_spins_and_append_samples +202 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_injectedlike +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_merge_posteriors +57 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_mpi_wrapper +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_multi_pipe +144 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_nest +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_nest2pos +286 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_pipe +512 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_pp_pipe +229 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_review_test +362 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinference_version +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinspiral_injfind +206 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinspiral_thinca +240 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalinspiral_version +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalmetaio_version +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_ComputeAntennaPattern +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_ComputeFstatBenchmark +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_ComputeFstatLatticeCount +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_ComputeFstatMCUpperLimit +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_ComputeFstatistic_v2 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_ComputePSD +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_CopyPublicSFTs +216 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_DriveHoughMulti +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_FstatMetric_v2 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_HierarchSearchGCT +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_HierarchicalSearch +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_MakeSFTDAG +1142 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_MakeSFTs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_Makefakedata_v4 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_Makefakedata_v5 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_MoveSFTs +208 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_PiecewiseSearch +963 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_PredictFstat +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_PrintDetectorState +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_SFTclean +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_SFTvalidate +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_Weave +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_WeaveCompare +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_WeaveConcat +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_WeaveSetup +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_WriteSFTsfromSFDBs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_compareFstats +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_compareSFTs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_create_time_correction_ephemeris +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_crosscorr_v2 +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_dumpSFT +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_fits_header_getval +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_fits_header_list +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_fits_overview +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_fits_table_list +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_frequency_evolution +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_heterodyne +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_knope +145 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_knope_automation_script +731 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_knope_collate_results +675 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_knope_result_page +2977 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_parameter_estimation_nested +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_spec_avg +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_spec_avg_long +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_spec_coherence +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_splitSFTs +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_ssbtodetector +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_synthesizeBstatMC +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_synthesizeLVStats +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_synthesizeTransientStats +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalpulsar_version +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-bh-qnmode +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-bh-ringdown +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-bh-sphwf +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-burst +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-detector-noise +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-detector-strain +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-inject +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-inspiral +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-ns-eos-table +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-ns-mass-radius +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-ns-params +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-sgwb +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsim-unicorn +6 -0
- lalsuite-7.26.2.dev20251210.data/scripts/lalsimulation_version +6 -0
- lalsuite-7.26.2.dev20251210.dist-info/METADATA +90 -0
- lalsuite-7.26.2.dev20251210.dist-info/RECORD +749 -0
- lalsuite-7.26.2.dev20251210.dist-info/WHEEL +6 -0
- lalsuite-7.26.2.dev20251210.dist-info/licenses/COPYING +339 -0
- lalsuite-7.26.2.dev20251210.dist-info/top_level.txt +9 -0
lal/git_version.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# git_version.py - vcs information module
|
|
3
|
+
#
|
|
4
|
+
# Copyright (C) 2010 Nickolas Fotopoulos
|
|
5
|
+
# Copyright (C) 2012-2013 Adam Mercer
|
|
6
|
+
# Copyright (C) 2016 Leo Singer
|
|
7
|
+
#
|
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or (at
|
|
11
|
+
# your option) any later version.
|
|
12
|
+
#
|
|
13
|
+
# This program is distributed in the hope that it will be useful, but
|
|
14
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
16
|
+
# General Public License for more details.
|
|
17
|
+
#
|
|
18
|
+
# You should have received a copy of the GNU General Public License
|
|
19
|
+
# along with with program; see the file COPYING. If not, write to the
|
|
20
|
+
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
21
|
+
# MA 02110-1301 USA
|
|
22
|
+
|
|
23
|
+
id = "eeff03c6df54cc1b9aa861018eac9ca5072a0a77"
|
|
24
|
+
date = "2025-12-4 04:45:18 +0000"
|
|
25
|
+
branch = "None"
|
|
26
|
+
tag = "None"
|
|
27
|
+
if tag == "None":
|
|
28
|
+
tag = None
|
|
29
|
+
author = "Karl Wette <karl.wette@ligo.org>"
|
|
30
|
+
builder = "Unknown User <>"
|
|
31
|
+
committer = "Karl Wette <karl.wette@ligo.org>"
|
|
32
|
+
status = "CLEAN: All modifications committed"
|
|
33
|
+
version = id
|
|
34
|
+
verbose_msg = """Branch: None
|
|
35
|
+
Tag: None
|
|
36
|
+
Id: eeff03c6df54cc1b9aa861018eac9ca5072a0a77
|
|
37
|
+
|
|
38
|
+
Builder: Unknown User <>
|
|
39
|
+
Repository status: CLEAN: All modifications committed"""
|
|
40
|
+
|
|
41
|
+
import warnings
|
|
42
|
+
|
|
43
|
+
class VersionMismatchError(ValueError):
|
|
44
|
+
pass
|
|
45
|
+
|
|
46
|
+
def check_match(foreign_id, onmismatch="raise"):
|
|
47
|
+
"""
|
|
48
|
+
If foreign_id != id, perform an action specified by the onmismatch
|
|
49
|
+
kwarg. This can be useful for validating input files.
|
|
50
|
+
|
|
51
|
+
onmismatch actions:
|
|
52
|
+
"raise": raise a VersionMismatchError, stating both versions involved
|
|
53
|
+
"warn": emit a warning, stating both versions involved
|
|
54
|
+
"""
|
|
55
|
+
if onmismatch not in ("raise", "warn"):
|
|
56
|
+
raise ValueError(onmismatch + " is an unrecognized value of onmismatch")
|
|
57
|
+
if foreign_id == "eeff03c6df54cc1b9aa861018eac9ca5072a0a77":
|
|
58
|
+
return
|
|
59
|
+
msg = "Program id (eeff03c6df54cc1b9aa861018eac9ca5072a0a77) does not match given id (%s)." % foreign_id
|
|
60
|
+
if onmismatch == "raise":
|
|
61
|
+
raise VersionMismatchError(msg)
|
|
62
|
+
|
|
63
|
+
# in the backtrace, show calling code
|
|
64
|
+
warnings.warn(msg, UserWarning)
|
lal/gpstime.py
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
# Copyright (C) 2021 Cardiff University
|
|
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_gpstime GPSTime
|
|
18
|
+
## \ingroup lal_python
|
|
19
|
+
"""Utilties for calculating and modifying GPS times using the LAL date
|
|
20
|
+
package
|
|
21
|
+
"""
|
|
22
|
+
#
|
|
23
|
+
# ### Synopsis ###
|
|
24
|
+
#
|
|
25
|
+
# ~~~
|
|
26
|
+
# from lal import gpstime
|
|
27
|
+
# ~~~
|
|
28
|
+
# This module wraps the LAL \ref Date_h module into Python providing
|
|
29
|
+
# functions to convert from the `datetime.datetime` objects from the
|
|
30
|
+
# Python standard library into LIGOTimeGPS numbers, and vice-versa.
|
|
31
|
+
# See in particular ::gps_to_utc and ::utc_to_gps.
|
|
32
|
+
#
|
|
33
|
+
# This module also provides a Python implementation of the `tconvert'
|
|
34
|
+
# module, allowing conversion from strings of dates and times into
|
|
35
|
+
# LIGOTimeGPS, and vice-versa. See in particular ::gps_to_str and
|
|
36
|
+
# ::str_to_gps.
|
|
37
|
+
#
|
|
38
|
+
# \author Duncan Macleod <duncan.macleod@ligo.org>
|
|
39
|
+
#@{
|
|
40
|
+
|
|
41
|
+
import datetime as _datetime
|
|
42
|
+
from decimal import Decimal
|
|
43
|
+
from numbers import Number
|
|
44
|
+
|
|
45
|
+
from dateutil.parser import parse as str_to_utc
|
|
46
|
+
|
|
47
|
+
from . import (
|
|
48
|
+
LIGOTimeGPS,
|
|
49
|
+
GPSTimeNow as _gps_time_now,
|
|
50
|
+
GPSToUTC as _gps_to_utc,
|
|
51
|
+
UTCToGPS as _utc_to_gps,
|
|
52
|
+
)
|
|
53
|
+
from . import git_version
|
|
54
|
+
|
|
55
|
+
__author__ = "Duncan Macleod <duncan.macleod@ligo.org>"
|
|
56
|
+
__version__ = git_version.verbose_msg
|
|
57
|
+
__date__ = git_version.date
|
|
58
|
+
|
|
59
|
+
TIME_ZONES = {
|
|
60
|
+
"PST": -8*3600,
|
|
61
|
+
"PDT": -7*3600,
|
|
62
|
+
"CST": -6*3600,
|
|
63
|
+
"CDT": -5*3600,
|
|
64
|
+
"EST": -5*3600,
|
|
65
|
+
"EDT": -4*3600,
|
|
66
|
+
"GMT": 0,
|
|
67
|
+
"UTC": 0,
|
|
68
|
+
"BST": 1*3600,
|
|
69
|
+
"CET": 1*3600,
|
|
70
|
+
"CEST": 2*3600,
|
|
71
|
+
}
|
|
72
|
+
GPS_EPOCH = _datetime.datetime(1980, 1, 6, 0, 0, 0)
|
|
73
|
+
LAL_GPS_MAX = _datetime.datetime(2048, 1, 24, 3, 13, 55)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _check_utc(utc_time):
|
|
77
|
+
"""Check whether this UTC datetime will convert to a valid LIGOTimeGPS
|
|
78
|
+
"""
|
|
79
|
+
if utc_time < GPS_EPOCH:
|
|
80
|
+
raise ValueError("Given UTC time is before the start of the GPS era.")
|
|
81
|
+
if utc_time > LAL_GPS_MAX:
|
|
82
|
+
raise ValueError("Given UTC time is too far in the future, "
|
|
83
|
+
"LAL will SegmentationFault.")
|
|
84
|
+
return
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def gps_time_now():
|
|
88
|
+
"""Get the current time in GPS seconds
|
|
89
|
+
|
|
90
|
+
@returns a LIGOTimeGPS
|
|
91
|
+
"""
|
|
92
|
+
return _gps_time_now()
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def utc_to_gps(utc_time):
|
|
96
|
+
"""Convert the given `datetime.datetime` into a GPS time
|
|
97
|
+
|
|
98
|
+
@returns a LIGOTimeGPS
|
|
99
|
+
"""
|
|
100
|
+
if not isinstance(utc_time, _datetime.datetime):
|
|
101
|
+
utc_time = _datetime.datetime.combine(utc_time, _datetime.time())
|
|
102
|
+
_check_utc(utc_time)
|
|
103
|
+
return LIGOTimeGPS(_utc_to_gps(utc_time.utctimetuple()))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def gps_to_utc(gps):
|
|
107
|
+
"""Convert a GPS time into a `datetime.datetime`
|
|
108
|
+
|
|
109
|
+
@returns a Python `datetime.datetime` object in UTC
|
|
110
|
+
"""
|
|
111
|
+
if isinstance(gps, (Decimal, Number)):
|
|
112
|
+
gps = str(gps)
|
|
113
|
+
gps = LIGOTimeGPS(gps)
|
|
114
|
+
dt = _datetime.datetime(
|
|
115
|
+
*_gps_to_utc(gps.gpsSeconds)[:7]
|
|
116
|
+
).replace(microsecond=0) # force microseconds to 0
|
|
117
|
+
if gps.gpsNanoSeconds:
|
|
118
|
+
return dt.replace(
|
|
119
|
+
microsecond=int(round(gps.gpsNanoSeconds * 1e-3)),
|
|
120
|
+
)
|
|
121
|
+
return dt
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
def utc_time_now():
|
|
125
|
+
"""Get the current date and time in UTC
|
|
126
|
+
|
|
127
|
+
@returns a Python `datetime.datetime` object in UTC
|
|
128
|
+
"""
|
|
129
|
+
return gps_to_utc(_gps_time_now())
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def str_to_gps(time_string=None):
|
|
133
|
+
r"""Converts a date/time string into a GPS time.
|
|
134
|
+
|
|
135
|
+
The following special words are permitted:
|
|
136
|
+
- "now"
|
|
137
|
+
- "today"
|
|
138
|
+
- "yesterday"
|
|
139
|
+
- "tomorrow"
|
|
140
|
+
|
|
141
|
+
Example:
|
|
142
|
+
\code
|
|
143
|
+
>>> gpstime.str_to_gps("September 14 2011, 01:46:25")
|
|
144
|
+
1000000000.000000000
|
|
145
|
+
\endcode
|
|
146
|
+
|
|
147
|
+
@returns a LIGOTimeGPS
|
|
148
|
+
"""
|
|
149
|
+
if not time_string or time_string.lower() == "now":
|
|
150
|
+
return _gps_time_now()
|
|
151
|
+
elif time_string == "today":
|
|
152
|
+
date = _datetime.date.today()
|
|
153
|
+
return utc_to_gps(_datetime.datetime.combine(date, _datetime.time()))
|
|
154
|
+
elif time_string == "tomorrow":
|
|
155
|
+
today = _datetime.datetime.combine(_datetime.date.today(),
|
|
156
|
+
_datetime.time())
|
|
157
|
+
tomorrow = today + _datetime.timedelta(days=1)
|
|
158
|
+
return utc_to_gps(tomorrow)
|
|
159
|
+
elif time_string == "yesterday":
|
|
160
|
+
today = _datetime.datetime.combine(_datetime.date.today(),
|
|
161
|
+
_datetime.time())
|
|
162
|
+
yesterday = today - _datetime.timedelta(days=1)
|
|
163
|
+
return utc_to_gps(yesterday)
|
|
164
|
+
# otherwise parse the string as a date/time
|
|
165
|
+
utc = str_to_utc(time_string, tzinfos=TIME_ZONES)
|
|
166
|
+
micro = utc.microsecond
|
|
167
|
+
gps = utc_to_gps(utc)
|
|
168
|
+
return gps + micro / 1000000.0
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def gps_to_str(gps, form=None):
|
|
172
|
+
r"""
|
|
173
|
+
Convert a LIGOTimeGPS time object into a string.
|
|
174
|
+
The output format can be given explicitly, but will default
|
|
175
|
+
as shown in the example.
|
|
176
|
+
|
|
177
|
+
Example:
|
|
178
|
+
|
|
179
|
+
\code
|
|
180
|
+
>>> gps_to_str(1000000000)
|
|
181
|
+
'September 14 2011, 01:46:25 UTC'
|
|
182
|
+
\endcode
|
|
183
|
+
|
|
184
|
+
@returns a string with the given format.
|
|
185
|
+
"""
|
|
186
|
+
gps = LIGOTimeGPS(gps)
|
|
187
|
+
utc = gps_to_utc(gps)
|
|
188
|
+
if gps.gpsNanoSeconds and not form:
|
|
189
|
+
form = "%B %d %Y, %H:%M:%S.%f UTC"
|
|
190
|
+
elif not form:
|
|
191
|
+
form = "%B %d %Y, %H:%M:%S UTC"
|
|
192
|
+
return utc.strftime(form)
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def tconvert(arg=None, form=None):
|
|
196
|
+
r"""Convert date/time strings to and from GPS times.
|
|
197
|
+
If no argument is given, the current GPS time is returned.
|
|
198
|
+
|
|
199
|
+
The following special words are permitted:
|
|
200
|
+
- "now"
|
|
201
|
+
- "today"
|
|
202
|
+
- "yesterday"
|
|
203
|
+
- "tomorrow"
|
|
204
|
+
|
|
205
|
+
Example:
|
|
206
|
+
|
|
207
|
+
\code
|
|
208
|
+
>>> tconvert()
|
|
209
|
+
1048275013.000000000
|
|
210
|
+
>>> tconvert("January 6 1980 00:00:00")
|
|
211
|
+
0.000000000
|
|
212
|
+
>>> tconvert(1000000000)
|
|
213
|
+
'September 14 2011, 01:46:25 UTC'
|
|
214
|
+
\endcode
|
|
215
|
+
|
|
216
|
+
@returns the LIGOTimeGPS of the given time string, OR, string
|
|
217
|
+
representing the given GPS time
|
|
218
|
+
"""
|
|
219
|
+
try:
|
|
220
|
+
float(arg)
|
|
221
|
+
except ValueError:
|
|
222
|
+
return str_to_gps(arg)
|
|
223
|
+
else:
|
|
224
|
+
return gps_to_str(arg, form=form)
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
##@}
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
if __name__ == "__main__":
|
|
231
|
+
now = tconvert()
|
|
232
|
+
now_utc = gps_to_str(now)
|
|
233
|
+
print("The date/time now is %s (%d)" % (now_utc, now))
|
lal/iterutils.py
ADDED
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
# Copyright (C) 2007,2008,2010--2016,2021 Kipp Cannon, Nickolas Fotopoulos
|
|
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 2 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
|
+
|
|
18
|
+
#
|
|
19
|
+
# =============================================================================
|
|
20
|
+
#
|
|
21
|
+
# Preamble
|
|
22
|
+
#
|
|
23
|
+
# =============================================================================
|
|
24
|
+
#
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
"""
|
|
28
|
+
A collection of iteration utilities.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
import functools
|
|
33
|
+
import math
|
|
34
|
+
import numpy
|
|
35
|
+
import random
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
from . import git_version
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
__author__ = "Kipp Cannon <kipp.cannon@ligo.org>"
|
|
42
|
+
__version__ = "git id %s" % git_version.id
|
|
43
|
+
__date__ = git_version.date
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
#
|
|
47
|
+
# =============================================================================
|
|
48
|
+
#
|
|
49
|
+
# Iteration Tools
|
|
50
|
+
#
|
|
51
|
+
# =============================================================================
|
|
52
|
+
#
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def MultiIter(*sequences):
|
|
56
|
+
"""
|
|
57
|
+
A generator for iterating over the elements of multiple sequences
|
|
58
|
+
simultaneously. With N sequences given as input, the generator
|
|
59
|
+
yields all possible distinct N-tuples that contain one element from
|
|
60
|
+
each of the input sequences.
|
|
61
|
+
|
|
62
|
+
Example:
|
|
63
|
+
|
|
64
|
+
>>> x = MultiIter([0, 1, 2], [10, 11])
|
|
65
|
+
>>> list(x)
|
|
66
|
+
[(0, 10), (1, 10), (2, 10), (0, 11), (1, 11), (2, 11)]
|
|
67
|
+
|
|
68
|
+
The elements in each output tuple are in the order of the input
|
|
69
|
+
sequences, and the left-most input sequence is iterated over first.
|
|
70
|
+
|
|
71
|
+
Internally, the input sequences themselves are each iterated over
|
|
72
|
+
only once, so it is safe to pass generators as arguments. Also,
|
|
73
|
+
this generator is significantly faster if the longest input
|
|
74
|
+
sequence is given as the first argument. For example, this code
|
|
75
|
+
|
|
76
|
+
>>> lengths = range(1, 12)
|
|
77
|
+
>>> for x in MultiIter(*map(range, lengths)):
|
|
78
|
+
... pass
|
|
79
|
+
...
|
|
80
|
+
|
|
81
|
+
runs approximately 5 times faster if the lengths list is reversed.
|
|
82
|
+
"""
|
|
83
|
+
if len(sequences) > 1:
|
|
84
|
+
# FIXME: this loop is about 5% faster if done the other
|
|
85
|
+
# way around, if the last list is iterated over in the
|
|
86
|
+
# inner loop. but there is code, like snglcoinc.py,
|
|
87
|
+
# that has been optimized for the current order and
|
|
88
|
+
# would need to be reoptimized if this function were to be
|
|
89
|
+
# reversed.
|
|
90
|
+
head = tuple((x,) for x in sequences[0])
|
|
91
|
+
for t in MultiIter(*sequences[1:]):
|
|
92
|
+
for h in head:
|
|
93
|
+
yield h + t
|
|
94
|
+
elif sequences:
|
|
95
|
+
for t in sequences[0]:
|
|
96
|
+
yield (t,)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def choices(vals, n):
|
|
100
|
+
"""
|
|
101
|
+
A generator for iterating over all choices of n elements from the
|
|
102
|
+
input sequence vals. In each result returned, the original order
|
|
103
|
+
of the values is preserved.
|
|
104
|
+
|
|
105
|
+
Example:
|
|
106
|
+
|
|
107
|
+
>>> x = choices(["a", "b", "c"], 2)
|
|
108
|
+
>>> list(x)
|
|
109
|
+
[('a', 'b'), ('a', 'c'), ('b', 'c')]
|
|
110
|
+
|
|
111
|
+
The order of combinations in the output sequence is always the
|
|
112
|
+
same, so if choices() is called twice with two different sequences
|
|
113
|
+
of the same length the first combination in each of the two output
|
|
114
|
+
sequences will contain elements from the same positions in the two
|
|
115
|
+
different input sequences, and so on for each subsequent pair of
|
|
116
|
+
output combinations.
|
|
117
|
+
|
|
118
|
+
Example:
|
|
119
|
+
|
|
120
|
+
>>> x = choices(["a", "b", "c"], 2)
|
|
121
|
+
>>> y = choices(["1", "2", "3"], 2)
|
|
122
|
+
>>> list(zip(x, y))
|
|
123
|
+
[(('a', 'b'), ('1', '2')), (('a', 'c'), ('1', '3')), (('b', 'c'), ('2', '3'))]
|
|
124
|
+
|
|
125
|
+
Furthermore, the order of combinations in the output sequence is
|
|
126
|
+
such that if the input list has n elements, and one constructs the
|
|
127
|
+
combinations choices(input, m), then each combination in
|
|
128
|
+
choices(input, n-m).reverse() contains the elements discarded in
|
|
129
|
+
forming the corresponding combination in the former.
|
|
130
|
+
|
|
131
|
+
Example:
|
|
132
|
+
|
|
133
|
+
>>> x = ["a", "b", "c", "d", "e"]
|
|
134
|
+
>>> X = list(choices(x, 2))
|
|
135
|
+
>>> Y = list(choices(x, len(x) - 2))
|
|
136
|
+
>>> Y.reverse()
|
|
137
|
+
>>> list(zip(X, Y))
|
|
138
|
+
[(('a', 'b'), ('c', 'd', 'e')), (('a', 'c'), ('b', 'd', 'e')), (('a', 'd'), ('b', 'c', 'e')), (('a', 'e'), ('b', 'c', 'd')), (('b', 'c'), ('a', 'd', 'e')), (('b', 'd'), ('a', 'c', 'e')), (('b', 'e'), ('a', 'c', 'd')), (('c', 'd'), ('a', 'b', 'e')), (('c', 'e'), ('a', 'b', 'd')), (('d', 'e'), ('a', 'b', 'c'))]
|
|
139
|
+
|
|
140
|
+
NOTE: this generator is identical to the itertools.combinations()
|
|
141
|
+
generator in Python's standard library. This routine was written
|
|
142
|
+
before Python provided that functionality, and is now only
|
|
143
|
+
preserved for two reasons. The first is to maintain this API for
|
|
144
|
+
existing codes that were written before the standard library
|
|
145
|
+
provided the capability. But the second reason is because the
|
|
146
|
+
Python standard library doesn't make the guarantees that we do,
|
|
147
|
+
here, about the order of the results. Specifically, there is no
|
|
148
|
+
guarantee that itertools.combinations() is repeatable, nor is there
|
|
149
|
+
a statement on how to obtain the inverse of the sequence as
|
|
150
|
+
described above. At the time of writing the order in which results
|
|
151
|
+
are produced is identical to this generator and in all use cases
|
|
152
|
+
they are exact substitutes for each other, and new code should use
|
|
153
|
+
itertools.combinations(). Be careful making assumptions about the
|
|
154
|
+
order of the results, add safety checks where needed, and if a
|
|
155
|
+
problem arises this generator can be used as a fall-back.
|
|
156
|
+
"""
|
|
157
|
+
if n == len(vals):
|
|
158
|
+
yield tuple(vals)
|
|
159
|
+
elif n > 1:
|
|
160
|
+
n -= 1
|
|
161
|
+
for i, v in enumerate(vals[:-n]):
|
|
162
|
+
v = (v,)
|
|
163
|
+
for c in choices(vals[i+1:], n):
|
|
164
|
+
yield v + c
|
|
165
|
+
elif n == 1:
|
|
166
|
+
for v in vals:
|
|
167
|
+
yield (v,)
|
|
168
|
+
elif n == 0:
|
|
169
|
+
yield ()
|
|
170
|
+
else:
|
|
171
|
+
# n < 0
|
|
172
|
+
raise ValueError(n)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def uniq(iterable):
|
|
176
|
+
"""
|
|
177
|
+
Yield the unique items of an iterable, preserving order.
|
|
178
|
+
http://mail.python.org/pipermail/tutor/2002-March/012930.html
|
|
179
|
+
|
|
180
|
+
Example:
|
|
181
|
+
|
|
182
|
+
>>> x = uniq([0, 0, 2, 6, 2, 0, 5])
|
|
183
|
+
>>> list(x)
|
|
184
|
+
[0, 2, 6, 5]
|
|
185
|
+
"""
|
|
186
|
+
temp_dict = {}
|
|
187
|
+
for e in iterable:
|
|
188
|
+
if e not in temp_dict:
|
|
189
|
+
yield temp_dict.setdefault(e, e)
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
def nonuniq(iterable):
|
|
193
|
+
"""
|
|
194
|
+
Yield the non-unique items of an iterable, preserving order. If an
|
|
195
|
+
item occurs N > 0 times in the input sequence, it will occur N-1
|
|
196
|
+
times in the output sequence.
|
|
197
|
+
|
|
198
|
+
Example:
|
|
199
|
+
|
|
200
|
+
>>> x = nonuniq([0, 0, 2, 6, 2, 0, 5])
|
|
201
|
+
>>> list(x)
|
|
202
|
+
[0, 2, 0]
|
|
203
|
+
"""
|
|
204
|
+
temp_dict = {}
|
|
205
|
+
for e in iterable:
|
|
206
|
+
if e in temp_dict:
|
|
207
|
+
yield e
|
|
208
|
+
temp_dict.setdefault(e, e)
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def flatten(sequence, levels = 1):
|
|
212
|
+
"""
|
|
213
|
+
Example:
|
|
214
|
+
>>> nested = [[1,2], [[3]]]
|
|
215
|
+
>>> list(flatten(nested))
|
|
216
|
+
[1, 2, [3]]
|
|
217
|
+
"""
|
|
218
|
+
if levels == 0:
|
|
219
|
+
for x in sequence:
|
|
220
|
+
yield x
|
|
221
|
+
else:
|
|
222
|
+
for x in sequence:
|
|
223
|
+
for y in flatten(x, levels - 1):
|
|
224
|
+
yield y
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
#
|
|
228
|
+
# =============================================================================
|
|
229
|
+
#
|
|
230
|
+
# In-Place filter()
|
|
231
|
+
#
|
|
232
|
+
# =============================================================================
|
|
233
|
+
#
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
def inplace_filter(func, sequence):
|
|
237
|
+
"""
|
|
238
|
+
Like Python's filter() builtin, but modifies the sequence in place.
|
|
239
|
+
|
|
240
|
+
Example:
|
|
241
|
+
|
|
242
|
+
>>> l = list(range(10))
|
|
243
|
+
>>> inplace_filter(lambda x: x > 5, l)
|
|
244
|
+
>>> l
|
|
245
|
+
[6, 7, 8, 9]
|
|
246
|
+
|
|
247
|
+
Performance considerations: the function iterates over the
|
|
248
|
+
sequence, shuffling surviving members down and deleting whatever
|
|
249
|
+
top part of the sequence is left empty at the end, so sequences
|
|
250
|
+
whose surviving members are predominantly at the bottom will be
|
|
251
|
+
processed faster.
|
|
252
|
+
"""
|
|
253
|
+
target = 0
|
|
254
|
+
for source in range(len(sequence)):
|
|
255
|
+
if func(sequence[source]):
|
|
256
|
+
sequence[target] = sequence[source]
|
|
257
|
+
target += 1
|
|
258
|
+
del sequence[target:]
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
#
|
|
262
|
+
# =============================================================================
|
|
263
|
+
#
|
|
264
|
+
# Return the Values from Several Ordered Iterables in Order
|
|
265
|
+
#
|
|
266
|
+
# =============================================================================
|
|
267
|
+
#
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
def inorder(*iterables, **kwargs):
|
|
271
|
+
"""
|
|
272
|
+
A generator that yields the values from several ordered iterables
|
|
273
|
+
in order.
|
|
274
|
+
|
|
275
|
+
Example:
|
|
276
|
+
|
|
277
|
+
>>> x = [0, 1, 2, 3]
|
|
278
|
+
>>> y = [1.5, 2.5, 3.5, 4.5]
|
|
279
|
+
>>> z = [1.75, 2.25, 3.75, 4.25]
|
|
280
|
+
>>> list(inorder(x, y, z))
|
|
281
|
+
[0, 1, 1.5, 1.75, 2, 2.25, 2.5, 3, 3.5, 3.75, 4.25, 4.5]
|
|
282
|
+
>>> list(inorder(x, y, z, key=lambda x: x * x))
|
|
283
|
+
[0, 1, 1.5, 1.75, 2, 2.25, 2.5, 3, 3.5, 3.75, 4.25, 4.5]
|
|
284
|
+
|
|
285
|
+
>>> x.sort(key=lambda x: abs(x-3))
|
|
286
|
+
>>> y.sort(key=lambda x: abs(x-3))
|
|
287
|
+
>>> z.sort(key=lambda x: abs(x-3))
|
|
288
|
+
>>> list(inorder(x, y, z, key=lambda x: abs(x - 3)))
|
|
289
|
+
[3, 2.5, 3.5, 2.25, 3.75, 2, 1.75, 4.25, 1.5, 4.5, 1, 0]
|
|
290
|
+
|
|
291
|
+
>>> x = [3, 2, 1, 0]
|
|
292
|
+
>>> y = [4.5, 3.5, 2.5, 1.5]
|
|
293
|
+
>>> z = [4.25, 3.75, 2.25, 1.75]
|
|
294
|
+
>>> list(inorder(x, y, z, reverse = True))
|
|
295
|
+
[4.5, 4.25, 3.75, 3.5, 3, 2.5, 2.25, 2, 1.75, 1.5, 1, 0]
|
|
296
|
+
>>> list(inorder(x, y, z, key = lambda x: -x))
|
|
297
|
+
[4.5, 4.25, 3.75, 3.5, 3, 2.5, 2.25, 2, 1.75, 1.5, 1, 0]
|
|
298
|
+
|
|
299
|
+
NOTE: this function will never reverse the order of elements in
|
|
300
|
+
the input iterables. If the reverse keyword argument is False (the
|
|
301
|
+
default) then the input sequences must yield elements in increasing
|
|
302
|
+
order, likewise if the keyword argument is True then the input
|
|
303
|
+
sequences must yield elements in decreasing order. Failure to
|
|
304
|
+
adhere to this yields undefined results, and for performance
|
|
305
|
+
reasons no check is performed to validate the element order in the
|
|
306
|
+
input sequences.
|
|
307
|
+
"""
|
|
308
|
+
reverse = kwargs.pop("reverse", False)
|
|
309
|
+
keyfunc = kwargs.pop("key", lambda x: x) # default = identity
|
|
310
|
+
if kwargs:
|
|
311
|
+
raise TypeError("invalid keyword argument '%s'" % list(kwargs.keys())[0])
|
|
312
|
+
nextvals = {}
|
|
313
|
+
for iterable in iterables:
|
|
314
|
+
next_ = functools.partial(next, iter(iterable))
|
|
315
|
+
try:
|
|
316
|
+
nextval = next_()
|
|
317
|
+
nextvals[next_] = keyfunc(nextval), nextval, next_
|
|
318
|
+
except StopIteration:
|
|
319
|
+
pass
|
|
320
|
+
if not nextvals:
|
|
321
|
+
# all sequences are empty
|
|
322
|
+
return
|
|
323
|
+
if reverse:
|
|
324
|
+
select = lambda seq: max(seq, key = lambda elem: elem[0])
|
|
325
|
+
else:
|
|
326
|
+
select = lambda seq: min(seq, key = lambda elem: elem[0])
|
|
327
|
+
if len(nextvals) > 1:
|
|
328
|
+
while 1:
|
|
329
|
+
_, val, next_ = select(nextvals.values())
|
|
330
|
+
yield val
|
|
331
|
+
try:
|
|
332
|
+
nextval = next_()
|
|
333
|
+
nextvals[next_] = keyfunc(nextval), nextval, next_
|
|
334
|
+
except StopIteration:
|
|
335
|
+
del nextvals[next_]
|
|
336
|
+
if len(nextvals) < 2:
|
|
337
|
+
break
|
|
338
|
+
# exactly one sequence remains, short circuit and drain it. since
|
|
339
|
+
# PEP 479 we must trap the StopIteration and terminate the loop
|
|
340
|
+
# manually
|
|
341
|
+
(_, val, next_), = nextvals.values()
|
|
342
|
+
yield val
|
|
343
|
+
try:
|
|
344
|
+
while 1:
|
|
345
|
+
yield next_()
|
|
346
|
+
except StopIteration:
|
|
347
|
+
pass
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
#
|
|
351
|
+
# =============================================================================
|
|
352
|
+
#
|
|
353
|
+
# Random Sequences
|
|
354
|
+
#
|
|
355
|
+
# =============================================================================
|
|
356
|
+
#
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
def randindex(lo, hi, n = 1.):
|
|
360
|
+
"""
|
|
361
|
+
Yields integers in the range [lo, hi) where 0 <= lo < hi. Each
|
|
362
|
+
return value is a two-element tuple. The first element is the
|
|
363
|
+
random integer, the second is the natural logarithm of the
|
|
364
|
+
probability with which that integer will be chosen.
|
|
365
|
+
|
|
366
|
+
The CDF for the distribution from which the integers are drawn goes
|
|
367
|
+
as [integer]^{n}, where n > 0. Specifically, it's
|
|
368
|
+
|
|
369
|
+
CDF(x) = (x^{n} - lo^{n}) / (hi^{n} - lo^{n})
|
|
370
|
+
|
|
371
|
+
n = 1 yields a uniform distribution; n > 1 favours larger
|
|
372
|
+
integers, n < 1 favours smaller integers.
|
|
373
|
+
"""
|
|
374
|
+
if not 0 <= lo < hi:
|
|
375
|
+
raise ValueError("require 0 <= lo < hi: lo = %d, hi = %d" % (lo, hi))
|
|
376
|
+
if n <= 0.:
|
|
377
|
+
raise ValueError("n <= 0: %g" % n)
|
|
378
|
+
elif n == 1.:
|
|
379
|
+
# special case for uniform distribution
|
|
380
|
+
try:
|
|
381
|
+
lnP = math.log(1. / (hi - lo))
|
|
382
|
+
except ValueError:
|
|
383
|
+
raise ValueError("[lo, hi) domain error")
|
|
384
|
+
hi -= 1
|
|
385
|
+
rnd = random.randint
|
|
386
|
+
while 1:
|
|
387
|
+
yield rnd(lo, hi), lnP
|
|
388
|
+
|
|
389
|
+
# CDF evaluated at index boundaries
|
|
390
|
+
lnP = numpy.arange(lo, hi + 1, dtype = "double")**n
|
|
391
|
+
lnP -= lnP[0]
|
|
392
|
+
lnP /= lnP[-1]
|
|
393
|
+
# differences give probabilities
|
|
394
|
+
lnP = tuple(numpy.log(lnP[1:] - lnP[:-1]))
|
|
395
|
+
if numpy.isinf(lnP).any():
|
|
396
|
+
raise ValueError("[lo, hi) domain error")
|
|
397
|
+
|
|
398
|
+
beta = lo**n / (hi**n - lo**n)
|
|
399
|
+
n = 1. / n
|
|
400
|
+
alpha = hi / (1. + beta)**n
|
|
401
|
+
flr = math.floor
|
|
402
|
+
rnd = random.random
|
|
403
|
+
while 1:
|
|
404
|
+
index = int(flr(alpha * (rnd() + beta)**n))
|
|
405
|
+
# the tuple look-up provides the second part of the
|
|
406
|
+
# range safety check on index
|
|
407
|
+
assert index >= lo
|
|
408
|
+
yield index, lnP[index - lo]
|