IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 12, 2014, 5:37:01 PM (12 years ago)
Author:
heather
Message:

Ipptopsps: new Schema, old dvo - first attempt to run sas

File:
1 edited

Legend:

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

    r36736 r36744  
    108108    Inserts stuff for all mags
    109109    '''
    110     def insertMeanMags(self, cpsTable):
     110    def updateMeanObjectFromCps(self, cpsTable):
    111111
    112112        # list of all filters PSPS is interested in
     
    130130            # from bit 24 to bit 13 so that it fits into the SMALLINT Object.Flags
    131131
    132             sql = "UPDATE MeanObject JOIN ObjectThin using (objID) JOIN \
    133                    " + cpsTable + " AS cps ON (cps.row = (ObjectThin.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
     132            sql = "UPDATE MeanObject JOIN \
     133                   " + cpsTable + " AS cps ON (cps.row = (MeanObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
    134134                   SET \
    135                    ObjectThin.n" + filter[1] + " = NCODE \
     135                   MeanObject." + filter[1] + "QfPerfect = -999 \
    136136                   ,MeanObject." + filter[1] + "MeanPSFMag = MAG \
    137137                   ,MeanObject." + filter[1] + "MeanPSFMagErr = MAG_ERR \
    138138                   ,MeanObject." + filter[1] + "MeanKronMag = MAG_KRON \
    139139                   ,MeanObject." + filter[1] + "MeanKronMagErr = MAG_KRON_ERR \
     140                   ,MeanObject." + filter[1] + "nIncPSFMag = -999 \
     141                   ,MeanObject." + filter[1] + "MeanPSFMagStd = -999 \
     142                   ,MeanObject." + filter[1] + "MinPSFMag = -999 \
     143                   ,MeanObject." + filter[1] + "MaxPSFMag = -999 \
     144                   ,MeanObject." + filter[1] + "nIncKronMag = -999 \
     145                   ,MeanObject." + filter[1] + "MeanKronMag = -999 \
     146                   ,MeanObject." + filter[1] + "MeanKronMagStd = -999 \
     147                   ,MeanObject." + filter[1] + "MeanApMag = MAG_AP \
     148                   ,MeanObject." + filter[1] + "MeanApMagErr = MAG_ERR \
     149                   ,MeanObject." + filter[1] + "MeanApMagStd = MAG_STDEV \
     150                   ,MeanObject." + filter[1] + "nIncApMag = -999 \
    140151                   ,MeanObject." + filter[1] + "Flags = (0x7fff & FLAGS) | ((FLAGS >> 11) & 0x2000) "
    141152
     
    143154            self.logger.info(sql)
    144155            self.scratchDb.execute(sql)
    145 
    146         self.logger.infoPair("Calculating nDetections from", "n[filters]")
    147         for filter in filters:
    148             # now do a sum of n[filters], but do not include the ones with -999
    149             sql = "UPDATE ObjectThin join MeanObject using (objID)  \
    150                    SET nDetections = nDetections + n" + filter[1] + " \
    151                    WHERE n" + filter[1] + " != -999"
    152             self.scratchDb.execute(sql)
    153            
    154 
    155 
    156156
    157157        # now set to null all MeanMagErr values > 0.5 (cut set by Gene, 2012-04-12)
     
    164164                   WHERE " + filter[1] + "MeanPSFMagErr > " + str(cut)
    165165            self.scratchDb.execute(sql)
     166    '''
     167    Inserts stuff for all mags
     168    '''
     169    def updateObjectThinFromCps(self, cpsTable):
     170
     171        # list of all filters PSPS is interested in
     172        interestedFilters = ['g', 'r', 'i', 'z', 'y']
     173       
     174        filters = self.scratchDb.getOrderedListOfFiltersFromPhotcodesTable(interestedFilters)
     175   
     176        # get a count of the available filters
     177        filterCount = self.scratchDb.getCountOfFiltersFromPhotcodesTable()
     178        # filterCount = len(filters)
     179
     180        self.logger.infoPair("Available filters in Photcodes", filters)
     181
     182        # the 'code' now defines the order in the cps file that the mags are listed for a given filter
     183        self.logger.infoPair("Adding magnitudes from", "cps table")
     184        for filter in filters:
     185
     186            filterID = self.scratchDb.getFilterID(filter[1])
     187
     188            # NOTE: Manipulation of FLAGS from cpsTable is to move ID_SECF_OBJ_EXT flag (0x01000000)
     189            # from bit 24 to bit 13 so that it fits into the SMALLINT Object.Flags
     190
     191            sql = "UPDATE ObjectThin JOIN \
     192                   " + cpsTable + " AS cps ON (cps.row = (ObjectThin.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
     193                   SET \
     194                   ObjectThin.n" + filter[1] + " = NCODE "
     195            self.logger.info(sql)
     196            self.scratchDb.execute(sql)
     197
     198        self.logger.infoPair("Calculating nDetections from", "n[filters]")
     199        for filter in filters:
     200            # now do a sum of n[filters], but do not include the ones with -999
     201            sql = "UPDATE ObjectThin   \
     202                   SET nDetections = nDetections + n" + filter[1] + " \
     203                   WHERE n" + filter[1] + " != -999"
     204            self.scratchDb.execute(sql)
     205           
     206
     207
     208    '''
     209    give objectName to objectThin
     210    '''
     211    def updateObjName(self):
     212    ##this is a 4 part update:
     213        self.logger.infoPair("updating objName", "using stacks")
     214    ## if we have a stackra and dec, use stackra and dec , dec >=0
     215
     216        sql = "update ObjectThin set objName =  concat('PS1.2 J', \
     217        lpad(floor(raStack/15.),2,'0'), \
     218        lpad((raStack/15.-(floor(raStack/15.)))*60. ,2,'0'), \
     219        lpad(format(((raStack/15.-(floor(raStack/15.)))*60.-floor((raStack/15.-(floor(raStack/15.)))*60.))*60.,2),4,'0'), \
     220        '+', \
     221        lpad(floor(decStack),2,'0'), \
     222        lpad((decStack-(floor(decStack)))*60. ,2,'0'), \
     223        lpad(format(((decStack-(floor(decStack)))*60.-floor((decStack-(floor(decStack)))*60.))*60.,2),4,'0') \
     224        ) where raStack > -999 and decStack > -999 and decStack >= 0"
     225        try:
     226            self.scratchDb.execute(sql)
     227        except:
     228            self.logger.errorPair("failed sql", sql)
     229            return False
     230
     231
     232    ## if we have a stackra and dec, use stackra and dec, dec < 0
     233
     234        sql = "update ObjectThin set objName =  concat('PS1.2 J', \
     235        lpad(floor(raStack/15.),2,'0'), \
     236        lpad((raStack/15.-(floor(raStack/15.)))*60. ,2,'0'), \
     237        lpad(format(((raStack/15.-(floor(raStack/15.)))*60.-floor((raStack/15.-(floor(raStack/15.)))*60.))*60.,2),4,'0'), \
     238        '-', \
     239        lpad(floor(decStack),2,'0'), \
     240        lpad((decStack-(floor(decStack)))*60. ,2,'0'), \
     241        lpad(format(((decStack-(floor(decStack)))*60.-floor((decStack-(floor(decStack)))*60.))*60.,2),4,'0') \
     242        ) where raStack > -999 and decStack > -999 and decStack <= 0"
     243        try:
     244            self.scratchDb.execute(sql)
     245        except:
     246            self.logger.errorPair("failed sql", sql)
     247            return False
     248        self.logger.infoPair("updating objName", "using means")
     249    ## use mean ra and dec (dec >= 0)
     250        sql = "update ObjectThin set objName =  concat('PS1.2 J', \
     251        lpad(floor(raMean/15.),2,'0'), \
     252        lpad((raMean/15.-(floor(raMean/15.)))*60. ,2,'0'), \
     253        lpad(format(((raMean/15.-(floor(raMean/15.)))*60.-floor((raMean/15.-(floor(raMean/15.)))*60.))*60.,2),4,'0'), \
     254        '+', \
     255        lpad(floor(decMean),2,'0'), \
     256        lpad((decMean-(floor(decMean)))*60. ,2,'0'), \
     257        lpad(format(((decMean-(floor(decMean)))*60.-floor((decMean-(floor(decMean)))*60.))*60.,2),4,'0') \
     258        ) where raMean > -999 and decMean > -999 and decMean >= 0"
     259        try:
     260            self.scratchDb.execute(sql)
     261        except:
     262            self.logger.errorPair("failed sql", sql)
     263            return False
     264 
     265    ## use mean ra and dec (dec < 0)
     266
     267        sql = "update ObjectThin set objName =  concat('PS1.2 J', \
     268        lpad(floor(raMean/15.),2,'0'), \
     269        lpad((raMean/15.-(floor(raMean/15.)))*60. ,2,'0'), \
     270        lpad(format(((raMean/15.-(floor(raMean/15.)))*60.-floor((raMean/15.-(floor(raMean/15.)))*60.))*60.,2),4,'0'), \
     271        '-', \
     272        lpad(floor(decMean),2,'0'), \
     273        lpad((decMean-(floor(decMean)))*60. ,2,'0'), \
     274        lpad(format(((decMean-(floor(decMean)))*60.-floor((decMean-(floor(decMean)))*60.))*60.,2),4,'0') \
     275        ) where raMean > -999 and decMean > -999 and decMean < 0"
     276
     277        try:
     278            self.scratchDb.execute(sql)
     279        except:
     280            self.logger.errorPair("failed sql", sql)
     281            return False
     282
     283
     284
     285
     286
    166287
    167288
     
    206327               ,randomID \
    207328               ,batchID \
     329               ,dvoRegionID \
    208330               ,dataRelease \
    209331               ,objInfoFlag \
    210332               ,qualityFlag \
     333               ,consistencyFlag \
     334               ,raStack \
     335               ,decStack \
     336               ,raStackErr \
     337               ,decStackErr \
    211338               ,raMean \
    212339               ,decMean \
    213340               ,raMeanErr \
    214341               ,decMeanErr \
     342               ,raMeanStd \
     343               ,decMeanStd \
     344               ,nStackObjectRows \
     345               ,nStackDetections \
    215346               ,nDetections \
    216347                ) \
     
    220351               ,CAT_ID*1000000000 + OBJ_ID \
    221352               ," + str(self.surveyID) + " \
    222                ,-999 \
    223                , RAND() \
     353               , -999 \
     354               , FLOOR(RAND()*9223372036854775807) \
    224355               , " + str(self.batchID) + "\
     356               , -999 \
    225357               , " + str(self.skychunk.dataRelease) + "\
    226358               ,FLAGS \
    227359               ,FLAGS >> 24 & 0xFF \
     360               , 0 \
     361               , -999 \
     362               , -999 \
     363               , -999 \
     364               , -999 \
    228365               ,RA \
    229366               ,DEC_ \
    230367               ,RA_ERR \
    231368               ,DEC_ERR \
     369               , -999 \
     370               , -999 \
     371               ,0 \
     372               ,0 \
    232373               ,0 \
    233374                FROM " + cptTableName
     
    244385        self.scratchDb.addRowCountColumn(cpsTableName, "row")
    245386
    246  #       self.insertMeanMags(cpsTableName)
    247 
    248 #don't do this as we removed those columns..
    249 #        self.updateColors()
     387##        self.insertMeanMags(cpsTableName)
     388## this is the new version
     389        self.logger.infoPair("update objName for ","objectThin")
     390        self.updateObjName()
     391
     392
     393        self.logger.infoPair("update ObjectThin from ","cps table")
     394
     395        self.updateObjectThinFromCps(cpsTableName)
    250396
    251397        #objects can have out of range ra dec in dvo - need to find and kill them at the end
     
    292438        self.logger.infoPair("Dropping row column from", "ObjectThin table")
    293439        self.scratchDb.dropColumn("ObjectThin", "row")
    294         self.logger.infoPair("Purging from scratch Db", self.region + " region")
    295 
    296         self.dvoObjects.purgeRegion(self.region)
     440        ##self.logger.infoPair("Purging from scratch Db", self.region + " region")
     441
     442        ##Don't do this till after MeanObject
     443        ##self.dvoObjects.purgeRegion(self.region)
    297444
    298445        self.setMinMaxObjID(["ObjectThin"])
     
    304451    '''
    305452    def populateMeanObjectTable(self):
    306 
    307         self.logger.infoPair("Populating", "MeanObject")
     453        cptTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cpt")
     454        cpsTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cps")
     455        self.logger.infoPair("Populating MeanObject from ", "ObjectThin")
    308456
    309457        sql = "INSERT INTO MeanObject ( \
     
    321469            return False
    322470
    323         self.insertMeanMags("MeanObject")
     471        self.logger.infoPair("Adding 'row' columns to", "MeanObject table")
     472        self.scratchDb.addRowCountColumn("MeanObject", "row")
     473 
     474
     475        ##self.scratchDb.addRowCountColumn(cpsTableName, "row")
     476        self.logger.infoPair("update MeanObjects from ","cps table")
     477        self.updateMeanObjectFromCps(cpsTableName)
     478
     479        self.logger.infoPair("Dropping row column from", "MeanObject table")
     480        self.scratchDb.dropColumn("MeanObject", "row")
     481
    324482        return True
    325483
     
    372530        self.logger.infoPair("Number of duplicated objIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore))
    373531
     532        self.dvoObjects.purgeRegion(self.region)
    374533
    375534        #this is abuse of something but this is how I get the object batches to crash to further investigate them
    376535       
    377         rowCountAfter = self.scratchDb.getRowCount("Object")
    378         #return True
    379         return False
     536#        rowCountAfter = self.scratchDb.getRowCount("Object")
     537        return True
     538#        return False
Note: See TracChangeset for help on using the changeset viewer.