mdebony/BAccMod

Error with list of exclusion regions in the 3D case with gammapy 1.2

Closed this issue · 2 comments

An exception is raised when provided a list of exclusion region when using gammapy 1.2.

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/cProfile.py", line 191, in <module>
    main()
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/cProfile.py", line 180, in main
    runctx(code, globs, None, options.outfile, options.sort)
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/cProfile.py", line 20, in runctx
    return _pyprofile._Utils(Profile).runctx(statement, globals, locals,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/profile.py", line 63, in runctx
    prof.runctx(statement, globals, locals)
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/cProfile.py", line 101, in runctx
    exec(cmd, globals, locals)
  File "Test3DFull_HESS.py", line 24, in <module>
    a = acceptance_creator.create_acceptance_map_per_observation(obs_collection, zenith_binning=True, zenith_interpolation=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/post_doc_cea/bkgmodel/test_dev/acceptance_modelisation/base_acceptance_map_creator.py", line 981, in create_acceptance_map_per_observation
    acceptance_map = self.create_acceptance_map_cos_zenith_interpolated(observations=observations,
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/post_doc_cea/bkgmodel/test_dev/acceptance_modelisation/base_acceptance_map_creator.py", line 902, in create_acceptance_map_cos_zenith_interpolated
    dict_binned_model = base_model or self.create_model_cos_zenith_binned(off_observations)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/post_doc_cea/bkgmodel/test_dev/acceptance_modelisation/base_acceptance_map_creator.py", line 636, in create_model_cos_zenith_binned
    binned_model = [self.create_acceptance_map(binned_obs) for binned_obs in binned_observations]
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/post_doc_cea/bkgmodel/test_dev/acceptance_modelisation/base_acceptance_map_creator.py", line 636, in <listcomp>
    binned_model = [self.create_acceptance_map(binned_obs) for binned_obs in binned_observations]
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/post_doc_cea/bkgmodel/test_dev/acceptance_modelisation/grid3d_acceptance_map_creator.py", line 210, in create_acceptance_map
    count_map_background, exp_map_background, exp_map_background_total, livetime = self._create_base_computation_map(
                                                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/post_doc_cea/bkgmodel/test_dev/acceptance_modelisation/base_acceptance_map_creator.py", line 369, in _create_base_computation_map
    geom = RegionGeom.from_regions(self.exclude_regions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/site-packages/gammapy/maps/region/geom.py", line 747, in from_regions
    return cls(region=regions, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/site-packages/gammapy/maps/region/geom.py", line 95, in __init__
    width=tuple(self.width),
                ^^^^^^^^^^
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/site-packages/gammapy/maps/region/geom.py", line 165, in width
    rectangle = self._rectangle_bbox
                ^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/site-packages/astropy/utils/decorators.py", line 837, in __get__
    val = self.fget(obj)
          ^^^^^^^^^^^^^^
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/site-packages/gammapy/maps/region/geom.py", line 142, in _rectangle_bbox
    bbox = regions_pix[0].bounding_box
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/site-packages/regions/shapes/circle.py", line 103, in bounding_box
    return RegionBoundingBox.from_float(xmin, xmax, ymin, ymax)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/md274436/software/miniforge3/envs/gammapy-analysis/lib/python3.11/site-packages/regions/core/bounding_box.py", line 118, in from_float
    ixmin = int(np.floor(xmin + 0.5))
            ^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: cannot convert float NaN to integer

This feels like a gammapy bug since from_region supports list even in 1.2


    @classmethod
    def from_regions(cls, regions, **kwargs):
        """Create region geometry from list of regions.

        The regions are combined with union to a compound region.

        Parameters
        ----------
        regions : list of `~regions.SkyRegion` or str
            Regions.

Closes by PR #35