IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 36736


Ignore:
Timestamp:
May 9, 2014, 10:07:40 AM (12 years ago)
Author:
heather
Message:

ipptopsps: stacks are happy, objects are in progress

Location:
trunk/ippToPsps
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippToPsps/config/tables.ST.vot

    r36715 r36736  
    727727        <DESCRIPTION>PSF orientation angle</DESCRIPTION>
    728728      </FIELD>
    729       <FIELD name="zpsfCore" arraysize="1" datatype="float" unit="degrees" default="-999">
     729      <FIELD name="ypsfCore" arraysize="1" datatype="float" unit="degrees" default="-999">
    730730        <DESCRIPTION>PSF core parameter [k in (1 + kz * z^1.66)]</DESCRIPTION>
    731731      </FIELD>
  • trunk/ippToPsps/jython/objectbatch.py

    r35496 r36736  
    9191
    9292        # dec is reserved in MySQL, so STILTS replaces if with dec_, which PSPS doesn't like. so, force it back again using ``
    93         self.scratchDb.execute("ALTER TABLE Object CHANGE dec_ `dec` double")
     93      #  self.scratchDb.execute("ALTER TABLE MeanObject CHANGE dec_ `dec` double")
     94      #  self.scratchDb.execute("ALTER TABLE ObjectThin CHANGE dec_ `dec` double")
    9495
    9596        return True
     
    107108    Inserts stuff for all mags
    108109    '''
    109     def insertMags(self, cpsTable):
     110    def insertMeanMags(self, cpsTable):
    110111
    111112        # list of all filters PSPS is interested in
     
    129130            # from bit 24 to bit 13 so that it fits into the SMALLINT Object.Flags
    130131
    131             sql = "UPDATE Object JOIN \
    132                    " + cpsTable + " AS cps ON (cps.row = (Object.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
     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]) + ")) \
    133134                   SET \
    134                    n" + filter[1] + " = NCODE \
    135                    ," + filter[1] + "MeanPSFMag = MAG \
    136                    ," + filter[1] + "MeanPSFMagErr = MAG_ERR \
    137                    ," + filter[1] + "MeanKronMag = MAG_KRON \
    138                    ," + filter[1] + "MeanKronMagErr = MAG_KRON_ERR \
    139                    ," + filter[1] + "StackPSFMag = STACK_PSF_MAG \
    140                    ," + filter[1] + "StackPSFMagErr = STACK_PSF_MAG_ERR \
    141                    ," + filter[1] + "StackKronMag = STACK_KRON_MAG \
    142                    ," + filter[1] + "StackKronMagErr = STACK_KRON_MAG_ERR \
    143                    ," + filter[1] + "20pct = MAG_20/1000 \
    144                    ," + filter[1] + "80pct = MAG_80/1000 \
    145                    ," + filter[1] + "Flags = (0x7fff & FLAGS) | ((FLAGS >> 11) & 0x2000) \
    146                    ," + filter[1] + "StackDetectID = STACK_DETECT_ID"
    147 
    148 # old method for setting the Stack (PSF,Kron) Mags:
    149 #                  ," + filter[1] + "StackPSFMag = -2.5 * log10(FLUX_PSF) + 8.9 \
    150 #                  ," + filter[1] + "StackPSFMagErr = FLUX_PSF_ERR / FLUX_PSF \
    151 #                  ," + filter[1] + "StackKronMag = -2.5 * log10(FLUX_KRON) + 8.9 \
    152 #                  ," + filter[1] + "StackKronMagErr = FLUX_KRON_ERR / FLUX_KRON \
    153 
    154             #self.logger.info(sql)
     135                   ObjectThin.n" + filter[1] + " = NCODE \
     136                   ,MeanObject." + filter[1] + "MeanPSFMag = MAG \
     137                   ,MeanObject." + filter[1] + "MeanPSFMagErr = MAG_ERR \
     138                   ,MeanObject." + filter[1] + "MeanKronMag = MAG_KRON \
     139                   ,MeanObject." + filter[1] + "MeanKronMagErr = MAG_KRON_ERR \
     140                   ,MeanObject." + filter[1] + "Flags = (0x7fff & FLAGS) | ((FLAGS >> 11) & 0x2000) "
     141
     142
     143            self.logger.info(sql)
    155144            self.scratchDb.execute(sql)
    156145
     
    158147        for filter in filters:
    159148            # now do a sum of n[filters], but do not include the ones with -999
    160             sql = "UPDATE Object \
     149            sql = "UPDATE ObjectThin join MeanObject using (objID) \
    161150                   SET nDetections = nDetections + n" + filter[1] + " \
    162151                   WHERE n" + filter[1] + " != -999"
     
    171160        for filter in filters:
    172161
    173             sql = "UPDATE Object \
     162            sql = "UPDATE MeanObject \
    174163                   SET " + filter[1] + "MeanPSFMagErr = null \
    175164                   WHERE " + filter[1] + "MeanPSFMagErr > " + str(cut)
    176165            self.scratchDb.execute(sql)
    177166
    178         self.logger.infoPair("Setting to NULL all x20pct =", "32.767" )
    179         for filter in filters:
    180             sql  = "UPDATE Object \
    181                    SET " + filter[1] + "20pct = null \
    182                    WHERE " + filter[1] + "20pct > 32.766"
    183             self.scratchDb.execute(sql)
    184         self.logger.infoPair("Setting to NULL all x80pct =", "32.767" )
    185         for filter in filters:
    186             sql  = "UPDATE Object \
    187                     SET " + filter[1] + "80pct = null \
    188                     WHERE " + filter[1] + "80pct > 32.766"
    189             self.scratchDb.execute(sql)
    190 
    191 
    192 
    193 
    194     '''
    195     Inserts colors
    196     '''
    197     def updateColors(self):
    198 
    199         self.logger.infoPair("Calculating", "colors")
    200         sql = "UPDATE Object \
    201                SET \
    202                grMeanColor = (gMeanMag - rMeanMag) \
    203                ,riMeanColor = (rMeanMag - iMeanMag) \
    204                ,izMeanColor = (iMeanMag - zMeanMag) \
    205                ,zyMeanColor = (zMeanMag - yMeanMag) \
    206                ,grMeanColorErr = SQRT(POW(gMeanMagErr,2) + POW(rMeanMagErr,2)) \
    207                ,riMeanColorErr = SQRT(POW(rMeanMagErr,2) + POW(iMeanMagErr,2)) \
    208                ,izMeanColorErr = SQRT(POW(iMeanMagErr,2) + POW(zMeanMagErr,2)) \
    209                ,zyMeanColorErr = SQRT(POW(zMeanMagErr,2) + POW(yMeanMagErr,2)) \
    210                    "
    211         try:
    212             self.scratchDb.execute(sql)
    213         except:
    214             self.logger.errorPair("Couldn't calculate colors", sql)
    215167
    216168    '''
    217169    Populates the Object table
    218170    '''
    219     def populateObjectTable(self):
     171    def populateObjectThinTable(self):
    220172
    221173        cptTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cpt")
     
    242194
    243195       
    244         self.logger.infoPair("Populating", "Object s")
     196        self.logger.infoPair("Populating", "ThinObject")
    245197        self.logger.infoPair("Inserting objects from", "cpt file")
    246198
    247199        # note `` around dec here, as this is a reserved word in MySQL
    248         sql = "INSERT IGNORE INTO Object (\
     200        sql = "INSERT IGNORE INTO ObjectThin (\
    249201               objID \
     202               ,gcobjID \
    250203               ,ippObjID \
     204               ,surveyID \
     205               ,skyCellID \
     206               ,randomID \
     207               ,batchID \
     208               ,dataRelease \
    251209               ,objInfoFlag \
    252210               ,qualityFlag \
    253                ,surveyID \
    254                ,ra \
    255                ,`dec` \
    256                ,raErr \
    257                ,decErr \
     211               ,raMean \
     212               ,decMean \
     213               ,raMeanErr \
     214               ,decMeanErr \
    258215               ,nDetections \
    259                ,qfPerfect \
    260                ,sgSep \
    261                ,dataRelease \
    262                ,Random \
    263                ,batchID \
    264                ) \
     216                ) \
    265217               SELECT \
    266218               EXT_ID \
     219               , -999 \
    267220               ,CAT_ID*1000000000 + OBJ_ID \
     221               ," + str(self.surveyID) + " \
     222               ,-999 \
     223               , RAND() \
     224               , " + str(self.batchID) + "\
     225               , " + str(self.skychunk.dataRelease) + "\
    268226               ,FLAGS \
    269227               ,FLAGS >> 24 & 0xFF \
    270                ," + str(self.surveyID) + " \
    271228               ,RA \
    272229               ,DEC_ \
     
    274231               ,DEC_ERR \
    275232               ,0 \
    276                ,PSF_QF_PERF \
    277                ,STARGAL_SEP \
    278                , " + str(self.skychunk.dataRelease) + "\
    279                , RAND() \
    280                , " + str(self.batchID) + "\
    281                FROM " + cptTableName
     233                FROM " + cptTableName
    282234
    283235        try:
     
    289241        # add row count columns so we can perform joins to get colors
    290242        self.logger.infoPair("Adding 'row' columns to", "Object and cps tables")
    291         self.scratchDb.addRowCountColumn("Object", "row")
     243        self.scratchDb.addRowCountColumn("ObjectThin", "row")
    292244        self.scratchDb.addRowCountColumn(cpsTableName, "row")
    293245
    294         self.insertMags(cpsTableName)
     246 #       self.insertMeanMags(cpsTableName)
    295247
    296248#don't do this as we removed those columns..
     
    312264        #count out of range
    313265
    314         sql = "SELECT count(*) FROM Object where Object.dec > " + str(decMax) + " or Object.dec < " + str(decMin) + " or Object.ra > " + str(raMax) + " or Object.ra < " + str(raMin)       
     266        sql = "SELECT count(*) FROM ObjectThin where \
     267              ObjectThin.decMean > " + str(decMax) + " \
     268              or ObjectThin.decMean < " + str(decMin) + " \
     269              or ObjectThin.raMean > " + str(raMax) + " \
     270              or ObjectThin.raMean < " + str(raMin)       
    315271   
    316272        rs = self.scratchDb.executeQuery(sql)
     
    321277       
    322278 
    323         sql = "DELETE FROM Object where Object.dec > " + str(decMax) + " or Object.dec < " + str(decMin) + " or Object.ra > " + str(raMax) + " or Object.ra < " + str(raMin)
     279        sql = "DELETE FROM ObjectThin where \
     280              ObjectThin.decMean > " + str(decMax) + " or \
     281              ObjectThin.decMean < " + str(decMin) + " or \
     282              ObjectThin.raMean > " + str(raMax) + " or \
     283              ObjectThin.raMean < " + str(raMin)
    324284        self.logger.infoPair("Deleting", str(nToDelete) + " objects outside of ra/dec range")
    325285
     
    327287            self.scratchDb.execute(sql)
    328288        except:
    329             self.logger.errorPair("Couldn't cull outsiders from Object table", sql)
     289            self.logger.errorPair("Couldn't cull outsiders from ObjectThin table", sql)
    330290            return False
    331291
    332         self.logger.infoPair("Dropping row column from", "Object table")
    333         self.scratchDb.dropColumn("Object", "row")
     292        self.logger.infoPair("Dropping row column from", "ObjectThin table")
     293        self.scratchDb.dropColumn("ObjectThin", "row")
    334294        self.logger.infoPair("Purging from scratch Db", self.region + " region")
    335295
    336296        self.dvoObjects.purgeRegion(self.region)
    337297
    338         self.setMinMaxObjID(["Object"])
     298        self.setMinMaxObjID(["ObjectThin"])
    339299
    340300        return True
     
    343303    Populates the ObjectCalColor table
    344304    '''
    345     def populateObjectCalColorTable(self):
    346 
    347         self.logger.infoPair("Populating", "ObjectCalColor")
    348 
    349         sql = "INSERT INTO ObjectCalColor ( \
     305    def populateMeanObjectTable(self):
     306
     307        self.logger.infoPair("Populating", "MeanObject")
     308
     309        sql = "INSERT INTO MeanObject ( \
    350310               objID \
    351                ,ippObjID \
    352                ,dataRelease \
     311               ,gcobjID \
    353312               ) \
    354313               SELECT \
    355314               objID \
    356                ,ippObjID \
    357                ,dataRelease \
    358                FROM Object"
     315               ,gcobjID \
     316               FROM ObjectThin"
    359317        try:
    360318            self.scratchDb.execute(sql)
    361319        except:
    362             self.logger.errorPair("Couldn't populate ObjectCalColor table", sql)
     320            self.logger.errorPair("Couldn't populate MeanObject table", sql)
    363321            return False
    364322
     323        self.insertMeanMags("MeanObject")
    365324        return True
    366325
     
    370329    def populatePspsTables(self):
    371330
    372         if not self.populateObjectTable(): return False
     331        if not self.populateObjectThinTable(): return False
    373332        #if not self.populateObjectCalColorTable(): return False
     333        if not self.populateMeanObjectTable(): return False
    374334
    375335        # now remove the objID duplicates. We could not do this before as cpt/cps tables relate by row number
    376         self.logger.infoPair("Forcing uniqueness on", "objID in Object table")
    377         rowCountBefore = self.scratchDb.getRowCount("Object")
     336        self.logger.infoPair("Forcing uniqueness on", "objID in ObjectThin table")
     337        rowCountBefore = self.scratchDb.getRowCount("ObjectThin")
    378338
    379339        # XXX EAM : note that in mysql versions later than 5.1, this fails
     
    386346            self.scratchDb.execute("set session old_alter_table=1")
    387347           
    388         self.scratchDb.execute("ALTER IGNORE TABLE Object ADD UNIQUE INDEX(objID)")
     348        self.scratchDb.execute("ALTER IGNORE TABLE ObjectThin ADD UNIQUE INDEX(objID)")
    389349        if self.scratchDb.version > 5.1:
    390350            self.scratchDb.execute("set session old_alter_table=0")
    391351
     352        rowCountAfter = self.scratchDb.getRowCount("ObjectThin")
     353        self.logger.infoPair("Number of duplicated objIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore))
     354
     355        self.logger.infoPair("Forcing uniqueness on", "objID in MeanObject table")
     356        rowCountBefore = self.scratchDb.getRowCount("MeanObject")
     357
     358        # XXX EAM : note that in mysql versions later than 5.1, this fails
     359        # unless the following is called first:
     360        # set session old_alter_table=1
     361        # follow the command with
     362        # set session old_alter_table=0
     363        # OF COURSE, this fails for mysql version < 5.5...
     364        if self.scratchDb.version > 5.1:
     365            self.scratchDb.execute("set session old_alter_table=1")
     366           
     367        self.scratchDb.execute("ALTER IGNORE TABLE MeanObject ADD UNIQUE INDEX(objID)")
     368        if self.scratchDb.version > 5.1:
     369            self.scratchDb.execute("set session old_alter_table=0")
     370
     371        rowCountAfter = self.scratchDb.getRowCount("MeanObject")
     372        self.logger.infoPair("Number of duplicated objIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore))
     373
     374
     375        #this is abuse of something but this is how I get the object batches to crash to further investigate them
     376       
    392377        rowCountAfter = self.scratchDb.getRowCount("Object")
    393         self.logger.infoPair("Number of duplicated objIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore))
    394 
    395         return True
    396 
     378        #return True
     379        return False
  • trunk/ippToPsps/jython/stackbatch.py

    r36729 r36736  
    305305    Updates aperture fluxes for StackApFkx table
    306306    '''
    307     def updateApFlxs(self, prefix, psfCondition):
     307    def updateModelFitFlxs(self, prefix, psfCondition, tablename, filter):
    308308        #properly -999 these to start with:
    309 
    310         sql = "UPDATE StackApFlx AS a, SkyChip_xrad AS b SET \
    311         "+prefix+"flxR1=-999, \
    312         "+prefix+"flxR1Err=-999, \
    313         "+prefix+"flxR1Std=-999, \
    314         "+prefix+"flxR1Fill=-999, \
    315         "+prefix+"flxR2=-999, \
    316         "+prefix+"flxR2Err=-999, \
    317         "+prefix+"flxR2Std=-999, \
    318         "+prefix+"flxR2Fill=-999, \
    319         "+prefix+"flxR3=-999, \
    320         "+prefix+"flxR3Err=-999, \
    321         "+prefix+"flxR3Std=-999, \
    322         "+prefix+"flxR3Fill=-999, \
    323         "+prefix+"flxR4=-999, \
    324         "+prefix+"flxR4Err=-999, \
    325         "+prefix+"flxR4Std=-999, \
    326         "+prefix+"flxR4Fill=-999, \
    327         "+prefix+"flxR5=-999, \
    328         "+prefix+"flxR5Err=-999, \
    329         "+prefix+"flxR5Std=-999, \
    330         "+prefix+"flxR5Fill=-999, \
    331         "+prefix+"flxR6=-999, \
    332         "+prefix+"flxR6Err=-999, \
    333         "+prefix+"flxR6Std=-999, \
    334         "+prefix+"flxR6Fill=-999, \
    335         "+prefix+"flxR7=-999, \
    336         "+prefix+"flxR7Err=-999, \
    337         "+prefix+"flxR7Std=-999, \
    338         "+prefix+"flxR7Fill=-999, \
    339         "+prefix+"flxR8=-999, \
    340         "+prefix+"flxR8Err=-999, \
    341         "+prefix+"flxR8Std=-999, \
    342         "+prefix+"flxR8Fill=-999, \
    343         "+prefix+"flxR9=-999, \
    344         "+prefix+"flxR9Err=-999, \
    345         "+prefix+"flxR9Std=-999, \
    346         "+prefix+"flxR9Fill=-999, \
    347         "+prefix+"flxR10=-999, \
    348         "+prefix+"flxR10Err=-999, \
    349         "+prefix+"flxR10Std=-999, \
    350         "+prefix+"flxR10Fill=-999 \
    351         WHERE a.ippDetectID=b.IPP_IDET "
     309        f = filter
     310        if tablename == 'StackModelFit':
     311            sql = "UPDATE " + tablename + " AS a, "+f+"SkyChip_xrad AS b SET \
     312        "+f+prefix+"flxR1=-999, \
     313        "+f+prefix+"flxR1Err=-999, \
     314        "+f+prefix+"flxR1Std=-999, \
     315        "+f+prefix+"flxR1Fill=-999, \
     316        "+f+prefix+"flxR2=-999, \
     317        "+f+prefix+"flxR2Err=-999, \
     318        "+f+prefix+"flxR2Std=-999, \
     319        "+f+prefix+"flxR2Fill=-999, \
     320        "+f+prefix+"flxR3=-999, \
     321        "+f+prefix+"flxR3Err=-999, \
     322        "+f+prefix+"flxR3Std=-999, \
     323        "+f+prefix+"flxR3Fill=-999, \
     324        "+f+prefix+"flxR4=-999, \
     325        "+f+prefix+"flxR4Err=-999, \
     326        "+f+prefix+"flxR4Std=-999, \
     327        "+f+prefix+"flxR4Fill=-999, \
     328        "+f+prefix+"flxR5=-999, \
     329        "+f+prefix+"flxR5Err=-999, \
     330        "+f+prefix+"flxR5Std=-999, \
     331        "+f+prefix+"flxR5Fill=-999, \
     332        "+f+prefix+"flxR6=-999, \
     333        "+f+prefix+"flxR6Err=-999, \
     334        "+f+prefix+"flxR6Std=-999, \
     335        "+f+prefix+"flxR6Fill=-999, \
     336        "+f+prefix+"flxR7=-999, \
     337        "+f+prefix+"flxR7Err=-999, \
     338        "+f+prefix+"flxR7Std=-999, \
     339        "+f+prefix+"flxR7Fill=-999, \
     340        "+f+prefix+"flxR8=-999, \
     341        "+f+prefix+"flxR8Err=-999, \
     342        "+f+prefix+"flxR8Std=-999, \
     343        "+f+prefix+"flxR8Fill=-999, \
     344        "+f+prefix+"flxR9=-999, \
     345        "+f+prefix+"flxR9Err=-999, \
     346        "+f+prefix+"flxR9Std=-999, \
     347        "+f+prefix+"flxR9Fill=-999, \
     348        "+f+prefix+"flxR10=-999, \
     349        "+f+prefix+"flxR10Err=-999, \
     350        "+f+prefix+"flxR10Std=-999, \
     351        "+f+prefix+"flxR10Fill=-999 \
     352        WHERE a."+f+"ippDetectID=b.IPP_IDET "
    352353        #self.logger.infoPair("sql", sql)
    353         self.scratchDb.execute(sql)
     354            self.scratchDb.execute(sql)
    354355
    355356
    356357        #we have variable numbers of these columns. find out which are in use
    357         sql = "DESCRIBE SkyChip_xrad 'aper_fill_%'"
     358        sql = "DESCRIBE "+f+"SkyChip_xrad 'aper_fill_%'"
    358359        rs = self.scratchDb.executeQuery(sql)
    359360        rs.first()
     
    369370
    370371        numbers = []
     372        min = 1
     373        max = 10
     374        if tablename == 'StackApFlx':
     375            min = 3
     376            max = 5
    371377        for column in columns:
    372378            number = re.sub("APER_FILL_","",column)
    373             if (int(number) >= 1 and int(number) <=10):
     379            if (int(number) >= min and int(number) <=max):
    374380                numbers.append(number)
    375381                self.logger.infoPair("Aperture Numbers",number)
    376382
    377383        #generate the sql to do the necessary ops on the columns   
    378         sql = "UPDATE StackApFlx AS a, SkyChip_xrad AS b SET "
     384        sql = "UPDATE " + tablename + " AS a, "+f+"SkyChip_xrad AS b SET "
    379385        cnt =0
     386        exptime = self.safeDictionaryAccess(self.header, 'EXPTIME')
    380387        for number in numbers:
    381388            if (cnt>0):
    382389                sql=sql+" , "
    383             sql=sql+prefix+"flxR"+number+"=b.APER_FLUX_"+number +" / " + str(self.expTime) + ", "
    384             sql=sql+prefix+"flxR"+number+"Err=b.APER_FLUX_ERR_"+number +" / " + str(self.expTime) + ", "
    385             sql=sql+prefix+"flxR"+number+"Std=b.APER_FLUX_STDEV_"+number +" / " + str(self.expTime) + ", "
    386             sql=sql+prefix+"flxR"+number+"Fill=b.APER_FILL_"+number + " "
     390            sql=sql+f+prefix+"flxR"+number+"=b.APER_FLUX_"+number +" / " + str(exptime) + ", "
     391            sql=sql+f+prefix+"flxR"+number+"Err=b.APER_FLUX_ERR_"+number +" / " + str(exptime) + ", "
     392            sql=sql+f+prefix+"flxR"+number+"Std=b.APER_FLUX_STDEV_"+number +" / " + str(exptime) + ", "
     393            sql=sql+f+prefix+"flxR"+number+"Fill=b.APER_FILL_"+number + " "
    387394            cnt=cnt+1
    388395           
    389         sql=sql+"WHERE a.ippDetectID=b.IPP_IDET AND  "+psfCondition     
    390         self.scratchDb.execute(sql)
    391 
    392         #self.logger.infoPair("sql",sql)
    393 
    394         #sql = "UPDATE StackApFlx AS a, SkyChip_xrad AS b SET \
    395         #"+prefix+"flxR1=b.APER_FLUX_1 / " + str(self.expTime) + ", \
    396         #"+prefix+"flxR1Err=b.APER_FLUX_ERR_1 / " + str(self.expTime) + ", \
    397         #"+prefix+"flxR1Std=b.APER_FLUX_STDEV_1 / " + str(self.expTime) + ", \
    398         #"+prefix+"flxR1Fill=b.APER_FILL_1, \
    399         #"+prefix+"flxR2=b.APER_FLUX_2 / " + str(self.expTime) + ", \
    400         ##"+prefix+"flxR2Err=b.APER_FLUX_ERR_2 / " + str(self.expTime) + ", \
    401         #"+prefix+"flxR2Std=b.APER_FLUX_STDEV_2 / " + str(self.expTime) + ", \
    402         #"+prefix+"flxR2Fill=b.APER_FILL_2, \
    403         #"+prefix+"flxR3=b.APER_FLUX_3 / " + str(self.expTime) + ", \
    404         #"+prefix+"flxR3Err=b.APER_FLUX_ERR_3 / " + str(self.expTime) + ", \
    405         #"+prefix+"flxR3Std=b.APER_FLUX_STDEV_3 / " + str(self.expTime) + ", \
    406         #"+prefix+"flxR3Fill=b.APER_FILL_3, \
    407         #"+prefix+"flxR4=b.APER_FLUX_4 / " + str(self.expTime) + ", \
    408         #"+prefix+"flxR4Err=b.APER_FLUX_ERR_4 / " + str(self.expTime) + ", \
    409         #"+prefix+"flxR4Std=b.APER_FLUX_STDEV_4 / " + str(self.expTime) + ", \
    410         #"+prefix+"flxR4Fill=b.APER_FILL_4, \
    411         #"+prefix+"flxR5=b.APER_FLUX_5 / " + str(self.expTime) + ", \
    412         #"+prefix+"flxR5Err=b.APER_FLUX_ERR_5 / " + str(self.expTime) + ", \
    413         #"+prefix+"flxR5Std=b.APER_FLUX_STDEV_5 / " + str(self.expTime) + ", \
    414         #"+prefix+"flxR5Fill=b.APER_FILL_5, \
    415         #"+prefix+"flxR6=b.APER_FLUX_6 / " + str(self.expTime) + ", \
    416         #"+prefix+"flxR6Err=b.APER_FLUX_ERR_6 / " + str(self.expTime) + ", \
    417         #"+prefix+"flxR6Std=b.APER_FLUX_STDEV_6 / " + str(self.expTime) + ", \
    418         #"+prefix+"flxR6Fill=b.APER_FILL_6, \
    419         #"+prefix+"flxR7=b.APER_FLUX_7 / " + str(self.expTime) + ", \
    420         #"+prefix+"flxR7Err=b.APER_FLUX_ERR_7 / " + str(self.expTime) + ", \
    421         #"+prefix+"flxR7Std=b.APER_FLUX_STDEV_7 / " + str(self.expTime) + ", \
    422         #"+prefix+"flxR7Fill=b.APER_FILL_7, \
    423         #"+prefix+"flxR8=b.APER_FLUX_8 / " + str(self.expTime) + ", \
    424         #"+prefix+"flxR8Err=b.APER_FLUX_ERR_8 / " + str(self.expTime) + ", \
    425         #"+prefix+"flxR8Std=b.APER_FLUX_STDEV_8 / " + str(self.expTime) + ", \
    426         #"+prefix+"flxR8Fill=b.APER_FILL_8, \
    427         #"+prefix+"flxR9=b.APER_FLUX_9 / " + str(self.expTime) + ", \
    428         #"+prefix+"flxR9Err=b.APER_FLUX_ERR_9 / " + str(self.expTime) + ", \
    429         #"+prefix+"flxR9Std=b.APER_FLUX_STDEV_9 / " + str(self.expTime) + ", \
    430         #"+prefix+"flxR9Fill=b.APER_FILL_9, \
    431         #"+prefix+"flxR10=b.APER_FLUX_10 / " + str(self.expTime) + ", \
    432         #"+prefix+"flxR10Err=b.APER_FLUX_ERR_10 / " + str(self.expTime) + ", \
    433         #"+prefix+"flxR10Std=b.APER_FLUX_STDEV_10 / " + str(self.expTime) + ", \
    434         #"+prefix+"flxR10Fill=b.APER_FILL_10 \
    435         #WHERE a.ippDetectID=b.IPP_IDET AND b.PSF_FWHM "+psfCondition
    436 
    437         #self.scratchDb.execute(sql)
     396        sql=sql+"WHERE a."+f+"ippDetectID=b.IPP_IDET AND  "+psfCondition   
     397        self.logger.infoPair("sql",sql)
     398        self.scratchDb.execute(sql)
     399
    438400
    439401    '''
    440402    Updates parameters for a particular model in the StackModelFit table
    441403    '''
    442     def updateModelFit(self, model, ippModelType):
    443 
    444         if model == "ser":
    445             modelLong = "sersic"
    446         else:
    447             modelLong = model;
    448 
    449         #does it have the EXT_COVAR in there?
    450 
    451         sql = "DESCRIBE SkyChip_xfit 'EXT_COVAR_%'"
    452         rs = self.scratchDb.executeQuery(sql)
    453         rs.first()
    454         hasResult = rs.next()
    455         if hasResult:
    456            print "EXT_COVARs exist"
    457         else:
    458            print "No EXT_COVARS here"
    459 
    460         ext_covar_sql = ""
    461  
    462         if (hasResult):
    463             ext_covar_sql = ", "+modelLong+"Covar11=b.EXT_COVAR_00_00,  \
    464             "+modelLong+"Covar12=b.EXT_COVAR_00_01,  \
    465             "+modelLong+"Covar13=b.EXT_COVAR_00_02,  \
    466             "+modelLong+"Covar14=b.EXT_COVAR_00_03,  \
    467             "+modelLong+"Covar15=b.EXT_COVAR_00_04,  \
    468             "+modelLong+"Covar16=b.EXT_COVAR_00_05,  \
    469             "+modelLong+"Covar17=b.EXT_COVAR_00_06,  \
    470             "+modelLong+"Covar22=b.EXT_COVAR_01_01,  \
    471             "+modelLong+"Covar23=b.EXT_COVAR_01_02,  \
    472             "+modelLong+"Covar24=b.EXT_COVAR_01_03,  \
    473             "+modelLong+"Covar25=b.EXT_COVAR_01_04,  \
    474             "+modelLong+"Covar26=b.EXT_COVAR_01_05,  \
    475             "+modelLong+"Covar27=b.EXT_COVAR_01_06,  \
    476             "+modelLong+"Covar33=b.EXT_COVAR_02_02,  \
    477             "+modelLong+"Covar34=b.EXT_COVAR_02_03,  \
    478             "+modelLong+"Covar35=b.EXT_COVAR_02_04,  \
    479             "+modelLong+"Covar36=b.EXT_COVAR_02_05,  \
    480             "+modelLong+"Covar37=b.EXT_COVAR_02_06,  \
    481             "+modelLong+"Covar44=b.EXT_COVAR_03_03,  \
    482             "+modelLong+"Covar45=b.EXT_COVAR_03_04,  \
    483             "+modelLong+"Covar46=b.EXT_COVAR_03_05,  \
    484             "+modelLong+"Covar47=b.EXT_COVAR_03_06,  \
    485             "+modelLong+"Covar55=b.EXT_COVAR_04_04,  \
    486             "+modelLong+"Covar56=b.EXT_COVAR_04_05,  \
    487             "+modelLong+"Covar57=b.EXT_COVAR_04_06,  \
    488             "+modelLong+"Covar66=b.EXT_COVAR_05_05,  \
    489             "+modelLong+"Covar67=b.EXT_COVAR_05_06,  \
    490             "+modelLong+"Covar77=b.EXT_COVAR_06_06"
    491        
    492        
    493 
    494 
    495         sql = "UPDATE StackModelFit AS a, SkyChip_xfit AS b SET \
    496         "+model+"Radius=b.EXT_WIDTH_MAJ,  \
    497         "+model+"Flux=POW(10, -0.4 * b.EXT_INST_MAG) / " + str(self.expTime) + " ,  \
    498         "+model+"FluxErr=ABS(b.EXT_INST_MAG_SIG) * POW(10, -0.4 * b.EXT_INST_MAG) / " + str(self.expTime) + " / 1.085736, \
    499         "+model+"Ab=b.EXT_WIDTH_MAJ/b.EXT_WIDTH_MIN, \
    500         "+model+"Phi=b.EXT_THETA  \
    501         "+ext_covar_sql+"  \
    502         WHERE a.ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
     404    def updateModelFit(self, model, ippModelType, filter, exptime):
     405        f = filter
     406 
     407 # idk what to do about PET
     408
     409        sql = "UPDATE StackModelFit AS a, " + f + "SkyChip_xfit AS b SET \
     410        "+f+model+"Radius=b.EXT_WIDTH_MAJ,  \
     411        "+f+model+"Flux=POW(10, -0.4 * b.EXT_INST_MAG) / " + str(exptime) + " ,  \
     412        "+f+model+"FluxErr=ABS(b.EXT_INST_MAG_SIG) * POW(10, -0.4 * b.EXT_INST_MAG) / " + str(exptime) + " / 1.085736, \
     413        "+f+model+"Ab=b.EXT_WIDTH_MAJ/b.EXT_WIDTH_MIN, \
     414        "+f+model+"Phi=b.EXT_THETA  \
     415          \
     416        WHERE a."+f+"ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
    503417
    504418        print sql
     
    506420
    507421        # sersic fit has an extra parameter
    508         if (ippModelType == "PS_MODEL_SERSIC" and hasResult > 0):
    509             sql = "UPDATE StackModelFit AS a, SkyChip_xfit AS b SET \
    510             "+modelLong+"Covar18=b.EXT_COVAR_00_07,  \
    511             "+modelLong+"Covar28=b.EXT_COVAR_01_07,  \
    512             "+modelLong+"Covar38=b.EXT_COVAR_02_07,  \
    513             "+modelLong+"Covar48=b.EXT_COVAR_03_07,  \
    514             "+modelLong+"Covar58=b.EXT_COVAR_04_07,  \
    515             "+modelLong+"Covar68=b.EXT_COVAR_05_07,  \
    516             "+modelLong+"Covar78=b.EXT_COVAR_06_07,  \
    517             "+modelLong+"Covar88=b.EXT_COVAR_07_07,   \
    518             "+"serNu=b.EXT_PAR_07,   \
    519             "+"serNuErr=SQRT(EXT_COVAR_07_07)  \
    520             WHERE a.ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
    521 
     422        if (ippModelType == "PS_MODEL_SERSIC"):
     423            sql = "UPDATE StackModelFit AS a, "+ f+ "SkyChip_xfit AS b SET \
     424            "+f+"serNu=b.EXT_PAR_07   \
     425            WHERE a."+f+"ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
     426#           "+f+"serNuErr=SQRT(EXT_COVAR_07_07)  \
     427            self.logger.infoPair("sql",sql)
    522428            self.scratchDb.execute(sql)
    523429
     
    651557          skip = 0
    652558          if (f == "g"):
     559              self.logger.infoPair("gstackID = ",self.gstackID)
    653560              if self.gstackID > 0: 
    654561                  stackid = self.gstackID
     
    657564                  skip = 1
    658565          if (f == "r"):
     566              self.logger.infoPair("rstackID = ",self.rstackID)
    659567              if self.rstackID > 0:
    660568                  stackid = self.rstackID
     
    663571                  skip = 1
    664572          if (f == "i"):
     573              self.logger.infoPair("istackID = ",self.istackID)
    665574              if self.istackID > 0:
    666575                  stackid = self.istackID
     
    669578                  skip = 1
    670579          if (f == "z"):
     580              self.logger.infoPair("zstackID = ",self.zstackID)
    671581              if self.zstackID > 0:
    672582                  stackid = self.zstackID
     
    675585                  skip = 1
    676586          if (f == "y"):
     587              self.logger.infoPair("ystackID = ",self.ystackID)
    677588              if self.ystackID > 0:
    678589                  stackid = self.ystackID
     
    855766    '''
    856767    def populateStackApFlx(self):
    857         self.logger.infoPair("getting","imageID")
    858         imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
    859         self.logger.infoPair("obtained","imageID")
    860 
    861         self.logger.infoPair("Procesing", "StackApFlx")
    862  
    863         sql = "INSERT INTO StackApFlx \
    864                (ippDetectID ) \
    865                SELECT \
    866                DISTINCT IPP_IDET \
    867                FROM SkyChip_xrad"
    868 
    869         try:
    870             self.scratchDb.execute(sql)
    871         except: return
    872 
    873         # TODO temporarily loading 1st convolved fluxes into unconvolved fields
    874 
    875         #This assumes that there are 3 different fluxs, the first is unconv, and the 2nd and 3rd are convolved. If there are more than 3 fluxes it will break.   
    876         # If there are more than 3 types of fluxes, we should do a count to find out how many there are and adjust this accordingly (make it more robust)
    877 
    878         self.logger.infoPair("Adding fluxes", "un-convolved")
    879         self.updateApFlxs("", "((b.table_index -1) % 3 = 0)")
    880         self.logger.infoPair("Adding fluxes", "1st convolved")
    881         self.updateApFlxs("c1", "((b.table_index -1) % 3 = 1)")
    882         self.logger.infoPair("Adding fluxes", "2nd convolved")
    883         self.updateApFlxs("c2", "((b.table_index -1) % 3 = 2)")
    884 
    885         self.logger.infoPair("Adding", "petrosians for extended sources")
    886         sql = "UPDATE StackApFlx AS a, SkyChip_xsrc AS b SET \
    887         petRadius=b.PETRO_RADIUS \
    888         ,petRadiusErr=b.PETRO_RADIUS_ERR \
    889         ,petFlux=POW(10.0, -0.4 * b.PETRO_MAG) /" + str(self.expTime) + " \
    890         ,petFluxErr=-999  \
    891         ,petR50=b.PETRO_RADIUS_50 \
    892         ,petR50Err=b.PETRO_RADIUS_50_ERR \
    893         ,petR90=b.PETRO_RADIUS_90 \
    894         ,petR90Err=b.PETRO_RADIUS_90_ERR \
    895         ,petCf=b.PETRO_FILL \
    896         WHERE a.ippDetectID=b.IPP_IDET"
    897         self.scratchDb.execute(sql)
    898 
    899         self.logger.infoPair("Adding", "petFluxErr for non nulls")
    900         sql = "UPDATE StackApFlx as a, SkyChip_xsrc AS b SET \
    901         petFluxErr=ABS(b.PETRO_MAG_ERR) * POW(10.0, (-0.4*b.PETRO_MAG)) / " + str(self.expTime) + " / 1.085736  \
    902         WHERE a.ippDetectID=b.IPP_IDET \
    903         AND (b.PETRO_MAG_ERR is not NULL AND b.PETRO_MAG is not NULL AND PETRO_MAG_ERR < 1000.0)"
    904         # added this because when the petromagerr is crazy large (10^29 it out of ranges the flux err calc)
    905         self.logger.infoPair("sql", sql)
    906         self.scratchDb.execute(sql)
    907 
    908 
    909 
    910         self.logger.infoPair("adding"," PrimaryF to stackApFlx")
    911         sql = "UPDATE StackApFlx AS a, " + self.scratchDb.dvoDetectionTable + " AS b SET \
    912                a.primaryF = ((b.flags & 0x10000) >> 16 ) \
    913                WHERE a.ippDetectID = b.ippDetectID \
    914                AND b.imageID = " + str(imageID)
    915 
    916         print "update dvo sql: ", sql
    917         # response = raw_input("update dvo...")
    918         self.scratchDb.execute(sql)
    919 
    920        
    921 
    922         self.scratchDb.updateAllRows("StackApFlx", "surveyID", str(self.surveyID))
    923         self.scratchDb.updateAllRows("StackApFlx", "dataRelease", str(self.skychunk.dataRelease))
    924         self.updateStackTypeID("StackApFlx")
    925         self.updateDvoIDs("StackApFlx")
     768        filter = ['g','r','i','z','y']
     769
     770        for f in filter:
     771            skip = 0
     772            if (f == 'g'):
     773                if self.gstackID > 0:
     774                    self.header = self.gheader
     775                else:
     776                    skip = 1
     777            if (f == 'r'):
     778                if self.rstackID > 0:
     779                    self.header = self.rheader
     780                else:
     781                    skip = 1
     782            if (f == 'i'):
     783                if self.istackID > 0:
     784                    self.header = self.iheader
     785                else:
     786                    skip = 1
     787            if (f == 'z'):
     788                if self.zstackID > 0:
     789                    self.header = self.zheader
     790                else:
     791                    skip = 1
     792            if (f == 'y'):
     793                if self.ystackID > 0:
     794                    self.header = self.yheader
     795                else:
     796                    skip =1
     797
     798            if skip == 0:
     799                self.logger.infoPair("Adding fluxes", "un-convolved")
     800                self.updateModelFitFlxs("", "((b.table_index -1) % 3 = 0)", "StackApFlx", f)
     801                self.logger.infoPair("Adding fluxes", "1st convolved")
     802                self.updateModelFitFlxs("c1", "((b.table_index -1) % 3 = 1)","StackApFlx",f)
     803                self.logger.infoPair("Adding fluxes", "2nd convolved")
     804                self.updateModelFitFlxs("c2", "((b.table_index -1) % 3 = 2)","StackApFlx",f)
     805
     806                self.deleteDetectionsNotInStackObject("StackApFlx",f)
     807
    926808        self.scratchDb.reportAndDeleteRowsWithNULLS("StackApFlx", "objID")
    927         self.deleteDetectionsNotInStackObject("StackApFlx")
     809       
    928810
    929811
     
    931813    Populates the StackModelFit table
    932814    '''
    933     def populateStackModelFit(self):
     815    def populateStackModelFit(self, filter):
     816        # for each filter
     817        f =filter
     818        if (filter == 'g'):
     819            self.header = self.gheader
     820           
     821        if (filter == 'r'):
     822            self.header = self.rheader
     823        if (filter == 'i'):
     824            self.header = self.iheader
     825        if (filter == 'z'):
     826            self.header = self.zheader
     827        if (filter == 'y'):
     828            self.header = self.yheader
     829           
     830
     831
     832
     833
    934834        self.logger.infoPair("getting","imageID")
    935835        imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
     
    939839
    940840        # insert all the detections
    941         sql = "INSERT INTO StackModelFit (ippDetectID) SELECT DISTINCT IPP_IDET from SkyChip_xfit"
    942         try:
    943             self.scratchDb.execute(sql)
    944         except:
    945             return
    946841
    947842        # populate model parameters
    948843        self.logger.infoPair("Adding model fit", "deVaucouleurs")
    949         self.updateModelFit("deV", "PS_MODEL_DEV")
     844        self.updateModelFit("deV", "PS_MODEL_DEV", filter, self.header['EXPTIME'])
    950845        self.logger.infoPair("Adding model fit", "exponential")
    951         self.updateModelFit("exp", "PS_MODEL_EXP")
     846        self.updateModelFit("deV", "PS_MODEL_EXP", filter, self.header['EXPTIME'])
    952847        self.logger.infoPair("Adding model fit", "sersic")
    953         self.updateModelFit("ser", "PS_MODEL_SERSIC")
     848        self.updateModelFit("deV", "PS_MODEL_SERSIC", filter, self.header['EXPTIME'])
     849 
     850
     851        self.logger.infoPair("Adding fluxes", "un-convolved")
     852        self.updateModelFitFlxs("", "((b.table_index -1) % 3 = 0)","StackModelFit",f)
     853        self.logger.infoPair("Adding fluxes", "1st convolved")
     854        self.updateModelFitFlxs("c1", "((b.table_index -1) % 3 = 1)","StackModelFit",f)
     855        self.logger.infoPair("Adding fluxes", "2nd convolved")
     856        self.updateModelFitFlxs("c2", "((b.table_index -1) % 3 = 2)","StackModelFit",f)
     857
     858 
     859        self.logger.infoPair("Adding", "petrosians for extended sources")
     860        sql = "UPDATE StackModelFit as a, "+f+"SkyChip_xsrc AS b SET \
     861        "+f+"petRadius=b.PETRO_RADIUS \
     862        ,"+f+"petRadiusErr=b.PETRO_RADIUS_ERR \
     863        ,"+f+"petFlux=POW(10.0, -0.4 * b.PETRO_MAG) /" + str(self.header['EXPTIME']) + " \
     864        ,"+f+"petFluxErr=-999  \
     865        ,"+f+"petR50=b.PETRO_RADIUS_50 \
     866        ,"+f+"petR50Err=b.PETRO_RADIUS_50_ERR \
     867        ,"+f+"petR90=b.PETRO_RADIUS_90 \
     868        ,"+f+"petR90Err=b.PETRO_RADIUS_90_ERR \
     869        ,"+f+"petCf=b.PETRO_FILL \
     870        WHERE a."+f+"ippDetectID=b.IPP_IDET"
     871        self.scratchDb.execute(sql)
     872
     873        self.logger.infoPair("Adding", "petFluxErr for non nulls")
     874        sql = "UPDATE StackModelFit as a, "+f+"SkyChip_xsrc AS b SET \
     875        "+f+"petFluxErr=ABS(b.PETRO_MAG_ERR) * POW(10.0, (-0.4*b.PETRO_MAG)) / " + str(self.header['EXPTIME']) + " / 1.085736  \
     876        WHERE a."+f+"ippDetectID=b.IPP_IDET \
     877        AND (b.PETRO_MAG_ERR is not NULL AND b.PETRO_MAG is not NULL AND PETRO_MAG_ERR < 1000.0)"
     878        # added this because when the petromagerr is crazy large (10^29 it out of ranges the flux err calc)
     879        self.logger.infoPair("sql", sql)
     880        self.scratchDb.execute(sql)
     881
     882
    954883
    955884        self.scratchDb.updateAllRows("StackModelFit", "surveyID", str(self.surveyID))
    956         self.scratchDb.updateFilterID("StackModelFit", self.filter)
    957885        self.scratchDb.updateAllRows("StackModelFit", "dataRelease", str(self.skychunk.dataRelease))
    958886
    959         self.logger.infoPair("adding"," PrimaryF to stackApFlx")
     887        self.logger.infoPair("not adding"," PrimaryF to stackApFlx")
    960888        sql = "UPDATE StackModelFit AS a, " + self.scratchDb.dvoDetectionTable + " AS b SET \
    961889               a.primaryF = ((b.flags & 0x10000) >> 16 ) \
     
    963891               AND b.imageID = " + str(imageID)
    964892
    965         print "update dvo sql: ", sql
    966         # response = raw_input("update dvo...")
    967         try:
    968             self.scratchDb.execute(sql)
    969         except:
    970             return
    971 
    972         self.scratchDb.updateAllRows("StackModelFit", "activeFlag", "0")
     893#        try:
     894#            self.scratchDb.execute(sql)
     895#        except:
     896#            return
     897
     898##        self.scratchDb.updateAllRows("StackModelFit", "activeFlag", "0")
    973899        ##self.updateStackMetaID("StackModelFit")
    974         self.updateStackTypeID("StackModelFit")
    975         self.updateDvoIDs("StackModelFit")
     900##        self.updateStackTypeID("StackModelFit")
     901       
    976902        self.scratchDb.reportAndDeleteRowsWithNULLS("StackModelFit", "objID")
    977         self.deleteDetectionsNotInStackObject("StackModelFit")
     903        self.deleteDetectionsNotInStackObject("StackModelFit", f)
    978904
    979905    '''
    980906    Reports and deletes detections in this table that are not in StackObject
    981907    '''
    982     def deleteDetectionsNotInStackObject(self, table):
    983 
    984         sql = "SELECT COUNT(*) FROM " + table + " WHERE ippDetectID NOT IN (SELECT ippDetectID FROM StackObject)"
     908    def deleteDetectionsNotInStackObject(self, table, filter):
     909        f= filter
     910
     911        sql = "SELECT COUNT(*) FROM " + table + " WHERE "+f+"ippDetectID NOT IN (SELECT "+f+"ippDetectID FROM StackObject)"
    985912        rs = self.scratchDb.executeQuery(sql)
    986913        rs.first()
     
    989916        if nMissing < 1: return
    990917       
    991         sql = "DELETE FROM " + table + " WHERE ippDetectID NOT IN (SELECT ippDetectID FROM StackObject)"
     918        sql = "DELETE FROM " + table + " WHERE "+f+"ippDetectID NOT IN (SELECT "+f+"ippDetectID FROM StackObject)"
    992919        self.scratchDb.execute(sql)
    993920        self.logger.infoPair("Detections not in StackObject", "%d deleted from %s" % (nMissing, table))
     
    1028955
    1029956       
    1030     def populateStackObjectFromDvo(self):
    1031 
    1032         tableName = "StackObject"
     957    def populateStackIPPDetectIDFromDvo(self, tableName, all):
     958
     959        #tableName = "StackObject"
    1033960        self.logger.infoPair("Processing table", tableName)
    1034961
     
    1039966            #first: do we skip this filter
    1040967            if f == 'g':
    1041                 self.header = self.gheader
    1042968                if self.gstackID < 0:
    1043969                    skip = 1
     970                else:
     971                    self.header=self.gheader
     972                    stackmetaid = self.gstackID
    1044973            elif f == 'r':
    1045                 self.header = self.rheader
    1046974                if self.rstackID < 0:
    1047975                    skip = 1
     976                else:
     977                    self.header = self.rheader
     978                    stackmetaid = self.rstackID
    1048979            elif f == 'i':
    1049                 self.header = self.iheader
    1050980                if self.istackID < 0:
    1051981                    skip = 1
     982                else:
     983                    self.header = self.iheader
     984                    stackmetaid = self.istackID
    1052985            elif f == 'z':
    1053                 self.header = self.zheader
    1054986                if self.zstackID < 0:
    1055987                    skip = 1
     988                else:
     989                    self.header = self.zheader
     990                    stackmetaid = self.zstackID
    1056991            elif f == 'y':
    1057                 self.header = self.yheader
    1058992                if self.ystackID < 0:
    1059993                    skip = 1
     994                else:
     995                    self.header = self.yheader
     996                    stackmetaid = self.ystackID
    1060997            if skip == 0:       
    1061998                imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
    1062999                self.logger.infoPair("obtained","imageID")
    1063                 sql = "UPDATE " + tableName + " AS a, "  + self.scratchDb.dvoDetectionTable + " AS b \
    1064                       SET a." + f + "ra = b.ra, \
     1000                addsql = ""
     1001                if (all == 1):
     1002                    addsql = "a." + f + "ra = b.ra, \
    10651003                      a." + f + "dec = b.dec_, \
    10661004                      a." + f + "raErr = b.raErr, \
    10671005                      a." + f + "decErr = b.decErr, \
    10681006                      a." + f + "zp = b.zp, \
    1069                       a." + f + "expTime = b.expTime, \
    1070                       a." + f + "ippDetectID = b.ippDetectID, \
    1071                       a." + f + "stackDetectID = b.detectID   \
    1072                       WHERE a.objID = b.objID \
    1073                       AND b.imageID = " + str(imageID)
     1007                      a." + f + "expTime = b.expTime,"
     1008
     1009                   
     1010                sql = "UPDATE " + tableName + " AS a, "  + self.scratchDb.dvoDetectionTable + " AS b \
     1011                      SET a." + f + "ippDetectID = b.ippDetectID, \
     1012                      " + addsql + " \
     1013                      a." + f + "stackDetectID = b.detectID,   \
     1014                      a." + f + "stackMetaID = " + str(stackmetaid) +  " \
     1015                      WHERE a.objID = b.objID  AND b.imageID = " + str(imageID)
    10741016                self.logger.infoPair('sql',sql)   
    10751017                self.scratchDb.execute(sql)
     
    10781020        #out of the loops - give dataRelase to all       
    10791021        self.scratchDb.updateAllRows(tableName, "dataRelease", str(self.skychunk.dataRelease))
     1022
     1023
     1024    def deleteNULLippDetectIDs(self, tableName):
     1025
     1026        self.logger.infoPair("Deleting NULL ippdetectIDs from table", tableName)
     1027        sql = "DELETE FROM " + tableName + " WHERE \
     1028              gippDetectID is NULL AND \
     1029              rippDetectID is NULL AND \
     1030              iippDetectID is NULL AND \
     1031              zippDetectID is NULL AND \
     1032              yippDetectID is NULL "
     1033        self.logger.infoPair('sql',sql)   
     1034        self.scratchDb.execute(sql)
    10801035
    10811036    '''
     
    12251180        self.scratchDb.createIndex("StackObject", "objID")
    12261181        #populate from dvo the (f)ippDetectID into StackObject 
    1227         self.populateStackObjectFromDvo()
     1182        self.populateStackIPPDetectIDFromDvo("StackObject",1)
    12281183        #index the ippDetectids for the next step
    12291184        self.scratchDb.createIndex("StackObject", "gippDetectID")
     
    12411196            self.scratchDb.createIndex("StackModelFit", "objID")
    12421197        #populate from dvo the (f)ippdetectid into stackModelFit
    1243 
     1198            self.populateStackIPPDetectIDFromDvo("StackModelFit",0)
    12441199        #index the ippDetectIds for the next step
    12451200            self.scratchDb.createIndex("StackModelFit", "gippDetectID")
     
    12481203            self.scratchDb.createIndex("StackModelFit", "zippDetectID")
    12491204            self.scratchDb.createIndex("StackModelFit", "yippDetectID")
     1205        #cull the entries that should not be (how?)       
     1206            self.deleteNULLippDetectIDs("StackModelFit")
    12501207        #populate stackModelFit
    1251         #cull the entries that should not be (how?)
    1252 
     1208            self.populateStackModelFit("g")
     1209            self.populateStackModelFit("r")
     1210            self.populateStackModelFit("i")
     1211            self.populateStackModelFit("z")
     1212            self.populateStackModelFit("y")
     1213
     1214 
    12531215            self.logger.infoPair("populating ","StackApFlx")
    12541216           
    12551217            self.scratchDb.createIndex("StackApFlx", "objID")
    12561218        #populate from dvo the (f)ippDetectID into StackApFlx
    1257        
     1219            self.populateStackIPPDetectIDFromDvo("StackApFlx",0)
    12581220        #index the ippDetectIDs for the next step
    12591221            self.scratchDb.createIndex("StackApFlx", "gippDetectID")
     
    12631225            self.scratchDb.createIndex("StackApFlx", "yippDetectID")
    12641226        #populate StackApFlx
     1227            self.deleteNULLippDetectIDs("StackApFlx")
     1228            self.populateStackApFlx()
    12651229        #cull the entries that should not be (how?)
    12661230       
     
    12701234       
    12711235        self.setMinMaxObjID(["StackObject"])
    1272        
     1236      #  self.updateStackTypeID("StackModelFit")
     1237
    12731238        ##if self.totalDetections < 1:
    12741239
Note: See TracChangeset for help on using the changeset viewer.