Parameters#
- class scarlet2.Parameters(base)[source]#
Bases:
dictCollection class that contains parameters
Collection of optimizable parameters
This class creates a Pytree with the same shape as base and with
Parameterinstances and the nodes corresponding to the optimized parameters in base.Examples
>>> with Scene(model_frame) as scene: >>> Source(center1, spectrum1, morph1) >>> Source(center2, spectrum2, morph2) >>> >>> with Parameters(scene): >>> Parameter(scene.sources[0].spectrum.data, >>> name=f"spectrum:0", >>> constraint=constraints.positive, >>> stepsize=relative_step) >>> maxiter = 200 >>> scene_ = scene.fit(observation, max_iter=maxiter)
This example defines a scene with two sources, initialized with their respective center, spectrum, and morphology parameters. It then fits observation by adjusting only the spectrum array of the first source for 200 steps.
See also
- __iadd__(name, node, parameter)[source]#
Add parameter to collection
- Parameters:
name (
str) – Parameter namenode (
jnp.ndarray) – Parameter array in the base modelparameter (
Parameter) – Parameter specification to be added
- __isub__(name)[source]#
Remove parameter from collection
- Parameters:
name (
str) – Parameter name in the base model
- clear() None. Remove all items from D.#
- copy() a shallow copy of D#
- classmethod fromkeys(iterable, value=None, /)#
Create a new dictionary with keys from iterable and values set to value.
- get(key, default=None, /)#
Return the value for key if key is in the dictionary, else default.
- items() a set-like object providing a view on D's items#
- keys() a set-like object providing a view on D's keys#
- pop(k[, d]) v, remove specified key and return the corresponding value.#
If the key is not found, return the default if given; otherwise, raise a KeyError.
- popitem()#
Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
- remap(other, exclude=None)[source]#
Add parameters from other to this collection
Every parameter is stored with the index of its node in the leaves of its
base. If the structure of base changes, e.g. because a model component is replaced by one of a different type, these indices are invalid. This method matches nodes of other.base andbaseby their path in the tree, so that every parameter of other refers to the node at the same location inbase. TheParameterinstances of other are reused without modification.Note that nodes are matched by location, so parameters are associated with the wrong nodes if elements are inserted into or removed from a list (e.g.
sources).- Parameters:
other (
Parameters) – Collection for a module with a (partially) matching structureexclude (
callable, optional) – Function other.base -> node that selects subtree(s) whose parameters are not added, as inequinox.tree_at()
- Returns:
This collection
- Return type:
- Raises:
RuntimeError – If a parameter of other is not excluded and has no node at the same path in
base
Examples
>>> scene_ = eqx.tree_at(lambda sc: sc.sources[0].morphology, scene, sersic) >>> with Parameters(scene_) as parameters: >>> parameters.remap(scene.parameters, exclude=lambda sc: sc.sources[0].morphology) >>> Parameter(scene_.sources[0].morphology.size, name="size:0", stepsize=0.1)
See also
- setdefault(key, default=None, /)#
Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
- update([E, ]**F) None. Update D from dict/iterable E and F.#
If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
- values() an object providing a view on D's values#