Changeset 37755
- Timestamp:
- Dec 17, 2014, 7:22:48 PM (12 years ago)
- File:
-
- 1 edited
-
trunk/ippToPsps/jython/diffobjectbatch.py (modified) (20 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippToPsps/jython/diffobjectbatch.py
r37577 r37755 49 49 dvoID, 50 50 batchID, 51 " OB",51 "DO", 52 52 None) 53 53 … … 134 134 # " + cpsTable + " AS cps ON (cps.row = (MeanObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \ 135 135 136 sql = "UPDATE MeanObject JOIN \137 " + cpsTable + " AS cps ON (cps.row = ( MeanObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \136 sql = "UPDATE DiffObject JOIN \ 137 " + cpsTable + " AS cps ON (cps.row = (DiffObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \ 138 138 SET \ 139 139 MeanObject." + filter[1] + "QfPerfect = PSF_QF_PERF_MAX \ … … 174 174 Inserts stuff for all mags 175 175 ''' 176 def update ObjectThinFromCps(self, cpsTable):176 def updateDiffObjectFromCps(self, cpsTable): 177 177 178 178 # list of all filters PSPS is interested in … … 196 196 # sqlLine = sqlUtility() 197 197 198 sql = "UPDATE ObjectThinJOIN "198 sql = "UPDATE DiffObject JOIN " 199 199 sql += cpsTable + " AS cps " 200 sql += "ON (cps.row = ( ObjectThin.row * "200 sql += "ON (cps.row = (DiffObject.row * " 201 201 sql += str(filterCount) + ")-(" 202 202 sql += str(filterCount) + " - " … … 204 204 sql += ")) " 205 205 206 sql += "SET ObjectThin.n" + filter[1] + " = NCODE, "207 sql += " ObjectThin.nStackDetections = ObjectThin.nStackDetections + cps.NSTACK_DET"206 sql += "SET DiffObject.n" + filter[1] + " = NCODE, " 207 sql += "DiffObject.nDetections = DiffObject.nDetections + cps.NSTACK_DET" 208 208 self.logger.info(sql) 209 209 self.scratchDb.execute(sql) … … 213 213 for filter in filters: 214 214 # now do a sum of n[filters], but do not include the ones with -999 215 sql = "UPDATE ObjectThin"215 sql = "UPDATE DiffObject " 216 216 sql += "SET nDetections = nDetections + n" + filter[1] 217 217 sql += " WHERE n" + filter[1] + " != -999" … … 222 222 XXX EAM 20140714 : This seems quite inefficient in SQL, move to dvopsps? 223 223 ''' 224 def updateObjName(self): 225 ##this is a 4 part update: 226 self.logger.infoPair("updating objName", "using stacks") 227 ## if we have a stackra and dec, use stackra and dec , dec >=0 228 229 sql = "update ObjectThin set objName = concat('PS1.2 J', \ 230 lpad(floor(raStack/15.),2,'0'), \ 231 lpad((raStack/15.-(floor(raStack/15.)))*60. ,2,'0'), \ 232 lpad(format(((raStack/15.-(floor(raStack/15.)))*60.-floor((raStack/15.-(floor(raStack/15.)))*60.))*60.,2),4,'0'), \ 233 '+', \ 234 lpad(floor(decStack),2,'0'), \ 235 lpad((decStack-(floor(decStack)))*60. ,2,'0'), \ 236 lpad(format(((decStack-(floor(decStack)))*60.-floor((decStack-(floor(decStack)))*60.))*60.,2),4,'0') \ 237 ) where raStack > -999 and decStack > -999 and decStack >= 0" 238 try: 239 self.scratchDb.execute(sql) 240 except: 241 self.logger.errorPair("failed sql", sql) 242 return False 243 244 245 ## if we have a stackra and dec, use stackra and dec, dec < 0 246 247 sql = "update ObjectThin set objName = concat('PS1.2 J', \ 248 lpad(floor(raStack/15.),2,'0'), \ 249 lpad((raStack/15.-(floor(raStack/15.)))*60. ,2,'0'), \ 250 lpad(format(((raStack/15.-(floor(raStack/15.)))*60.-floor((raStack/15.-(floor(raStack/15.)))*60.))*60.,2),4,'0'), \ 251 '-', \ 252 lpad(floor(decStack),2,'0'), \ 253 lpad((decStack-(floor(decStack)))*60. ,2,'0'), \ 254 lpad(format(((decStack-(floor(decStack)))*60.-floor((decStack-(floor(decStack)))*60.))*60.,2),4,'0') \ 255 ) where raStack > -999 and decStack > -999 and decStack <= 0" 256 try: 257 self.scratchDb.execute(sql) 258 except: 259 self.logger.errorPair("failed sql", sql) 260 return False 261 self.logger.infoPair("updating objName", "using means") 224 def updateDiffObjName(self): 225 ##this is a 2 part update: 226 227 self.logger.infoPair("updating diffObjName", "using means") 262 228 ## use mean ra and dec (dec >= 0) 263 sql = "update ObjectThin set objName = concat('PS1.2 J', \229 sql = "update DiffObject set diffObjName = concat('PS1.2 J', \ 264 230 lpad(floor(raMean/15.),2,'0'), \ 265 231 lpad((raMean/15.-(floor(raMean/15.)))*60. ,2,'0'), \ … … 278 244 ## use mean ra and dec (dec < 0) 279 245 280 sql = "update ObjectThin set objName = concat('PS1.2 J', \246 sql = "update DiffObject set diffObjName = concat('PS1.2 J', \ 281 247 lpad(floor(raMean/15.),2,'0'), \ 282 248 lpad((raMean/15.-(floor(raMean/15.)))*60. ,2,'0'), \ … … 295 261 296 262 ''' 297 Populates the Object table298 ''' 299 def populate ObjectThinTable(self):263 Populates the DiffObject table 264 ''' 265 def populateDiffObjectTable(self): 300 266 301 267 cptTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cpt") … … 324 290 325 291 326 self.logger.info("Populating ThinObject")292 self.logger.info("Populating DiffObject") 327 293 self.logger.info("Inserting objects from cpt file") 328 294 … … 331 297 # INSERT IGNORE INTO ObjectThin 332 298 333 sqlLine = sqlUtility("INSERT INTO ObjectThin(")334 335 sqlLine.group(" objID", "EXT_ID")299 sqlLine = sqlUtility("INSERT INTO DiffObject (") 300 301 sqlLine.group("diffObjID", "EXT_ID") 336 302 sqlLine.group("ippObjID", "OBJ_ID + (CAT_ID << 32)") # NOTE: shift by 32 bits exactly 337 303 sqlLine.group("surveyID", "'" + str(self.surveyID) + "'") … … 339 305 sqlLine.group("batchID", "'" + str(self.batchID) + "'") 340 306 sqlLine.group("dvoRegionID", "CAT_ID") 341 sqlLine.group("tessID", "TESS_ID")342 sqlLine.group("projectionID", "PROJECTION_ID")343 307 sqlLine.group("skycellID", "SKYCELL_ID") 344 308 sqlLine.group("dataRelease", "'" + str(self.skychunk.dataRelease) + "'") … … 346 310 sqlLine.group("qualityFlag", "FLAGS >> 24 & 0xFF") 347 311 sqlLine.group("consistencyFlag", "'0'") 348 sqlLine.group("raStack", "RA_STK") 349 sqlLine.group("decStack", "DEC_STK") 350 sqlLine.group("raStackErr", "RA_STK_ERR") 351 sqlLine.group("decStackErr", "DEC_STK_ERR") 352 sqlLine.group("raMean", "RA_MEAN") 353 sqlLine.group("decMean", "DEC_MEAN") 354 sqlLine.group("raMeanErr", "RA_ERR") 355 sqlLine.group("decMeanErr", "DEC_ERR") 356 sqlLine.group("posMeanChisq", "CHISQ_POS") 357 sqlLine.group("nStackObjectRows", "'0'") # XXX I need to add / define this in dvopsps 358 sqlLine.group("nStackDetections", "'0'") 312 sqlLine.group("ra", "RA_MEAN") 313 sqlLine.group("dec", "DEC_MEAN") 314 sqlLine.group("raErr", "RA_ERR") 315 sqlLine.group("decErr", "DEC_ERR") 359 316 sqlLine.group("nDetections", "'0'") 360 317 sql = sqlLine.makeRaw(") SELECT ", " FROM " + cptTableName) … … 363 320 self.scratchDb.execute(sql) 364 321 except: 365 self.logger.errorPair("Couldn't populate Object table", sql)322 self.logger.errorPair("Couldn't populate DiffObject table", sql) 366 323 return False 367 324 368 325 # add row count columns so we can perform joins to get colors 369 self.logger.infoPair("Adding 'row' columns to", " Object and cps tables")370 self.scratchDb.addRowCountColumn(" ObjectThin", "row")326 self.logger.infoPair("Adding 'row' columns to", "DiffObject and cps tables") 327 self.scratchDb.addRowCountColumn("DiffObject", "row") 371 328 self.scratchDb.addRowCountColumn(cpsTableName, "row") 372 329 373 330 ## self.insertMeanMags(cpsTableName) 374 331 ## this is the new version 375 self.logger.infoPair("update objName for ","objectThin")376 self.update ObjName()377 378 self.logger.infoPair("update ObjectThinfrom ","cps table")379 380 self.update ObjectThinFromCps(cpsTableName)332 self.logger.infoPair("update diffObjName for ","DiffObject") 333 self.updateDiffObjName() 334 335 self.logger.infoPair("update DiffObject from ","cps table") 336 337 self.updateDiffObjectFromCps(cpsTableName) 381 338 382 339 # XXX EAM 20140724 : is this necessary?? … … 396 353 #count out of range 397 354 398 sql = "SELECT count(*) FROM ObjectThinwhere \399 ObjectThin.decMean > " + str(decMax) + "\400 or ObjectThin.decMean < " + str(decMin) + "\401 or ObjectThin.raMean > " + str(raMax) + "\402 or ObjectThin.raMean < " + str(raMin)355 sql = "SELECT count(*) FROM DiffObject where \ 356 DiffObject.dec > (" + str(decMax) + " + .0033) \ 357 or DiffObject.dec < (" + str(decMin) + " - .0033) \ 358 or DiffObject.ra > (" + str(raMax) + " + .0033) \ 359 or DiffObject.ra < (" + str(raMin) + " - .0033)" 403 360 404 361 rs = self.scratchDb.executeQuery(sql) … … 409 366 410 367 411 sql = "DELETE FROM ObjectThinwhere \412 ObjectThin.decMean > (" + str(decMax) + " + .0033) or \413 ObjectThin.decMean < (" + str(decMin) + " - .0033) or \414 ObjectThin.raMean > (" + str(raMax) + " + .0033) or \415 ObjectThin.raMean < (" + str(raMin) + " - .0033)"368 sql = "DELETE FROM DiffObject where \ 369 DiffObject.decMean > (" + str(decMax) + " + .0033) or \ 370 DiffObject.decMean < (" + str(decMin) + " - .0033) or \ 371 DiffObject.raMean > (" + str(raMax) + " + .0033) or \ 372 DiffObject.raMean < (" + str(raMin) + " - .0033)" 416 373 self.logger.infoPair("Deleting", str(nToDelete) + " objects outside of ra/dec range") 417 374 … … 419 376 self.scratchDb.execute(sql) 420 377 except: 421 self.logger.errorPair("Couldn't cull outsiders from ObjectThintable", sql)378 self.logger.errorPair("Couldn't cull outsiders from DiffObject table", sql) 422 379 return False 423 380 424 self.logger.infoPair("Dropping row column from", " ObjectThintable")425 self.scratchDb.dropColumn(" ObjectThin", "row")381 self.logger.infoPair("Dropping row column from", "DiffObject table") 382 self.scratchDb.dropColumn("DiffObject", "row") 426 383 ##self.logger.infoPair("Purging from scratch Db", self.region + " region") 427 384 … … 429 386 ##self.dvoObjects.purgeRegion(self.region) 430 387 431 self.setMinMax ObjID(["ObjectThin"])388 self.setMinMaxDiffObjID(["DiffObject"]) 432 389 433 390 return True 434 391 435 392 ''' 436 Populates the ObjectCalColor table437 '''438 def populateMeanObjectTable(self):439 cptTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cpt")440 cpsTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cps")441 self.logger.infoPair("Populating MeanObject from ", "ObjectThin")442 443 sql = "INSERT INTO MeanObject ( objID ) SELECT objID FROM ObjectThin"444 try:445 self.scratchDb.execute(sql)446 except:447 self.logger.errorPair("Couldn't populate MeanObject table", sql)448 return False449 450 self.logger.infoPair("Adding 'row' columns to", "MeanObject table")451 self.scratchDb.addRowCountColumn("MeanObject", "row")452 453 454 ##self.scratchDb.addRowCountColumn(cpsTableName, "row")455 self.logger.infoPair("update MeanObjects from ","cps table")456 self.updateMeanObjectFromCps(cpsTableName)457 458 self.logger.infoPair("Dropping row column from", "MeanObject table")459 self.scratchDb.dropColumn("MeanObject", "row")460 461 return True462 463 '''464 393 Does the processing, i.e. pulling stuff from IPP tables into PSPS tables 465 394 ''' 466 395 def populatePspsTables(self): 467 396 468 if not self.populateObjectThinTable(): return False 469 #if not self.populateObjectCalColorTable(): return False 470 if not self.populateMeanObjectTable(): return False 397 if not self.populateDiffObjectTable(): return False 471 398 472 399 # now remove the objID duplicates. We could not do this before as cpt/cps tables relate by row number 473 self.logger.infoPair("Forcing uniqueness on", "objID in ObjectThintable")474 rowCountBefore = self.scratchDb.getRowCount(" ObjectThin")400 self.logger.infoPair("Forcing uniqueness on", "objID in DIffObject table") 401 rowCountBefore = self.scratchDb.getRowCount("DiffObject") 475 402 476 403 # XXX EAM : note that in mysql versions later than 5.1, this fails … … 483 410 self.scratchDb.execute("set session old_alter_table=1") 484 411 485 self.scratchDb.execute("ALTER IGNORE TABLE ObjectThin ADD UNIQUE INDEX(objID)")412 self.scratchDb.execute("ALTER IGNORE TABLE DiffObject ADD UNIQUE INDEX(diffObjID)") 486 413 if self.scratchDb.version > 5.1: 487 414 self.scratchDb.execute("set session old_alter_table=0") 488 415 489 rowCountAfter = self.scratchDb.getRowCount("ObjectThin") 490 self.logger.infoPair("Number of duplicated objIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore)) 491 492 self.logger.infoPair("Forcing uniqueness on", "objID in MeanObject table") 493 rowCountBefore = self.scratchDb.getRowCount("MeanObject") 494 495 # XXX EAM : note that in mysql versions later than 5.1, this fails 496 # unless the following is called first: 497 # set session old_alter_table=1 498 # follow the command with 499 # set session old_alter_table=0 500 # OF COURSE, this fails for mysql version < 5.5... 501 if self.scratchDb.version > 5.1: 502 self.scratchDb.execute("set session old_alter_table=1") 503 504 self.scratchDb.execute("ALTER IGNORE TABLE MeanObject ADD UNIQUE INDEX(objID)") 505 if self.scratchDb.version > 5.1: 506 self.scratchDb.execute("set session old_alter_table=0") 507 508 rowCountAfter = self.scratchDb.getRowCount("MeanObject") 509 self.logger.infoPair("Number of duplicated objIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore)) 416 rowCountAfter = self.scratchDb.getRowCount("DiffObject") 417 self.logger.infoPair("Number of duplicated diffobjIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore)) 510 418 511 419 self.dvoObjects.purgeRegion(self.region) … … 513 421 #this is abuse of something but this is how I get the object batches to crash to further investigate them 514 422 515 #rowCountAfter = self.scratchDb.getRowCount("Object")423 rowCountAfter = self.scratchDb.getRowCount("Object") 516 424 return True 517 425 # return False
Note:
See TracChangeset
for help on using the changeset viewer.
