Throughout the codebase and tutorials, we always use images.ImageCube with passthrough=True. In this mode, ImageCube's forward method acts like an identity function with some cached state self.cube stored in a 'packed' format ready for easy passing to the FFT. After the first call to forward, (regardless of whether passthrough=True) there are convenience methods for reading the cube in 'sky format', calculating the total flux, and exporting the image to FITS.
I don't think we ever use ImageCube in a non-passthrough capacity. This is a holdover feature from before we introduced BaseCube. The only justification for keeping this functionality would be where the user wanted a direct mapping from self.cube pixels to true sky pixels. I would argue that this is
a) usually not desireable... enforcing non-negative pixel fluxes is a physically motivated and often strong regularization
b) better accomplished by using BaseCube with a pixel_mapping function of lambda x : x.
Suggested changes
Make ImageCube a passthrough layer by default and remove capacity for nn.Parameter in this layer entirely.
Throughout the codebase and tutorials, we always use
images.ImageCube
withpassthrough=True
. In this mode, ImageCube'sforward
method acts like an identity function with some cached stateself.cube
stored in a 'packed' format ready for easy passing to the FFT. After the first call toforward
, (regardless of whetherpassthrough=True
) there are convenience methods for reading the cube in 'sky format', calculating the total flux, and exporting the image to FITS.I don't think we ever use ImageCube in a non-passthrough capacity. This is a holdover feature from before we introduced BaseCube. The only justification for keeping this functionality would be where the user wanted a direct mapping from
self.cube
pixels to true sky pixels. I would argue that this is a) usually not desireable... enforcing non-negative pixel fluxes is a physically motivated and often strong regularization b) better accomplished by using BaseCube with a pixel_mapping function oflambda x : x
.Suggested changes Make ImageCube a passthrough layer by default and remove capacity for
nn.Parameter
in this layer entirely.