def light_3d(self, r, kwargs_list, k=None):
        """
        computes 3d density at radius r
        :param x: coordinate in units of arcsec relative to the center of the image
        :type x: set or single 1d numpy array
        """
        r = np.array(r, dtype=float)
        flux = np.zeros_like(r)
        for i, func in enumerate(self.func_list):
            if k is None or k == i:
                kwargs = {k: v for k, v in kwargs_list[i].items() if not k in ['center_x', 'center_y']}
                if self.profile_type_list[i] in ['HERNQUIST', 'HERNQUIST_ELLIPSE', 'PJAFFE', 'PJAFFE_ELLIPSE',
                                                     'GAUSSIAN', 'GAUSSIAN_ELLIPSE', 'MULTI_GAUSSIAN',
                                                     'MULTI_GAUSSIAN_ELLIPSE', 'POWER_LAW']:
                    flux += func.light_3d(r, **kwargs)
                else:
                    raise ValueError('Light model %s does not support a 3d light distribution!'
                                         % self.profile_type_list[i])
        return flux
def light_3d ( self , r , kwargs_list , k = None ) : r = np . array ( r , dtype = float ) flux = np . zeros_like ( r ) for i , func in enumerate ( self . func_list ) : if k is None or k == i : kwargs = { k : v for k , v in kwargs_list [ i ] . items ( ) if not k in [ 'center_x' , 'center_y' ] } if self . profile_type_list [ i ] in [ 'HERNQUIST' , 'HERNQUIST_ELLIPSE' , 'PJAFFE' , 'PJAFFE_ELLIPSE' , 'GAUSSIAN' , 'GAUSSIAN_ELLIPSE' , 'MULTI_GAUSSIAN' , 'MULTI_GAUSSIAN_ELLIPSE' , 'POWER_LAW' ] : flux += func . light_3d ( r , ** kwargs ) else : raise ValueError ( 'Light model %s does not support a 3d light distribution!' % self . profile_type_list [ i ] ) return flux
computes 3d density at radius r
        :param x: coordinate in units of arcsec relative to the center of the image
        :type x: set or single 1d numpy array