Ejemplo n.º 1
0
    def testProcessDataEvent(self):
        with self.joboffice.bb.queues:
            self.assertEquals(self.joboffice.bb.queues.dataAvailable.length(),
                              0)

        ps = PropertySet()
        ps.set("pipelineName", "PostISR")
        ps.set("STATUS", "available")

        ds = self.testDatasetFromProperty()
        ps.add("dataset", serializePolicy(ds.toPolicy()))
        for i in xrange(1, 4):
            ds = copy.deepcopy(ds)
            ds.ids["ampid"] += 1
            ps.add("dataset", serializePolicy(ds.toPolicy()))

        devent = StatusEvent("testing", originatorId, ps)

        # pdb.set_trace()
        self.joboffice.processDataEvent(devent)

        with self.joboffice.bb.queues:
            self.assertEquals(self.joboffice.bb.queues.dataAvailable.length(),
                              4)
            self.assertEquals(self.joboffice.bb.queues.jobsPossible.length(),
                              1)
            job = self.joboffice.bb.queues.jobsPossible.get(0)
            self.assertEquals(job.getName(), "Job-1")
            self.assertEquals(job.triggerHandler.getNeededDatasetCount(), 12)
    def testProcessDataEvent(self):
        with self.joboffice.bb.queues:
          self.assertEquals(self.joboffice.bb.queues.dataAvailable.length(), 0)

        ps = PropertySet()
        ps.set("pipelineName", "PostISR")
        ps.set("STATUS", "available")

        ds = self.testDatasetFromProperty()
        ps.add("dataset", serializePolicy(ds.toPolicy()))
        for i in xrange(1,4):
            ds = copy.deepcopy(ds)
            ds.ids["ampid"] += 1
            ps.add("dataset", serializePolicy(ds.toPolicy()))

        devent = StatusEvent("testing", originatorId, ps)

        # pdb.set_trace()
        self.joboffice.processDataEvent(devent)

        with self.joboffice.bb.queues:
          self.assertEquals(self.joboffice.bb.queues.dataAvailable.length(), 4)
          self.assertEquals(self.joboffice.bb.queues.jobsPossible.length(), 1)
          job = self.joboffice.bb.queues.jobsPossible.get(0)
          self.assertEquals(job.getName(), "Job-1")
          self.assertEquals(job.triggerHandler.getNeededDatasetCount(), 12)
Ejemplo n.º 3
0
def _makeAssociationMetadata(numUpdated=27, numNew=4, numUnassociated=15, numSso=5, numAssocSso=1):
    metadata = PropertySet()
    metadata.add("association.numUpdatedDiaObjects", numUpdated)
    metadata.add("association.numNewDiaObjects", numNew)
    metadata.add("association.numTotalSolarSystemObjects", numSso)
    metadata.add("association.numAssociatedSsObjects", numAssocSso)
    metadata.add("association.numUnassociatedDiaObjects", numUnassociated)
    return metadata
Ejemplo n.º 4
0
 def makeJobCommandEvent(self, job, pipeline, runId=""):
     """
     create a CommandEvent to send to a pipeline instructing it to
     commence working on the given job.
     """
     props = PropertySet()
     for ds in job.getInputDatasets():
         props.add("inputs", serializePolicy(ds.toPolicy()))
     for ds in job.getOutputDatasets():
         props.add("outputs", serializePolicy(ds.toPolicy()))
     props.set("identity", serializePolicy(job.getJobIdentity().toPolicy()))
     props.set("STATUS", "job:assign")
     props.set("name", job.getName())
     return CommandEvent(runId, self.originatorId, pipeline, props)
Ejemplo n.º 5
0
 def makeJobCommandEvent(self, job, pipeline, runId=""):
     """
     create a CommandEvent to send to a pipeline instructing it to
     commence working on the given job.
     """
     props = PropertySet()
     for ds in job.getInputDatasets():
         props.add("inputs", serializePolicy(ds.toPolicy()))
     for ds in job.getOutputDatasets():
         props.add("outputs", serializePolicy(ds.toPolicy()))
     props.set("identity", serializePolicy(job.getJobIdentity().toPolicy()))
     props.set("STATUS", "job:assign")
     props.set("name", job.getName())
     return CommandEvent(runId, self.originatorId, pipeline, props)
Ejemplo n.º 6
0
class _EventFactory(object):
    def __init__(self, runid, props=None):
        """
        create a generic event factor
        """
        self.runid = runid

        if isinstance(props, PropertySet):
            self.props = props
        else:
            self.props = PropertySet()
            if isinstance(props, dict):
                for key in props.keys():
                    self.props.set(key, props[key])

    def create(self):
        """create a new instance of the event"""
        return ev.Event(self.runid, self.props)

    def setRunId(self, id):
        """set the Run ID"""
        self.runid = runid

    def getRunId(self):
        """set the Run ID"""
        return self.runid

    def setProperty(self, name, val):
        """set the value of a named property"""
        self.props.set(name, val)

    def getProperty(self, name):
        """get the value of a named property"""
        return self.props.getString(name)

    def addDataset(self, propname, ds):
        """add a dataset to the event"""
        self.props.add(propname, serializeDataset(ds))

    def getDatasets(self, propname):
        """return the datasets attached to the event"""
        return unserializeDatasetList(self.props.getArrayString(propname))
Ejemplo n.º 7
0
class _EventFactory(object):

    def __init__(self, runid, props=None):
        """
        create a generic event factor
        """
        self.runid = runid

        if isinstance(props, PropertySet):
            self.props = props
        else:
            self.props = PropertySet()
            if isinstance(props, dict):
                for key in props.keys():
                    self.props.set(key, props[key])

    def create(self):
        """create a new instance of the event"""
        return ev.Event(self.runid, self.props)

    def setRunId(self, id):
        """set the Run ID"""
        self.runid = runid
    def getRunId(self):
        """set the Run ID"""
        return self.runid

    def setProperty(self, name, val):
        """set the value of a named property"""
        self.props.set(name, val)
    def getProperty(self, name):
        """get the value of a named property"""
        return self.props.getString(name)

    def addDataset(self, propname, ds):
        """add a dataset to the event"""
        self.props.add(propname, serializeDataset(ds))
    def getDatasets(self, propname):
        """return the datasets attached to the event"""
        return unserializeDatasetList(self.props.getArrayString(propname))
Ejemplo n.º 8
0
 def dummyMetadata():
     result = PropertySet()
     result.add("lsst.ap.pipe.ccdProcessor.cycleCount", 42)
     return result
Ejemplo n.º 9
0
 def dummyMetadata():
     result = PropertySet()
     result.add("lsst.pipe.base.calibrate.cycleCount", 42)
     return result
Ejemplo n.º 10
0
def makeWcs(pixelScale, crPixPos, crValCoord, posAng=afwGeom.Angle(0.0), doFlipX=False, projection="TAN",
    radDecCSys="ICRS", equinox=2000):
    """Make a Wcs
    
    @param[in] pixelScale: desired scale, as sky/pixel, an afwGeom.Angle
    @param[in] crPixPos: crPix for WCS, using the LSST standard; a pair of floats
    @param[in] crValCoord: crVal for WCS (afwCoord.Coord)
    @param[in] posAng: position angle (afwGeom.Angle)
    @param[in] doFlipX: flip X axis?
    @param[in] projection: WCS projection (e.g. "TAN" or "STG")
    """
    if len(projection) != 3:
        raise RuntimeError("projection=%r; must have length 3" % (projection,))
    ctypeList = [("%-5s%3s" % (("RA", "DEC")[i], projection)).replace(" ", "-")
        for i in range(2)]
    ps = PropertySet()
    crPixFits = [ind + 1.0 for ind in crPixPos] # convert pix position to FITS standard
    crValDeg = crValCoord.getPosition(afwGeom.degrees)
    posAngRad = posAng.asRadians()
    pixelScaleDeg = pixelScale.asDegrees()
    print("pixelScale = %s deg = %s rad" % (pixelScale.asDegrees(), pixelScale.asRadians()))
    print("crPixPos = ", crPixPos)
    print("crVal = %s deg = %s rad" % (crValCoord.getPosition(afwGeom.degrees),
        crValCoord.getPosition(afwGeom.radians)))

    cdMat = np.array([[ math.cos(posAngRad), math.sin(posAngRad)],
                      [-math.sin(posAngRad), math.cos(posAngRad)]], dtype=float) * pixelScaleDeg
    if doFlipX:
        cdMat[:,0] = -cdMat[:,0]
    for i in range(2):
        ip1 = i + 1
        ps.add("CTYPE%1d" % (ip1,), ctypeList[i])
        ps.add("CRPIX%1d" % (ip1,), crPixFits[i])
        ps.add("CRVAL%1d" % (ip1,), crValDeg[i])
    ps.add("RADESYS", radDecCSys)
    ps.add("EQUINOX", equinox)
    ps.add("CD1_1", cdMat[0, 0])
    ps.add("CD2_1", cdMat[1, 0])
    ps.add("CD1_2", cdMat[0, 1])
    ps.add("CD2_2", cdMat[1, 1])
    return afwImage.makeWcs(ps)
def _makeAssociationMetadata(numUpdated=27, numNew=4, numUnassociated=15):
    metadata = PropertySet()
    metadata.add("association.numUpdatedDiaObjects", numUpdated)
    metadata.add("association.numNewDiaObjects", numNew)
    metadata.add("association.numUnassociatedDiaObjects", numUnassociated)
    return metadata