- Timestamp:
- Nov 6, 2015, 8:37:34 AM (11 years ago)
- Location:
- trunk/ippToPsps/jython
- Files:
-
- 2 edited
-
diffbatch.py (modified) (13 diffs)
-
gpc1db.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippToPsps/jython/diffbatch.py
r39039 r39049 77 77 self.expTime = {} 78 78 self.obsTime = {} 79 self.fits = {} 79 self.posFits = {} 80 self.negFits = {} 80 81 self.tessID = {} 81 82 self.tessName = {} … … 101 102 self.logger.infoPair("getting diff" ," metadata") 102 103 self.logger.infoPair("for diff skyfile id ", str(diffSkyFileID)) 103 meta = {} 104 104 105 meta = self.gpc1Db.getDiffStageMeta(int(diffSkyFileID)) 105 106 106 # this code is very fragile: it depends on the right order in the output 107 # of the sql call in another file (see forcedwarpbatch.py for a better method) 107 # EAM 20151105 : I have changed the function above to return "meta" as a dictionary 108 108 if not meta: 109 109 self.logger.errorPair("Could not get", "diff metadata") 110 110 raise 111 self.filterName[num] = meta[0]; 112 113 self.difftypeID[num] = meta[1]; 114 self.ippDiffID[num] = stageid 115 self.posImageID[num] = meta[2]; 116 self.negImageID[num] = meta[3]; 117 self.skycellName[num] = meta[4]; 118 self.analysisVer[num] = meta[5]; 119 self.expTime[num] = meta[6]; 111 112 self.ippDiffID[num] = stageid 113 114 self.filterName[num] = meta['filter']; 115 self.difftypeID[num] = meta['diff_mode']; 116 self.posImageID[num] = meta['warp1']; 117 self.negImageID[num] = meta['stack2']; 118 self.skycellName[num] = meta['skycell_id']; 119 self.analysisVer[num] = meta['software_ver']; 120 self.expTime[num] = meta['exp_time']; 121 self.expID[num] = meta['exp_id']; 122 self.tessName[num] = meta['tess_id']; 123 120 124 ## MEH -- should be able to use diff header now for mjd (see below) 121 #self.obsTime[num] = meta[7]; 122 # tess_id is handled below, that's #8. 123 self.expID[num] = meta[9]; 125 # self.obsTime[num] = meta['obsTime']; 126 127 # tessName could also come from the header... 128 # tessName = None 129 # tessName = self.getKeyValue(self.header[num], 'TESS_ID') 130 124 131 self.logger.infoPair("loading diff stage cmf", diffSkyFileID) 125 self.fits[num] = gpc1Db.getDiffStageCmf(skychunk.dvoLabel, int(diffSkyFileID)) 132 133 # look up the path base once 134 pathBase = gpc1Db.getDiffStagePathBase(skychunk.dvoLabel, int(diffSkyFileID)) 135 136 # select the two (possible) cmf files (.cmf and .inv.cmf) 137 self.posFits[num] = gpc1Db.getDiffStageCmfForPathBase(pathBase) 138 self.negFits[num] = gpc1Db.getDiffStageCmfForPathBase(pathBase + ".inv") 139 126 140 self.logger.infoPair("loading diff stage header", diffSkyFileID) 127 self.header[num] = self.fits[num].getPrimaryHeader() 141 self.header[num] = self.posFits[num].getPrimaryHeader() 142 143 # obsTime is the center of the exposure. MJD-OBS is the start in days, expTime is the length in seconds 128 144 self.obsTime[num] = float(self.header[num]['MJD-OBS']) + (float(self.expTime[num]) / 172800.0) 129 # tessName = None 130 # tessName = self.getKeyValue(self.header[num], 'TESS_ID') 131 self.tessName[num]= meta[8]; 145 132 146 tessName = self.tessName[num] 147 self.logger.infoPair("TessName ", tessName) 148 self.tessID[num] = self.scratchDb.getTessID(tessName) 133 149 self.logger.infoPair("TessName ",tessName) 134 self.tessID[num] = self.scratchDb.getTessID(tessName) 135 136 self.logger.infoPair("TessName ",tessName) 137 # XXX EAM 20140812 : I am hardwiring the parsing logic for RINGS vs LOCAL 150 151 # XXX EAM 20140812 : I am hardwiring the parsing logic for RINGS vs LOCAL 138 152 if self.tessName[num] == 'RINGS.V3': 139 153 # skycell is, eg "skycell.1133.081" … … 152 166 153 167 ## MEH md5sum test 154 self.md5sum[num] = self. fits[num].getMd5sum()155 156 # drop the existing tables168 self.md5sum[num] = self.posFits[num].getMd5sum() 169 170 # drop the existing tables 157 171 158 172 self.dropTableVerbose("DiffMeta_"+str(num)) … … 162 176 163 177 if not self.analysisVer[num]: self.analysisVer[num] = -999 178 164 179 self.logger.infoPair("getPhotoCalID",diffSkyFileID) 165 180 self.photoCalID[num] = str(self.scratchDb.getPhotoCalID(int(diffSkyFileID))) 181 166 182 self.logger.infoPair("get filterID", diffSkyFileID) 167 183 self.filterID[num] = self.scratchDb.getFilterID(self.filterName[num][0]) 184 168 185 self.logger.infoPair("insertdiffmeta", diffSkyFileID) 169 186 self.logger.infoPair("insertdiffmeta", self.filterName[num][0]) … … 171 188 self.ippToPspsDb.insertDiffMeta(self.batchID, self.filterName[num][0], self.difftypeID[num]) 172 189 173 # make some generic tables174 #sql = "CREATE TABLE DiffMeta_"+str(num)+" like DiffMeta"175 #try: self.scratchDb.execute(sql)176 #except: raise177 #sql = "CREATE TABLE DiffToImage_"+str(num)+" like DiffToImage"178 #try: self.scratchDb.execute(sql)179 #except: raise180 #sql = "CREATE TABLE DiffDetection_"+str(num)+" like DiffDetection"181 #try: self.scratchDb.execute(sql)182 #except: raise183 184 185 186 190 num = num + 1 187 191 188 192 # create an output filename, which is {expID}.FITS 189 190 191 193 self.outputFitsFile = "%08d.FITS" % self.stageid 192 194 self.outputFitsPath = "%s/%s" % (self.localOutPath, self.outputFitsFile) 193 194 195 195 196 196 self.processingVersion = skychunk.processingVersion; 197 198 197 199 198 # dump stuff to log 200 199 self.logger.infoPair("stage_id", "%d" % self.stageid) 201 202 200 203 201 ''' … … 257 255 Populates the Diff table for this OTA 258 256 ''' 259 def populateDiffDetectionTable(self,num): 260 261 pspsTableName = "DiffDetection_"+str(num) 262 ippTableName = "SkyChip_psf_"+str(num) 263 diffSkyFileID = self.number[num] 264 sql = "CREATE TABLE DiffDetection_"+str(num)+" like DiffDetection" 265 try: self.scratchDb.execute(sql) 266 except: raise 267 #results['ORIGINALTOTAL'] = self.scratchDb.getRowCount(ippTableName) 268 269 # drop then re-create table 270 #self.scratchDb.dropTable(pspsTableName) 271 #sql = "CREATE TABLE " + pspsTableName + " LIKE DiffDetection" 272 #try: self.scratchDb.execute(sql) 273 #except: pass 274 257 def populateDiffDetectionTable(self, num, isPosFile): 258 275 259 # XXX we no longer delete detections with funny mags (eg PSF_INST_MAG < -17.5) 276 260 # for examples of code which do this, go to r35097 or earlier 277 261 278 BEFORE = self.scratchDb.getRowCount(ippTableName) 279 #results['SATDET'] = 0 262 if isPosFile: 263 ippTableName = "SkyChip_psf_"+str(num) 264 else: 265 ippTableName = "SkyChip_psf_inv_"+str(num) 266 267 pspsTableName = "DiffDetection_" + str(num) 268 diffSkyFileID = self.number[num] 269 270 if isPosFile: 271 sql = "CREATE TABLE DiffDetection_" + str(num) + " like DiffDetection" 272 self.scratchDb.execute(sql) 280 273 281 274 expTimeString = str(self.expTime[num]) 282 283 # insert all detections into table : do NOT include the IGNORE unless we have to 284 # sqlLine = sqlUtility("INSERT IGNORE INTO " + pspsTableName + " (") 285 sqlLine = sqlUtility("INSERT INTO " + pspsTableName + " (") 286 287 # XXX WARNING: need to apply platescale to convert sizes to arcsec 288 # XXX apFluxF or apFluxNpix + apFluxRadius? 289 290 sqlLine.group("ippDetectID", "IPP_IDET") 291 sqlLine.group("diffImageID", str(diffSkyFileID)) 292 293 sqlLine.group("randomDiffID", "RAND("+str(self.batchID)+")") 294 sqlLine.group("filterID", str(self.filterID[num])) 295 sqlLine.group("surveyID", str(self.surveyID)) 296 sqlLine.group("skycellID", str(self.skycellID[num])) 297 sqlLine.group("expTime", str(self.expTime[num])) 298 sqlLine.group("obsTime", str(self.obsTime[num])) 299 sqlLine.group("xPos", "X_PSF") 300 sqlLine.group("yPos", "Y_PSF") 301 sqlLine.group("xPosErr", "X_PSF_SIG") 302 sqlLine.group("yPosErr", "Y_PSF_SIG") 303 if (self.id >= 982483): 304 sqlLine.group("pltScale", "PLTSCALE") 305 sqlLine.group("posAngle", "POSANGLE") 306 sqlLine.group("raErr", "X_PSF_SIG * abs(PLTSCALE)") 307 sqlLine.group("decErr", "Y_PSF_SIG * abs(PLTSCALE)") 275 if isPosFile: 276 fluxScaleStr = "1" 277 detIDoffset = 0 308 278 else: 309 sqlLine.group("pltScale", "0.257") 310 sqlLine.group("posAngle", "-999") 311 sqlLine.group("raErr", "X_PSF_SIG * 0.25") 312 sqlLine.group("decErr", "Y_PSF_SIG * 0.25") 313 sqlLine.group("DpsfFlux", "PSF_INST_FLUX / " + expTimeString) 314 sqlLine.group("DpsfFluxErr", "PSF_INST_FLUX_SIG / " + expTimeString) 315 316 if self.havePsfFwhm[num]: 317 print "I have PSF_FWHM_MAJ, setting a value" 318 sqlLine.group("DpsfMajorFWHM", "PSF_FWHM_MAJ * abs(PLTSCALE)") 319 sqlLine.group("DpsfMinorFWHM", "PSF_FWHM_MIN * abs(PLTSCALE)") 320 sqlLine.group("DpsfCore", "PSF_CORE") 321 322 if self.haveSrcPos[num]: 323 print "I have SRC_CHIP_X, setting a value" 324 sqlLine.group("xPosChip", "SRC_CHIP_X") 325 sqlLine.group("yPosChip", "SRC_CHIP_Y") 326 sqlLine.group("ccdID" , "SRC_CHIP_NUM") 327 328 sqlLine.group("DpsfTheta", "PSF_THETA") 329 sqlLine.group("DpsfQf", "PSF_QF") 330 sqlLine.group("DpsfQfPerfect", "PSF_QF_PERFECT") 331 sqlLine.group("DpsfChiSq", "PSF_CHISQ") 332 sqlLine.group("DpsfLikelihood", "psfLikelihood(EXT_NSIGMA)") 333 sqlLine.group("DmomentXX", "MOMENTS_XX * PLTSCALE * PLTSCALE") 334 sqlLine.group("DmomentXY", "MOMENTS_XY * PLTSCALE * PLTSCALE") 335 sqlLine.group("DmomentYY", "MOMENTS_YY * PLTSCALE * PLTSCALE") 336 sqlLine.group("DmomentR1", "MOMENTS_R1 * abs(PLTSCALE)") 337 sqlLine.group("DmomentRH", "MOMENTS_RH * sqrt(abs(PLTSCALE))") 338 if (self.id >= 982483): 339 sqlLine.group("DapFlux", "AP_FLUX / " + expTimeString) 340 sqlLine.group("DapFluxErr", "AP_FLUX_SIG / " + expTimeString) 341 342 if self.haveApNpix[num]: 343 sqlLine.group("DapFillF", "AP_NPIX / (3.14159265359 * AP_MAG_RADIUS * AP_MAG_RADIUS)") 344 sqlLine.group("DkronFlux", "KRON_FLUX / " + expTimeString) 345 sqlLine.group("DkronFluxErr", "KRON_FLUX_ERR / " + expTimeString) 346 sqlLine.group("DkronRad", "MOMENTS_R1 * 2.5 * abs(PLTSCALE)") 347 sqlLine.group("diffNPos", "DIFF_NPOS") 348 sqlLine.group("diffFRatio", "DIFF_FRATIO") 349 sqlLine.group("diffNBad", "DIFF_NRATIO_BAD") 350 sqlLine.group("diffNMask", "DIFF_NRATIO_MASK") 351 sqlLine.group("diffNAll", "DIFF_NRATIO_ALL") 352 sqlLine.group("diffPdist", "DIFF_R_P") 353 sqlLine.group("diffNdist", "DIFF_R_M") 354 sqlLine.group("diffPSN", "DIFF_SN_P") 355 sqlLine.group("diffNSN", "DIFF_SN_M") 356 sqlLine.group("Dsky", "SKY / PLTSCALE / PLTSCALE / " + expTimeString) 357 sqlLine.group("DskyErr", "SKY_SIGMA / PLTSCALE / PLTSCALE / " + expTimeString) 358 sqlLine.group("DinfoFlag", "FLAGS") 359 sqlLine.group("DinfoFlag2", "FLAGS2") 360 sqlLine.group("processingVersion", str(self.skychunk.processingVersion)) 361 362 sql = sqlLine.makeRaw(") SELECT ", " FROM " + ippTableName) 363 364 try: self.scratchDb.execute(sql) 365 except: 366 self.logger.errorPair("failed sql: ", sql) 367 raise 368 369 # NOTE : Flux limits : in the current PSPS schema, negative fluxes 370 # cause problems for sql queries which work in mags as SQL cannot do 371 # something like (f < 0.0) ? -999 : -2.5*log10(f) 372 # as a result, the negative fluxes here result in floating point errors 373 # XXX EAM 2014072 : Is this still a problem? 374 # sql = "UPDATE " + pspsTableName + " SET psfFlux = 1e20 WHERE psfFlux <= 0.0" 375 # self.scratchDb.execute(sql) 376 377 # sql = "UPDATE " + pspsTableName + " SET apFlux = 1e20 WHERE apFlux <= 0.0" 378 # self.scratchDb.execute(sql) 379 380 # sql = "UPDATE " + pspsTableName + " SET kronFlux = 1e20 WHERE kronFlux <= 0.0" 381 # self.scratchDb.execute(sql) 382 383 # we don't delete these anymore 384 #results['NULLINSTFLUX'] = 0; 385 386 387 # insert stuff from dvo 279 fluxScaleStr = "-1" 280 detIDoffset = self.posImageDetCount 281 282 if isPosFile or self.haveNegFits[num]: 283 284 # insert all detections into table : do NOT include the IGNORE unless we have to 285 # sqlLine = sqlUtility("INSERT IGNORE INTO " + pspsTableName + " (") 286 sqlLine = sqlUtility("INSERT INTO " + pspsTableName + " (") 287 288 # XXX WARNING: need to apply platescale to convert sizes to arcsec 289 # XXX apFluxF or apFluxNpix + apFluxRadius? 290 291 sqlLine.group("ippDetectID", "IPP_IDET + " + str(detIDoffset)) 292 sqlLine.group("diffImageID", str(diffSkyFileID)) 293 sqlLine.group("fromPosImage", str(isPosFile)) 294 295 sqlLine.group("randomDiffID", "RAND("+str(self.batchID)+")") 296 sqlLine.group("filterID", str(self.filterID[num])) 297 sqlLine.group("surveyID", str(self.surveyID)) 298 sqlLine.group("skycellID", str(self.skycellID[num])) 299 sqlLine.group("expTime", str(self.expTime[num])) 300 sqlLine.group("obsTime", str(self.obsTime[num])) 301 sqlLine.group("xPos", "X_PSF") 302 sqlLine.group("yPos", "Y_PSF") 303 sqlLine.group("xPosErr", "X_PSF_SIG") 304 sqlLine.group("yPosErr", "Y_PSF_SIG") 305 if (self.id >= 982483): 306 sqlLine.group("pltScale", "PLTSCALE") 307 sqlLine.group("posAngle", "POSANGLE") 308 sqlLine.group("raErr", "X_PSF_SIG * abs(PLTSCALE)") 309 sqlLine.group("decErr", "Y_PSF_SIG * abs(PLTSCALE)") 310 else: 311 sqlLine.group("pltScale", "0.257") 312 sqlLine.group("posAngle", "-999") 313 sqlLine.group("raErr", "X_PSF_SIG * 0.25") 314 sqlLine.group("decErr", "Y_PSF_SIG * 0.25") 315 sqlLine.group("DpsfFlux", "PSF_INST_FLUX / " + expTimeString + " * " + fluxScaleStr) 316 sqlLine.group("DpsfFluxErr", "PSF_INST_FLUX_SIG / " + expTimeString) 317 318 if self.havePsfFwhm[num]: 319 print "I have PSF_FWHM_MAJ, setting a value" 320 sqlLine.group("DpsfMajorFWHM", "PSF_FWHM_MAJ * abs(PLTSCALE)") 321 sqlLine.group("DpsfMinorFWHM", "PSF_FWHM_MIN * abs(PLTSCALE)") 322 sqlLine.group("DpsfCore", "PSF_CORE") 323 324 if self.haveSrcPos[num]: 325 print "I have SRC_CHIP_X, setting a value" 326 sqlLine.group("xPosChip", "SRC_CHIP_X") 327 sqlLine.group("yPosChip", "SRC_CHIP_Y") 328 sqlLine.group("ccdID" , "SRC_CHIP_NUM") 329 330 sqlLine.group("DpsfTheta", "PSF_THETA") 331 sqlLine.group("DpsfQf", "PSF_QF") 332 sqlLine.group("DpsfQfPerfect", "PSF_QF_PERFECT") 333 sqlLine.group("DpsfChiSq", "PSF_CHISQ") 334 sqlLine.group("DpsfLikelihood", "psfLikelihood(EXT_NSIGMA)") 335 sqlLine.group("DmomentXX", "MOMENTS_XX * PLTSCALE * PLTSCALE") 336 sqlLine.group("DmomentXY", "MOMENTS_XY * PLTSCALE * PLTSCALE") 337 sqlLine.group("DmomentYY", "MOMENTS_YY * PLTSCALE * PLTSCALE") 338 sqlLine.group("DmomentR1", "MOMENTS_R1 * abs(PLTSCALE)") 339 sqlLine.group("DmomentRH", "MOMENTS_RH * sqrt(abs(PLTSCALE))") 340 if (self.id >= 982483): 341 sqlLine.group("DapFlux", "AP_FLUX / " + expTimeString + " * " + fluxScaleStr) 342 sqlLine.group("DapFluxErr", "AP_FLUX_SIG / " + expTimeString) 343 344 if self.haveApNpix[num]: 345 sqlLine.group("DapFillF", "AP_NPIX / (3.14159265359 * AP_MAG_RADIUS * AP_MAG_RADIUS)") 346 347 sqlLine.group("DkronFlux", "KRON_FLUX / " + expTimeString + " * " + fluxScaleStr) 348 sqlLine.group("DkronFluxErr", "KRON_FLUX_ERR / " + expTimeString) 349 sqlLine.group("DkronRad", "MOMENTS_R1 * 2.5 * abs(PLTSCALE)") 350 sqlLine.group("diffNPos", "DIFF_NPOS") 351 sqlLine.group("diffFPosRatio", "DIFF_FRATIO") 352 sqlLine.group("diffNPosRatio", "DIFF_NRATIO_BAD") 353 sqlLine.group("diffNPosMask", "DIFF_NRATIO_MASK") 354 sqlLine.group("diffNPosAll", "DIFF_NRATIO_ALL") 355 sqlLine.group("diffPosdist", "DIFF_R_P") 356 sqlLine.group("diffNegdist", "DIFF_R_M") 357 sqlLine.group("diffPosSN", "DIFF_SN_P") 358 sqlLine.group("diffNegSN", "DIFF_SN_M") 359 sqlLine.group("Dsky", "SKY / PLTSCALE / PLTSCALE / " + expTimeString) 360 sqlLine.group("DskyErr", "SKY_SIGMA / PLTSCALE / PLTSCALE / " + expTimeString) 361 sqlLine.group("DinfoFlag", "FLAGS") 362 sqlLine.group("DinfoFlag2", "FLAGS2") 363 sqlLine.group("processingVersion", str(self.skychunk.processingVersion)) 364 365 sql = sqlLine.makeRaw(") SELECT ", " FROM " + ippTableName) 366 367 self.scratchDb.execute(sql) 368 369 # XXX EAM 20151105 : Not sure how this must be modified to handle the inv data: 370 371 ## if we have a negative image (inv.cmf), do the ending chunk after loading the negative image data 372 if isPosFile and self.haveNegFits[num]: 373 return 374 375 # insert stuff from dvo 388 376 self.logger.infoPair("inserting dvo info:find imageID"," from externID") 389 377 imageID = self.scratchDb.getImageIDFromExternID(diffSkyFileID) 390 378 self.logger.infoPair("updating","diffdetection_"+str(num)) 391 379 sqlLine = sqlUtility("UPDATE DiffDetection_"+str(num)+" as a, " + self.scratchDb.dvoDetectionTable + " as b SET ") 392 sqlLine.group("a.diffObjID", "b.objId") 393 sqlLine.group("a.diffDetID", "b.detectID") 394 sqlLine.group("a.ippObjID","b.ippObjID") 395 sqlLine.group("a.dvoRegionID", "b.catID") 396 sqlLine.group("a.ra", "b.ra") 397 sqlLine.group("a.dec", "b.dec_") 398 sqlLine.group("a.raErr", "b.raErr") 399 sqlLine.group("a.decErr", "b.decErr") 400 401 sqlLine.group("a.zp","b.zp") 380 sqlLine.group("a.diffObjID", "b.objId") 381 sqlLine.group("a.diffDetID", "b.detectID") 382 sqlLine.group("a.ippObjID", "b.ippObjID") 383 sqlLine.group("a.dvoRegionID", "b.catID") 384 sqlLine.group("a.ra", "b.ra") 385 sqlLine.group("a.dec", "b.dec_") 386 sqlLine.group("a.raErr", "b.raErr") # NOTE: This is supplied above as well, is this needed?? 387 sqlLine.group("a.decErr", "b.decErr") # NOTE: This is supplied above as well, is this needed?? 388 sqlLine.group("a.zp", "b.zp") 402 389 sqlLine.group("a.telluricExt", "b.telluricExt") 403 sqlLine.group("a.airmass","b.airmass") 404 390 sqlLine.group("a.airmass", "b.airmass") 405 391 406 392 sql = sqlLine.makeEquals("WHERE a.ippDetectID = b.ippDetectID AND b.imageID = " +str( imageID)) … … 410 396 self.logger.errorPair("failed sql:",sql) 411 397 raise 398 412 399 self.logger.infoPair("need to cull"," nulls objid") 413 400 results= self.scratchDb.reportAndDeleteRowsWithNULLS("DiffDetection_"+str(num), "diffObjID") … … 529 516 530 517 return True 531 532 533 534 535 518 536 519 ''' … … 640 623 self.logger.infoPair("populated","DiffToImage_"+str(num)) 641 624 self.tablesToExport.append("DiffDetection_"+str(num)) 642 self.populateDiffDetectionTable(num) 625 self.populateDiffDetectionTable(num, 1) # populate the positive image data 626 self.populateDiffDetectionTable(num, 0) # populate the negative image data (if present) 643 627 self.logger.infoPair("populated","DiffDetection_"+str(num)) 644 628 self.setMinMaxDiffObjID(["DiffDetection_"+str(num)]) … … 647 631 self.logger.infoPair("populated","DiffDetEffMeta_"+str(num)) 648 632 # CZW: I appended to tablesToExport inside populateDiffDetEffMeta to be like stack. 633 649 634 #test = self.scratchDb.getRowCount("Object") 650 635 #return False … … 682 667 self.havePsfFwhm = {} 683 668 self.haveSrcPos = {} 669 self.haveNegFits = {} 670 self.posImageDetCount = 0 684 671 685 672 for num in self.number: 686 diffSkyFileID = self.number[num] 687 fileName = self.fits[num].getPath() 673 fileNamePos = self.posFits[num].getPath() 688 674 689 self.logger.infoPair("using filename:",fileName )675 self.logger.infoPair("using filename:",fileNamePos) 690 676 691 677 ## output table names need to have "_num" appended. … … 697 683 698 684 ## *** actually write the FITS data to mysql 699 self.scratchDb.loadFITStoMYSQL(fileName, fitsOptions) 685 self.scratchDb.loadFITStoMYSQL(fileNamePos, fitsOptions) 686 687 ## if we have a negative image (inv.cmf), load that as well: 688 self.haveNegFits[num] = 0 689 if not self.negFits[num] == None: 690 fileNameNeg = self.negFits[num].getPath() 691 692 self.logger.infoPair("using filename:", fileNameNeg) 693 694 ## output table names need to have "_num" appended. 695 fitsOptions = "-tablesuffix _inv_" + str(num) 696 697 # this option is equivalent to the stilts "addcol table_index $0" call 698 fitsOptions += " -sequence-column table_index" 699 fitsOptions += " -sequence-column-start 1" 700 701 ## *** actually write the FITS data to mysql 702 self.scratchDb.loadFITStoMYSQL(fileNameNeg, fitsOptions) 703 self.haveNegFits[num] = 1 704 705 posTableName = "SkyChip_psf_" + str(num) 706 self.posImageDetCount = self.scratchDb.getRowCount(posTableName) 700 707 701 708 ## use stilts to get a list of the tables from the header 702 709 try: 703 tables = stilts.treads(fileName )710 tables = stilts.treads(fileNamePos) 704 711 except: 705 self.logger.errorPair("STILTS could not import from", fileName )712 self.logger.errorPair("STILTS could not import from", fileNamePos) 706 713 return False 707 714 … … 751 758 for num in self.number: 752 759 diffSkyFileID = self.number[num] 753 fileName = self. fits[num].getPath()760 fileName = self.posFits[num].getPath() 754 761 755 762 self.logger.infoPair("using filename:",fileName) -
trunk/ippToPsps/jython/gpc1db.py
r39038 r39049 340 340 return addIDs 341 341 342 343 344 345 346 347 348 349 342 ''' 350 343 Gets some stack-stage meta data for this sky_id # TODO this SQL could surely be improved … … 408 401 AND warp_skyfile_id = " + str(warpSkyfileID) 409 402 410 try: 411 rs = self.executeQuery(sql) 412 rs.first() 413 except: 403 rs = self.executeQuery(sql) 404 if not rs.first(): 414 405 self.logger.errorPair("Can't query for", "forced warp meta data") 406 os._exit(3) 415 407 416 408 try: … … 435 427 self.logger.debug("Querying GPC1 for diff meta data") 436 428 437 meta = [] 429 meta = {} 430 438 431 sql = "SELECT \ 439 432 filter,\ … … 442 435 stack2, \ 443 436 skycell_id, \ 444 diffRun.software_ver , \437 diffRun.software_ver as software_ver, \ 445 438 exp_time, \ 446 (to_days(dateobs)-678941 + time_to_sec(dateobs)/86400.) , \439 (to_days(dateobs)-678941 + time_to_sec(dateobs)/86400.) as obsTime, \ 447 440 diffInputSkyfile.tess_id, \ 448 441 exp_id \ … … 454 447 JOIN rawExp using (exp_id) \ 455 448 WHERE diff_skyfile_id = %d" % diffSkyfileID 456 #this is a crappy way to get the mjd from the diff but we don't save it anywhere 457 try: 458 rs = self.executeQuery(sql) 459 rs.first() 460 except: 449 450 rs = self.executeQuery(sql) 451 if not rs.first(): 461 452 self.logger.infoPair ("this sql is broken:",sql) 462 453 self.logger.errorPair("Can't query for", "stack meta data") 454 os._exit(3) 463 455 464 456 try: 465 meta .append(rs.getString(1))466 meta .append(rs.getString(2))467 meta .append(rs.getString(3))468 meta .append(rs.getString(4))469 meta .append(rs.getString(5))470 meta .append(rs.getString(6))471 meta .append(rs.getString(7))472 meta .append(rs.getString(8))473 meta .append(rs.getString(9))474 meta .append(rs.getString(10))457 meta['filter'] = rs.getString(1) 458 meta['diff_mode'] = rs.getString(2) 459 meta['warp1'] = rs.getString(3) 460 meta['stack2'] = rs.getString(4) 461 meta['skycell_id'] = rs.getString(5) 462 meta['software_ver'] = rs.getString(6) 463 meta['exp_time'] = rs.getString(7) 464 meta['obsTime'] = rs.getString(8) 465 meta['tess_id'] = rs.getString(9) 466 meta['exp_id'] = rs.getString(10) 475 467 476 468 except: … … 515 507 516 508 if len(files) < 1: return None 509 fits = Fits(self.logger, self.config, files[0]) 510 return fits 511 512 ''' 513 get diff stage cmf name 514 ''' 515 def getDiffStagePathBase(self, dvoDb, diffSkyfileID): 516 print "got here, diffstagecmf" 517 sql = "SELECT DISTINCT diffSkyfile.path_base \ 518 FROM mergedvodbRun join minidvodbRun using (minidvodb_id) \ 519 JOIN addRun using (minidvodb_name) \ 520 JOIN diffInputSkyfile on (diff_skyfile_id = stage_extra1 \ 521 AND diff_id = stage_id AND stage = 'diff') \ 522 JOIN diffSkyfile using (diff_id, skycell_id, diff_skyfile_id) \ 523 WHERE diff_skyfile_id = " + str(diffSkyfileID) + " \ 524 AND minidvodbRun.state = 'merged' \ 525 AND mergedvodbRun.state = 'full' \ 526 AND mergedvodbRun.mergedvodb = '" + dvoDb + "' \ 527 AND stage = 'diff'" 528 529 rs = self.executeQuery(sql) 530 531 if not rs.first(): 532 self.logger.errorPair("missing cmf entry diff_skyfile_id:", str(diff_skyfile_id)) 533 # self.logger.errorPair("no diff cmfs found for diff_skyfile_id = %d" %diff_skyfile_id) 534 return None 535 536 pathBase = rs.getString(1) 537 return pathBase 538 539 ''' 540 get diff stage cmf name 541 ''' 542 def getDiffStageCmfForPathBase(self, pathBase): 543 544 files = [] 545 if pathBase.startswith("neb"): 546 self.logger.debugPair("searching for nebulous files", pathBase) 547 f = os.popen("neb-ls -p " + pathBase + ".cmf") 548 for i in f.readlines(): 549 self.logger.debugPair("real file", i.rstrip()) 550 files.append(i.rstrip()) 551 else: 552 files = glob.glob(pathBase + ".cmf") 553 554 if len(files) < 1: 555 self.logger.errorPair ("no cmf file found matching pathBase", pathBase + ".cmf") 556 return None 557 517 558 fits = Fits(self.logger, self.config, files[0]) 518 559 return fits
Note:
See TracChangeset
for help on using the changeset viewer.
