Source code for cosipy.image_deconvolution.model_base

from abc import ABC, abstractmethod
import astropy.units as u
import numpy as np
import copy
from histpy import Histogram

[docs]class ModelBase(Histogram, ABC): """ A base class of the model, i.e., a gamma-ray flux sky, and a gamma-ray distributions in a 3D space. Subclasses must override these methods. The `ImageDeconvolution` class will use them in the initialization process. Methods: - instantiate_from_parameters(cls, parameter) - set_values_from_parameters(self, parameter) """ def __init__(self, edges, contents = None, sumw2 = None, labels=None, axis_scale = None, sparse = None, unit = None): super().__init__(edges, contents = contents, sumw2 = sumw2, labels = labels, axis_scale = axis_scale, sparse = sparse, unit = unit)
[docs] @classmethod @abstractmethod def instantiate_from_parameters(cls, parameter): """ Return an instantiate of the class using given parameters. Parameters ---------- parameter : py:class:`yayc.Configurator` Parameters for the specified algorithm. Returns ------- py:class:`ModelBase` """ raise NotImplementedError
[docs] @abstractmethod def set_values_from_parameters(self, parameter): """ Set values accordinng to the give parameters. Parameters ---------- parameter : py:class:`yayc.Configurator` Parameters for the specified algorithm. """ raise NotImplementedError
[docs] def mask_pixels(self, mask, fill_value = 0): """ Mask pixels Parameters ---------- mask: :py:class:`histpy.histogram.Histogram` fill_value: float or :py:class:`astropy.units.quantity.Quantity` """ if not isinstance(fill_value, u.quantity.Quantity) and self.unit is not None: fill_value *= self.contents.unit model_new = copy.deepcopy(self) model_new[:] = np.where(mask.contents, model_new.contents, fill_value) return model_new