PyCBC 2.9.0__tar.gz → 2.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (773) hide show
  1. {PyCBC-2.9.0 → pycbc-2.10.0}/PKG-INFO +43 -7
  2. {PyCBC-2.9.0 → pycbc-2.10.0}/PyCBC.egg-info/PKG-INFO +43 -7
  3. {PyCBC-2.9.0 → pycbc-2.10.0}/PyCBC.egg-info/SOURCES.txt +4 -0
  4. {PyCBC-2.9.0 → pycbc-2.10.0}/PyCBC.egg-info/requires.txt +1 -1
  5. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/hwinj/pycbc_generate_hwinj +2 -2
  6. pycbc-2.10.0/bin/inference/pycbc_inference_create_calibration_config +253 -0
  7. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_extract_samples +109 -9
  8. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_posterior +16 -1
  9. pycbc-2.10.0/bin/inference/pycbc_inference_savage_dickey +254 -0
  10. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_singles_timefreq +4 -2
  11. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_singles_vs_params +4 -1
  12. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_banksim +6 -3
  13. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_banksim_combine_banks +3 -3
  14. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_banksim_match_combine +3 -3
  15. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_banksim_skymax +6 -3
  16. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_hdf5_splitbank +30 -29
  17. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_make_sky_grid +5 -9
  18. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_multi_inspiral +55 -17
  19. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_single_template +1 -2
  20. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_make_offline_grb_workflow +13 -15
  21. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_page_tables +32 -17
  22. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_plot_injs_results +162 -87
  23. pycbc-2.10.0/bin/pygrb/pycbc_pygrb_plot_skygrid +172 -0
  24. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_results_workflow +19 -6
  25. pycbc-2.10.0/examples/inference/calibration_configuration_files/download_calibration_uncertainty_files_o1_o2_o3.sh +23 -0
  26. pycbc-2.10.0/examples/inference/calibration_configuration_files/generate_calibration_config.sh +9 -0
  27. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testNonspin2.sh +1 -1
  28. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/catalog/catalog.py +1 -0
  29. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/coordinates/space.py +3 -3
  30. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/cosmology.py +1 -2
  31. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/detector/ground.py +38 -0
  32. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/angular.py +4 -4
  33. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/arbitrary.py +1 -1
  34. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/bounded.py +2 -2
  35. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/joint.py +1 -1
  36. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/uniform.py +1 -1
  37. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/uniform_log.py +1 -1
  38. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/coinc.py +1 -1
  39. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/eventmgr.py +201 -68
  40. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/resample.py +1 -1
  41. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/__init__.py +2 -2
  42. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/base_hdf.py +6 -6
  43. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/base_mcmc.py +1 -1
  44. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/dynesty.py +1 -1
  45. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/__init__.py +6 -5
  46. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/base.py +3 -3
  47. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/gated_gaussian_noise.py +10 -6
  48. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/marginalized_gaussian_noise.py +24 -23
  49. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/relbin.py +1 -1
  50. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/base_mcmc.py +1 -1
  51. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inject/inject.py +147 -38
  52. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inject/injfilterrejector.py +152 -58
  53. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/io/gracedb.py +7 -1
  54. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/io/ligolw.py +2 -2
  55. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/str_utils.py +1 -1
  56. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/strain/recalibrate.py +107 -0
  57. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/strain/strain.py +81 -3
  58. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/bank_output_utils.py +1 -1
  59. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/coord_utils.py +3 -3
  60. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/timeseries.py +85 -0
  61. pycbc-2.10.0/pycbc/version.py +27 -0
  62. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/vetoes/chisq.py +5 -2
  63. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/vetoes/sgchisq.py +10 -5
  64. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/bank.py +1 -1
  65. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/generator.py +55 -38
  66. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/parameters.py +7 -2
  67. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/plugin.py +16 -16
  68. pycbc-2.10.0/pycbc/waveform/sinegauss.py +97 -0
  69. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/utils.py +1 -60
  70. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/waveform.py +18 -11
  71. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/waveform_modes.py +3 -1
  72. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/grb_utils.py +9 -2
  73. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/pegasus_workflow.py +15 -8
  74. {PyCBC-2.9.0 → pycbc-2.10.0}/setup.py +4 -8
  75. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_detector.py +36 -1
  76. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_fftw_openmp.py +16 -6
  77. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_io_gracedb.py +1 -1
  78. {PyCBC-2.9.0 → pycbc-2.10.0}/tox.ini +1 -7
  79. PyCBC-2.9.0/bin/pygrb/pycbc_pygrb_plot_skygrid +0 -102
  80. PyCBC-2.9.0/pycbc/version.py +0 -27
  81. PyCBC-2.9.0/pycbc/waveform/sinegauss.py +0 -40
  82. {PyCBC-2.9.0 → pycbc-2.10.0}/LICENSE +0 -0
  83. {PyCBC-2.9.0 → pycbc-2.10.0}/MANIFEST.in +0 -0
  84. {PyCBC-2.9.0 → pycbc-2.10.0}/PyCBC.egg-info/dependency_links.txt +0 -0
  85. {PyCBC-2.9.0 → pycbc-2.10.0}/PyCBC.egg-info/top_level.txt +0 -0
  86. {PyCBC-2.9.0 → pycbc-2.10.0}/README.md +0 -0
  87. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_add_statmap +0 -0
  88. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_apply_rerank +0 -0
  89. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_average_psd +0 -0
  90. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_bin_templates +0 -0
  91. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_bin_trigger_rates_dq +0 -0
  92. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_calculate_psd +0 -0
  93. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_coinc_findtrigs +0 -0
  94. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_coinc_hdfinjfind +0 -0
  95. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_coinc_mergetrigs +0 -0
  96. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_coinc_statmap +0 -0
  97. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_coinc_statmap_inj +0 -0
  98. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_combine_coincident_events +0 -0
  99. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_combine_statmap +0 -0
  100. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_cut_merge_triggers_to_tmpltbank +0 -0
  101. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_distribute_background_bins +0 -0
  102. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_dtphase +0 -0
  103. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_exclude_zerolag +0 -0
  104. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_fit_sngls_binned +0 -0
  105. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_fit_sngls_by_template +0 -0
  106. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_fit_sngls_over_multiparam +0 -0
  107. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_fit_sngls_over_param +0 -0
  108. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_fit_sngls_split_binned +0 -0
  109. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_followup_file +0 -0
  110. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_foreground_censor +0 -0
  111. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_get_loudest_params +0 -0
  112. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_make_bayestar_skymap +0 -0
  113. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_merge_psds +0 -0
  114. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_plot_kde_vals +0 -0
  115. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_prepare_xml_for_gracedb +0 -0
  116. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_reduce_template_bank +0 -0
  117. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_rerank_passthrough +0 -0
  118. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_sngls_findtrigs +0 -0
  119. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_sngls_pastro +0 -0
  120. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_sngls_statmap +0 -0
  121. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_sngls_statmap_inj +0 -0
  122. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_strip_injections +0 -0
  123. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_template_kde_calc +0 -0
  124. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_template_kde_max +0 -0
  125. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_template_recovery_hist +0 -0
  126. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/all_sky_search/pycbc_upload_single_event_to_gracedb +0 -0
  127. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/bank/pycbc_aligned_bank_cat +0 -0
  128. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/bank/pycbc_aligned_stoch_bank +0 -0
  129. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/bank/pycbc_bank_verification +0 -0
  130. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/bank/pycbc_brute_bank +0 -0
  131. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/bank/pycbc_coinc_bank2hdf +0 -0
  132. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/bank/pycbc_geom_aligned_2dstack +0 -0
  133. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/bank/pycbc_geom_aligned_bank +0 -0
  134. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/bank/pycbc_geom_nonspinbank +0 -0
  135. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/bank/pycbc_tmpltbank_to_chi_params +0 -0
  136. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/hwinj/pycbc_generate_hwinj_from_xml +0 -0
  137. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/hwinj/pycbc_insert_frame_hwinj +0 -0
  138. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/hwinj/pycbc_plot_hwinj +0 -0
  139. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference +0 -0
  140. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_create_fits +0 -0
  141. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_model_stats +0 -0
  142. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_monitor +0 -0
  143. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_acceptance_rate +0 -0
  144. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_acf +0 -0
  145. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_acl +0 -0
  146. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_dynesty_run +0 -0
  147. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_dynesty_traceplot +0 -0
  148. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_gelman_rubin +0 -0
  149. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_geweke +0 -0
  150. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_inj_recovery +0 -0
  151. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_mcmc_history +0 -0
  152. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_movie +0 -0
  153. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_pp +0 -0
  154. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_prior +0 -0
  155. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_samples +0 -0
  156. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_skymap +0 -0
  157. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_plot_thermodynamic_integrand +0 -0
  158. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_pp_table_summary +0 -0
  159. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_start_from_samples +0 -0
  160. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_inference_table_summary +0 -0
  161. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/pycbc_validate_test_posterior +0 -0
  162. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/inference/run_pycbc_inference +0 -0
  163. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/live/pycbc_live_collate_triggers +0 -0
  164. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/live/pycbc_live_collated_dq_trigger_rates +0 -0
  165. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/live/pycbc_live_combine_dq_trigger_rates +0 -0
  166. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/live/pycbc_live_combine_single_significance_fits +0 -0
  167. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/live/pycbc_live_plot_combined_single_significance_fits +0 -0
  168. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/live/pycbc_live_plot_single_significance_fits +0 -0
  169. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/live/pycbc_live_single_significance_fits +0 -0
  170. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/live/pycbc_live_supervise_collated_trigger_fits +0 -0
  171. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_foreground_minifollowup +0 -0
  172. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_injection_minifollowup +0 -0
  173. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_page_coincinfo +0 -0
  174. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_page_injinfo +0 -0
  175. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_page_snglinfo +0 -0
  176. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_plot_chigram +0 -0
  177. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_plot_trigger_timeseries +0 -0
  178. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_single_template_plot +0 -0
  179. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_sngl_minifollowup +0 -0
  180. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/minifollowups/pycbc_upload_prep_minifollowup +0 -0
  181. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_banksim_plot_eff_fitting_factor +0 -0
  182. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_banksim_plot_fitting_factors +0 -0
  183. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_banksim_table_point_injs +0 -0
  184. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_create_html_snippet +0 -0
  185. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_faithsim_plots +0 -0
  186. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_ifar_catalog +0 -0
  187. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_mass_area_plot +0 -0
  188. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_mchirp_plots +0 -0
  189. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_banktriggerrate +0 -0
  190. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_coinc_snrchi +0 -0
  191. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_dq_table +0 -0
  192. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_fars_vs_stat +0 -0
  193. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_foreground +0 -0
  194. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_foundmissed +0 -0
  195. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_ifar +0 -0
  196. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_injtable +0 -0
  197. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_recovery +0 -0
  198. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_segments +0 -0
  199. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_segplot +0 -0
  200. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_segtable +0 -0
  201. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_sensitivity +0 -0
  202. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_snrchi +0 -0
  203. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_snrifar +0 -0
  204. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_snrratehist +0 -0
  205. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_template_bin_table +0 -0
  206. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_versioning +0 -0
  207. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_page_vetotable +0 -0
  208. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_background_coincs +0 -0
  209. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_bank_bins +0 -0
  210. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_bank_compression +0 -0
  211. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_bank_corner +0 -0
  212. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_dq_flag_likelihood +0 -0
  213. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_dq_likelihood_vs_time +0 -0
  214. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_dq_percentiles +0 -0
  215. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_gate_triggers +0 -0
  216. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_gating +0 -0
  217. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_hist +0 -0
  218. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_multiifo_dtphase +0 -0
  219. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_psd_file +0 -0
  220. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_psd_timefreq +0 -0
  221. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_qscan +0 -0
  222. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_range +0 -0
  223. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_range_vs_mtot +0 -0
  224. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_throughput +0 -0
  225. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_trigrate +0 -0
  226. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_vt_ratio +0 -0
  227. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/plotting/pycbc_plot_waveform +0 -0
  228. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/population/pycbc_multiifo_pastro +0 -0
  229. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/population/pycbc_population_plots +0 -0
  230. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/population/pycbc_population_rates +0 -0
  231. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_compress_bank +0 -0
  232. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_condition_strain +0 -0
  233. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_convertinjfiletohdf +0 -0
  234. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_copy_output_map +0 -0
  235. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_create_injections +0 -0
  236. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_data_store +0 -0
  237. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_faithsim +0 -0
  238. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_faithsim_collect_results +0 -0
  239. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_fit_sngl_trigs +0 -0
  240. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_get_ffinal +0 -0
  241. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_gwosc_segment_query +0 -0
  242. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_hdf_splitinj +0 -0
  243. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_inj_cut +0 -0
  244. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_inspiral +0 -0
  245. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_inspiral_skymax +0 -0
  246. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_live +0 -0
  247. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_live_nagios_monitor +0 -0
  248. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_make_banksim +0 -0
  249. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_make_faithsim +0 -0
  250. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_make_html_page +0 -0
  251. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_make_skymap +0 -0
  252. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_merge_inj_hdf +0 -0
  253. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_optimal_snr +0 -0
  254. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_optimize_snr +0 -0
  255. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_process_sngls +0 -0
  256. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_randomize_inj_dist_by_optsnr +0 -0
  257. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_source_probability_offline +0 -0
  258. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_split_inspinj +0 -0
  259. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_splitbank +0 -0
  260. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_stageout_failed_workflow +0 -0
  261. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_submit_dax +0 -0
  262. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pycbc_upload_xml_to_gracedb +0 -0
  263. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_grb_inj_finder +0 -0
  264. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_grb_trig_cluster +0 -0
  265. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_grb_trig_combiner +0 -0
  266. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_efficiency +0 -0
  267. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_exclusion_dist_table +0 -0
  268. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_grb_info_table +0 -0
  269. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_minifollowups +0 -0
  270. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_plot_chisq_veto +0 -0
  271. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_plot_coh_ifosnr +0 -0
  272. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_plot_null_stats +0 -0
  273. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_plot_snr_timeseries +0 -0
  274. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/pygrb/pycbc_pygrb_plot_stats_distribution +0 -0
  275. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflow_comparisons/offline_search/pycbc_combine_injection_comparisons +0 -0
  276. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflow_comparisons/offline_search/pycbc_injection_set_comparison +0 -0
  277. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflow_comparisons/offline_search/pycbc_plot_injections_found_both_workflows +0 -0
  278. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflow_comparisons/offline_search/pycbc_plot_injections_missed_one_workflow +0 -0
  279. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflow_comparisons/offline_search/pycbc_plot_vt_ratio_vs_ifar +0 -0
  280. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_bank_compression_workflow +0 -0
  281. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_bank_verifier_workflow +0 -0
  282. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_faithsim_workflow +0 -0
  283. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_inference_inj_workflow +0 -0
  284. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_inference_plots_workflow +0 -0
  285. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_inference_workflow +0 -0
  286. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_offline_search_workflow +0 -0
  287. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_psd_estimation_workflow +0 -0
  288. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_sbank_workflow +0 -0
  289. {PyCBC-2.9.0 → pycbc-2.10.0}/bin/workflows/pycbc_make_uberbank_workflow +0 -0
  290. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/banksim/injection0.xml +0 -0
  291. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/banksim/run.sh +0 -0
  292. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/cal/foton_filter_esd_saturation/pycbc_check_esd_saturation.sh +0 -0
  293. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/cal/foton_filter_esd_saturation/pycbc_check_pcal_saturation.sh +0 -0
  294. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/cal/foton_filter_esd_saturation/run_pcal_saturation_example.sh +0 -0
  295. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/catalog/data.py +0 -0
  296. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/catalog/stat.py +0 -0
  297. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/catalog/what.py +0 -0
  298. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/dataquality/hwinj.py +0 -0
  299. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/dataquality/on.py +0 -0
  300. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/detector/ant.py +0 -0
  301. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/detector/custom.py +0 -0
  302. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/detector/delay.py +0 -0
  303. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/detector/loc.py +0 -0
  304. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/detector/travel.py +0 -0
  305. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/distributions/list_distributions.py +0 -0
  306. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/distributions/mass_examples.py +0 -0
  307. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/distributions/mchirp_q_from_uniform_m1m2_example.py +0 -0
  308. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/distributions/sampling_from_config_example.py +0 -0
  309. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/distributions/spin_examples.py +0 -0
  310. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/distributions/spin_spatial_distr_example.py +0 -0
  311. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/faith/injection0.xml +0 -0
  312. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/faith/pegasus_workflow_create.sh +0 -0
  313. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/faith/pegasus_workflow_submit.sh +0 -0
  314. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/faith/run.sh +0 -0
  315. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/filter/chisq.py +0 -0
  316. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/filter/fir.py +0 -0
  317. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/filter/pass.py +0 -0
  318. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/filter/snr.py +0 -0
  319. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/gw150914/audio.py +0 -0
  320. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/gw150914/gw150914_h1_snr.py +0 -0
  321. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/gw150914/gw150914_shape.py +0 -0
  322. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/analytic-normal2d/make_movie.sh +0 -0
  323. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/analytic-normal2d/plot.sh +0 -0
  324. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/analytic-normal2d/run.sh +0 -0
  325. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/bbh-injection/make_injection.sh +0 -0
  326. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/bbh-injection/run.sh +0 -0
  327. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/bbh-injection/run_test.sh +0 -0
  328. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/gw150914/plot.sh +0 -0
  329. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/gw150914/run.sh +0 -0
  330. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/gw150914/run_test.sh +0 -0
  331. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/hierarchical/make_injections.sh +0 -0
  332. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/hierarchical/run.sh +0 -0
  333. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/hierarchical/run_test.sh +0 -0
  334. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/lisa_smbhb_inj/injection_smbhb.sh +0 -0
  335. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/lisa_smbhb_inj/plot.sh +0 -0
  336. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/lisa_smbhb_inj/run.sh +0 -0
  337. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/lisa_smbhb_ldc/advanced_plot.py +0 -0
  338. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/lisa_smbhb_ldc/get.sh +0 -0
  339. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/lisa_smbhb_ldc/plot.sh +0 -0
  340. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/lisa_smbhb_ldc/run.sh +0 -0
  341. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/list_parameters.py +0 -0
  342. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/margtime/get.sh +0 -0
  343. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/margtime/run.sh +0 -0
  344. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/margtime/run_inj.sh +0 -0
  345. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/multisignal/get.sh +0 -0
  346. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/multisignal/make_injections.sh +0 -0
  347. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/multisignal/rel.sh +0 -0
  348. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/multisignal/run.sh +0 -0
  349. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/multisignal/single.sh +0 -0
  350. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/relative/get.sh +0 -0
  351. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/relative/plot.sh +0 -0
  352. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/relative/run.sh +0 -0
  353. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/relmarg/get.sh +0 -0
  354. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/relmarg/run.sh +0 -0
  355. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/samplers/run.sh +0 -0
  356. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/single/get.sh +0 -0
  357. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/single/plot.sh +0 -0
  358. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/single/run.sh +0 -0
  359. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/single/run_instant.sh +0 -0
  360. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inference/single/run_marg.sh +0 -0
  361. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inspiral/check_GW150914_detection.py +0 -0
  362. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inspiral/clean.sh +0 -0
  363. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/inspiral/run.sh +0 -0
  364. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/live/check_results.py +0 -0
  365. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/live/generate_injections.py +0 -0
  366. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/live/make_fit_coeffs.py +0 -0
  367. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/live/make_singles_significance_fits.py +0 -0
  368. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/live/run.sh +0 -0
  369. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/make_skymap/GW150914.sh +0 -0
  370. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/make_skymap/GW170817.sh +0 -0
  371. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/make_skymap/simulated_data.sh +0 -0
  372. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/multi_inspiral/check_faceon_faceaway_trigs.py +0 -0
  373. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/multi_inspiral/check_gw170817_trigs.py +0 -0
  374. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/multi_inspiral/clean.sh +0 -0
  375. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/multi_inspiral/faceon_faceaway.sh +0 -0
  376. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/multi_inspiral/gw170817_h.sh +0 -0
  377. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/multi_inspiral/gw170817_hl.sh +0 -0
  378. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/multi_inspiral/gw170817_hlv.sh +0 -0
  379. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/noise/frequency.py +0 -0
  380. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/noise/timeseries.py +0 -0
  381. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/overlap.py +0 -0
  382. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/psd/analytic.py +0 -0
  383. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/psd/estimate.py +0 -0
  384. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/psd/read.py +0 -0
  385. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/search/bank.sh +0 -0
  386. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/search/check_job.py +0 -0
  387. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/search/gen.sh +0 -0
  388. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/search/get.sh +0 -0
  389. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/search/master.sh +0 -0
  390. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/search/stats.sh +0 -0
  391. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/search/submit.sh +0 -0
  392. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/bank_workflow_test/gen.sh +0 -0
  393. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/cleanOutput.sh +0 -0
  394. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/compress_workflow/gen.sh +0 -0
  395. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/make_cache.sh +0 -0
  396. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testAligned.sh +0 -0
  397. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testAligned2.sh +0 -0
  398. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testAligned3.sh +0 -0
  399. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testNonspin.sh +0 -0
  400. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testNonspin3.sh +0 -0
  401. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testStoch.sh +0 -0
  402. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testStoch2.sh +0 -0
  403. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testStoch3.sh +0 -0
  404. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/tmpltbank/testStoch4.sh +0 -0
  405. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/waveform/add_waveform.py +0 -0
  406. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/waveform/higher_modes.py +0 -0
  407. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/waveform/match_waveform.py +0 -0
  408. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/waveform/plot_detwaveform.py +0 -0
  409. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/waveform/plot_fd_td.py +0 -0
  410. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/waveform/plot_freq.py +0 -0
  411. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/waveform/plot_phase.py +0 -0
  412. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/waveform/plot_waveform.py +0 -0
  413. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/waveform/what_waveform.py +0 -0
  414. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/data_checker/daily_test.py +0 -0
  415. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/data_checker/get_data_example.py +0 -0
  416. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/data_checker/run_daily_test.sh +0 -0
  417. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/data_checker/run_get_data_example.sh +0 -0
  418. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/dayhopecheck/dayhopecheck.py +0 -0
  419. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/dayhopecheck/run_dayhopecheck.sh +0 -0
  420. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/generic/multilevel_subworkflow_data/run.sh +0 -0
  421. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/generic/multilevel_subworkflow_data/simple.py +0 -0
  422. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/generic/simple_subworkflow_data/run.sh +0 -0
  423. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/generic/simple_subworkflow_data/simple.py +0 -0
  424. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/inference/bbh_inj-dynesty/create_inj_workflow.sh +0 -0
  425. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/inference/gw150914_gw170814-dynesty/create_workflow.sh +0 -0
  426. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/inference/gw150914_gw170814-emcee_pt/create_workflow.sh +0 -0
  427. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/inference/small_test/gen.sh +0 -0
  428. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/pygrb/ER7/run_er7_pygrb_offline.sh +0 -0
  429. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/pygrb/ER8/run_er8_pygrb_offline.sh +0 -0
  430. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/pygrb/ER8/run_er8_pygrb_online.sh +0 -0
  431. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/pygrb/S6/run_s6_pygrb.sh +0 -0
  432. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/quickstart/run.sh +0 -0
  433. {PyCBC-2.9.0 → pycbc-2.10.0}/examples/workflow/quickstart/simple.py +0 -0
  434. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/__init__.py +0 -0
  435. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/_version.py +0 -0
  436. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/_version_helper.py +0 -0
  437. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/bin_utils.py +0 -0
  438. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/boundaries.py +0 -0
  439. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/catalog/__init__.py +0 -0
  440. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/conversions.py +0 -0
  441. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/coordinates/__init__.py +0 -0
  442. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/coordinates/base.py +0 -0
  443. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/detector/__init__.py +0 -0
  444. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/detector/space.py +0 -0
  445. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/__init__.py +0 -0
  446. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/constraints.py +0 -0
  447. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/external.py +0 -0
  448. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/fixedsamples.py +0 -0
  449. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/gaussian.py +0 -0
  450. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/mass.py +0 -0
  451. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/power_law.py +0 -0
  452. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/qnm.py +0 -0
  453. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/sky_location.py +0 -0
  454. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/spins.py +0 -0
  455. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/distributions/utils.py +0 -0
  456. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/dq.py +0 -0
  457. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/__init__.py +0 -0
  458. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/coherent.py +0 -0
  459. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/coinc_rate.py +0 -0
  460. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/cuts.py +0 -0
  461. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/eventmgr_cython.pyx +0 -0
  462. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/ranking.py +0 -0
  463. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/significance.py +0 -0
  464. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/simd_threshold_ccode.cpp +0 -0
  465. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/simd_threshold_cython.pyx +0 -0
  466. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/single.py +0 -0
  467. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/stat.py +0 -0
  468. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/threshold_cpu.py +0 -0
  469. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/threshold_cuda.py +0 -0
  470. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/threshold_cupy.py +0 -0
  471. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/trigger_fits.py +0 -0
  472. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/triggers.py +0 -0
  473. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/events/veto.py +0 -0
  474. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/__init__.py +0 -0
  475. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/backend_cpu.py +0 -0
  476. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/backend_cuda.py +0 -0
  477. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/backend_cupy.py +0 -0
  478. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/backend_mkl.py +0 -0
  479. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/backend_support.py +0 -0
  480. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/class_api.py +0 -0
  481. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/core.py +0 -0
  482. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/cuda_pyfft.py +0 -0
  483. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/cufft.py +0 -0
  484. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/cupyfft.py +0 -0
  485. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/fft_callback.py +0 -0
  486. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/fftw.py +0 -0
  487. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/fftw_pruned.py +0 -0
  488. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/fftw_pruned_cython.pyx +0 -0
  489. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/func_api.py +0 -0
  490. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/mkl.py +0 -0
  491. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/npfft.py +0 -0
  492. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/fft/parser_support.py +0 -0
  493. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/__init__.py +0 -0
  494. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/autocorrelation.py +0 -0
  495. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/fotonfilter.py +0 -0
  496. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/matchedfilter.py +0 -0
  497. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/matchedfilter_cpu.pyx +0 -0
  498. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/matchedfilter_cuda.py +0 -0
  499. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/matchedfilter_cupy.py +0 -0
  500. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/matchedfilter_numpy.py +0 -0
  501. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/qtransform.py +0 -0
  502. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/simd_correlate.py +0 -0
  503. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/simd_correlate_ccode.cpp +0 -0
  504. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/simd_correlate_cython.pyx +0 -0
  505. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/filter/zpk.py +0 -0
  506. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/frame/__init__.py +0 -0
  507. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/frame/frame.py +0 -0
  508. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/frame/gwosc.py +0 -0
  509. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/frame/store.py +0 -0
  510. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/__init__.py +0 -0
  511. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/burn_in.py +0 -0
  512. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/entropy.py +0 -0
  513. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/evidence.py +0 -0
  514. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/gelman_rubin.py +0 -0
  515. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/geweke.py +0 -0
  516. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/base_multitemper.py +0 -0
  517. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/base_nested_sampler.py +0 -0
  518. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/base_sampler.py +0 -0
  519. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/cpnest.py +0 -0
  520. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/emcee.py +0 -0
  521. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/emcee_pt.py +0 -0
  522. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/epsie.py +0 -0
  523. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/multinest.py +0 -0
  524. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/nessai.py +0 -0
  525. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/posterior.py +0 -0
  526. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/ptemcee.py +0 -0
  527. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/snowline.py +0 -0
  528. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/txt.py +0 -0
  529. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/io/ultranest.py +0 -0
  530. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/jump/__init__.py +0 -0
  531. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/jump/angular.py +0 -0
  532. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/jump/bounded_normal.py +0 -0
  533. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/jump/discrete.py +0 -0
  534. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/jump/normal.py +0 -0
  535. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/analytic.py +0 -0
  536. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/base_data.py +0 -0
  537. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/brute_marg.py +0 -0
  538. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/data_utils.py +0 -0
  539. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/gaussian_noise.py +0 -0
  540. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/hierarchical.py +0 -0
  541. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/relbin_cpu.pyx +0 -0
  542. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/single_template.py +0 -0
  543. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/models/tools.py +0 -0
  544. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/option_utils.py +0 -0
  545. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/__init__.py +0 -0
  546. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/base.py +0 -0
  547. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/base_cube.py +0 -0
  548. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/base_multitemper.py +0 -0
  549. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/cpnest.py +0 -0
  550. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/dummy.py +0 -0
  551. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/dynesty.py +0 -0
  552. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/emcee.py +0 -0
  553. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/emcee_pt.py +0 -0
  554. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/epsie.py +0 -0
  555. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/games.py +0 -0
  556. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/multinest.py +0 -0
  557. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/nessai.py +0 -0
  558. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/ptemcee.py +0 -0
  559. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/refine.py +0 -0
  560. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/snowline.py +0 -0
  561. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inference/sampler/ultranest.py +0 -0
  562. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/inject/__init__.py +0 -0
  563. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/io/__init__.py +0 -0
  564. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/io/hdf.py +0 -0
  565. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/io/live.py +0 -0
  566. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/io/record.py +0 -0
  567. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/libutils.py +0 -0
  568. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/live/__init__.py +0 -0
  569. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/live/significance_fits.py +0 -0
  570. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/live/snr_optimizer.py +0 -0
  571. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/live/supervision.py +0 -0
  572. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/mchirp_area.py +0 -0
  573. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/neutron_stars/__init__.py +0 -0
  574. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/neutron_stars/eos_utils.py +0 -0
  575. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/neutron_stars/ns_data/equil_2H.dat +0 -0
  576. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/neutron_stars/pg_isso_solver.py +0 -0
  577. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/noise/__init__.py +0 -0
  578. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/noise/gaussian.py +0 -0
  579. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/noise/reproduceable.py +0 -0
  580. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/opt.py +0 -0
  581. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/pnutils.py +0 -0
  582. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/pool.py +0 -0
  583. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/population/__init__.py +0 -0
  584. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/population/fgmc_functions.py +0 -0
  585. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/population/fgmc_laguerre.py +0 -0
  586. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/population/fgmc_plots.py +0 -0
  587. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/population/live_pastro.py +0 -0
  588. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/population/live_pastro_utils.py +0 -0
  589. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/population/population_models.py +0 -0
  590. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/population/rates_functions.py +0 -0
  591. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/population/scale_injections.py +0 -0
  592. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/psd/__init__.py +0 -0
  593. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/psd/analytical.py +0 -0
  594. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/psd/analytical_space.py +0 -0
  595. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/psd/estimate.py +0 -0
  596. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/psd/read.py +0 -0
  597. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/psd/variation.py +0 -0
  598. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/rate.py +0 -0
  599. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/__init__.py +0 -0
  600. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/color.py +0 -0
  601. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/dq.py +0 -0
  602. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/followup.py +0 -0
  603. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/layout.py +0 -0
  604. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/metadata.py +0 -0
  605. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/mpld3_utils.py +0 -0
  606. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/plot.py +0 -0
  607. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/psd.py +0 -0
  608. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/pygrb_plotting_utils.py +0 -0
  609. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/pygrb_postprocessing_utils.py +0 -0
  610. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/render.py +0 -0
  611. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/scatter_histograms.py +0 -0
  612. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/snr.py +0 -0
  613. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/css/bootstrap/3.3.2/bootstrap.min.css +0 -0
  614. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/css/bootstrap.min.css +0 -0
  615. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/css/fancybox/2.1.5/jquery.fancybox.css +0 -0
  616. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/css/pycbc/orange.css +0 -0
  617. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/css/pycbc/red.css +0 -0
  618. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Light.css +0 -0
  619. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Light.eot +0 -0
  620. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Light.html +0 -0
  621. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Light.ttf +0 -0
  622. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Light.woff +0 -0
  623. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Semibold.css +0 -0
  624. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Semibold.eot +0 -0
  625. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Semibold.html +0 -0
  626. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Semibold.ttf +0 -0
  627. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/fonts/Lato-Semibold.woff +0 -0
  628. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/js/bootstrap/3.3.2/bootstrap.min.js +0 -0
  629. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/js/bootstrap.min.js +0 -0
  630. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/js/fancybox/2.1.5/fancybox-orange.js +0 -0
  631. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/js/fancybox/2.1.5/jquery.fancybox.js +0 -0
  632. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/js/fancybox/2.1.5/jquery.fancybox.pack.js +0 -0
  633. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/js/jquery/1.10.2/jquery-1.10.2.min.js +0 -0
  634. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/js/jquery/1.10.2/jquery.mousewheel-3.0.6.pack.js +0 -0
  635. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/static/js/jquery.min.js +0 -0
  636. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/table_utils.py +0 -0
  637. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/templates/files/file_default.html +0 -0
  638. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/templates/files/file_glitchgram.html +0 -0
  639. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/templates/files/file_img.html +0 -0
  640. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/templates/files/file_pre.html +0 -0
  641. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/templates/files/file_tmplt.html +0 -0
  642. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/templates/orange.html +0 -0
  643. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/templates/red.html +0 -0
  644. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/templates/wells/sitemap.html +0 -0
  645. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/templates/wells/two_column.html +0 -0
  646. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/results/versioning.py +0 -0
  647. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/scheme.py +0 -0
  648. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/sensitivity.py +0 -0
  649. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/strain/__init__.py +0 -0
  650. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/strain/calibration.py +0 -0
  651. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/strain/gate.py +0 -0
  652. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/strain/lines.py +0 -0
  653. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/__init__.py +0 -0
  654. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/bank_conversions.py +0 -0
  655. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/brute_force_methods.py +0 -0
  656. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/calc_moments.py +0 -0
  657. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/lambda_mapping.py +0 -0
  658. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/lattice_utils.py +0 -0
  659. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/option_utils.py +0 -0
  660. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/partitioned_bank.py +0 -0
  661. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/tmpltbank/sky_grid.py +0 -0
  662. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/transforms.py +0 -0
  663. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/__init__.py +0 -0
  664. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/aligned.py +0 -0
  665. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/array.py +0 -0
  666. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/array_cpu.pyx +0 -0
  667. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/array_cuda.py +0 -0
  668. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/array_cupy.py +0 -0
  669. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/config.py +0 -0
  670. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/frequencyseries.py +0 -0
  671. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/types/optparse.py +0 -0
  672. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/vetoes/__init__.py +0 -0
  673. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/vetoes/autochisq.py +0 -0
  674. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/vetoes/bank_chisq.py +0 -0
  675. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/vetoes/chisq_cpu.pyx +0 -0
  676. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/vetoes/chisq_cuda.py +0 -0
  677. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/vetoes/chisq_cupy.py +0 -0
  678. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/SpinTaylorF2.py +0 -0
  679. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/__init__.py +0 -0
  680. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/compress.py +0 -0
  681. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/decompress_cpu.py +0 -0
  682. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/decompress_cpu_ccode.cpp +0 -0
  683. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/decompress_cpu_cython.pyx +0 -0
  684. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/decompress_cuda.py +0 -0
  685. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/decompress_cupy.py +0 -0
  686. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/multiband.py +0 -0
  687. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/nltides.py +0 -0
  688. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/premerger.py +0 -0
  689. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/pycbc_phenomC_tmplt.py +0 -0
  690. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/ringdown.py +0 -0
  691. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/spa_tmplt.py +0 -0
  692. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/spa_tmplt_cpu.pyx +0 -0
  693. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/spa_tmplt_cuda.py +0 -0
  694. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/spa_tmplt_cupy.py +0 -0
  695. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/supernovae.py +0 -0
  696. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/utils_cpu.pyx +0 -0
  697. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/utils_cuda.py +0 -0
  698. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/waveform/utils_cupy.py +0 -0
  699. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/__init__.py +0 -0
  700. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/coincidence.py +0 -0
  701. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/configparser_test.py +0 -0
  702. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/configuration.py +0 -0
  703. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/core.py +0 -0
  704. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/datafind.py +0 -0
  705. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/dq.py +0 -0
  706. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/inference_followups.py +0 -0
  707. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/injection.py +0 -0
  708. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/jobsetup.py +0 -0
  709. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/matched_filter.py +0 -0
  710. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/minifollowups.py +0 -0
  711. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/pegasus_files/pegasus-properties.conf +0 -0
  712. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/pegasus_sites.py +0 -0
  713. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/plotting.py +0 -0
  714. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/psd.py +0 -0
  715. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/psdfiles.py +0 -0
  716. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/segment.py +0 -0
  717. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/splittable.py +0 -0
  718. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/tmpltbank.py +0 -0
  719. {PyCBC-2.9.0 → pycbc-2.10.0}/pycbc/workflow/versioning.py +0 -0
  720. {PyCBC-2.9.0 → pycbc-2.10.0}/pyproject.toml +0 -0
  721. {PyCBC-2.9.0 → pycbc-2.10.0}/pytest.ini +0 -0
  722. {PyCBC-2.9.0 → pycbc-2.10.0}/setup.cfg +0 -0
  723. {PyCBC-2.9.0 → pycbc-2.10.0}/test/bankvetotest.py +0 -0
  724. {PyCBC-2.9.0 → pycbc-2.10.0}/test/fft_base.py +0 -0
  725. {PyCBC-2.9.0 → pycbc-2.10.0}/test/lalsim.py +0 -0
  726. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_array.py +0 -0
  727. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_array_lal.py +0 -0
  728. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_autochisq.py +0 -0
  729. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_bhspec.py +0 -0
  730. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_calibration.py +0 -0
  731. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_chisq.py +0 -0
  732. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_coinc_stat.py +0 -0
  733. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_conversions.py +0 -0
  734. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_coordinates_space.py +0 -0
  735. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_correlate.py +0 -0
  736. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_cuts.py +0 -0
  737. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_distributions.py +0 -0
  738. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_dq.py +0 -0
  739. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_fft_mkl_threaded.py +0 -0
  740. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_fft_unthreaded.py +0 -0
  741. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_fftw_pthreads.py +0 -0
  742. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_frame.py +0 -0
  743. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_frequencyseries.py +0 -0
  744. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_infmodel.py +0 -0
  745. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_injection.py +0 -0
  746. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_live_coinc_compare.py +0 -0
  747. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_matchedfilter.py +0 -0
  748. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_noise.py +0 -0
  749. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_pnutils.py +0 -0
  750. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_psd.py +0 -0
  751. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_resample.py +0 -0
  752. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_schemes.py +0 -0
  753. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_significance_module.py +0 -0
  754. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_skymax.py +0 -0
  755. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_spatmplt.py +0 -0
  756. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_strain.py +0 -0
  757. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_threshold.py +0 -0
  758. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_timeseries.py +0 -0
  759. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_tmpltbank.py +0 -0
  760. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_transforms.py +0 -0
  761. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_waveform.py +0 -0
  762. {PyCBC-2.9.0 → pycbc-2.10.0}/test/test_waveform_utils.py +0 -0
  763. {PyCBC-2.9.0 → pycbc-2.10.0}/test/utils.py +0 -0
  764. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/benchmarking/absolute_times.py +0 -0
  765. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/static/hooks/hook-pycbc.py +0 -0
  766. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/static/runtime-scipy.py +0 -0
  767. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/static/runtime-tkinter.py +0 -0
  768. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/timing/arr_perf.py +0 -0
  769. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/timing/banksim/banksim.py +0 -0
  770. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/timing/correlate_perf.py +0 -0
  771. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/timing/fft_perf.py +0 -0
  772. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/timing/match_perf.py +0 -0
  773. {PyCBC-2.9.0 → pycbc-2.10.0}/tools/timing/wav_perf.py +0 -0
@@ -1,28 +1,64 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: PyCBC
3
- Version: 2.9.0
3
+ Version: 2.10.0
4
4
  Summary: Core library to analyze gravitational-wave data, find signals, and study their parameters.
5
5
  Home-page: http://pycbc.org/
6
- Download-URL: https://github.com/gwastro/pycbc/tarball/v2.9.0
6
+ Download-URL: https://github.com/gwastro/pycbc/tarball/v2.10.0
7
7
  Author: The PyCBC team
8
8
  Author-email: alex.nitz@gmail.org
9
9
  Keywords: ligo,physics,gravity,signal processing,gravitational waves
10
10
  Classifier: Programming Language :: Python
11
- Classifier: Programming Language :: Python :: 3.9
12
- Classifier: Programming Language :: Python :: 3.10
13
11
  Classifier: Programming Language :: Python :: 3.11
14
12
  Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
15
14
  Classifier: Intended Audience :: Science/Research
16
15
  Classifier: Natural Language :: English
17
16
  Classifier: Topic :: Scientific/Engineering
18
17
  Classifier: Topic :: Scientific/Engineering :: Astronomy
19
18
  Classifier: Topic :: Scientific/Engineering :: Physics
20
19
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
21
- Requires-Python: >=3.9
20
+ Requires-Python: >=3.11
22
21
  Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: numpy>=1.16.0
24
+ Requires-Dist: cython>=0.29
25
+ Requires-Dist: numpy!=1.19.0,!=2.2.2,>=1.16.0
26
+ Requires-Dist: scipy>=0.16.0
27
+ Requires-Dist: astropy!=4.0.5,!=4.2.1,>=2.0.3
28
+ Requires-Dist: matplotlib>=1.5.1
29
+ Requires-Dist: mpld3>=0.3
30
+ Requires-Dist: pillow
31
+ Requires-Dist: h5py!=3.7.0,>=3.0.0
32
+ Requires-Dist: jinja2
33
+ Requires-Dist: Mako>=1.0.1
34
+ Requires-Dist: beautifulsoup4>=4.6.0
35
+ Requires-Dist: tqdm
36
+ Requires-Dist: setuptools
37
+ Requires-Dist: gwdatafind
38
+ Requires-Dist: pegasus-wms.api>=5.1.1
39
+ Requires-Dist: igwn-ligolw
40
+ Requires-Dist: igwn-segments
41
+ Requires-Dist: lalsuite!=7.2
42
+ Requires-Dist: lscsoft-glue>=1.59.3
43
+ Requires-Dist: pykerr
23
44
  Provides-Extra: cuda
45
+ Requires-Dist: pycuda>=2015.1; extra == "cuda"
46
+ Requires-Dist: scikit-cuda; extra == "cuda"
24
47
  Provides-Extra: igwn
25
- License-File: LICENSE
48
+ Requires-Dist: ciecplib>=0.7.0; extra == "igwn"
49
+ Dynamic: author
50
+ Dynamic: author-email
51
+ Dynamic: classifier
52
+ Dynamic: description
53
+ Dynamic: description-content-type
54
+ Dynamic: download-url
55
+ Dynamic: home-page
56
+ Dynamic: keywords
57
+ Dynamic: license-file
58
+ Dynamic: provides-extra
59
+ Dynamic: requires-dist
60
+ Dynamic: requires-python
61
+ Dynamic: summary
26
62
 
27
63
  ![GW150914](https://raw.githubusercontent.com/gwastro/pycbc-logo/master/pycbc_logo_name.png)
28
64
 
@@ -1,28 +1,64 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: PyCBC
3
- Version: 2.9.0
3
+ Version: 2.10.0
4
4
  Summary: Core library to analyze gravitational-wave data, find signals, and study their parameters.
5
5
  Home-page: http://pycbc.org/
6
- Download-URL: https://github.com/gwastro/pycbc/tarball/v2.9.0
6
+ Download-URL: https://github.com/gwastro/pycbc/tarball/v2.10.0
7
7
  Author: The PyCBC team
8
8
  Author-email: alex.nitz@gmail.org
9
9
  Keywords: ligo,physics,gravity,signal processing,gravitational waves
10
10
  Classifier: Programming Language :: Python
11
- Classifier: Programming Language :: Python :: 3.9
12
- Classifier: Programming Language :: Python :: 3.10
13
11
  Classifier: Programming Language :: Python :: 3.11
14
12
  Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
15
14
  Classifier: Intended Audience :: Science/Research
16
15
  Classifier: Natural Language :: English
17
16
  Classifier: Topic :: Scientific/Engineering
18
17
  Classifier: Topic :: Scientific/Engineering :: Astronomy
19
18
  Classifier: Topic :: Scientific/Engineering :: Physics
20
19
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
21
- Requires-Python: >=3.9
20
+ Requires-Python: >=3.11
22
21
  Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: numpy>=1.16.0
24
+ Requires-Dist: cython>=0.29
25
+ Requires-Dist: numpy!=1.19.0,!=2.2.2,>=1.16.0
26
+ Requires-Dist: scipy>=0.16.0
27
+ Requires-Dist: astropy!=4.0.5,!=4.2.1,>=2.0.3
28
+ Requires-Dist: matplotlib>=1.5.1
29
+ Requires-Dist: mpld3>=0.3
30
+ Requires-Dist: pillow
31
+ Requires-Dist: h5py!=3.7.0,>=3.0.0
32
+ Requires-Dist: jinja2
33
+ Requires-Dist: Mako>=1.0.1
34
+ Requires-Dist: beautifulsoup4>=4.6.0
35
+ Requires-Dist: tqdm
36
+ Requires-Dist: setuptools
37
+ Requires-Dist: gwdatafind
38
+ Requires-Dist: pegasus-wms.api>=5.1.1
39
+ Requires-Dist: igwn-ligolw
40
+ Requires-Dist: igwn-segments
41
+ Requires-Dist: lalsuite!=7.2
42
+ Requires-Dist: lscsoft-glue>=1.59.3
43
+ Requires-Dist: pykerr
23
44
  Provides-Extra: cuda
45
+ Requires-Dist: pycuda>=2015.1; extra == "cuda"
46
+ Requires-Dist: scikit-cuda; extra == "cuda"
24
47
  Provides-Extra: igwn
25
- License-File: LICENSE
48
+ Requires-Dist: ciecplib>=0.7.0; extra == "igwn"
49
+ Dynamic: author
50
+ Dynamic: author-email
51
+ Dynamic: classifier
52
+ Dynamic: description
53
+ Dynamic: description-content-type
54
+ Dynamic: download-url
55
+ Dynamic: home-page
56
+ Dynamic: keywords
57
+ Dynamic: license-file
58
+ Dynamic: provides-extra
59
+ Dynamic: requires-dist
60
+ Dynamic: requires-python
61
+ Dynamic: summary
26
62
 
27
63
  ![GW150914](https://raw.githubusercontent.com/gwastro/pycbc-logo/master/pycbc_logo_name.png)
28
64
 
@@ -104,6 +104,7 @@ bin/hwinj/pycbc_generate_hwinj_from_xml
104
104
  bin/hwinj/pycbc_insert_frame_hwinj
105
105
  bin/hwinj/pycbc_plot_hwinj
106
106
  bin/inference/pycbc_inference
107
+ bin/inference/pycbc_inference_create_calibration_config
107
108
  bin/inference/pycbc_inference_create_fits
108
109
  bin/inference/pycbc_inference_extract_samples
109
110
  bin/inference/pycbc_inference_model_stats
@@ -125,6 +126,7 @@ bin/inference/pycbc_inference_plot_samples
125
126
  bin/inference/pycbc_inference_plot_skymap
126
127
  bin/inference/pycbc_inference_plot_thermodynamic_integrand
127
128
  bin/inference/pycbc_inference_pp_table_summary
129
+ bin/inference/pycbc_inference_savage_dickey
128
130
  bin/inference/pycbc_inference_start_from_samples
129
131
  bin/inference/pycbc_inference_table_summary
130
132
  bin/inference/pycbc_validate_test_posterior
@@ -271,6 +273,8 @@ examples/inference/analytic-normal2d/run.sh
271
273
  examples/inference/bbh-injection/make_injection.sh
272
274
  examples/inference/bbh-injection/run.sh
273
275
  examples/inference/bbh-injection/run_test.sh
276
+ examples/inference/calibration_configuration_files/download_calibration_uncertainty_files_o1_o2_o3.sh
277
+ examples/inference/calibration_configuration_files/generate_calibration_config.sh
274
278
  examples/inference/gw150914/plot.sh
275
279
  examples/inference/gw150914/run.sh
276
280
  examples/inference/gw150914/run_test.sh
@@ -14,7 +14,7 @@ tqdm
14
14
  setuptools
15
15
  gwdatafind
16
16
  pegasus-wms.api>=5.1.1
17
- igwn-ligolw<2.1.0
17
+ igwn-ligolw
18
18
  igwn-segments
19
19
  lalsuite!=7.2
20
20
  lscsoft-glue>=1.59.3
@@ -40,7 +40,7 @@ from pycbc.filter import sigmasq
40
40
  from pycbc.types import TimeSeries
41
41
  from pycbc.types.optparse import convert_to_process_params_dict
42
42
  from pycbc.io.ligolw import create_process_table
43
- from pycbc.waveform import get_td_waveform, td_approximants, taper_timeseries
43
+ from pycbc.waveform import get_td_waveform, td_approximants
44
44
 
45
45
  def _empty_row(obj):
46
46
  """Create an empty sim_inspiral or sngl_inspiral row where the columns have
@@ -427,7 +427,7 @@ for ifo in opts.instruments:
427
427
 
428
428
  # taper waveform
429
429
  logging.info('Tapering strain for %s', ifo)
430
- strain = taper_timeseries(strain, tapermethod=sim.taper)
430
+ strain = strain.taper_timeseries(location=sim.taper)
431
431
 
432
432
  # FFT strain
433
433
  logging.info('FFT strain for %s', ifo)
@@ -0,0 +1,253 @@
1
+ #!/usr/bin/env python
2
+
3
+ # Copyright (C) 2023 Sumit K.
4
+ #
5
+ # This program is free software; you can redistribute it and/or modify it
6
+ # under the terms of the GNU General Public License as published by the
7
+ # Free Software Foundation; either version 3 of the License, or (at your
8
+ # option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful, but
11
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
13
+ # Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License along
16
+ # with this program; if not, write to the Free Software Foundation, Inc.,
17
+ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18
+
19
+ """Generate the calibration configuration file for a given event/GPS time.
20
+ Also plots the calibration envelop for each detector for sanity checks.
21
+ """
22
+
23
+ import os, argparse
24
+ import pycbc
25
+ import numpy
26
+ import matplotlib.pyplot as plt
27
+
28
+ from pycbc.types import MultiDetOptionAction
29
+ from pycbc.strain.recalibrate import get_calibration_files_O1_O2_O3, read_calibration_envelop_file
30
+
31
+
32
+ parser = argparse.ArgumentParser()
33
+
34
+ # command line usage
35
+ #parser = argparse.ArgumentParser(
36
+ # usage="pycbc_inference_create_calibration_config [--options]",
37
+ # description="Generate the calibration configuration files "
38
+ # "to be used woth pycbc_inference.")
39
+
40
+ pycbc.add_common_pycbc_options(parser)
41
+
42
+ parser.add_argument('--calibration-files-path',
43
+ help='Calibration envelope file path. It can be pre-'
44
+ 'downloaded or downloaded on the fly',
45
+ type=str)
46
+
47
+
48
+ parser.add_argument('--calibration-files', nargs='+', action=MultiDetOptionAction,
49
+ metavar = 'DETECTOR:COLUMN', type=str,
50
+ help='Calibration file for each detector',)
51
+
52
+ parser.add_argument('--ifos', nargs='+',
53
+ help='Specify ifos for the analysis')
54
+
55
+ parser.add_argument('--minimum-frequency', nargs='+', action=MultiDetOptionAction,
56
+ metavar='DETECTOR:COLUMN', type=float,
57
+ help='For each detector, provide minimum frequency for'
58
+ 'the analysis. The minimum frequency should be higher than'
59
+ 'the minimum frequency in calibration envelop file so that'
60
+ 'we do not extrapolate.')
61
+
62
+
63
+ parser.add_argument('--maximum-frequency', nargs='+', action=MultiDetOptionAction,
64
+ metavar='DETECTOR:COLUMN', type=float,
65
+ help='For each detector, provide maximum frequency for'
66
+ 'the analysis. The minimum frequency should be lower than'
67
+ 'the maximum frequency in calibration envelop file so that'
68
+ 'we do not extrapolate.')
69
+
70
+
71
+ parser.add_argument('--gps-time',
72
+ help='GPS time at which calibration configuration files'
73
+ 'are needed',
74
+ required=True, type=float)
75
+
76
+ parser.add_argument('--output-dir',
77
+ help="Path for the output calibration config files",
78
+ default='.', type=str)
79
+
80
+ parser.add_argument('--plots-dir',
81
+ help="Path for the 'sanity check' plots",
82
+ default='.', type=str)
83
+
84
+ parser.add_argument('--n-nodes',
85
+ help='Number of frequency nodes to be used',
86
+ default=10, type=int)
87
+
88
+ parser.add_argument('--correction-type', nargs='+', action=MultiDetOptionAction,
89
+ metavar='DETECTOR:COLUMN',
90
+ help="Provide the correction type for each detector",
91
+ required=True)
92
+
93
+ parser.add_argument('--plot-sanity-checks', help='Make some plots for sanity checks',
94
+ default=True, type=bool)
95
+
96
+ parser.add_argument('--tag', help='Provide your tag for naming calibration file',
97
+ default=None)
98
+
99
+
100
+ # parse the command line
101
+ opts = parser.parse_args()
102
+
103
+
104
+ if opts.calibration_files_path and opts.calibration_files:
105
+ raise ValueError("Only one of the arguments should be provided among:"
106
+ "--calibration-files-path and --calibration-files")
107
+
108
+
109
+ calibration_files_path = opts.calibration_files_path
110
+ min_freq_list = opts.minimum_frequency
111
+ max_freq_list = opts.maximum_frequency
112
+ correction_type_list = opts.correction_type
113
+ gps_time = opts.gps_time
114
+ output_dir = opts.output_dir
115
+ n_nodes = opts.n_nodes
116
+ if opts.tag is None:
117
+ tag = int(opts.gps_time)
118
+ else:
119
+ tag = opts.tag
120
+
121
+ for ifo in opts.ifos:
122
+ logging.info("Minimum %s frequency: %.3f", ifs, min_freq_list[ifo])
123
+
124
+ # Read calibration files
125
+ if opts.calibration_files:
126
+ calibration_files_dict = {}
127
+ for ifo in opts.ifos:
128
+ calibration_files_dict[ifo] = opts.calibration_files[ifo]
129
+ else:
130
+ calibration_files_dict = get_calibration_files_O1_O2_O3(opts.ifos, gps_time, calibration_files_path)
131
+
132
+ logging.debug("Calibration files dictionary: %s", calibration_files_dict)
133
+
134
+ input_dict = {}
135
+ for ii in range(len(opts.ifos)):
136
+ ifo = str(opts.ifos[ii])
137
+ input_dict['min_freq_%s'%ifo]=min_freq_list[ifo]
138
+ input_dict['max_freq_%s'%ifo]=max_freq_list[ifo]
139
+ input_dict['correction_type_%s'%ifo]=correction_type_list[ifo]
140
+ input_dict['calibration_envelop_file_%s'%ifo] = calibration_files_dict[ifo.upper()]
141
+ logging.debug("Input dictionary: %s", input_dict)
142
+ # Upper and Lower indices of detectors seems unnecessary
143
+ # but they are there to make sure the correct convention
144
+ # is followed for recalibration module in inference config
145
+ # file as well as in detector notation.
146
+ prior_dict = {}
147
+ for ifo in opts.ifos:
148
+ #ifo = ifo.lower()
149
+ min_freq = input_dict['min_freq_%s'%ifo]
150
+ max_freq = input_dict['max_freq_%s'%ifo]
151
+ correction_type = input_dict['correction_type_%s'%ifo]
152
+ calib_env_file = input_dict['calibration_envelop_file_%s'%ifo]
153
+ log_nodes, amplitude_median_nodes, amplitude_sigma_nodes, phase_median_nodes, phase_sigma_nodes = \
154
+ read_calibration_envelop_file(calib_env_file, correction_type,
155
+ min_freq, max_freq, n_nodes)
156
+ prior_dict['log_nodes_%s'%ifo] = log_nodes
157
+ prior_dict['amplitude_median_nodes_%s'%ifo] = amplitude_median_nodes
158
+ prior_dict['amplitude_sigma_nodes_%s'%ifo] = amplitude_sigma_nodes
159
+ prior_dict['phase_median_nodes_%s'%ifo] = phase_median_nodes
160
+ prior_dict['phase_sigma_nodes_%s'%ifo] =phase_sigma_nodes
161
+ logging.info('Done for detector %s', ifo)
162
+
163
+
164
+ calibration_filename = '%s/calibration-%s.ini'%(output_dir, tag)
165
+ if os.path.isfile(calibration_filename) != True:
166
+ text_file = open(calibration_filename, "w")
167
+ text_file.write("[calibration] \n")
168
+ for ifo in opts.ifos:
169
+ min_freq = input_dict['min_freq_%s'%ifo]
170
+ max_freq = input_dict['max_freq_%s'%ifo]
171
+ text_file.write("%s_model = cubic_spline \n"%ifo.lower())
172
+ text_file.write("%s_minimum_frequency = %d \n"%(ifo.lower(),min_freq))
173
+ text_file.write("%s_maximum_frequency = %d \n"%(ifo.lower(),max_freq))
174
+ text_file.write("%s_n_points = %d \n"%(ifo.lower(),n_nodes))
175
+ text_file.write(" \n")
176
+ text_file.write("[variable_params] \n")
177
+ for ifo in opts.ifos:
178
+ for ii in range(n_nodes):
179
+ text_file.write("recalib_amplitude_%s_%d = \n"%(ifo.lower(),ii))
180
+ text_file.write("recalib_phase_%s_%d = \n"%(ifo.lower(),ii))
181
+ text_file.write(" \n")
182
+ for ifo in opts.ifos:
183
+ for ii in range(n_nodes):
184
+ amplitude_median_nodes = prior_dict['amplitude_median_nodes_%s'%ifo][ii]
185
+ amplitude_sigma_nodes = prior_dict['amplitude_sigma_nodes_%s'%ifo][ii]
186
+ text_file.write("[prior-recalib_amplitude_%s_%d] \n"%(ifo.lower(),ii))
187
+ text_file.write("name = gaussian \n")
188
+ text_file.write("recalib_amplitude_%s_%d_mean = %.3g \n"%(ifo.lower(),ii,amplitude_median_nodes))
189
+ text_file.write("recalib_amplitude_%s_%d_var = %.3g \n"%(ifo.lower(),ii,amplitude_sigma_nodes**2))
190
+ text_file.write(" \n")
191
+ for ifo in opts.ifos:
192
+ for ii in range(n_nodes):
193
+ phase_median_nodes = prior_dict['phase_median_nodes_%s'%ifo][ii]
194
+ phase_sigma_nodes = prior_dict['phase_sigma_nodes_%s'%ifo][ii]
195
+ text_file.write("[prior-recalib_phase_%s_%d] \n"%(ifo.lower(),ii))
196
+ text_file.write("name = gaussian \n")
197
+ text_file.write("recalib_phase_%s_%d_mean = %.3g \n"%(ifo.lower(),ii,phase_median_nodes))
198
+ text_file.write("recalib_phase_%s_%d_var = %.3g \n"%(ifo.lower(),ii,phase_sigma_nodes**2))
199
+ text_file.write(" \n")
200
+ text_file.write(" \n")
201
+ text_file.write(" \n")
202
+ text_file.close()
203
+ else:
204
+ raise ValueError(
205
+ 'Calibration file already present. '
206
+ 'Either delete it or rename it. Overwriting '
207
+ 'this file is not allowed!!!'
208
+ )
209
+
210
+ # Sanity check plots
211
+ plots_dir = '%s/plots'%output_dir
212
+ os.system('mkdir -p %s'%plots_dir)
213
+ if opts.plot_sanity_checks:
214
+ for ifo in opts.ifos:
215
+ calib_env_path = input_dict['calibration_envelop_file_%s'%ifo]
216
+ min_freq = input_dict['min_freq_%s'%ifo]
217
+ max_freq = input_dict['max_freq_%s'%ifo]
218
+ log_nodes = prior_dict['log_nodes_%s'%ifo]
219
+ amp_median_nodes = prior_dict['amplitude_median_nodes_%s'%ifo]
220
+ amp_sigma_nodes = prior_dict['amplitude_sigma_nodes_%s'%ifo]
221
+ d1 = numpy.loadtxt(calib_env_path)
222
+ plt.figure(figsize=(8,5))
223
+ plt.plot(d1[:,0],d1[:,1],label=r'$\mu$')
224
+ plt.plot(d1[:,0],d1[:,3],label=r'$\mu-\sigma$')
225
+ plt.plot(d1[:,0],d1[:,5],label=r'$\mu+\sigma$')
226
+ plt.plot(numpy.exp(log_nodes),amp_median_nodes+1,'.',label=r'$\mu$(Prior)')
227
+ plt.plot(numpy.exp(log_nodes),amp_median_nodes+1-amp_sigma_nodes,'.',label=r'$\mu-\sigma$ (Prior)')
228
+ plt.plot(numpy.exp(log_nodes),amp_median_nodes+1+amp_sigma_nodes,'.',label=r'$\mu+\sigma$ (Prior)')
229
+ plt.xscale('log')
230
+ plt.xlabel('Frequency (Hz)')
231
+ plt.ylabel('Amplitude')
232
+ plt.title('Calibration envelop (Amplitude) for %s'%ifo)
233
+ plt.legend()
234
+ plt.savefig('%s/calibration_envelop_amplitude_%s_%s.png'%(plots_dir,tag,ifo))
235
+ plt.clf()
236
+
237
+ phase_median_nodes = prior_dict['phase_median_nodes_%s'%ifo]
238
+ phase_sigma_nodes = prior_dict['phase_sigma_nodes_%s'%ifo]
239
+ plt.figure(figsize=(8,5))
240
+ plt.plot(d1[:,0],d1[:,2],label=r'$\mu$')
241
+ plt.plot(d1[:,0],d1[:,4],label=r'$\mu-\sigma$')
242
+ plt.plot(d1[:,0],d1[:,6],label=r'$\mu+\sigma$')
243
+ plt.plot(numpy.exp(log_nodes),phase_median_nodes,'.',label=r'$\mu$ (Prior)')
244
+ plt.plot(numpy.exp(log_nodes),phase_median_nodes-phase_sigma_nodes,'.',label=r'$\mu-\sigma$ (Prior)')
245
+ plt.plot(numpy.exp(log_nodes),phase_median_nodes+phase_sigma_nodes,'.',label=r'$\mu+\sigma$')
246
+ plt.xscale('log')
247
+ plt.xlabel('Frequency (Hz)')
248
+ plt.ylabel('Phase')
249
+ plt.title('Calibration envelop (Phase) for %s'%ifo)
250
+ plt.legend()
251
+ plt.savefig('%s/calibration_envelop_phase_%s_%s.png'%(plots_dir,tag,ifo))
252
+ plt.clf()
253
+
@@ -43,6 +43,8 @@ import pycbc
43
43
  from pycbc.inference.io import (ResultsArgumentParser, results_from_cli,
44
44
  PosteriorFile, loadfile)
45
45
  from pycbc.inference.io.base_hdf import format_attr
46
+ from scipy.special import logsumexp
47
+ import warnings
46
48
 
47
49
 
48
50
  def isthesame(current_val, val):
@@ -83,6 +85,35 @@ parser.add_argument("--skip-groups", default=None, nargs="+",
83
85
  "to write all groups if only one file is provided, "
84
86
  "and all groups from the first file except "
85
87
  "sampler_info if multiple files are provided.")
88
+ parser.add_argument("--combine-via-sampling", action='store_true',
89
+ default=False,
90
+ help="Specify whether to combine the posteriors by "
91
+ "sampling. By default, extract_samples will dump all "
92
+ "samples from multiple inputs into one output file. "
93
+ "If this option is specified, the samples will "
94
+ "be randomly sampled with weighting based on the "
95
+ "evidence in each input. For example, if the "
96
+ "evidence of input 1 is twice that of input 2, "
97
+ "the resulting posterior file with this option "
98
+ "specified will have twice as many points from input "
99
+ "1 than input 2. The output will have the same "
100
+ "number of samples as the smallest input file. "
101
+ "An error is thrown if this option is specified and "
102
+ "any of the input files does not have a log_evidence "
103
+ "attribute (e.g., the file used a sampler like emcee "
104
+ "that does not report evidence). This option "
105
+ "assumes that the priors of all files do not "
106
+ "overlap; we cannot properly combine posteriors if "
107
+ "the priors do overlap.")
108
+ parser.add_argument("--mutually-exclusive-priors", action='store_true',
109
+ default=False,
110
+ help="If specifying --combine-via-sampling, specify "
111
+ "whether to treat priors as mutually exclusive. By "
112
+ "default, the provided input files are assumed to "
113
+ "have identical priors, and their evidences will be "
114
+ "averaged. If this option is specified, the priors "
115
+ "are assumed to be non-overlapping across files, and "
116
+ "their evidences will be summed together.")
86
117
 
87
118
  opts = parser.parse_args()
88
119
 
@@ -101,10 +132,52 @@ if len(opts.input_file) == 1:
101
132
  # convert samples to a dict in which the keys are the labels
102
133
  # also stack results if multiple files were provided
103
134
  if len(opts.input_file) > 1:
104
- samples = {labels[p]: numpy.concatenate([s[p] for s in samples])
105
- for p in params}
135
+ if opts.combine_via_sampling:
136
+ raw_samples = {labels[p]: numpy.concatenate([s[p] for s in samples])
137
+ for p in params}
138
+ logz_list = []
139
+ dlogz_list = []
140
+ len_list = []
141
+ raw_samps_list = []
142
+ weights_list = []
143
+ for file in opts.input_file:
144
+ fp = loadfile(file, 'r')
145
+ # get evidence from each file if possible
146
+ try:
147
+ logz, dlogz = fp.log_evidence
148
+ except KeyError:
149
+ raise ValueError(f"Cannot combine evidences; file {file} "
150
+ "does not have a log_evidence attr")
151
+ logz_list.append(logz)
152
+ dlogz_list.append(dlogz)
153
+ # get samples from each file
154
+ file_samps = fp.read_samples(list(fp['samples'].keys()))
155
+ raw_samps_list.append(file_samps)
156
+ # get the number of samples from each file
157
+ len_list.append(len(file_samps))
158
+ # compute sampling weights from evidences
159
+ logz_net = logsumexp(logz_list)
160
+ len_net = sum(len_list)
161
+ out_size = min(len_list)
162
+ for i in range(len(opts.input_file)):
163
+ # weight each file's samples according to logz
164
+ logwt = logz_list[i] - logz_net
165
+ weights_list.append([numpy.exp(logwt)/len_list[i] for j in
166
+ range(len_list[i])])
167
+ # randomly sample indices from all samples
168
+ weights = numpy.concatenate(weights_list)
169
+ idx = numpy.random.choice(int(len_net), size=out_size, replace=True,
170
+ p=weights)
171
+ samples = {param: raw_samples[param][idx] for param in
172
+ raw_samples.keys()}
173
+ else:
174
+ samples = {labels[p]: numpy.concatenate([s[p] for s in samples])
175
+ for p in params}
106
176
  else:
107
177
  samples = {labels[p]: samples[p] for p in params}
178
+ if opts.combine_via_sampling:
179
+ warnings.warn("Specified combine_via_sampling with only one input "
180
+ "file. This option will have no effect.")
108
181
 
109
182
  # create the file
110
183
  outtype = PosteriorFile.name
@@ -137,10 +210,13 @@ for fp in fps:
137
210
  skip_attrs = ['filetype', 'thin_start', 'thin_interval', 'thin_end',
138
211
  'thinned_by', 'cmd', 'resume_points', 'effective_nsamples',
139
212
  'run_start_time', 'run_end_time']
140
- # also skip evidence if multiple files are being combined, since that will
141
- # not be the same
213
+ # also skip evidence if multiple files are being combined; this will be handled
214
+ # via sampling if specified
142
215
  if len(opts.input_file) > 1:
143
216
  skip_attrs += ['log_evidence', 'dlog_evidence']
217
+
218
+ # make sure attrs are the same between files...
219
+ cat_params = False
144
220
  for fp in fps:
145
221
  for key in map(format_attr, fp.attrs):
146
222
  if key not in skip_attrs:
@@ -151,12 +227,36 @@ for fp in fps:
151
227
  out.attrs[key] = val
152
228
  current_val = format_attr(out.attrs[key])
153
229
  if not isthesame(current_val, val):
154
- raise ValueError("cannot combine all files; file attr {} is "
155
- "not the same across all files ({} vs {})"
156
- .format(key, current_val, val))
230
+ if key == 'remapped_params':
231
+ # ...unless it's remapped_params; just save first file's
232
+ # entries if they don't match between files
233
+ warnings.warn("WARNING: remapped_params metadata does not "
234
+ "match between files; saving metadata from "
235
+ "first file")
236
+ else:
237
+ raise ValueError("cannot combine all files; file attr {} is "
238
+ "not the same across all files ({} vs {})"
239
+ .format(key, current_val, val))
157
240
 
158
- # store what parameters were renamed
159
- out.attrs['remapped_params'] = list(labels.items())
241
+ # store what parameters were renamed (if not already saved above)
242
+ if not cat_params:
243
+ out.attrs['remapped_params'] = list(labels.items())
244
+
245
+ # write combined evidence and dlog evidence if combining via sampling
246
+ if opts.combine_via_sampling:
247
+ if len(opts.input_file) == 1:
248
+ # there's only one file; just return what's in the input
249
+ out.attrs['log_evidence'] = fps[0].log_evidence[0]
250
+ out.attrs['dlog_evidence'] = fps[0].log_evidence[1]
251
+ elif opts.mutually_exclusive_priors:
252
+ # add together the evidences; quadrature sum the residuals
253
+ out.attrs['log_evidence'] = logsumexp(logz_list)
254
+ out.attrs['dlog_evidence'] = numpy.sqrt(sum([i**2 for i in dlogz_list]))
255
+ else:
256
+ # average the evidences; quadrature sum and scale the residuals
257
+ n = len(opts.input_file)
258
+ out.attrs['log_evidence'] = logsumexp(logz_list) - numpy.log(n)
259
+ out.attrs['dlog_evidence'] = numpy.sqrt(sum([i**2 for i in dlogz_list])) / n
160
260
 
161
261
  # write the other groups using the first file
162
262
  fp = fps[0]
@@ -79,6 +79,11 @@ parser.add_argument("--plot-maxl", action="store_true", default=False,
79
79
  parser.add_argument('--legend-location', default='upper right',
80
80
  help='Where to put the legend (if multiple files are '
81
81
  'provided). Default is "upper right".')
82
+ parser.add_argument('--legend-bbox-to-anchor', default='(1.0, 1.0)',
83
+ help='Box that is used to position the legend in conjunction with loc.')
84
+ parser.add_argument('--legend-fontsize', default='medium',
85
+ help="The font size of legend. Default is 'medium'."
86
+ "Choose from int or {'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'}.")
82
87
  parser.add_argument('--dpi', type=int, default=200,
83
88
  help="Set the DPI of the plot. Default is 200.")
84
89
  # style option
@@ -113,6 +118,15 @@ if opts.plot_maxl:
113
118
  else:
114
119
  add_logl = False
115
120
 
121
+ # parse legend bbox
122
+ def parse_tuple(value):
123
+ try:
124
+ return tuple(map(float, value.strip("()").split(",")))
125
+ except Exception as e:
126
+ raise argparse.ArgumentTypeError(f"Invalid tuple format: {value}") from e
127
+
128
+ opts.legend_bbox_to_anchor = parse_tuple(opts.legend_bbox_to_anchor)
129
+
116
130
  # set logging
117
131
  pycbc.init_logging(opts.verbose)
118
132
 
@@ -358,7 +372,8 @@ if len(opts.input_file) > 1:
358
372
  else:
359
373
  addto = fig
360
374
  addto.legend(loc=opts.legend_location, handles=handles,
361
- labels=labels)
375
+ labels=labels, fontsize=opts.legend_fontsize,
376
+ bbox_to_anchor=opts.legend_bbox_to_anchor)
362
377
 
363
378
  # set DPI
364
379
  fig.set_dpi(opts.dpi)