- Timestamp:
- Jun 19, 2012, 5:24:19 PM (14 years ago)
- Location:
- branches/meh_branches/ppstack_test
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ippToPsps/jython/scratchdb.py (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/meh_branches/ppstack_test
- Property svn:mergeinfo changed
-
branches/meh_branches/ppstack_test/ippToPsps/jython/scratchdb.py
r33415 r34041 24 24 self.dvoDoneTable = "dvoDone" 25 25 self.dvoSkyTable = "dvoSkyTable" 26 26 self.dvoPhotcodesTable = "dvoPhotcodes" 27 27 28 28 ''' … … 249 249 250 250 ''' 251 Gets the id for the cpm file for the provided region252 '''253 def getDvoCpmFileIdForRegion(self, region):254 255 id = -1256 sql = "SELECT id FROM " + self.dvoDoneTable + " WHERE region = '" + region + "' AND path LIKE '%.cpm'";257 try:258 rs = self.executeQuery(sql)259 rs.first()260 id = rs.getInt(1)261 except:262 self.logger.errorPair("Could not get file id from " + self.dvoDoneTable, "for region: " + region)263 264 return id265 266 267 '''268 251 Gets the id for the provided file 269 252 ''' … … 277 260 id = rs.getInt(1) 278 261 except: 279 self.logger.err prPair("Could not get file id from " + self.dvoDoneTable + "for", path)262 self.logger.errorPair("Could not get file id from " + self.dvoDoneTable + "for", path) 280 263 281 264 return id … … 295 278 rs.close() 296 279 except: 297 self.logger.errorPai ("Can't query for ingested regions", sql)280 self.logger.errorPair("Can't query for ingested regions", sql) 298 281 299 282 return regions … … 318 301 319 302 ''' 320 Checks whether DVO files we have ingested are form the DVO path provided 303 Checks whether DVO files we have ingested are from the DVO path provided 304 Does this by checking the original path of the SkyTable.fits file 321 305 ''' 322 306 def isCorrectDvo(self, path): 323 307 324 sql = "SELECT path FROM " + self.dvoDoneTable + " where path LIKE '%Images.dat'"308 sql = "SELECT path FROM " + self.dvoDoneTable + " WHERE path LIKE '%SkyTable.fits'" 325 309 try: 326 310 rs = self.executeQuery(sql) … … 336 320 return False 337 321 338 except: 322 except Exception, e: 323 print str(e) 339 324 self.logger.errorPair("No DVO files ingested for this path", path) 340 325 return False … … 342 327 ''' 343 328 Checks whether the astrometric solution is ok for this chip 344 TODO the value of 50 for numAstroRef is hardcoded here, but this should be temporary anyway329 TODO the value of 50 for numAstroRef (provided by Gene) is hardcoded here, but this should be temporary anyway 345 330 ''' 346 331 def astrometricSolutionOK(self, ota): … … 410 395 ''' 411 396 Removes the provided DVO FITS files from from dvoDone and dvoDetection tables 412 Returns a count of the number of detections deleted 413 ''' 414 def purgeTheseDvoRegions(self, regions ):397 Returns a count of the number of detections deleted, if any 398 ''' 399 def purgeTheseDvoRegions(self, regions, fileTypes): 415 400 416 401 detectionCount = self.getRowCount(self.dvoDetectionTable) 417 402 for region in regions: 403 404 for fileType in fileTypes: 405 sql = "DELETE FROM " + self.dvoDoneTable + " WHERE region = '" + region + "' AND path LIKE '%" + fileType + "'" 406 try: self.execute(sql) 407 except: 408 self.logger.errorPair("Unable to delete " + fileType + " file from", self.dvoDoneTable) 409 410 tableName = self.getDbFriendlyTableName(region + "." + fileType) 411 sql = "DROP TABLE " + tableName 412 try: self.execute(sql) 413 except: 414 self.logger.errorPair("Unable to drop table", tableName) 415 pass 416 417 deletedDetectionCount = detectionCount - self.getRowCount(self.dvoDetectionTable) 418 419 # after a big detection delete, we should OPTIMIZE the table 420 if deletedDetectionCount > 0: 421 self.logger.infoPair("Running OPTIMIZE on ", self.dvoDetectionTable) 422 self.optimizeTable(self.dvoDetectionTable) 423 424 return deletedDetectionCount 418 425 419 fileId = self.getDvoCpmFileIdForRegion(region) 420 421 if fileId < 0: 422 self.logger.errorPair("Unable to get file ID to delete " + region + " from", self.dvoDoneTable) 423 continue 424 425 sql = "DELETE FROM " + self.dvoDetectionTable + " WHERE fileID = " + str(fileId) 426 try: self.execute(sql) 427 except: 428 self.logger.errorPair("Unable to delete from " + self.dvoDetectionTable, "for file ID: %d" % fileId) 429 return False 430 431 sql = "DELETE FROM " + self.dvoDoneTable + " WHERE region = '" + region + "'" 432 try: self.execute(sql) 433 except: 434 self.logger.errorPair("Unable to delete " + region + " from", self.dvoDoneTable) 435 436 finalCount = detectionCount - self.getRowCount(self.dvoDetectionTable) 437 438 # after a big delete, we should OPTIMIZE the table 439 self.logger.infoPair("Running OPTIMIZE on ", self.dvoDetectionTable) 440 if finalCount > 0: self.optimizeTable(self.dvoDetectionTable) 441 442 return finalCount 443 444 ''' 445 Drops DVO stuff pertaining to detections 446 ''' 447 def resetDvoDetectionTables(self): 448 449 self.logger.infoPair("Deleting detections from", self.dvoDoneTable) 450 sql = "DELETE FROM " + self.dvoDoneTable + " WHERE path LIKE '%cpm' OR path LIKE '%cpt'" 426 ''' 427 Drops and recreates tables necessary for dvoToMySQL program. Be very careful before using this... 428 ''' 429 def resetAllDvoTables(self): 430 431 # drop all dvo tables - NB detections have to be deleted prior to dvoDone due to foreign key constraint 432 self.logger.infoPair("Dropping table", self.dvoImagesTable) 433 self.dropTable(self.dvoImagesTable) 434 self.logger.infoPair("Dropping table", self.dvoSkyTable) 435 self.dropTable(self.dvoSkyTable) 436 self.logger.infoPair("Dropping table", self.dvoDetectionTable) 437 self.dropTable(self.dvoDetectionTable) 438 self.logger.infoPair("Dropping table", self.dvoDoneTable) 439 self.dropTable(self.dvoDoneTable) 440 441 # create dvoDone table 442 self.logger.infoPair("Creating table", self.dvoDoneTable) 443 sql = "CREATE TABLE " + self.dvoDoneTable + " (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, region VARCHAR(100), path VARCHAR(1000), modifiedDate BIGINT, size BIGINT)" 451 444 try: self.execute(sql) 452 445 except: 453 self.logger.errorPair("Unable to delete from", self.dvoDoneTable)446 self.logger.errorPair("Unable to create table", self.dvoDoneTable) 454 447 return False 455 448 456 self. logger.infoPair("Dropping table", self.dvoDetectionTable)457 self.dropTable(self.dvoDetectionTable) 458 449 self.changeEngineToInnoDB(self.dvoDoneTable) 450 451 # create detections table 459 452 self.logger.infoPair("Creating table", self.dvoDetectionTable) 460 453 sql = "CREATE TABLE " + self.dvoDetectionTable + " LIKE dvoDetection" … … 463 456 self.logger.errorPair("Unable to create table", self.dvoDetectionTable) 464 457 return False 465 466 # TODO 458 self.changeEngineToInnoDB(self.dvoDetectionTable) 459 460 # add fileID column 467 461 sql = "ALTER TABLE " + self.dvoDetectionTable + " ADD fileID INT NOT NULL" 468 462 try: self.execute(sql) … … 471 465 return False 472 466 473 ''' 474 Drops and recreates tables necessary for dvoToMySQL program. Be very careful before using this... 475 ''' 476 def resetAllDvoTables(self): 477 478 self.logger.infoPair("Dropping table", self.dvoImagesTable) 479 self.dropTable(self.dvoImagesTable) 480 self.logger.infoPair("Dropping table", self.dvoSkyTable) 481 self.dropTable(self.dvoSkyTable) 482 self.logger.infoPair("Dropping table", self.dvoDoneTable) 483 self.dropTable(self.dvoDoneTable) 484 485 # create dvoDone table 486 self.logger.infoPair("Creating table", self.dvoDoneTable ) 487 sql = "CREATE TABLE " + self.dvoDoneTable + " (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, region VARCHAR(100), path VARCHAR(1000), modifiedDate BIGINT, size BIGINT)" 467 # add an index to the fileID column 468 self.createIndex(self.dvoDetectionTable, "fileID") 469 470 # now add a delete cascading foreign key constraint on fileID 471 sql = "ALTER TABLE dvoDetectionFull \ 472 ADD CONSTRAINT fk_fileID \ 473 FOREIGN KEY (fileID) \ 474 REFERENCES dvoDone(id) \ 475 ON DELETE CASCADE" 488 476 try: self.execute(sql) 489 except: self.logger.errorPair("Unable to create table", self.dvoDoneTable) 490 491 self.resetDvoDetectionTables() 477 except: 478 self.logger.errorPair("Unable to create foreign key on", self.dvoDoneTable) 479 return False 480 481 return True 492 482 493 483 ''' … … 512 502 def getDvoRegionsForThisBox(self, regions, minRa, maxRa, minDec, maxDec): 513 503 514 sql = "SELECT name FROM " + self.dvoSkyTable + " \ 504 sql = "SELECT \ 505 INDEX_, \ 506 R_MIN+ (R_MAX - R_MIN)/2.0, \ 507 D_MIN + (D_MAX - D_MIN)/2.0, \ 508 NAME \ 509 FROM " + self.dvoSkyTable + " \ 515 510 WHERE NOT ((" + str(maxRa) + " <= R_MIN) OR \ 516 511 (" + str(minRa) + " >= R_MAX) OR \ … … 520 515 try: 521 516 rs = self.executeQuery(sql) 522 while (rs.next()): regions.append(rs.getString(1)) 517 while (rs.next()): regions.append([ 518 rs.getInt(1), 519 rs.getFloat(2), 520 rs.getFloat(3), 521 rs.getString(4)]) 522 523 523 rs.close() 524 524 except: … … 526 526 527 527 528 ''' 529 Gets the id for the provided file 530 ''' 531 def getRegionNameFromThisDvoIndex(self, index): 532 533 region = "" 534 sql = "SELECT NAME FROM " + self.dvoSkyTable + " WHERE INDEX_ = " + str(index) 535 try: 536 rs = self.executeQuery(sql) 537 rs.first() 538 region = rs.getString(1) 539 rs.close() 540 except: 541 self.logger.errorPair("Could not get region using index", sql ) 542 543 return region 544 545 ''' 546 Gets a list of filters ordered as thy are in the DVO Photcodes table, as this reflects the order they apper in the cps file 547 ''' 548 def getOrderedListOfFiltersFromPhotcodesTable(self, interestedFilters): 549 550 sql = "SELECT NAME FROM " + self.dvoPhotcodesTable + " WHERE " 551 552 count = 0 553 for filter in interestedFilters: 554 if count != 0: sql = sql + " OR " 555 sql = sql + " name = '" + filter + "'" 556 count += 1 557 558 sql = sql + " ORDER BY CODE" 559 560 orderedFilters = [] 561 try: 562 rs = self.executeQuery(sql) 563 row = 1 564 while (rs.next()): 565 orderedFilters.append([row,rs.getString(1)]) 566 row += 1 567 rs.close() 568 except: 569 self.logger.errorPair("Could not get ordered filter list", sql ) 570 571 return orderedFilters 572
Note:
See TracChangeset
for help on using the changeset viewer.
