Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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)
Example #11
0
    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)
Example #12
0
    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)
Example #13
0
    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)
Example #14
0
    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)
Example #15
0
    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)
Example #16
0
    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)
Example #17
0
    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)
Example #18
0
    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)
Example #19
0
    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)
Example #20
0
    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)
Example #21
0
    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)
Example #22
0
    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)