Observation#
- class scarlet2.Observation(data, weights, psf=None, wcs=None, channels=None, renderer=None, name=None)[source]#
Bases:
ModuleContent and definition of an observation
- property N#
Number of unmasked pixels in the observation
- __call__()#
Evaluate the model
- check_set_renderer(frame)[source]#
Check existence of
renderer, or set it by callingmatch()- Parameters:
frame (
Frame) – The frame to match- Return type:
None
- data: Array#
Observed data
- eval_chi_square_in_box_and_border(scene, border_width=3)[source]#
Evaluate the weighted mean (weighted by the inverse variance weights) of the squared residuals for each source. Chi square is also computed for the perimeter outside the box of with border_width.
- Parameters:
scene (
Scene) – Scene containing the sourcesborder_width (
int) – width of the border around the source box
- Return type:
Dictofsources indicesandtheir corresponding Dictofresiduals insideandoutside source box.
- 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
- goodness_of_fit(model)[source]#
Evaluate the goodness of the model fit to the data
For a Gaussian noise model, the gof is defined as the averaged squared deviation of the model from the data, scaled by the variance of the data, aka mean chi squared \(\frac{1}{N}\sum_i=1^N w_i (m_i - d_i)^2\) with inverse variance weights \(w_i\).
Up to a normalization, the gof is identical to
log-likelihood.- Parameters:
model (
array) – The (pre-rendered) predicted data cube, typically from evaluatingScene- Return type:
float
- log_likelihood(model)[source]#
The logarithm the likelihood of
datagiven model- Parameters:
model (
array) – The (pre-rendered) predicted data cube, typically from evaluatingScene- Return type:
float
- match(frame, renderer=None)[source]#
Construct the mapping between frame (from the model) and this observation frame
- Parameters:
frame (
Frame) – Model frame, typicallyscarlet2.Scene.framefor the current scene.renderer (
Renderer, optional) – Custom transformation to translate the frame (from the model) to this observation frame. If not set, this method will attempt to create the mapping from the information in both frames.
- Return type:
None
- name: str#
Name to describe the observation
- 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 replacevalue (
any) – Value to replace member with
- Returns:
The modified module.
- Return type:
- 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 aSersicMorphology. 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 inequinox.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 aParameterscontext to define parameters for the replacement, e.g. by callingParameteron nodes of value.
- Returns:
The modified module.
- Return type:
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
- 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:
- weights: Array#
Statistical weights (usually inverse variance) for
log_likelihood()