IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 31347


Ignore:
Timestamp:
Apr 22, 2011, 1:16:47 PM (15 years ago)
Author:
rhenders
Message:

Producing merge-able stack batches

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippToPsps/jython/stackbatch.py

    r31324 r31347  
    2727
    2828       # delete PSPS tables
    29        self.dropTable("StackMeta")
    30        self.dropTable("StackDetection")
    31        self.dropTable("StackModelFit")
    32        self.dropTable("StackApFlx")
    33        self.dropTable("StackToImage")
     29       self.scratchDb.dropTable("StackMeta")
     30       self.scratchDb.dropTable("StackDetection")
     31       self.scratchDb.dropTable("StackModelFit")
     32       self.scratchDb.dropTable("StackApFlx")
     33       self.scratchDb.dropTable("StackToImage")
     34       self.scratchDb.dropTable("SkinnyObject")
     35       self.scratchDb.dropTable("ObjectCalColor")
    3436
    3537       # delete IPP tables
    36        self.dropTable("SkyChip_psf")
    37        self.dropTable("SkyChip_xsrc")
    38        self.dropTable("SkyChip_xfit")
    39        self.dropTable("SkyChip_xrad")
     38       self.scratchDb.dropTable("SkyChip_psf")
     39       self.scratchDb.dropTable("SkyChip_xsrc")
     40       self.scratchDb.dropTable("SkyChip_xfit")
     41       self.scratchDb.dropTable("SkyChip_xrad")
    4042
    4143       # obs time makes no sense except for nightly stacks
     
    5961       self.historyModNum = "0"
    6062
    61 
    62     '''
    63     Updates a table with data release number
    64     '''
    65     def updateDataRelease(self, table):
    66 
    67         sql = "UPDATE " + table + "  SET dataRelease=" + self.dataRelease
    68         self.localStmt.execute(sql)
     63       # insert what we know about this stack batch into the stack table
     64       self.ippToPspsDb.insertStackMeta(self.batchID, skyID, self.header['STK_ID'], self.filter, self.header['STK_TYPE'])
     65
     66       # insert sourceID/imageID combo so DVO can look it up
     67       self.scratchDb.insertNewDvoImage(self.header['SOURCEID'], self.header['IMAGEID'])
    6968
    7069    '''
     
    7473
    7574        sql = "UPDATE " + table + "  SET stackMetaID=" + self.header['STK_ID']
    76         self.localStmt.execute(sql)
     75        self.scratchDb.stmt.execute(sql)
    7776
    7877    '''
     
    8281
    8382        sql = "UPDATE "+table+" AS a, StackType AS b SET a.stackTypeID=b.stackTypeID WHERE b.name = '"+self.header['STK_TYPE']+"'"
    84         self.localStmt.execute(sql)
     83        self.scratchDb.stmt.execute(sql)
    8584
    8685
     
    133132        WHERE a.ippDetectID=b.IPP_IDET AND b.PSF_FWHM "+psfCondition
    134133
    135         self.localStmt.execute(sql)
     134        self.scratchDb.stmt.execute(sql)
    136135
    137136    '''
     
    181180        WHERE a.ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
    182181
    183         self.localStmt.execute(sql)
     182        self.scratchDb.stmt.execute(sql)
    184183
    185184        # sersic fit has an extra parameter
     
    198197            WHERE a.ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
    199198
    200             self.localStmt.execute(sql)
     199            self.scratchDb.stmt.execute(sql)
    201200
    202201
     
    206205    def populateStackMeta(self):
    207206        self.logger.info("Procesing StackMeta table")
    208 
    209         photoCalID = self.getPhotoCalID()
    210207
    211208        sql = "INSERT INTO StackMeta (\
     
    214211        ,photoCalID \
    215212        ,photoZero \
     213        ,expTime \
    216214        ,nP2Images \
    217215        ,psfModelID \
     
    231229        " + self.header['STK_ID'] + " \
    232230        ," + self.skycell + " \
    233         ," + str(photoCalID) + " \
     231        ," + str(self.scratchDb.getPhotoCalID(self.header['SOURCEID'], self.header['IMAGEID'])) + " \
    234232        ," + self.header['FPA.ZP'] + " \
     233        ," + self.header['EXPTIME'] + " \
    235234        ," + self.header['NINPUTS'] + " \
    236235        ,'" + self.header['PSFMODEL'] + "' \
     
    248247        ," + self.header['PC002002'] + " \
    249248        )"
    250         self.localStmt.execute(sql)
    251 
    252         self.updateSurveyID("StackMeta")
    253         self.updateFilterID("StackMeta")
     249        self.scratchDb.stmt.execute(sql)
     250
     251        self.scratchDb.updateAllRows("StackMeta", "surveyID", str(self.surveyID))
     252        self.scratchDb.updateFilterID("StackMeta", self.filter)
     253        self.scratchDb.updateAllRows("StackMeta", "dataRelease", str(self.dataRelease))
    254254        self.updateStackTypeID("StackMeta")
    255         self.updateDataRelease("StackMeta")
    256255
    257256    '''
     
    308307               ,X_PSF_SIG \
    309308               ,Y_PSF_SIG \
    310                ,PSF_INST_FLUX \
    311                ,PSF_INST_FLUX_SIG \
     309               ,POW(10.0, (-0.4*PSF_INST_MAG)) / "+self.header['EXPTIME']+" \
     310               ,ABS((PSF_INST_MAG_SIG*(POW(10.0, (-0.4*PSF_INST_MAG)) / "+self.header['EXPTIME']+")) / 1.085736) \
    312311               ,POW(10.0, (-0.4*PEAK_FLUX_AS_MAG)) / "+self.header['EXPTIME']+" \
    313312               ,SKY \
     
    339338               FROM SkyChip_psf"
    340339
    341         self.localStmt.execute(sql)
    342 
    343         self.updateSurveyID("StackDetection")
    344         self.updateFilterID("StackDetection")
     340        self.scratchDb.stmt.execute(sql)
     341
     342        self.scratchDb.updateAllRows("StackDetection", "surveyID", str(self.surveyID))
     343        self.scratchDb.updateFilterID("StackDetection", self.filter)
     344        self.scratchDb.updateAllRows("StackDetection", "dataRelease", str(self.dataRelease))
     345        self.scratchDb.updateAllRows("StackDetection", "primaryF", "0")
     346        self.scratchDb.updateAllRows("StackDetection", "activeFlag", "0")
    345347        self.updateStackMetaID("StackDetection")
    346         self.updateDataRelease("StackDetection")
    347348        self.updateStackTypeID("StackDetection")
    348349        self.updateDvoIDs("StackDetection")
     350
     351        # now delete bad flux
     352        self.scratchDb.reportAndDeleteRowsWithNULLS("StackDetection", "instFlux")
     353        self.scratchDb.reportAndDeleteRowsWithNULLS("StackDetection", "objID")
     354
    349355
    350356    '''
     
    361367
    362368        try:
    363             self.localStmt.execute(sql)
     369            self.scratchDb.stmt.execute(sql)
    364370        except: return
    365371
     
    383389        ,petR90Err=b.PETRO_RADIUS_90_ERR \
    384390        WHERE a.ippDetectID=b.IPP_IDET"
    385         self.localStmt.execute(sql)
    386 
    387         self.updateSurveyID("StackApFlx")
    388         self.updateFilterID("StackApFlx")
     391        self.scratchDb.stmt.execute(sql)
     392
     393        self.scratchDb.updateAllRows("StackApFlx", "surveyID", str(self.surveyID))
     394        self.scratchDb.updateFilterID("StackApFlx", self.filter)
     395        self.scratchDb.updateAllRows("StackApFlx", "dataRelease", str(self.dataRelease))
     396        self.scratchDb.updateAllRows("StackApFlx", "primaryF", "0")
     397        self.scratchDb.updateAllRows("StackApFlx", "activeFlag", "0")
    389398        self.updateStackMetaID("StackApFlx")
    390         self.updateDataRelease("StackApFlx")
    391399        self.updateStackTypeID("StackApFlx")
    392400        self.updateDvoIDs("StackApFlx")
     
    401409        sql = "INSERT INTO StackModelFit (ippDetectID) SELECT DISTINCT IPP_IDET from SkyChip_xfit"
    402410        try:
    403             self.localStmt.execute(sql)
     411            self.scratchDb.stmt.execute(sql)
    404412        except:
    405413            return
     
    414422        self.updateModelFit("ser", "PS_MODEL_SERSIC")
    415423
    416         self.updateSurveyID("StackModelFit")
    417         self.updateFilterID("StackModelFit")
     424        self.scratchDb.updateAllRows("StackModelFit", "surveyID", str(self.surveyID))
     425        self.scratchDb.updateFilterID("StackModelFit", self.filter)
     426        self.scratchDb.updateAllRows("StackModelFit", "dataRelease", str(self.dataRelease))
     427        self.scratchDb.updateAllRows("StackModelFit", "primaryF", "0")
     428        self.scratchDb.updateAllRows("StackModelFit", "activeFlag", "0")
    418429        self.updateStackMetaID("StackModelFit")
    419         self.updateDataRelease("StackModelFit")
    420430        self.updateStackTypeID("StackModelFit")
    421431        self.updateDvoIDs("StackModelFit")
     
    433443                   VALUES (\
    434444                   " + self.header['STK_ID'] + ", " + imageID + ")"
    435             self.localStmt.execute(sql)
     445            self.scratchDb.stmt.execute(sql)
     446
     447    '''
     448    Populates the SkinnyObject table
     449    '''
     450    def populateSkinnyObject(self):
     451        self.logger.info("Procesing SkinnyObject table")
     452
     453        sql = "INSERT INTO SkinnyObject (\
     454               objID \
     455               ,ippObjID \
     456               ) \
     457               SELECT \
     458               objID \
     459               ,ippObjID \
     460               FROM StackDetection"
     461        self.scratchDb.stmt.execute(sql)
     462
     463        self.scratchDb.updateAllRows("SkinnyObject", "surveyID", str(self.surveyID))
     464        self.scratchDb.updateAllRows("SkinnyObject", "dataRelease", str(self.dataRelease))
     465
     466    '''
     467    Populates the ObjectCalColor table
     468    '''
     469    def populateObjectCalColor(self):
     470        self.logger.info("Procesing ObjectCalColor table")
     471
     472        sql = "INSERT INTO ObjectCalColor (\
     473               objID \
     474               ,ippObjID \
     475               ) \
     476               SELECT \
     477               objID \
     478               ,ippObjID \
     479               FROM StackDetection"
     480        self.scratchDb.stmt.execute(sql)
     481
     482        self.scratchDb.updateFilterID("ObjectCalColor", self.filter)
     483        self.scratchDb.updateAllRows("ObjectCalColor", "dataRelease", str(self.dataRelease))
     484
    436485
    437486    '''
     
    441490
    442491        self.logger.info("Creating indexes on PSPS tables")
    443         self.createIndex("StackDetection", "ippDetectID")
    444         self.createIndex("StackApFlx", "ippDetectID")
    445         self.createIndex("StackModelFit", "ippDetectID")
     492        self.scratchDb.createIndex("StackDetection", "ippDetectID")
     493        self.scratchDb.createIndex("StackApFlx", "ippDetectID")
     494        self.scratchDb.createIndex("StackModelFit", "ippDetectID")
    446495
    447496    '''
     
    451500
    452501        self.logger.info("Creating indexes on IPP tables")
    453         self.createIndex("SkyChip_psf", "IPP_IDET")
    454         self.createIndex("SkyChip_xfit", "IPP_IDET")
    455         self.createIndex("SkyChip_xrad", "IPP_IDET")
    456         self.createIndex("SkyChip_xsrc", "IPP_IDET")
    457 
    458     '''
    459     Temporary hack to fudge some object IDs
    460     '''
    461     def fudgeIDs(self):
    462 
    463         self.logger.info("Creating bogus IDs on all detections")
    464 
    465         sql = "INSERT INTO dvoDetection (ippDetectID) SELECT IPP_IDET FROM SkyChip_psf";
    466         self.localStmt.execute(sql)
    467 
    468         sql = "SELECT ippDetectID FROM dvoDetection"
    469         rs = self.localStmt.executeQuery(sql)
    470 
    471         ids = []
    472         while (rs.next()):
    473             ids.append(rs.getInt(1))
    474 
    475         i = 1
    476         o = 72010000000000001
    477 
    478         for id in ids:
    479             sql = "UPDATE dvoDetection SET ippObjID = %d, objID = %d WHERE ippDetectID = %s" % (i, o, id)
    480             self.localStmt.execute(sql)
    481             i = i + 1
    482             o = o + 1
    483 
    484         self.updateDvoIDs("StackDetection")
    485         self.updateDvoIDs("StackApFlx")
    486         self.updateDvoIDs("StackModelFit")
    487        
    488         self.setMinMaxObjID("StackDetection")
     502        self.scratchDb.createIndex("SkyChip_psf", "IPP_IDET")
     503        self.scratchDb.createIndex("SkyChip_xfit", "IPP_IDET")
     504        self.scratchDb.createIndex("SkyChip_xrad", "IPP_IDET")
     505        self.scratchDb.createIndex("SkyChip_xsrc", "IPP_IDET")
    489506
    490507    '''
     
    498515               a.stackDetectID = b.detectID, \
    499516               a.objID = b.objID \
    500                WHERE a.ippDetectID = b.ippDetectID"
    501         self.localStmt.execute(sql)
     517               WHERE a.ippDetectID = b.ippDetectID \
     518               AND b.sourceID = " + self.header['SOURCEID'] + "\
     519               AND b.imageID = " + self.header['IMAGEID']
     520        self.scratchDb.stmt.execute(sql)
    502521        self.logger.info("...done")
    503522
     
    508527    def populatePspsTables(self):
    509528
    510         if not self.getIDsFromDVO(self.header['SOURCEID'], self.header['IMAGEID']):
    511             return False
     529        if not self.getIDsFromDVO(): return False
    512530
    513531        self.populateStackMeta()
     
    516534        self.populateStackApFlx()
    517535        self.populateStackToImage()
    518 
    519         #self.fudgeIDs()
    520         self.setMinMaxObjID("StackDetection")
     536        self.populateSkinnyObject()
     537        self.populateObjectCalColor()
     538
     539        self.setMinMaxObjID(["StackDetection"])
    521540       
    522541        return True
     
    525544logger = logging.getLogger("stackbatch")
    526545logger.info("Starting")
    527 sky_id = 689 # TODO
    528 #sky_id = 299 # TODO
    529546gpc1Db = Gpc1Db(logger)
    530 skyIDs = gpc1Db.getSkyIDsInThisDVODb("HAFTest.Staticsky")
    531 skyIDs = [689]
     547skyIDs = gpc1Db.getIDsInThisDVODbForThisStage("MD04.Staticsky", "staticsky")
     548#skyIDs = [689]
     549#skyIDs = [299]
     550skyIDs = [306]
    532551i = 0
    533552for skyID in skyIDs:
     
    545564        stackBatch.importIppTables("")
    546565        if stackBatch.populatePspsTables():
    547 
     566 
    548567            stackBatch.reportNullsInAllPspsTables(False)
    549568            stackBatch.exportPspsTablesToFits()
    550569            stackBatch.writeBatchManifest()
    551             #stackBatch.createTarball()
    552             #stackBatch.publishToDatastore()
     570            stackBatch.createTarball()
     571            stackBatch.publishToDatastore()
    553572
    554573        i = i + 1
Note: See TracChangeset for help on using the changeset viewer.