Changeset 33183 for trunk/ippToPsps/jython/dvo.py
- Timestamp:
- Jan 31, 2012, 9:57:07 AM (14 years ago)
- File:
-
- 1 edited
-
trunk/ippToPsps/jython/dvo.py (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippToPsps/jython/dvo.py
r33177 r33183 29 29 Constructor 30 30 31 - sets up logging 32 - checks we are using the correct DVO 33 - checks we have up-to-date Images.dat 34 - checks we have up-to-date SkyTable.fits 35 31 36 ''' 32 37 def __init__(self, logger, doc): … … 44 49 self.correctDvo = self.scratchDb.isThisDvoCurrentlyIngested(self.dvoLocation) 45 50 51 # using correct DVO, so now get up-to-date versions of Images and SkyTable tables 52 self.updateMetaTables() 53 46 54 ''' 47 55 Destructor … … 52 60 53 61 ''' 62 Updates two main meta tables, Images and SkyTable 63 ''' 64 def updateMetaTables(self): 65 66 self.loadImages() 67 self.loadSkyTable() 68 69 ''' 54 70 Check we are importing the DVO currenly ingested 55 71 ''' … … 61 77 ''' 62 78 def resetDetections(self): 79 self.logger.infoPair("Resetting", "just detections") 63 80 self.scratchDb.resetOnlyDetectionDvoTables() 64 81 … … 67 84 ''' 68 85 def resetAllTables(self): 86 87 self.logger.infoPair("Resetting", "all tables") 69 88 self.scratchDb.resetDvoToMysqlTables() 70 89 self.correctDvo = True … … 80 99 # check if we have up-to-date version 81 100 path = self.dvoLocation + "/Images.dat" 82 if self.scratchDb.alreadyImportedThisDvoTable(path): return 101 if self.scratchDb.alreadyImportedThisDvoTable(path): 102 self.logger.infoPair("DVO Images.dat file", "up-to-date") 103 return 104 105 self.logger.infoSeparator() 106 self.logger.infoPair("DVO Images.dat file", "NOT up-to-date") 83 107 84 108 # first, delete old dvoMeta table … … 86 110 sql = "DELETE FROM " + self.scratchDb.dvoMetaTable 87 111 self.scratchDb.execute(sql) 88 112 self.scratchDb.optimizeTable(self.scratchDb.dvoMetaTable) 113 89 114 self.importFits( 90 115 path, … … 128 153 129 154 path = self.dvoLocation + "/SkyTable.fits" 130 if self.scratchDb.alreadyImportedThisDvoTable(path): return 155 if self.scratchDb.alreadyImportedThisDvoTable(path): 156 self.logger.infoPair("DVO SkyTable.fits file", "up-to-date") 157 return 158 159 self.logger.infoSeparator() 160 self.logger.infoPair("DVO SkyTable.fits file", "NOT up-to-date") 131 161 self.importFits( 132 162 path, … … 152 182 return False 153 183 154 self.logger.infoPair("Finding DVO files for range",155 "RA: %.2f -> %.2f, Dec: %.2f -> %.2f" % (minRa, maxRa, minDec, maxDec))156 157 158 184 allRegions = self.scratchDb.getDvoRegionsForThisBox(minRa, maxRa, minDec, maxDec) 159 185 allIngestedRegions = self.scratchDb.getIngestedDvoRegions() … … 161 187 allPopulatedRegions = [] 162 188 alreadyIngested = 0 163 outOfDateIngested= []189 regionsIngestedButOutOfDate = [] 164 190 165 191 for region in allRegions: … … 182 208 if self.scratchDb.haveOutOfDateVersionOfThisDvoTable(cpmPath) or self.scratchDb.haveOutOfDateVersionOfThisDvoTable(cptPath): 183 209 alreadyIngested = alreadyIngested + 1 184 outOfDateIngested.append(region)210 regionsIngestedButOutOfDate.append(region) 185 211 186 212 regionsToIngest.append(region) … … 191 217 192 218 # now add out-of-date items to purge list 193 for item in outOfDateIngested: regionsToPurge.append(item) 194 195 self.logger.infoPair("Total DVO regions", "%d" % len(allPopulatedRegions)) 196 self.logger.infoPair("Total DVO regions already ingested", "%d" % alreadyIngested) 197 self.logger.infoPair("Total DVO out-of-date regions", "%d" % len(outOfDateIngested)) 198 self.logger.infoPair("Total DVO regions to purge", "%d" % len(regionsToPurge)) 199 self.logger.infoPair("Total DVO regions to ingest", "%d" % len(regionsToIngest)) 219 for item in regionsIngestedButOutOfDate: regionsToPurge.append(item) 220 221 sizeOfAllPopulatedRegions = self.getFileSizeStr(self.getDiskSizeOfDvoRegions(allPopulatedRegions)) 222 sizeOfRegionsAlreadyIngested = self.getFileSizeStr(self.scratchDb.getTotalSizeOfIngestedDvoFiles()) 223 sizeOfRegionsIngestedButOutOfDate = self.getFileSizeStr(self.getDiskSizeOfDvoRegions(regionsIngestedButOutOfDate)) 224 sizeOfRegionsToPurge = self.getFileSizeStr(self.getDiskSizeOfDvoRegions(regionsToPurge)) 225 sizeOfRegionsToIngest = self.getFileSizeStr(self.getDiskSizeOfDvoRegions(regionsToIngest)) 226 227 self.logger.infoTitle("DVO Overview") 228 self.logger.infoPair("RA range", "%.2f -> %.2f" % (minRa, maxRa)) 229 self.logger.infoPair("Dec range", "%.2f -> %.2f" % (minDec, maxDec)) 230 self.logger.infoPair("Total regions", "%d (%s)" % (len(allPopulatedRegions), sizeOfAllPopulatedRegions)) 231 self.logger.infoPair("Total regions already ingested", "%d (%s)" % (alreadyIngested, sizeOfRegionsAlreadyIngested)) 232 self.logger.infoPair("Total out-of-date regions", "%d (%s)" % (len(regionsIngestedButOutOfDate), sizeOfRegionsIngestedButOutOfDate)) 233 self.logger.infoPair("Total regions to purge", "%d (%s)" % (len(regionsToPurge), sizeOfRegionsToPurge)) 234 self.logger.infoPair("Total regions to ingest", "%d (%s)" % (len(regionsToIngest), sizeOfRegionsToIngest)) 200 235 201 236 … … 204 239 ''' 205 240 def purgeRegions(self, regions): 241 242 if len(regions) < 1: return 206 243 207 244 self.logger.infoPair("Purging", "%d regions" % len(regions)) … … 237 274 238 275 ''' 239 Returns (and reports to log) total size of DVO files ingested to the scratch Db240 '''241 def getSizeAlreadyIngested(self):242 243 size = self.scratchDb.getTotalSizeOfIngestedDvoFiles()244 self.logger.infoPair("Total size of DVO already ingested", self.getFileSizeStr(size))245 246 247 '''248 276 Populates dvoDetections and dvoMeta with FITS tables from DVO for the defined region 249 277 Defaults to whole sky if limits are missing … … 253 281 # go no further if we've already partly ingested a different DVO 254 282 if not self.correctDvo: return 283 284 self.updateMetaTables() 255 285 256 286 regionsToIngest = [] … … 258 288 self.getRegions(regionsToIngest, regionsToPurge, minRa, maxRa, minDec, maxDec) 259 289 260 261 totalSize = self.getDiskSizeOfDvoRegions(regionsToIngest) 262 self.logger.infoPair("Total size of cpm/cpt files to ingest", self.getFileSizeStr(self.getDiskSizeOfDvoRegions(regionsToIngest))) 263 self.logger.infoPair("Total size of cpm/cpt files to purge", self.getFileSizeStr(self.getDiskSizeOfDvoRegions(regionsToPurge))) 290 self.purgeRegions(regionsToPurge) 291 292 if len(regionsToIngest) > 0: self.logger.infoSeparator() 293 294 # now loop through all regions and ingest to MySQL 264 295 count = 0 265 266 self.purgeRegions(regionsToPurge)267 268 self.logger.infoSeparator()269 270 # now loop through all regions and ingest to MySQL271 296 for region in regionsToIngest: 272 297 … … 274 299 cptPath = self.dvoLocation + "/" + region + ".cpt" 275 300 276 cpmTableName = self. getDatabaseFriendlyTableName(region + ".cpm")277 cptTableName = self. getDatabaseFriendlyTableName(region + ".cpt")301 cpmTableName = self.scratchDb.getDbFriendlyTableName(region + ".cpm") 302 cptTableName = self.scratchDb.getDbFriendlyTableName(region + ".cpt") 278 303 279 304 # if we have not already ingested the cpm table, then do it now 280 305 if not self.scratchDb.alreadyImportedThisDvoTable(cpmPath): 281 306 307 self.logger.infoTitle("Region: " + region) 308 282 309 # import cpm table and index 283 310 self.importFits( … … 372 399 373 400 ''' 374 Create Db-friendly table name from file name375 '''376 def getDatabaseFriendlyTableName(self, file):377 378 name = file379 name = name.replace('.', '_')380 name = name.replace('/', '_')381 382 return name383 384 385 '''386 401 Imports a FITS file. A regex filter lets you choose which tables to pull from the file 387 402 An optional final argument lets you name the resulatant database table … … 390 405 391 406 self.logger.infoPair("Importing file", path) 392 self.logger. infoPair("Writing to database table", tableName)407 self.logger.debugPair("Writing to database table", tableName) 393 408 394 409 tables = stilts.treads(path) … … 401 416 402 417 # IPP FITS files are littered with infinities, so remove these 403 self.logger. infoPair("Removing", "infinity values")418 self.logger.debugPair("Removing", "infinity values") 404 419 table = stilts.tpipe(table, cmd='replaceval -Infinity null *') 405 420 table = stilts.tpipe(table, cmd='replaceval Infinity null *') … … 410 425 411 426 try: 412 self.logger.infoPair(" attempt", "%d" % attempts)427 if attempts > 0: self.logger.infoPair("Attempt", "%d" % attempts) 413 428 table.cmd_keepcols(columns).write(self.scratchDb.url + '#' + tableName) 414 429 break 415 430 except: 431 # wait a few secs then try again 416 432 time.sleep(2) 417 433 attempts = attempts + 1 … … 419 435 count = count + 1 420 436 421 422 self.logger.infoPair("Finished importing", tableName) 437 self.logger.debugPair("Finished importing", tableName) 423 438 424 439 return tableName
Note:
See TracChangeset
for help on using the changeset viewer.
