LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Public Attributes | List of all members
lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure Class Reference

Public Member Functions

def __init__ (self, parent, xDim, yDim, n=0)
 
def xlim (self)
 
def ylim (self)
 
def zlim (self)
 
def guessExtent (self)
 
def setExtent (self, x0=None, x1=None, y0=None, y1=None, z0=None, z1=None, lock=True)
 
def plotTrack (self)
 
def plotRejected (self)
 
def plotSurfaces (self)
 
def move (self, n)
 

Public Attributes

 parent
 
 xDim
 
 yDim
 
 j
 
 i
 
 yKey
 
 xKey
 
 zKey
 
 slice2d
 
 sliceX
 
 sliceY
 
 track
 
 n
 
 figure
 
 axes3d
 
 axes2d
 
 axesX
 
 axesY
 
 artists
 

Detailed Description

Definition at line 101 of file optimizerDisplay.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.__init__ (   self,
  parent,
  xDim,
  yDim,
  n = 0 
)

Definition at line 103 of file optimizerDisplay.py.

103  def __init__(self, parent, xDim, yDim, n=0):
104  self.parent = parent
105  self.xDim = xDim
106  self.yDim = yDim
107  self.j = self.parent.dimensions.index(self.xDim)
108  self.i = self.parent.dimensions.index(self.yDim)
109  self.yKey = self.parent.recorder.parameters[self.i]
110  self.xKey = self.parent.recorder.parameters[self.j]
111  self.zKey = self.parent.recorder.objective
112  # grid slice indices corresponding to the dimensions we're plotting
113  self.slice2d = [s//2 for s in self.parent.unitGrid.shape[:-1]]
114  self.slice2d[self.i] = slice(None)
115  self.slice2d[self.j] = slice(None)
116  self.slice2d = tuple(self.slice2d)
117  self.sliceX = [s//2 for s in self.parent.unitGrid.shape[:-1]]
118  self.sliceX[self.j] = slice(None)
119  self.sliceX = tuple(self.sliceX)
120  self.sliceY = [s//2 for s in self.parent.unitGrid.shape[:-1]]
121  self.sliceY[self.i] = slice(None)
122  self.sliceY = tuple(self.sliceY)
123  self.track = dict(
124  x=numpy.array([iteration.sample.get(self.xKey) for iteration in self.parent.track]),
125  y=numpy.array([iteration.sample.get(self.yKey) for iteration in self.parent.track]),
126  z=numpy.array([iteration.sample.get(self.zKey) for iteration in self.parent.track]),
127  )
128  self.n = n
129  self.figure = matplotlib.pyplot.figure(f"{xDim} vs {yDim}", figsize=(16, 8))
130  self.figure.subplots_adjust(left=0.025, right=0.975, bottom=0.08, top=0.95, wspace=0.12)
131  self.axes3d = self.figure.add_subplot(1, 2, 1, projection='3d')
132  self.axes3d.autoscale(False)
133  self.axes3d.set_xlabel(self.xDim)
134  self.axes3d.set_ylabel(self.yDim)
135  self.axes2d = self.figure.add_subplot(1, 2, 2)
136  self.axes2d.set_xlabel(self.xDim)
137  self.axes2d.set_ylabel(self.yDim)
138  self.axes2d.autoscale(False)
139  divider = make_axes_locatable(self.axes2d)
140  self.axesX = divider.append_axes("top", 1.5, pad=0.1, sharex=self.axes2d)
141  self.axesX.autoscale(False, axis='x')
142  hide_xticklabels(self.axesX)
143  self.axesY = divider.append_axes("right", 1.5, pad=0.1, sharey=self.axes2d)
144  self.axesY.autoscale(False, axis='y')
145  hide_yticklabels(self.axesY)
146  self.artists = []
147  self.guessExtent()
148  self.plotTrack()
149  self.plotRejected()
150  self.plotSurfaces()
151 

Member Function Documentation

◆ guessExtent()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.guessExtent (   self)

Definition at line 164 of file optimizerDisplay.py.

164  def guessExtent(self):
165  current = self.parent.track[self.n]
166  x = current.sample.get(self.xKey)
167  y = current.sample.get(self.yKey)
168  zMin1 = current.objectiveValues[self.slice2d].min()
169  zMax1 = current.objectiveValues[self.slice2d].max()
170  zMin2 = current.objectiveModel[self.slice2d].min()
171  zMax2 = current.objectiveModel[self.slice2d].max()
172  self.setExtent(x0=x - current.trust, x1=x + current.trust,
173  y0=y - current.trust, y1=y + current.trust,
174  z0=min(zMin1, zMin2), z1=max(zMax1, zMax2), lock=False)
175 
int min
int max

◆ move()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.move (   self,
  n 
)

Definition at line 271 of file optimizerDisplay.py.

271  def move(self, n):
272  self.n = n
273  if not self._lock:
274  self.guessExtent()
275  for artist in self.artists:
276  try:
277  artist.remove()
278  except TypeError:
279  # sometimes matplotlib throws an exception even though everything worked fine
280  pass
281  self.artists = []
282  self.plotSurfaces()
283  self.plotRejected()
284  self.figure.canvas.draw()

◆ plotRejected()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.plotRejected (   self)

Definition at line 221 of file optimizerDisplay.py.

221  def plotRejected(self):
222  kwds = dict(markeredgewidth=0, markerfacecolor='r', color='r', marker='v')
223  current = self.parent.track[self.n]
224  cx = current.sample.get(self.xKey)
225  cy = current.sample.get(self.yKey)
226  cz = current.sample.get(self.zKey)
227  for r in current.rejected:
228  x = [cx, r.get(self.xKey)]
229  y = [cy, r.get(self.yKey)]
230  z = [cz, r.get(self.zKey)]
231  self.artists.extend(self.axes3d.plot(x, y, z, **kwds))
232  self.artists.extend(self.axes2d.plot(x, y, **kwds))
233  self.artists.extend(self.axesX.plot(x, z, **kwds))
234  self.artists.extend(self.axesY.plot(z, y, **kwds))
235 
def plot(mag, width, centers, clusterId, marker="o", markersize=2, markeredgewidth=0, ltype='-', magType="model", clear=True)

◆ plotSurfaces()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.plotSurfaces (   self)

Definition at line 236 of file optimizerDisplay.py.

236  def plotSurfaces(self):
237  current = self.parent.track[self.n]
238 
239  # Start with 2-d and 3-d surfaces
240  x = current.grid[self.slice2d + (self.j,)]
241  y = current.grid[self.slice2d + (self.i,)]
242  z1 = current.objectiveValues[self.slice2d].copy()
243  z2 = current.objectiveModel[self.slice2d].copy()
244  norm = matplotlib.colors.Normalize(vmin=self.zlim[0], vmax=self.zlim[1])
245 
246  self._contour(self.axes2d, x, y, z1, cmap=matplotlib.cm.spring, norm=norm)
247  self._contour(self.axes2d, x, y, z2, cmap=matplotlib.cm.winter, norm=norm)
248 
249  # matplotlib doesn't do clipping in 3d, so we'll do that manually
250  if self._clipZ(x, y, z1):
251  self._contour(self.axes3d, x, y, z1, cmap=matplotlib.cm.spring, norm=norm)
252  self.artists.append(self.axes3d.plot_surface(x, y, z1, rstride=1, cstride=1,
253  cmap=matplotlib.cm.spring, norm=norm,
254  linewidth=0, antialiased=1, alpha=0.5))
255  if self._clipZ(x, y, z2):
256  self._contour(self.axes3d, x, y, z2, cmap=matplotlib.cm.winter, norm=norm)
257  self.artists.append(self.axes3d.plot_surface(x, y, z2, rstride=1, cstride=1,
258  cmap=matplotlib.cm.winter, norm=norm,
259  linewidth=0, antialiased=1, alpha=0.5))
260 
261  # Now the 1-d surfaces
262  self.artists.extend(self.axesX.plot(current.grid[self.sliceX + (self.j,)],
263  current.objectiveValues[self.sliceX], 'm-'))
264  self.artists.extend(self.axesX.plot(current.grid[self.sliceX + (self.j,)],
265  current.objectiveModel[self.sliceX], 'c-'))
266  self.artists.extend(self.axesY.plot(current.objectiveValues[self.sliceY],
267  current.grid[self.sliceY + (self.i,)], 'm-'))
268  self.artists.extend(self.axesY.plot(current.objectiveModel[self.sliceY],
269  current.grid[self.sliceY + (self.i,)], 'c-'))
270 
std::shared_ptr< FrameSet > append(FrameSet const &first, FrameSet const &second)
Construct a FrameSet that performs two transformations in series.
Definition: functional.cc:33

◆ plotTrack()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.plotTrack (   self)

Definition at line 214 of file optimizerDisplay.py.

214  def plotTrack(self):
215  kwds = dict(markeredgewidth=0, markerfacecolor='g', color='g', marker='o')
216  self.axes3d.plot(self.track['x'], self.track['y'], self.track['z'], **kwds)
217  self.axes2d.plot(self.track['x'], self.track['y'], **kwds)
218  self.axesX.plot(self.track['x'], self.track['z'], **kwds)
219  self.axesY.plot(self.track['z'], self.track['y'], **kwds)
220 

◆ setExtent()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.setExtent (   self,
  x0 = None,
  x1 = None,
  y0 = None,
  y1 = None,
  z0 = None,
  z1 = None,
  lock = True 
)

Definition at line 176 of file optimizerDisplay.py.

176  def setExtent(self, x0=None, x1=None, y0=None, y1=None, z0=None, z1=None, lock=True):
177  if x0 is None:
178  x0 = self._extent[0]
179  if x1 is None:
180  x1 = self._extent[1]
181  if y0 is None:
182  y0 = self._extent[2]
183  if y1 is None:
184  y1 = self._extent[3]
185  if z0 is None:
186  z0 = self._extent[4]
187  if z1 is None:
188  z1 = self._extent[5]
189  self._extent = (x0, x1, y0, y1, z0, z1)
190  self._lock = lock
191  self.axes3d.set_xlim(*self.xlim)
192  self.axes3d.set_ylim(*self.ylim)
193  self.axes3d.set_zlim(*self.zlim)
194  self.axes2d.set_xlim(*self.xlim)
195  self.axes2d.set_ylim(*self.ylim)
196  self.axesX.set_ylim(*self.zlim)
197  self.axesY.set_xlim(*self.zlim)
198 

◆ xlim()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.xlim (   self)

Definition at line 153 of file optimizerDisplay.py.

153  def xlim(self):
154  return self._extent[:2]
155 

◆ ylim()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.ylim (   self)

Definition at line 157 of file optimizerDisplay.py.

157  def ylim(self):
158  return self._extent[2:4]
159 

◆ zlim()

def lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.zlim (   self)

Definition at line 161 of file optimizerDisplay.py.

161  def zlim(self):
162  return self._extent[4:]
163 

Member Data Documentation

◆ artists

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.artists

Definition at line 146 of file optimizerDisplay.py.

◆ axes2d

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.axes2d

Definition at line 135 of file optimizerDisplay.py.

◆ axes3d

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.axes3d

Definition at line 131 of file optimizerDisplay.py.

◆ axesX

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.axesX

Definition at line 140 of file optimizerDisplay.py.

◆ axesY

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.axesY

Definition at line 143 of file optimizerDisplay.py.

◆ figure

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.figure

Definition at line 129 of file optimizerDisplay.py.

◆ i

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.i

Definition at line 108 of file optimizerDisplay.py.

◆ j

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.j

Definition at line 107 of file optimizerDisplay.py.

◆ n

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.n

Definition at line 128 of file optimizerDisplay.py.

◆ parent

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.parent

Definition at line 104 of file optimizerDisplay.py.

◆ slice2d

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.slice2d

Definition at line 113 of file optimizerDisplay.py.

◆ sliceX

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.sliceX

Definition at line 117 of file optimizerDisplay.py.

◆ sliceY

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.sliceY

Definition at line 120 of file optimizerDisplay.py.

◆ track

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.track

Definition at line 123 of file optimizerDisplay.py.

◆ xDim

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.xDim

Definition at line 105 of file optimizerDisplay.py.

◆ xKey

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.xKey

Definition at line 110 of file optimizerDisplay.py.

◆ yDim

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.yDim

Definition at line 106 of file optimizerDisplay.py.

◆ yKey

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.yKey

Definition at line 109 of file optimizerDisplay.py.

◆ zKey

lsst.meas.modelfit.display.optimizerDisplay.OptimizerDisplayFigure.zKey

Definition at line 111 of file optimizerDisplay.py.


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