- Timestamp:
- Apr 3, 2012, 4:31:34 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/ippToPsps/jython/dvo.py (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippToPsps/jython/dvo.py
r33599 r33676 19 19 20 20 ''' 21 A class that encapsulates a DVO database22 23 P ulls relavant bits and pieces into the scratch MySQL database and then providesaccess queries21 Abstract base-class for DVO classes 22 23 Provides generic functionality to pull relevant stuff from a DVO database into a scratch MySQL database while also providing access queries 24 24 ''' 25 25 class Dvo(object): … … 34 34 35 35 ''' 36 def __init__(self, logger, config, scratchDbName ):36 def __init__(self, logger, config, scratchDbName="ipptopsps_scratch"): 37 37 38 38 # set up logging … … 92 92 93 93 ''' 94 Loads the DVO Photcodes.dat FITS file 95 ''' 96 def loadPhotcodes(self): 97 98 # go no further if we've already partly ingested a different DVO 99 if not self.correctDvo: return 100 101 # check if we have up-to-date version 102 path = self.config.dvoLocation + "/Photcodes.dat" 103 if self.scratchDb.alreadyImportedThisDvoTable(path): 104 self.logger.debugPair("DVO Photcodes.dat file", "up-to-date") 105 return 106 107 self.logger.infoSeparator() 108 self.logger.infoPair("DVO Photcodes.dat file", "NOT up-to-date") 109 110 self.importFits( 111 path, 112 "CODE NAME", 113 self.scratchDb.dvoPhotcodesTable) 114 self.logger.infoPair("Adding primary key to", self.scratchDb.dvoPhotcodesTable) 115 self.scratchDb.makeColumnPrimaryKey(self.scratchDb.dvoPhotcodesTable, "CODE") 116 117 self.scratchDb.setImportedThisDvoTable(path) 118 119 ''' 94 120 Loads the DVO Images.dat FITS file 95 121 ''' … … 189 215 self.regionsToPurge = [] 190 216 self.allPopulatedRegions = [] 217 self.allPopulatedRegionInfo = [] 191 218 self.regionsAlreadyIngested = [] 192 219 self.regionsIngestedButOutOfDate = [] … … 194 221 # loop through all regions in DVO inside this bounding-box 195 222 for region in allRegions: 223 224 regionId = region[0] 225 regionRa = region[1] 226 regionDec = region[2] 227 regionPath = region[3] 196 228 197 229 # get paths for this region for the file types we are interested in 198 230 paths = [] 199 231 for fileType in self.ingestFileTypes: 200 paths.append(self.config.dvoLocation + "/" + region + "." + fileType)232 paths.append(self.config.dvoLocation + "/" + regionPath + "." + fileType) 201 233 202 234 # check for the existence of all interested file types … … 210 242 211 243 # ok, have real, populated files so add this region to the list 212 self.allPopulatedRegions.append(region) 244 self.allPopulatedRegions.append(regionPath) 245 self.allPopulatedRegionInfo.append([regionId, regionRa, regionDec]) 213 246 214 247 # if we have already imported up-to-date versions of all interested files, then we skip this region … … 220 253 221 254 if alreadyIngested: 222 self.regionsAlreadyIngested.append(region )255 self.regionsAlreadyIngested.append(regionPath) 223 256 continue 224 257 … … 230 263 break 231 264 232 if outOfDate: self.regionsIngestedButOutOfDate.append(region )233 234 self.regionsToIngest.append(region )265 if outOfDate: self.regionsIngestedButOutOfDate.append(regionPath) 266 267 self.regionsToIngest.append(regionPath) 235 268 236 269 # add out-of-range regions for purge list … … 241 274 for item in self.regionsIngestedButOutOfDate: self.regionsToPurge.append(item) 242 275 243 self.sizeOfAllPopulatedRegions = self.getDiskSizeOf DvoRegions(self.allPopulatedRegions)244 self.sizeOfRegionsAlreadyIngested = self.getDiskSizeOf DvoRegions(self.regionsAlreadyIngested)245 self.sizeOfRegionsIngestedButOutOfDate = self.getDiskSizeOf DvoRegions(self.regionsIngestedButOutOfDate)246 self.sizeOfRegionsToPurge = self.getDiskSizeOf DvoRegions(self.regionsToPurge)247 self.sizeOfRegionsToIngest = self.getDiskSizeOf DvoRegions(self.regionsToIngest)276 self.sizeOfAllPopulatedRegions = self.getDiskSizeOfRegions(self.allPopulatedRegions) 277 self.sizeOfRegionsAlreadyIngested = self.getDiskSizeOfRegions(self.regionsAlreadyIngested) 278 self.sizeOfRegionsIngestedButOutOfDate = self.getDiskSizeOfRegions(self.regionsIngestedButOutOfDate) 279 self.sizeOfRegionsToPurge = self.getDiskSizeOfRegions(self.regionsToPurge) 280 self.sizeOfRegionsToIngest = self.getDiskSizeOfRegions(self.regionsToIngest) 248 281 249 282 ''' … … 288 321 289 322 ''' 323 Purges a single region from the database 324 ''' 325 def purgeRegion(self, region): 326 327 regions = [] 328 regions.append(region) 329 self.purgeRegions(regions) 330 331 ''' 290 332 Purges the provided regions from the database 291 333 ''' 292 def purgeRegions(self ):334 def purgeRegions(self, regions): 293 335 294 336 # go no further if we've already partly ingested a different DVO 295 337 if not self.correctDvo: return False 296 338 297 if len( self.regionsToPurge) < 1: return False298 299 self.logger.infoPair("Purging", "%d regions" % len( self.regionsToPurge))300 301 detectionDeleteCount = self.scratchDb.purgeTheseDvoRegions( self.regionsToPurge, self.ingestFileTypes)339 if len(regions) < 1: return False 340 341 self.logger.infoPair("Purging", "%d regions" % len(regions)) 342 343 detectionDeleteCount = self.scratchDb.purgeTheseDvoRegions(regions, self.ingestFileTypes) 302 344 if detectionDeleteCount > 0: self.logger.infoPair("Deleted", "%d detections" % detectionDeleteCount) 303 345 … … 327 369 Returns the disk size of these DVO regions, i.e. the size on disk of all relevant DVO FITS files 328 370 ''' 329 def getDiskSizeOf DvoRegions(self, regions):371 def getDiskSizeOfRegions(self, regions): 330 372 331 373 size = 0.0 … … 338 380 return size 339 381 382 383 ''' 384 Ingests object files for this region, given an INDEX from the SkyTable 385 ''' 386 def ingestRegionUsingIndex(self, index): 387 return self.ingestRegion(self.scratchDb.getRegionNameFromThisDvoIndex(index)) 388 340 389 ''' 341 390 Abstract method for ingesting a particular reegion. Must be implemented in all subclasses 342 391 ''' 343 392 def ingestRegion(self, region): 344 self.logger.errorPair("ingestRegion()", "not implemented for this class") 345 393 return self.logger.errorPair("ingestRegion()", "not implemented for this class") 346 394 347 395 ''' … … 364 412 365 413 # purge stuff 366 self.purgeRegions( )414 self.purgeRegions(self.regionsToPurge) 367 415 368 416 totalRegions = len(self.regionsToIngest) … … 389 437 ''' 390 438 Imports a FITS file. A regex filter lets you choose which tables to pull from the file 391 An optional final argument lets you name the resul atant database table439 An optional final argument lets you name the resultant database table 392 440 ''' 393 441 def importFits(self, path, columns, tableName): … … 404 452 table = stilts.tpipe(table, cmd='explodeall') 405 453 406 # IPP FITS files are littered with infinit ies, so remove these454 # IPP FITS files are littered with infinity values. Remove them 407 455 self.logger.debugPair("Removing", "infinity values") 408 456 table = stilts.tpipe(table, cmd='replaceval -Infinity null *')
Note:
See TracChangeset
for help on using the changeset viewer.
