LSSTApplications  21.0.0+1b62c9342b,21.0.0+45a059f35e,21.0.0-1-ga51b5d4+ceb9cf20a3,21.0.0-19-g7c7630f+a88ebbf2d9,21.0.0-2-g103fe59+3522cf3bc7,21.0.0-2-g1367e85+571a348718,21.0.0-2-g2909d54+45a059f35e,21.0.0-2-g45278ab+1b62c9342b,21.0.0-2-g4bc9b9f+35a70d5868,21.0.0-2-g5242d73+571a348718,21.0.0-2-g54e2caa+aa129c4686,21.0.0-2-g66bcc37+3caef57c29,21.0.0-2-g7f82c8f+6f9059e2fe,21.0.0-2-g8dde007+5d1b9cb3f5,21.0.0-2-g8f08a60+73884b2cf5,21.0.0-2-g973f35b+1d054a08b9,21.0.0-2-ga326454+6f9059e2fe,21.0.0-2-ga63a54e+3d2c655db6,21.0.0-2-gc738bc1+a567cb0f17,21.0.0-2-gde069b7+5a8f2956b8,21.0.0-2-ge17e5af+571a348718,21.0.0-2-ge712728+834f2a3ece,21.0.0-2-gecfae73+dfe6e80958,21.0.0-2-gfc62afb+571a348718,21.0.0-21-g006371a9+88174a2081,21.0.0-3-g4c5b185+7fd31a6834,21.0.0-3-g6d51c4a+3caef57c29,21.0.0-3-gaa929c8+55f5a6a5c9,21.0.0-3-gd222c45+afc8332dbe,21.0.0-3-gd5de2f2+3caef57c29,21.0.0-4-g3300ddd+1b62c9342b,21.0.0-4-g5873dc9+9a92674037,21.0.0-4-g8a80011+5955f0fd15,21.0.0-5-gb7080ec+8658c79ec4,21.0.0-5-gcff38f6+89f2a0074d,21.0.0-6-gd3283ba+55f5a6a5c9,21.0.0-8-g19111d86+2c4b0a9f47,21.0.0-9-g7bed000b9+c7d3cce47e,w.2021.03
LSSTDataManagementBasePackage
Public Member Functions | List of all members
lsst.cp.pipe.astierCovFitParameters.FitParameters Class Reference
Inheritance diagram for lsst.cp.pipe.astierCovFitParameters.FitParameters:

Public Member Functions

def __init__ (self, groups)
 
def copy (self)
 
def fix (self, keys=slice(None), val=None)
 
def release (self, keys=slice(None))
 
def indexof (self, indices=slice(None))
 
def __getitem__ (self, args)
 
def __setitem__ (self, args, val)
 
def free (self)
 
def free (self, val)
 
def full (self)
 
def full (self, val)
 
def __repr__ (self)
 

Detailed Description

 Manages a vector of fit parameters with the possibility to mark a subset of
them as fixed to a given value.

The parameters can be organized in named slices (block of contiguous
values) accessible through indexing by their name as in `StructArray`.

>>> p_salt = FitParameters(['X0', 'X1', 'Color', 'Redshift'])
>>> p_dice = FitParameters([('alpha', 2), ('S', 10), ('dSdT', 10), 'idark'])

It is possible to modify the parameters in place. Using the indexing
of slices by name simplifies somewhat the operations, as one does
not need to care about the position of a slice within the entire
parameter vector:

>>> p_dice['idark'][0] = -1.0232E-12
>>> p_dice['S'][4] = 25.242343E-9
>>> p_dice['dSdT'][:] = 42.
>>> print p_dice
alpha: array([ 0.,  0.])
S: array([  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
         0.00000000e+00,   2.52423430e-08,   0.00000000e+00,
         0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
         0.00000000e+00])
dSdT: array([ 42.,  42.,  42.,  42.,  42.,  42.,  42.,  42.,  42.,  42.])
idark: array([ -1.02320000e-12])

It is also possible to mark parameters as fixed to a value.
>>> p_dice.fix(0, 12.)

Value is optional. The above is equivalent to:
>>> p_dice[0] = 12.
>>> p_dice.fix(0)

Again named slices simplifies the operations:
>>> p_dice['S'].fix([0, -1], 12.)
>>> p_dice['dSdT'].fix([0, -1])

One can fix entire slices at once:
>>> p_dice['idark'].fix()
>>> p_salt['Redshift'].fix(val=0.23432)

The property ``full'' give access to the vector of parameters. The
property "free" gives access to the free parameters:
>>> print len(p_dice.free), len(p_dice.full)
17 23

Note that free relies on fancy indexing. Access thus trigger a
copy. As a consequence, the following will not actually alter the
data:
>>> p_dice.free[0] = 12.
>>> print p_dice.free[0]
0.0

It is still possible to set slices of free parameters as a
contiguous vector. For example:
>>> p_dice['S'].free = 12.
>>> print p_dice['S'].free
[ 12.  12.  12.  12.  12.  12.  12.  12.]

>>> p_dice[:5].free = 4.
>>> print p_dice[:5].free
[ 4.  4.  4.]

In particular, the typical use case which consists in updating the
free parameters with the results of a fit works as expected:
>>> p = np.arange(len(p_dice.free))
>>> p_dice.free = p

Last the class provide a convenience function that return the index
of a subset of parameters in the global free parameters vector, and
-1 for fixed parameters:
>>> print p_dice['dSdT'].indexof()
[-1  9 10 11 12 13 14 15 16 -1]
>>> print p_dice['dSdT'].indexof([1,2])
[ 9 10]

Definition at line 164 of file astierCovFitParameters.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.cp.pipe.astierCovFitParameters.FitParameters.__init__ (   self,
  groups 
)

Definition at line 241 of file astierCovFitParameters.py.

241  def __init__(self, groups):
242  struct = Structure(groups)
243  self._free = StructArray(np.ones(len(struct), dtype='bool'), struct)
244  self._pars = StructArray(np.zeros(len(struct), dtype='float'), struct)
245  self._index = StructArray(np.zeros(len(struct), dtype='int'), struct)
246  self._struct = struct
247  self._reindex()
248  self._base = self
249 

Member Function Documentation

◆ __getitem__()

def lsst.cp.pipe.astierCovFitParameters.FitParameters.__getitem__ (   self,
  args 
)

Definition at line 276 of file astierCovFitParameters.py.

276  def __getitem__(self, args):
277  # Prevent conversion to scalars
278  if isinstance(args, int):
279  args = slice(args, args + 1)
280  new = FitParameters.__new__(FitParameters)
281  new._free = self._free[args]
282  new._pars = self._pars[args]
283  new._index = self._index[args]
284  new._base = self._base
285  return new
286 

◆ __repr__()

def lsst.cp.pipe.astierCovFitParameters.FitParameters.__repr__ (   self)

Definition at line 306 of file astierCovFitParameters.py.

306  def __repr__(self):
307  if hasattr(self, '_struct'):
308  s = "\n".join(['%s: %s' % (key, repr(self._pars[key])) for key in self._struct])
309  else:
310  s = repr(self._pars)
311  return s

◆ __setitem__()

def lsst.cp.pipe.astierCovFitParameters.FitParameters.__setitem__ (   self,
  args,
  val 
)

Definition at line 287 of file astierCovFitParameters.py.

287  def __setitem__(self, args, val):
288  self._pars[args] = val
289 

◆ copy()

def lsst.cp.pipe.astierCovFitParameters.FitParameters.copy (   self)

Definition at line 250 of file astierCovFitParameters.py.

250  def copy(self):
251  cop = FitParameters(self._struct)
252  cop._free = StructArray(np.copy(self._free), cop._struct)
253  cop._pars = StructArray(np.copy(self._pars), cop._struct)
254  cop._index = StructArray(np.copy(self._index), cop._struct)
255  cop._reindex()
256  cop._base = cop
257  return cop
258 

◆ fix()

def lsst.cp.pipe.astierCovFitParameters.FitParameters.fix (   self,
  keys = slice(None),
  val = None 
)

Definition at line 263 of file astierCovFitParameters.py.

263  def fix(self, keys=slice(None), val=None):
264  self._free[keys] = False
265  if val is not None:
266  self._pars[keys] = val
267  self._base._reindex()
268 

◆ free() [1/2]

def lsst.cp.pipe.astierCovFitParameters.FitParameters.free (   self)

Definition at line 291 of file astierCovFitParameters.py.

291  def free(self):
292  return self._pars[self._free]
293 

◆ free() [2/2]

def lsst.cp.pipe.astierCovFitParameters.FitParameters.free (   self,
  val 
)

Definition at line 295 of file astierCovFitParameters.py.

295  def free(self, val):
296  self._pars[self._free] = val
297 

◆ full() [1/2]

def lsst.cp.pipe.astierCovFitParameters.FitParameters.full (   self)

Definition at line 299 of file astierCovFitParameters.py.

299  def full(self):
300  return self._pars
301 

◆ full() [2/2]

def lsst.cp.pipe.astierCovFitParameters.FitParameters.full (   self,
  val 
)

Definition at line 303 of file astierCovFitParameters.py.

303  def full(self, val):
304  self._pars = val
305 

◆ indexof()

def lsst.cp.pipe.astierCovFitParameters.FitParameters.indexof (   self,
  indices = slice(None) 
)

Definition at line 273 of file astierCovFitParameters.py.

273  def indexof(self, indices=slice(None)):
274  return self._index[indices]
275 

◆ release()

def lsst.cp.pipe.astierCovFitParameters.FitParameters.release (   self,
  keys = slice(None) 
)

Definition at line 269 of file astierCovFitParameters.py.

269  def release(self, keys=slice(None)):
270  self._free[keys] = True
271  self._base._reindex()
272 

The documentation for this class was generated from the following file: