IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

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

ipptopsps: stacks are happy, objects are in progress

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.