def custom(self, cmd): """dithered Arc(s) with given exptime. """ seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=True) job = self.resourceManager.request(cmd, spsSequence.Custom) job.instantiate(cmd, **seqKwargs) job.fire(cmd)
def detThroughFocus(self, cmd): """sps detector motors through focus with given exptime. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=True) dcbOn, dcbOff = dcbKwargs(cmdKeys) exptime, seqLib = fetchExpTime(cmdKeys) start, stop, num = cmdKeys['position'].values tilt = np.array( cmdKeys['tilt'].values) if 'tilt' in cmdKeys else np.zeros(3) positions = np.array([ np.linspace(start, stop - np.max(tilt), num=int(num)), ] * 3).transpose() + tilt positions = positions.round(2) duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 1 job = self.resourceManager.request(cmd, seqLib.DetThroughFocus) job.instantiate(cmd, exptime=exptime, positions=positions, dcbOn=dcbOn, dcbOff=dcbOff, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def ditheredFlats(self, cmd): """dithered flat(fiberTrace) with given exptime. Used to construct masterFlat """ cmdKeys = cmd.cmd.keywords dcbOn, dcbOff = dcbKwargs(cmdKeys, forceHalogen=True) exptime, seqLib = fetchExpTime(cmdKeys) seqKwargs = iicUtils.genSequenceKwargs(cmd) seqKwargs['name'] = 'calibProduct' if not seqKwargs[ 'name'] else seqKwargs['name'] pixels = cmdKeys['pixels'].values[0] if 'pixels' in cmdKeys else 0.3 nPositions = cmdKeys['nPositions'].values[ 0] if 'nPositions' in cmdKeys else 20 nPositions = (nPositions // 2) * 2 positions = np.linspace(-nPositions * pixels, nPositions * pixels, 2 * nPositions + 1).round(2) duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 1 job = self.resourceManager.request(cmd, seqLib.DitheredFlats) job.instantiate(cmd, exptime=exptime, positions=positions, dcbOn=dcbOn, dcbOff=dcbOff, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def moveToSafePosition(self, cmd): """Run an MCS+FPS loop, without moving cobras. """ seqKwargs = iicUtils.genSequenceKwargs(cmd) job = self.resourceManager.request(cmd, fpsSequence.MoveToSafePosition) job.instantiate(cmd, **seqKwargs) job.fire(cmd)
def gotoVerticalFromPhi60(self, cmd): """Run an MCS+FPS loop, without moving cobras. """ seqKwargs = iicUtils.genSequenceKwargs(cmd) job = self.resourceManager.request(cmd, fpsSequence.GotoVerticalFromPhi60) job.instantiate(cmd, **seqKwargs) job.fire(cmd)
def domeArc(self, cmd): cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=False) exptime = cmdKeys['exptime'].values duplicate = cmdKeys['duplicate'].values[0] if 'duplicate' in cmdKeys else 1 job = self.resourceManager.request(cmd, spsSequence.DomeArc) job.instantiate(cmd, exptime=exptime, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def doBias(self, cmd): """sps bias(es). """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=True) duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 1 job = self.resourceManager.request(cmd, spsSequence.Biases) job.instantiate(cmd, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def motorOntimeSearch(self, cmd): """Run an MCS+FPS loop, without moving cobras. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd) phi = 'phi' in cmdKeys theta = 'theta' in cmdKeys job = self.resourceManager.request(cmd, fpsSequence.MotorOntimeSearch) job.instantiate(cmd, phi=phi, theta=theta, **seqKwargs) job.fire(cmd)
def movePhiToAngle(self, cmd): """Run an MCS+FPS loop, without moving cobras. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd) angle = cmdKeys['angle'].values[0] iteration = cmdKeys['iteration'].values[0] job = self.resourceManager.request(cmd, fpsSequence.MovePhiToAngle) job.instantiate(cmd, angle=angle, iteration=iteration, **seqKwargs) job.fire(cmd)
def startExposures(self, cmd): cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=False) exptime = cmdKeys['exptime'].values[0] objectLoop = spsSequence.ObjectInterleavedBiasLoop if 'doBias' in cmdKeys else spsSequence.ObjectLoop job = self.resourceManager.request(cmd, objectLoop) job.instantiate(cmd, exptime=exptime, **seqKwargs) cmd.finish() job.fire(cmd=self.actor.bcast)
def moveToPfsDesign(self, cmd): """Run an MCS+FPS loop, without moving cobras. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd) designId = cmdKeys['designId'].values[0] cmd.inform('designId=0x%016x' % designId) job = self.resourceManager.request(cmd, fpsSequence.MoveToPfsDesign) job.instantiate(cmd, designId=designId, **seqKwargs) job.fire(cmd)
def doDark(self, cmd): """sps dark(s) with given exptime. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=True) exptime = cmdKeys['exptime'].values duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 1 job = self.resourceManager.request(cmd, spsSequence.Darks) job.instantiate(cmd, exptime=exptime, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def masterBiases(self, cmd): """sps master bias(es). """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd) seqKwargs['name'] = 'calibProduct' if not seqKwargs[ 'name'] else seqKwargs['name'] duplicate = min(cmdKeys['duplicate'].values[0], 15) if 'duplicate' in cmdKeys else 15 job = self.resourceManager.request(cmd, spsSequence.MasterBiases) job.instantiate(cmd, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def angleConvergenceTest(self, cmd): """Run an MCS+FPS loop, without moving cobras. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd) phi = 'phi' in cmdKeys theta = 'theta' in cmdKeys angleTargets = cmdKeys['angleTargets'].values[0] job = self.resourceManager.request(cmd, fpsSequence.AngleConvergenceTest) job.instantiate(cmd, phi=phi, theta=theta, angleTargets=angleTargets, **seqKwargs) job.fire(cmd)
def scienceObject(self, cmd): """sps bias(es). """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd) exptime = cmdKeys['exptime'].values duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 1 window = cmdKeys['window'].values if 'window' in cmdKeys else False job = self.resourceManager.request(cmd, spsSequence.Object) job.instantiate(cmd, exptime=exptime, duplicate=duplicate, window=window, **seqKwargs) job.fire(cmd)
def targetConvergenceTest(self, cmd): """Run an MCS+FPS loop, without moving cobras. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd) ontime = 'ontime' in cmdKeys speed = 'speed' in cmdKeys totalTargets = cmdKeys['totalTargets'].values[0] maxsteps = cmdKeys['maxsteps'].values[0] job = self.resourceManager.request(cmd, fpsSequence.TargetConvergenceTest) job.instantiate(cmd, ontime=ontime, speed=speed, totalTargets=totalTargets, maxsteps=maxsteps, **seqKwargs) job.fire(cmd)
def defocusedArcs(self, cmd): """defocused Arc(s) with given exptime. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=True) dcbOn, dcbOff = dcbKwargs(cmdKeys) exptime, seqLib = fetchExpTime(cmdKeys) start, stop, num = cmdKeys['position'].values positions = np.linspace(start, stop, num=int(num)).round(6) duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 1 job = self.resourceManager.request(cmd, seqLib.DefocusedArcs) job.instantiate(cmd, exp_time_0=exptime, positions=positions, dcbOn=dcbOn, dcbOff=dcbOff, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def makeMotorMap(self, cmd): """Run an MCS+FPS loop, without moving cobras. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd) phi = 'phi' in cmdKeys theta = 'theta' in cmdKeys stepsize = cmdKeys['stepsize'].values[0] repeat = cmdKeys['repeat'].values[0] slowOnly = 'slowOnly' in cmdKeys job = self.resourceManager.request(cmd, fpsSequence.MakeMotorMap) job.instantiate(cmd, phi=phi, theta=theta, stepsize=stepsize, repeat=repeat, slowOnly=slowOnly, **seqKwargs) job.fire(cmd)
def scienceArc(self, cmd): """sps science arcs. """ cmdKeys = cmd.cmd.keywords isScience = 'arc' not in cmdKeys seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=not isScience) dcbOn, dcbOff = dcbKwargs(cmdKeys) exptime, seqLib = fetchExpTime(cmdKeys) seqObj = seqLib.ScienceArc if isScience else seqLib.Arcs duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 1 job = self.resourceManager.request(cmd, seqObj) job.instantiate(cmd, exptime=exptime, dcbOn=dcbOn, dcbOff=dcbOff, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def hexapodStability(self, cmd): """acquire hexapod stability grid. By default 12x12 and 3 duplicates at each position. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=True) timedLamps = timedLampsKwargs(cmdKeys) duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 3 position = cmdKeys['position'].values if 'position' in cmdKeys else [ -0.05, 0.055, 0.01 ] position = np.arange(*position) job = self.resourceManager.request(cmd, timedSpsSequence.HexapodStability) job.instantiate(cmd, position=position, timedLamps=timedLamps, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def ditheredArcs(self, cmd): """dithered Arc(s) with given exptime. """ cmdKeys = cmd.cmd.keywords seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=True) dcbOn, dcbOff = dcbKwargs(cmdKeys) exptime, seqLib = fetchExpTime(cmdKeys) pixels = cmdKeys['pixels'].values[0] doMinus = 'doMinus' in cmdKeys duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 1 job = self.resourceManager.request(cmd, seqLib.DitheredArcs) job.instantiate(cmd, exptime=exptime, pixels=pixels, doMinus=doMinus, dcbOn=dcbOn, dcbOff=dcbOff, duplicate=duplicate, **seqKwargs) job.fire(cmd)
def scienceTrace(self, cmd): """sps bias(es). """ cmdKeys = cmd.cmd.keywords isScience = 'flat' not in cmdKeys seqKwargs = iicUtils.genSequenceKwargs(cmd, customMade=not isScience) forceHalogen = 'halogen' not in cmdKeys dcbOn, dcbOff = dcbKwargs(cmdKeys, forceHalogen=forceHalogen) exptime, seqLib = fetchExpTime(cmdKeys) window = cmdKeys['window'].values if 'window' in cmdKeys else False seqObj = seqLib.ScienceTrace if isScience else seqLib.Flats duplicate = cmdKeys['duplicate'].values[ 0] if 'duplicate' in cmdKeys else 1 job = self.resourceManager.request(cmd, seqObj) job.instantiate(cmd, exptime=exptime, dcbOn=dcbOn, dcbOff=dcbOff, duplicate=duplicate, window=window, **seqKwargs) job.fire(cmd)