ChannelTransformation#

class scarlet2.renderer.ChannelTransformation(model_frame, obs_frame)[source]#

Bases: Transformation

Map model to observed channels

This transformation only affects to spectral dimension of the model. It needs to be combined with spatial renderers for a full transformation to the observed frame.

Initialize channel mapping

This method will attempt to find the index in model_frame.channels for every item obs_frame.channels. For this to work, the identifiers of the channels need to be the same, e.g. channels=[‘g’,’r’,’i’] or channels=[0,1,2,3,4].

Parameters:
  • model_frame (Frame) – The model frame to be resampled

  • obs_frame (Frame) – The observation frame to which the model frame is resampled

Raises:

ValueError – If observed channel(s) are not found in model_frame

__call__(model, **kwargs)[source]#

Map model channels onto the observation channels

channel_map: (None, <class 'list'>, <class 'scarlet2.renderer.HashableSlice'>, <function array at 0x7fe56388e8e0>) = None#

Lookup table or transformation matrix

For every channel in the observed frame, this map contained the index or weights of the model channels.

get(name=None)#

Get parameter(s) from this module

Parameters:

name (str, optional) – Name of parameter. If not set, returns all parameters.

Returns:

requested data arrays for parameters

Return type:

dict

property parameters#

Parameters defined for this module

Returns:

name: (node, param) mapping for all parameters

Return type:

dict

replace(name, value)#

Replace member attribuge name with value

Parameters:
  • name (str) – Name of member to replace

  • value (any) – Value to replace member with

Returns:

The modified module.

Return type:

Module

replace_subtree(where, value, parameters=None)#

Replace the subtree where(self) with value and carry over all other parameters

Unlike replace(), value does not need to have the same structure as the subtree it replaces, e.g. an array morphology can be replaced by a SersicMorphology. Parameters defined for this module remain attached to the same nodes, except those inside the replaced subtree, which are dropped.

Parameters:
  • where (callable) – Function module -> node that selects the subtree to replace, as in equinox.tree_at()

  • value (any) – Replacement for the subtree. If this module has a frame, attributes of value given in sky coordinates are converted to pixel coordinates of that frame.

  • parameters (callable, optional) – Function module -> None that is called with the new module inside of a Parameters context to define parameters for the replacement, e.g. by calling Parameter on nodes of value.

Returns:

The modified module.

Return type:

Module

Examples

>>> sersic = SersicMorphology(n=jnp.array(2.), size=jnp.array(2.), shape=morph.shape)
>>> def sersic_parameters(morph):
>>>     Parameter(morph.n, name="n:0", prior=dist.Uniform(0.5, 6))
>>>     Parameter(morph.size, name="size:0", constraint=constraints.positive, stepsize=0.1)
>>>
>>> scene_ = scene.replace_subtree(lambda sc: sc.sources[0].morphology, sersic, sersic_parameters)

See also

remap()

set(values)#

Set parameter(s) from this module with values

Parameters:

values (dict[str,jnp.array]) – values to replace parameters with, identified by their name

Returns:

new module with parameter(s) replaced by values

Return type:

Module