threeML 2.4.3.dev1__tar.gz → 2.5.0.dev2__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 (293) hide show
  1. {threeml-2.4.3.dev1/threeML.egg-info → threeml-2.5.0.dev2}/PKG-INFO +15 -10
  2. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/README.md +2 -2
  3. threeml-2.5.0.dev2/pyproject.toml +138 -0
  4. threeml-2.5.0.dev2/setup.cfg +4 -0
  5. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/setup.py +11 -18
  6. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/__init__.py +59 -102
  7. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/_version.py +4 -5
  8. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/analysis_results.py +220 -339
  9. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/autoemcee_sampler.py +47 -68
  10. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/bayesian_analysis.py +60 -87
  11. threeml-2.5.0.dev2/threeML/bayesian/dynesty_sampler.py +360 -0
  12. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/emcee_sampler.py +33 -45
  13. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/multinest_sampler.py +13 -34
  14. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/nautilus_sampler.py +71 -50
  15. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/sampler_base.py +58 -98
  16. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/tutorial_material.py +14 -28
  17. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/ultranest_sampler.py +38 -55
  18. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/zeus_sampler.py +31 -47
  19. threeml-2.5.0.dev2/threeML/catalogs/Fermi.py +4 -0
  20. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/FermiGBM.py +28 -56
  21. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/FermiLAT.py +133 -128
  22. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/FermiLLE.py +4 -19
  23. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/Swift.py +40 -91
  24. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/VirtualObservatoryCatalog.py +33 -48
  25. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/catalog_utils.py +137 -146
  26. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/goodness_of_fit.py +26 -20
  27. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/joint_likelihood.py +196 -262
  28. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/joint_likelihood_set.py +52 -74
  29. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/likelihood_ratio_test.py +44 -83
  30. threeml-2.5.0.dev2/threeML/config/catalog_structure.py +43 -0
  31. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/config.py +0 -1
  32. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/config_structure.py +17 -7
  33. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/config_utils.py +24 -29
  34. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/fitting_structure.py +2 -3
  35. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/plotting_structure.py +5 -3
  36. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/plugin_structure.py +3 -0
  37. threeml-2.5.0.dev2/threeML/config/point_source_structure.py +13 -0
  38. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data_list.py +6 -15
  39. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/exceptions/custom_exceptions.py +4 -10
  40. threeml-2.5.0.dev2/threeML/io/__init__.py +15 -0
  41. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/calculate_flux.py +75 -143
  42. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/cern_root_utils/io_utils.py +6 -7
  43. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/cern_root_utils/tobject_to_numpy.py +5 -9
  44. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/configuration.py +0 -3
  45. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/detect_notebook.py +2 -6
  46. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/dict_with_pretty_print.py +4 -9
  47. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/download_from_ftp.py +6 -16
  48. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/download_from_http.py +32 -61
  49. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/file_utils.py +17 -40
  50. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/fits_file.py +18 -45
  51. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/get_heasarc_table_as_pandas.py +33 -43
  52. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/hdf5_utils.py +16 -28
  53. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/logging.py +27 -83
  54. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/network.py +6 -12
  55. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/package_data.py +18 -30
  56. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/cmap_cycle.py +13 -17
  57. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/data_residual_plot.py +35 -57
  58. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/light_curve_plots.py +13 -31
  59. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/model_plot.py +56 -158
  60. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/post_process_data_plots.py +71 -135
  61. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/step_plot.py +4 -10
  62. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/results_table.py +4 -8
  63. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/rich_display.py +0 -5
  64. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/serialization.py +3 -14
  65. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/suppress_stdout.py +2 -3
  66. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/table.py +2 -5
  67. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/uncertainty_formatter.py +24 -50
  68. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/ROOT_minimizer.py +32 -38
  69. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/grid_minimizer.py +31 -50
  70. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/minimization.py +170 -315
  71. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/minuit_minimizer.py +45 -67
  72. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/multinest_minimizer.py +13 -29
  73. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/pagmo_minimizer.py +13 -35
  74. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/scipy_minimizer.py +26 -62
  75. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/tutorial_material.py +29 -53
  76. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/parallel/parallel_client.py +47 -65
  77. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugin_prototype.py +49 -63
  78. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/DispersionSpectrumLike.py +59 -72
  79. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/FermiLATLike.py +106 -185
  80. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/FermipyLike.py +157 -271
  81. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/HAWCLike.py +90 -132
  82. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/OGIPLike.py +25 -45
  83. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/PhotometryLike.py +26 -76
  84. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/SpectrumLike.py +425 -554
  85. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/SwiftXRTLike.py +0 -1
  86. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/UnbinnedPoissonLike.py +34 -52
  87. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/UnresolvedExtendedXYLike.py +24 -56
  88. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/XYLike.py +85 -131
  89. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/experimental/CastroLike.py +37 -62
  90. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/experimental/SherpaLike.py +30 -31
  91. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/experimental/VERITASLike.py +51 -95
  92. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/random_variates.py +37 -34
  93. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/conftest.py +131 -109
  94. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/generate_pha.py +5 -1
  95. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_AAA_against_xspec.py +26 -36
  96. threeml-2.5.0.dev2/threeML/test/test_FermiLATLike.py +136 -0
  97. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_FermipyLike.py +32 -34
  98. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_UnresolvedExtendedXYLike.py +24 -19
  99. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_XYLike.py +21 -16
  100. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_analysis_results.py +31 -49
  101. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_basic.py +18 -25
  102. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_bayesian.py +33 -35
  103. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_catalogs.py +94 -12
  104. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_configuration.py +7 -29
  105. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_download_GBM_data.py +6 -11
  106. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_download_LAT_data.py +17 -18
  107. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_event_list.py +9 -22
  108. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_file_utils.py +7 -8
  109. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_fits_file.py +7 -9
  110. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_fitted_point_sources.py +12 -18
  111. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_generic.py +9 -21
  112. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_get_package_data.py +1 -2
  113. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_goodness_of_fit.py +2 -5
  114. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_hawc.py +22 -32
  115. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_histogram.py +13 -22
  116. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_joint_likelihood_set.py +8 -7
  117. threeml-2.5.0.dev2/threeML/test/test_minimizers.py +172 -0
  118. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_model_from_catalog.py +103 -94
  119. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_ogip.py +32 -31
  120. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_photometry_utils.py +14 -19
  121. threeml-2.5.0.dev2/threeML/test/test_plotting.py +68 -0
  122. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_plugin_loading.py +7 -8
  123. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_power_of_two_utils.py +4 -5
  124. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_response.py +30 -42
  125. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_spectrum_class.py +13 -21
  126. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_spectrumlike.py +15 -19
  127. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_time_energy_fit.py +5 -5
  128. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_time_interval.py +13 -40
  129. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_time_series.py +32 -49
  130. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_unbinned_poisson_like.py +7 -16
  131. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_verbosity.py +22 -15
  132. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/OGIP/pha.py +57 -104
  133. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/OGIP/response.py +206 -288
  134. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/bayesian_blocks.py +13 -33
  135. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/binner.py +41 -106
  136. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/__init__.py +3 -2
  137. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/fermi/gbm_data.py +63 -74
  138. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/fermi/lat_data.py +29 -65
  139. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/fermi/lat_transient_builder.py +403 -301
  140. threeml-2.5.0.dev2/threeML/utils/data_builders/fermi/test.py +24 -0
  141. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/time_series_builder.py +199 -352
  142. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_GBM/download_GBM_data.py +69 -117
  143. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_LAT/download_LAT_data.py +213 -229
  144. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_LAT/download_LLE_data.py +23 -35
  145. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/differentiation.py +7 -26
  146. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/fermi_relative_mission_time.py +14 -11
  147. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/fitted_objects/fitted_point_sources.py +43 -87
  148. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/fitted_objects/fitted_source_handler.py +40 -81
  149. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/histogram.py +9 -37
  150. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/interval.py +46 -123
  151. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/numba_utils.py +5 -4
  152. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/photometry/filter_library.py +6 -24
  153. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/photometry/filter_set.py +55 -64
  154. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/photometry/photometric_observation.py +47 -64
  155. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/polarization/binned_polarization.py +11 -20
  156. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/power_of_two_utils.py +6 -8
  157. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/progress_bar.py +18 -25
  158. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/binned_spectrum.py +58 -126
  159. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/binned_spectrum_set.py +5 -28
  160. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/pha_spectrum.py +125 -309
  161. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/share_spectrum.py +20 -12
  162. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/spectrum_likelihood.py +55 -68
  163. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/statistics/gammaln.py +3 -2
  164. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/statistics/likelihood_functions.py +38 -43
  165. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/statistics/stats_tools.py +62 -77
  166. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/step_parameter_generator.py +11 -22
  167. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/string_utils.py +2 -3
  168. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_interval.py +14 -38
  169. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/binned_spectrum_series.py +77 -127
  170. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/event_list.py +147 -203
  171. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/polynomial.py +104 -135
  172. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/time_series.py +162 -254
  173. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/unique_deterministic_tag.py +4 -3
  174. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2/threeML.egg-info}/PKG-INFO +15 -10
  175. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML.egg-info/SOURCES.txt +1 -1
  176. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML.egg-info/requires.txt +3 -1
  177. threeml-2.5.0.dev2/threeML.egg-info/top_level.txt +1 -0
  178. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/versioneer.py +919 -418
  179. threeml-2.4.3.dev1/setup.cfg +0 -79
  180. threeml-2.4.3.dev1/threeML/bayesian/dynesty_sampler.py +0 -667
  181. threeml-2.4.3.dev1/threeML/catalogs/Fermi.py +0 -913
  182. threeml-2.4.3.dev1/threeML/config/catalog_structure.py +0 -35
  183. threeml-2.4.3.dev1/threeML/config/point_source_structure.py +0 -17
  184. threeml-2.4.3.dev1/threeML/io/__init__.py +0 -5
  185. threeml-2.4.3.dev1/threeML/test/test_FermiLATLike.py +0 -113
  186. threeml-2.4.3.dev1/threeML/test/test_minimizers.py +0 -169
  187. threeml-2.4.3.dev1/threeML/test/test_plotting.py +0 -54
  188. threeml-2.4.3.dev1/threeML/utils/data_builders/fermi/test.py +0 -22
  189. threeml-2.4.3.dev1/threeML.egg-info/top_level.txt +0 -27
  190. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/LICENSE +0 -0
  191. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/MANIFEST.in +0 -0
  192. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/__init__.py +0 -0
  193. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/__init__.py +1 -1
  194. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/__init__.py +0 -0
  195. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/__init__.py +0 -0
  196. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bat/gbm_bat_joint_BAT.pha +0 -0
  197. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bat/gbm_bat_joint_BAT.rsp +0 -0
  198. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_b1_bkgspectra.bak +0 -0
  199. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_b1_srcspectra.pha +0 -0
  200. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_b1_weightedrsp.rsp +0 -0
  201. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n6_bkgspectra.bak +0 -0
  202. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n6_srcspectra.pha +0 -0
  203. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n6_weightedrsp.rsp +0 -0
  204. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n9_bkgspectra.bak +0 -0
  205. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n9_srcspectra.pha +0 -0
  206. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n9_weightedrsp.rsp +0 -0
  207. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/example_integral.pha +0 -0
  208. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/example_integral.rsp +0 -0
  209. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/example_integral_spi.pha +0 -0
  210. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/example_integral_spi.rsp +0 -0
  211. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_cspec_b0_bn080916009_v00.rsp2 +0 -0
  212. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_cspec_n3_bn080916009_v00.rsp2 +0 -0
  213. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_cspec_n3_bn080916009_v01.pha +0 -0
  214. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_tte_b0_bn080916009_v01.fit.gz +0 -0
  215. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_tte_n3_bn080916009_v01.fit.gz +0 -0
  216. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_BGO_00.bak +0 -0
  217. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_BGO_00.pha +0 -0
  218. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_BGO_00.rsp +0 -0
  219. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_NAI_06.bak +0 -0
  220. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_NAI_06.pha +0 -0
  221. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_NAI_06.rsp +0 -0
  222. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/glg_cspec_n3_bn080916009_v00.rsp2 +0 -0
  223. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/glg_cspec_n3_bn080916009_v01.pha +0 -0
  224. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/glg_cspec_n3_bn080916009_v07.rsp +0 -0
  225. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/glg_tte_n3_bn080916009_v01.fit.gz +0 -0
  226. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gll_cspec_bn080916009_v10.rsp +0 -0
  227. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gll_lle_bn080916009_v10.fit +0 -0
  228. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gll_pt_bn080916009_v10.fit +0 -0
  229. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/bn090217206_LAT_xmlmodel.xml +0 -0
  230. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_cspec_bn080916009_v10.pha +0 -0
  231. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_cspec_bn080916009_v10.rsp +0 -0
  232. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_ft1_tr_bn090217206_v00_filt.fit +0 -0
  233. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_ft1_tr_bn090217206_v00_filt_expomap.fit +0 -0
  234. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_ft1_tr_bn090217206_v00_filt_ltcube.fit.gz +0 -0
  235. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_lle_bn080916009_v10.fit +0 -0
  236. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_pt_bn080916009_v10.fit +0 -0
  237. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awt.arf +0 -0
  238. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awt.pi +0 -0
  239. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awt.rmf +0 -0
  240. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awt_fit.fit +0 -0
  241. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awtback.pi +0 -0
  242. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awtsource.pi +0 -0
  243. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/ogip_powerlaw.bak +0 -0
  244. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/ogip_powerlaw.pha +0 -0
  245. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/ogip_powerlaw.rsp +0 -0
  246. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/test.pha +0 -0
  247. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/test_bak.pha +0 -0
  248. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/interval0wtback.pi +0 -0
  249. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/interval0wtsource.pi +0 -0
  250. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/xrt.arf +0 -0
  251. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/xrt.rmf +0 -0
  252. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/xrt_bkg.pha +0 -0
  253. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/xrt_src.pha +0 -0
  254. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xy_powerlaw.txt +0 -0
  255. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/default_style.yml +0 -0
  256. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/doc_config.yml +0 -0
  257. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/fermipy_basic_config.yml +0 -0
  258. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/ogip_test_gbm_b0.rsp2 +0 -0
  259. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/ogip_test_gbm_n6.rsp +0 -0
  260. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/ogip_test_xmm_pn.arf +0 -0
  261. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/ogip_test_xmm_pn.rmf +0 -0
  262. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/optical_filters/filter_library.h5 +0 -0
  263. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/threeml.mplstyle +0 -0
  264. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/threeml_docs.mplstyle +0 -0
  265. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/xmm/pnS004-A2443_reg2.arf +0 -0
  266. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/xmm/pnS004-A2443_reg2.fak +0 -0
  267. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/xmm/pnS004-A2443_reg2.rmf +0 -0
  268. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/exceptions/__init__.py +0 -0
  269. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/cern_root_utils/__init__.py +0 -0
  270. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/__init__.py +0 -0
  271. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/get_style.py +2 -2
  272. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/model_plot_2D.py +0 -0
  273. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/model_plot_tags.py +0 -0
  274. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/__init__.py +0 -0
  275. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/parallel/__init__.py +0 -0
  276. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/BinnedProfileLike.py +0 -0
  277. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/__init__.py +0 -0
  278. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/experimental/__init__.py +0 -0
  279. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/__init__.py +0 -0
  280. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/OGIP/__init__.py +0 -0
  281. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/__init__.py +0 -0
  282. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/cartesian.py +0 -0
  283. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/fermi/__init__.py +0 -0
  284. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_GBM/__init__.py +0 -0
  285. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_LAT/__init__.py +0 -0
  286. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/__init__.py +0 -0
  287. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/fitted_objects/__init__.py +0 -0
  288. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/photometry/__init__.py +1 -1
  289. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/polarization/__init__.py +0 -0
  290. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/__init__.py +0 -0
  291. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/statistics/__init__.py +0 -0
  292. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/__init__.py +0 -0
  293. {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML.egg-info/dependency_links.txt +0 -0
@@ -1,28 +1,30 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: threeML
3
- Version: 2.4.3.dev1
3
+ Version: 2.5.0.dev2
4
4
  Summary: The Multi-Mission Maximum Likelihood framework
5
- Home-page: https://github.com/threeml/threeML
6
- Author: Giacomo Vianello
7
- Author-email: giacomo.vianello@gmail.com
8
- License: BSD-3
5
+ Author-email: Giacomo Vianello <io@tu.com>
6
+ Maintainer-email: Niccolò Di Lalla <niccolo.dilalla@stanford.edu>, Nicola Omodei <nicola.omodei@stanford.edu>
7
+ License-Expression: BSD-3-Clause
8
+ Project-URL: Homepage, https://github.com/threeml/threeML
9
9
  Project-URL: Documentation, https://threeml.readthedocs.io
10
+ Project-URL: Repository, https://github.com/threeML/threeML
10
11
  Project-URL: Bug Tracker, https://github.com/threeML/threeML/issues
11
12
  Project-URL: Source Code, https://github.com/threeML/threeML
12
- Keywords: Likelihood,Multi-mission,3ML,HAWC,Fermi,HESS,joint,fit,bayesian,multi-wavelength
13
+ Keywords: Likelihood,Multi-mission,3ML,HAWC,Fermi,HESS,joint fit,bayesian,multi-wavelength
13
14
  Classifier: Development Status :: 5 - Production/Stable
14
15
  Classifier: Topic :: Scientific/Engineering :: Astronomy
15
16
  Classifier: Intended Audience :: Science/Research
16
17
  Classifier: Operating System :: POSIX
17
18
  Classifier: Programming Language :: Python :: 3.9
18
19
  Classifier: Environment :: Console
20
+ Requires-Python: >=3.9.0
19
21
  Description-Content-Type: text/markdown
20
22
  License-File: LICENSE
21
23
  Requires-Dist: numpy>=1.16
22
24
  Requires-Dist: scipy>=1.4
23
25
  Requires-Dist: emcee>=3
24
26
  Requires-Dist: astropy
25
- Requires-Dist: matplotlib<3.9
27
+ Requires-Dist: matplotlib
26
28
  Requires-Dist: uncertainties
27
29
  Requires-Dist: pyyaml>=5.1
28
30
  Requires-Dist: dill
@@ -45,13 +47,16 @@ Requires-Dist: colorama
45
47
  Requires-Dist: omegaconf
46
48
  Requires-Dist: ipywidgets
47
49
  Requires-Dist: rich
50
+ Requires-Dist: packaging
48
51
  Provides-Extra: tests
49
52
  Requires-Dist: pytest; extra == "tests"
53
+ Requires-Dist: pytest-codecov; extra == "tests"
50
54
  Provides-Extra: docs
51
55
  Requires-Dist: sphinx>=1.4; extra == "docs"
52
56
  Requires-Dist: sphinx_rtd_theme; extra == "docs"
53
57
  Requires-Dist: nbsphinx; extra == "docs"
54
58
  Requires-Dist: sphinx-autoapi; extra == "docs"
59
+ Dynamic: license-file
55
60
 
56
61
  ![CI](https://github.com/threeML/threeML/workflows/CI/badge.svg?branch=master&event=push)
57
62
  [![Conda Build and Publish](https://github.com/threeML/threeML/actions/workflows/conda_build.yml/badge.svg)](https://github.com/threeML/threeML/actions/workflows/conda_build.yml)
@@ -150,7 +155,7 @@ Here is a highlight list of teams and their publications using 3ML.
150
155
  * [POLAR](https://www.astro.unige.ch/polar-2/?fbclid=IwAR0IxMxHtiXZyqc0A_kT1xKe9ASAk_VmfJpCEBr0HOhDG5eOHY7AE5TWHv8)
151
156
  * [The POLAR gamma-ray burst polarization catalog](https://ui.adsabs.harvard.edu/link_gateway/2020A&A...644A.124K/doi:10.1051/0004-6361/202037915)
152
157
 
153
- A full list of publications using 3ML is [here](https://ui.adsabs.harvard.edu/abs/2015arXiv150708343V/citations).
158
+ A full list of publications using 3ML is [here](https://scixplorer.org/abs/2015arXiv150708343V/citations).
154
159
 
155
160
  ## Citing
156
161
  If you find this package useful in you analysis, or the code in your own custom data tools, please cite:
@@ -172,5 +177,5 @@ The SVO Filter Profile Service. Rodrigo, C., Solano, E., Bayo, A. http://ivoa.ne
172
177
  The Filter Profile Service Access Protocol. Rodrigo, C., Solano, E. http://ivoa.net/documents/Notes/SVOFPSDAL/index.html
173
178
 
174
179
 
175
- <img src="https://www.nsf.gov/images/logos/NSF_4-Color_bitmap_Logo.png" width="100"> ThreeML is supported by National Science Foundation (NSF) <img src="https://www.nsf.gov/images/logos/NSF_4-Color_bitmap_Logo.png" width="100">
180
+ <img src="https://nsf.widen.net/content/txvhzmsofh/png/NSF_Official_logo_High_Res_1200ppi.png?position=c&quality=80&x.portal_shortcode_generated=dnmqqhzz&x.collection_sharename=wc3fwkos&x.app=portals" width="100"> ThreeML is supported by National Science Foundation (NSF) <img src="https://nsf.widen.net/content/txvhzmsofh/png/NSF_Official_logo_High_Res_1200ppi.png?position=c&quality=80&x.portal_shortcode_generated=dnmqqhzz&x.collection_sharename=wc3fwkos&x.app=portals" width="100">
176
181
 
@@ -95,7 +95,7 @@ Here is a highlight list of teams and their publications using 3ML.
95
95
  * [POLAR](https://www.astro.unige.ch/polar-2/?fbclid=IwAR0IxMxHtiXZyqc0A_kT1xKe9ASAk_VmfJpCEBr0HOhDG5eOHY7AE5TWHv8)
96
96
  * [The POLAR gamma-ray burst polarization catalog](https://ui.adsabs.harvard.edu/link_gateway/2020A&A...644A.124K/doi:10.1051/0004-6361/202037915)
97
97
 
98
- A full list of publications using 3ML is [here](https://ui.adsabs.harvard.edu/abs/2015arXiv150708343V/citations).
98
+ A full list of publications using 3ML is [here](https://scixplorer.org/abs/2015arXiv150708343V/citations).
99
99
 
100
100
  ## Citing
101
101
  If you find this package useful in you analysis, or the code in your own custom data tools, please cite:
@@ -117,5 +117,5 @@ The SVO Filter Profile Service. Rodrigo, C., Solano, E., Bayo, A. http://ivoa.ne
117
117
  The Filter Profile Service Access Protocol. Rodrigo, C., Solano, E. http://ivoa.net/documents/Notes/SVOFPSDAL/index.html
118
118
 
119
119
 
120
- <img src="https://www.nsf.gov/images/logos/NSF_4-Color_bitmap_Logo.png" width="100"> ThreeML is supported by National Science Foundation (NSF) <img src="https://www.nsf.gov/images/logos/NSF_4-Color_bitmap_Logo.png" width="100">
120
+ <img src="https://nsf.widen.net/content/txvhzmsofh/png/NSF_Official_logo_High_Res_1200ppi.png?position=c&quality=80&x.portal_shortcode_generated=dnmqqhzz&x.collection_sharename=wc3fwkos&x.app=portals" width="100"> ThreeML is supported by National Science Foundation (NSF) <img src="https://nsf.widen.net/content/txvhzmsofh/png/NSF_Official_logo_High_Res_1200ppi.png?position=c&quality=80&x.portal_shortcode_generated=dnmqqhzz&x.collection_sharename=wc3fwkos&x.app=portals" width="100">
121
121
 
@@ -0,0 +1,138 @@
1
+ [build-system]
2
+ requires = ["setuptools", "wheel", "versioneer[toml]"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "threeML"
7
+ dynamic = ["version"]
8
+ description = "The Multi-Mission Maximum Likelihood framework"
9
+ readme = "README.md"
10
+ license = "BSD-3-Clause"
11
+ license-files = ["LICENSE"]
12
+ requires-python = ">=3.9.0"
13
+ authors = [
14
+ {name = "Giacomo Vianello", email = "io@tu.com"}
15
+ ]
16
+ maintainers = [
17
+ {name = "Niccolò Di Lalla", email = "niccolo.dilalla@stanford.edu"},
18
+ {name = "Nicola Omodei", email = "nicola.omodei@stanford.edu"}
19
+ ]
20
+ keywords = [
21
+ "Likelihood",
22
+ "Multi-mission",
23
+ "3ML",
24
+ "HAWC",
25
+ "Fermi",
26
+ "HESS",
27
+ "joint fit",
28
+ "bayesian",
29
+ "multi-wavelength"
30
+ ]
31
+ classifiers = [
32
+ "Development Status :: 5 - Production/Stable",
33
+ "Topic :: Scientific/Engineering :: Astronomy",
34
+ "Intended Audience :: Science/Research",
35
+ "Operating System :: POSIX",
36
+ "Programming Language :: Python :: 3.9",
37
+ "Environment :: Console",
38
+ ]
39
+ dependencies = [
40
+ "numpy>=1.16",
41
+ "scipy>=1.4",
42
+ "emcee>=3",
43
+ "astropy",
44
+ "matplotlib",
45
+ "uncertainties",
46
+ "pyyaml>=5.1",
47
+ "dill",
48
+ "iminuit>=2.0",
49
+ "astromodels",
50
+ "astroquery",
51
+ "corner",
52
+ "pandas",
53
+ "requests",
54
+ "speclite>=0.11",
55
+ "ipython",
56
+ "ipyparallel",
57
+ "joblib",
58
+ "numexpr",
59
+ "dynesty",
60
+ "numba",
61
+ "numdifftools",
62
+ "tqdm>=4.56.0",
63
+ "colorama",
64
+ "omegaconf",
65
+ "ipywidgets",
66
+ "rich",
67
+ "packaging"
68
+ ]
69
+
70
+ [project.optional-dependencies]
71
+ tests = [
72
+ "pytest",
73
+ "pytest-codecov",
74
+ ]
75
+ docs = [
76
+ "sphinx>=1.4",
77
+ "sphinx_rtd_theme",
78
+ "nbsphinx",
79
+ "sphinx-autoapi",
80
+ ]
81
+
82
+ [project.urls]
83
+ Homepage = "https://github.com/threeml/threeML"
84
+ Documentation = "https://threeml.readthedocs.io"
85
+ Repository = "https://github.com/threeML/threeML"
86
+ "Bug Tracker" = "https://github.com/threeML/threeML/issues"
87
+ "Source Code" = "https://github.com/threeML/threeML"
88
+
89
+ [tool.setuptools]
90
+ packages = [
91
+ "threeML",
92
+ "threeML.exceptions",
93
+ "threeML.bayesian",
94
+ "threeML.minimizer",
95
+ "threeML.utils",
96
+ "threeML.utils.OGIP",
97
+ "threeML.utils.spectrum",
98
+ "threeML.utils.polarization",
99
+ "threeML.utils.photometry",
100
+ "threeML.utils.time_series",
101
+ "threeML.utils.data_builders",
102
+ "threeML.utils.data_builders.fermi",
103
+ "threeML.utils.data_download",
104
+ "threeML.utils.data_download.Fermi_LAT",
105
+ "threeML.utils.data_download.Fermi_GBM",
106
+ "threeML.utils.fitted_objects",
107
+ "threeML.utils.statistics",
108
+ "threeML.plugins",
109
+ "threeML.classicMLE",
110
+ "threeML.catalogs",
111
+ "threeML.io",
112
+ "threeML.io.plotting",
113
+ "threeML.io.cern_root_utils",
114
+ "threeML.parallel",
115
+ "threeML.config",
116
+ "threeML.test",
117
+ "threeML.plugins.experimental",
118
+ ]
119
+ include-package-data = true
120
+
121
+ [tool.setuptools.package-data]
122
+ threeML = ["threeML/data/*"]
123
+
124
+ [tool.versioneer]
125
+ VCS = "git"
126
+ style = "pep440"
127
+ versionfile_source = "threeML/_version.py"
128
+ versionfile_build = "threeML/_version.py"
129
+ tag_prefix = "v"
130
+ parentdir_prefix = "threeML-"
131
+
132
+ [tool.pytest.ini_options]
133
+ markers = [
134
+ "slow: slow tests",
135
+ ]
136
+
137
+ [tool.isort]
138
+ profile = "black"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -1,45 +1,34 @@
1
1
  #!/usr/bin/env python
2
2
 
3
3
  import os
4
- import sys
5
-
6
- import glob
7
4
 
8
5
  from setuptools import setup
9
6
 
10
7
  import versioneer
11
8
 
12
-
13
9
  # This dynamically loads a module and return it in a variable.
14
10
  # Will use it for check optional dependencies
15
11
 
16
12
 
17
13
  def is_module_available(module_name):
18
-
19
14
  # Fast path: see if the module has already been imported.
20
15
 
21
16
  try:
22
-
23
17
  exec("import %s" % module_name)
24
18
 
25
19
  except ImportError:
26
-
27
20
  return False
28
21
 
29
22
  else:
30
-
31
23
  return True
32
24
 
33
25
 
34
26
  # Create list of data files
35
27
  def find_data_files(directory):
36
-
37
28
  paths = []
38
29
 
39
- for (path, directories, filenames) in os.walk(directory):
40
-
30
+ for path, directories, filenames in os.walk(directory):
41
31
  for filename in filenames:
42
-
43
32
  paths.append(os.path.join("..", path, filename))
44
33
 
45
34
  return paths
@@ -96,8 +85,16 @@ setup(
96
85
  "bayesian",
97
86
  "multi-wavelength",
98
87
  ],
99
- # NOTE: we use '' as package name because the extra_files already contain the full path from here
100
- package_data={"": extra_files,},
88
+ # NOTE: we use '' as package name because the extra_files already contain the full
89
+ # path from here
90
+ package_data={
91
+ "threeML/": [
92
+ "data/*",
93
+ ],
94
+ },
95
+ # package_data={
96
+ # "": extra_files,
97
+ # },
101
98
  ) # End of setup()
102
99
 
103
100
  # Check for optional dependencies
@@ -114,7 +111,6 @@ optional_dependencies = {
114
111
  }
115
112
 
116
113
  for dep_name in optional_dependencies:
117
-
118
114
  optional_dependencies[dep_name][0] = is_module_available(dep_name)
119
115
 
120
116
  # Now print the final messages
@@ -124,13 +120,10 @@ print("OPTIONAL FEATURES:")
124
120
  print("##################\n\n")
125
121
 
126
122
  for dep_name in optional_dependencies:
127
-
128
123
  if optional_dependencies[dep_name][0]:
129
-
130
124
  status = "available"
131
125
 
132
126
  else:
133
-
134
127
  status = "*NOT* available"
135
128
 
136
129
  print(" * %s is %s (%s)\n" % (dep_name, status, optional_dependencies[dep_name][1]))
@@ -1,31 +1,36 @@
1
1
  # We import matplotlib first, because we need control on the backend
2
2
  # Indeed, if no DISPLAY variable is set, matplotlib 2.0 crashes (at the moment, 05/26/2017)
3
+ import os
4
+ import traceback
5
+ import warnings
6
+
3
7
  import pandas as pd
4
8
 
5
9
  pd.set_option("display.max_columns", None)
6
10
 
7
- import os
8
- import traceback
9
- import warnings
10
11
 
11
12
  # Workaround to avoid a segmentation fault with ROOT and a CFITSIO issue
12
13
  # LEAVE THESE HERE BEFORE ANY THREEML IMPORT
13
14
  try:
14
15
  import ROOT
16
+
17
+ ROOT.__doc__
15
18
  except ImportError:
16
19
  pass
17
20
  try:
18
21
  import pyLikelihood
22
+
23
+ pyLikelihood.__doc__
19
24
  except ImportError:
20
25
  pass
21
26
 
22
27
  from pathlib import Path
23
28
 
24
- from threeML.io.logging import setup_logger
25
-
26
29
  # Import everything from astromodels
27
30
  from astromodels import *
28
31
 
32
+ from .io.logging import setup_logger
33
+
29
34
  from .config import (
30
35
  threeML_config,
31
36
  show_configuration,
@@ -38,9 +43,7 @@ log.propagate = False
38
43
  if threeML_config["logging"]["startup_warnings"]:
39
44
  log.info("Starting 3ML!")
40
45
  log.warning("WARNINGs here are [red]NOT[/red] errors")
41
- log.warning(
42
- "but are inform you about optional packages that can be installed"
43
- )
46
+ log.warning("but are inform you about optional packages that can be installed")
44
47
  log.warning(
45
48
  "[red] to disable these messages, turn off start_warning in your config file[/red]"
46
49
  )
@@ -57,14 +60,12 @@ if os.environ.get("DISPLAY") is None:
57
60
 
58
61
  # Import version (this has to be placed before the import of serialization
59
62
  # since __version__ needs to be defined at that stage)
60
- from ._version import get_versions
61
-
62
- __version__ = get_versions()["version"]
63
- del get_versions
63
+ from . import _version
64
64
 
65
+ __version__ = _version.get_versions()["version"]
65
66
 
66
67
  import traceback
67
- from importlib.machinery import SourceFileLoader
68
+ import importlib.util
68
69
 
69
70
  # Finally import the serialization machinery
70
71
  from .io.serialization import *
@@ -101,32 +102,24 @@ except ImportError:
101
102
 
102
103
 
103
104
  def is_module_importable(module_full_path):
104
-
105
105
  try:
106
-
107
- _ = SourceFileLoader("__", str(module_full_path)).load_module()
108
-
109
- except:
110
-
106
+ spec = importlib.util.spec_from_file_location(
107
+ module_full_path.stem, module_full_path
108
+ )
109
+ if spec is None or spec.loader is None:
110
+ raise ImportError(f"Cannot load {module_full_path}")
111
+ module = importlib.util.module_from_spec(spec)
112
+ spec.loader.exec_module(module)
113
+ return True, module
114
+ except Exception:
111
115
  return False, traceback.format_exc()
112
116
 
113
- else:
114
-
115
- return True, "%s imported ok" % module_full_path
116
-
117
117
 
118
118
  plugins_dir = Path(__file__).parent / "plugins"
119
119
 
120
120
  found_plugins = plugins_dir.glob("*.py")
121
121
 
122
- # Filter out __init__
123
-
124
- # found_plugins = filter(lambda x: str(x).find("__init__") < 0, found_plugins)
125
-
126
- # Filter out __init__
127
-
128
- found_plugins = filter(lambda x: str(x).find("__init__") < 0, found_plugins)
129
-
122
+ found_plugins = [f for f in plugins_dir.glob("*.py") if f.name != "__init__.py"]
130
123
 
131
124
  _working_plugins = {}
132
125
  _not_working_plugins = {}
@@ -134,10 +127,9 @@ _not_working_plugins = {}
134
127
  # Loop over each candidates plugins and check if it is importable
135
128
 
136
129
  for i, module_full_path in enumerate(found_plugins):
137
-
138
130
  plugin_name = module_full_path.stem
139
131
 
140
- is_importable, failure_traceback = is_module_importable(module_full_path)
132
+ is_importable, result = is_module_importable(module_full_path)
141
133
 
142
134
  if not is_importable:
143
135
  if threeML_config.logging.startup_warnings:
@@ -147,89 +139,65 @@ for i, module_full_path in enumerate(found_plugins):
147
139
  # custom_exceptions.CannotImportPlugin,
148
140
  )
149
141
 
150
- _not_working_plugins[plugin_name] = failure_traceback
142
+ _not_working_plugins[plugin_name] = result
151
143
 
152
144
  continue
153
145
 
154
- else:
155
-
156
- # First get the instrument name
157
- try:
158
-
159
- exec(f"from threeML.plugins.{plugin_name} import __instrument_name")
160
-
161
- except ImportError:
162
-
163
- # This module does not contain a plugin, continue
164
- continue
165
-
166
- # Now import the plugin itself
146
+ # First get the instrument name
147
+ module = result
148
+ instrument_name = getattr(module, "__instrument_name", None)
149
+ if not instrument_name:
150
+ continue
167
151
 
168
- import_command = (
169
- f"from threeML.plugins.{plugin_name} import {plugin_name}"
152
+ try:
153
+ imported_plugin = importlib.import_module(f"threeML.plugins.{plugin_name}")
154
+ plugin_class = getattr(imported_plugin, plugin_name)
155
+ globals()[plugin_name] = plugin_class
156
+ except ImportError:
157
+ log.warning(
158
+ f"Could not import plugin {plugin_name}."
159
+ "Do you have the relative instrument software installed?"
170
160
  )
171
-
172
- try:
173
-
174
- exec(import_command)
175
-
176
- except ImportError:
177
-
178
- pass
179
-
180
- else:
181
-
182
- _working_plugins[__instrument_name] = plugin_name
183
-
161
+ continue
162
+ _working_plugins[instrument_name] = plugin_name
184
163
 
185
164
  # Now some convenience functions
186
165
 
187
166
 
188
167
  def get_available_plugins():
189
- """
190
- Print a list of available plugins
168
+ """Print a list of available plugins.
191
169
 
192
170
  :return:
193
171
  """
194
172
  print("Available plugins:\n")
195
173
 
196
174
  for instrument, class_name in _working_plugins.items():
197
-
198
175
  print(f"{class_name} for {instrument}")
199
176
 
200
177
 
201
178
  def _display_plugin_traceback(plugin):
202
179
  if threeML_config.logging.startup_warnings:
203
- log.warning(
204
- "#############################################################"
205
- )
180
+ log.warning("#############################################################")
206
181
  log.warning("\nCouldn't import plugin %s" % plugin)
207
182
  log.warning("\nTraceback:\n")
208
183
  log.warning(_not_working_plugins[plugin])
209
- log.warning(
210
- "#############################################################"
211
- )
184
+ log.warning("#############################################################")
212
185
 
213
186
 
214
187
  def is_plugin_available(plugin):
215
- """
216
- Test whether the plugin for the provided instrument is available
188
+ """Test whether the plugin for the provided instrument is available.
217
189
 
218
190
  :param plugin: the name of the plugin class
219
191
  :return: True or False
220
192
  """
221
193
 
222
194
  if plugin in _working_plugins.values():
223
-
224
195
  # FIXME
225
196
  if plugin == "FermipyLike":
226
-
227
197
  try:
228
-
229
198
  _ = FermipyLike.__new__(FermipyLike, test=True)
230
199
 
231
200
  except:
232
-
233
201
  # Do not register it
234
202
 
235
203
  _not_working_plugins[plugin] = traceback.format_exc()
@@ -241,15 +209,12 @@ def is_plugin_available(plugin):
241
209
  return True
242
210
 
243
211
  else:
244
-
245
212
  if plugin in _not_working_plugins:
246
-
247
213
  _display_plugin_traceback(plugin)
248
214
 
249
215
  return False
250
216
 
251
217
  else:
252
-
253
218
  log.error(f"Plugin {plugin} is not known")
254
219
  raise RuntimeError()
255
220
 
@@ -272,23 +237,22 @@ from threeML.catalogs import (
272
237
  FermiGBMBurstCatalog,
273
238
  FermiGBMTriggerCatalog,
274
239
  FermiLATSourceCatalog,
275
- FermiPySourceCatalog,
276
240
  FermiLLEBurstCatalog,
241
+ FermiPySourceCatalog,
277
242
  SwiftGRBCatalog,
278
243
  )
279
-
280
244
  from threeML.io import (
245
+ activate_logs,
246
+ activate_progress_bars,
281
247
  activate_warnings,
282
- silence_warnings,
283
- update_logging_level,
248
+ debug_mode,
249
+ loud_mode,
250
+ quiet_mode,
284
251
  silence_logs,
285
252
  silence_progress_bars,
286
- activate_progress_bars,
253
+ silence_warnings,
287
254
  toggle_progress_bars,
288
- quiet_mode,
289
- loud_mode,
290
- debug_mode,
291
- activate_logs,
255
+ update_logging_level,
292
256
  )
293
257
  from threeML.io.plotting.light_curve_plots import plot_tte_lightcurve
294
258
  from threeML.io.plotting.model_plot import (
@@ -306,8 +270,8 @@ from threeML.io.uncertainty_formatter import interval_to_errors
306
270
  # import time series builder, soon to replace the Fermi plugins
307
271
  from threeML.utils.data_builders import *
308
272
  from threeML.utils.data_download.Fermi_GBM.download_GBM_data import (
309
- download_GBM_trigger_data,
310
273
  download_GBM_daily_data,
274
+ download_GBM_trigger_data,
311
275
  )
312
276
 
313
277
  # Import the LAT data downloader
@@ -331,20 +295,18 @@ from .classicMLE.joint_likelihood_set import (
331
295
  JointLikelihoodSetAnalyzer,
332
296
  )
333
297
  from .classicMLE.likelihood_ratio_test import LikelihoodRatioTest
334
-
335
- # Now read the configuration and make it available as threeML_config
336
-
337
298
  from .data_list import DataList
299
+ from .io import get_threeML_style, set_threeML_style
338
300
  from .io.calculate_flux import calculate_point_source_flux
339
-
340
- # Import the plot_style context manager and the function to create new styles
341
-
342
301
  from .parallel.parallel_client import parallel_computation
343
302
 
344
303
  # Added by JM. step generator for time-resolved fits
345
304
  from .utils.step_parameter_generator import step_generator
346
305
 
347
- from .io import get_threeML_style, set_threeML_style
306
+ # Now read the configuration and make it available as threeML_config
307
+
308
+
309
+ # Import the plot_style context manager and the function to create new styles
348
310
 
349
311
 
350
312
  # Import optical filters
@@ -364,13 +326,10 @@ var_to_check = ["OMP_NUM_THREADS", "MKL_NUM_THREADS", "NUMEXPR_NUM_THREADS"]
364
326
 
365
327
 
366
328
  for var in var_to_check:
367
-
368
329
  num_threads = os.environ.get(var)
369
330
 
370
331
  if num_threads is not None:
371
-
372
332
  try:
373
-
374
333
  num_threads = int(num_threads)
375
334
 
376
335
  except ValueError:
@@ -382,7 +341,6 @@ for var in var_to_check:
382
341
  )
383
342
 
384
343
  else:
385
-
386
344
  if threeML_config.logging.startup_warnings:
387
345
  log.warning(
388
346
  "Env. variable %s is not set. Please set it to 1 for optimal performances in 3ML"
@@ -394,4 +352,3 @@ for var in var_to_check:
394
352
  del os
395
353
  del Path
396
354
  del warnings
397
- del SourceFileLoader
@@ -1,19 +1,18 @@
1
1
 
2
- # This file was generated by 'versioneer.py' (0.18) from
2
+ # This file was generated by 'versioneer.py' (0.29) from
3
3
  # revision-control system data, or from the parent directory name of an
4
4
  # unpacked source archive. Distribution tarballs contain a pre-generated copy
5
5
  # of this file.
6
6
 
7
- from __future__ import absolute_import
8
7
  import json
9
8
 
10
9
  version_json = '''
11
10
  {
12
- "date": "2024-09-11T16:28:56-0400",
11
+ "date": "2026-02-16T18:58:32-0800",
13
12
  "dirty": false,
14
13
  "error": null,
15
- "full-revisionid": "df578f0d4c5b2d572f6ca9388ce9060b608941e0",
16
- "version": "2.4.3.dev1"
14
+ "full-revisionid": "edfee2b64f8527908fb0d0f6e07f3d64e8c8ce4f",
15
+ "version": "2.5.0.dev2"
17
16
  }
18
17
  ''' # END VERSION_JSON
19
18