- Timestamp:
- Sep 19, 2014, 4:05:27 PM (12 years ago)
- Location:
- branches/eam_branches/ps2-tc3-20130727
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ippToPsps/jython/objectbatch.py (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ps2-tc3-20130727
- Property svn:mergeinfo changed
-
branches/eam_branches/ps2-tc3-20130727/ippToPsps/jython/objectbatch.py
r35496 r37403 15 15 from scratchdb import ScratchDb 16 16 from dvoobjects import DvoObjects 17 from sqlUtility import sqlUtility 17 18 18 19 import logging.config … … 37 38 scratchDb, 38 39 dvoID, 39 batchID, 40 useFullTables): 40 batchID): 41 41 42 42 super(ObjectBatch, self).__init__( … … 50 50 batchID, 51 51 "OB", 52 None, 53 1) 52 None) 54 53 55 54 try: 56 ## XX pass in the existing connection to scratchDb57 55 self.dvoObjects = DvoObjects(self.logger, self.config, self.skychunk, self.ippToPspsDb, self.scratchDb) 58 56 except: … … 74 72 self.region = self.scratchDb.getRegionNameFromThisDvoIndex(self.id) 75 73 self.ippToPspsDb.insertObjectMeta(self.batchID, self.region) 76 if True: 77 self.dvoObjects.nativeIngestRegion(self.region) 78 else: 79 self.dvoObjects.ingestRegion(self.region) 74 self.dvoObjects.nativeIngestRegion(self.region) 80 75 81 76 cptTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cpt") … … 90 85 def alterPspsTables(self): 91 86 92 # dec is reserved in MySQL, so STILTS replaces if with dec_, which PSPS doesn't like. so, force it back again using ``93 self.scratchDb.execute("ALTER TABLE Object CHANGE dec_ `dec` double")94 95 87 return True 96 88 … … 100 92 def indexIppTables(self): 101 93 102 self.logger.infoPair("Creating indexes on", "IPP tables") 94 # since dvopsps is now used, no action is needed here 95 # self.logger.infoPair("Creating indexes on", "IPP tables") 103 96 104 97 return True … … 107 100 Inserts stuff for all mags 108 101 ''' 109 def insertMags(self, cpsTable): 102 def updateMeanObjectFromCps(self, cpsTable): 103 104 # list of all filters PSPS is interested in 105 # XXX EAM : 2014.07.24 : this list should probably be in a config file somewhere 106 interestedFilters = ['g', 'r', 'i', 'z', 'y'] 107 108 filters = self.scratchDb.getOrderedListOfFiltersFromPhotcodesTable(interestedFilters) 109 110 # get a count of the available filters 111 filterCount = self.scratchDb.getCountOfFiltersFromPhotcodesTable() 112 113 self.logger.infoPair("Available filters in Photcodes", filters) 114 115 # the 'code' now defines the order in the cps file that the mags are listed for a given filter 116 self.logger.infoPair("Adding magnitudes from", "cps table") 117 for filter in filters: 118 119 filterID = self.scratchDb.getFilterID(filter[1]) 120 121 # NOTE: Manipulation of FLAGS from cpsTable is to move ID_SECF_OBJ_EXT flag (0x01000000) 122 # from bit 24 to bit 13 so that it fits into the SMALLINT Object.Flags 123 # XXX EAM : 20140724 this manipulation is no longer needed : [grizy]Flags is now 4 byte (was 8 byte!) 124 125 # set the MeanObject fields based largely on dvopsps cps fields: 126 127 # XXX EAM 20140724 : filterCount is meant to match 128 # Nsecfilt, but is potentially not determined correctly. 129 # use a call to a dvo-native command which knows how to 130 # find Nsecfilt (or save in the db with dvopsps) 131 132 # the math below depends on filterCount = Nsecfilt and MeanObject.row being 1 counting but cps being 0 counting? 133 # cps.row has a count of MeanObject.row * Nsecfilt + Nfilter 134 # " + cpsTable + " AS cps ON (cps.row = (MeanObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \ 135 136 sql = "UPDATE MeanObject JOIN \ 137 " + cpsTable + " AS cps ON (cps.row = (MeanObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \ 138 SET \ 139 MeanObject." + filter[1] + "QfPerfect = PSF_QF_PERF_MAX \ 140 ,MeanObject." + filter[1] + "MeanPSFMag = MAG \ 141 ,MeanObject." + filter[1] + "MeanPSFMagErr = MAG_ERR \ 142 ,MeanObject." + filter[1] + "MeanPSFMagStd = MAG_STDEV \ 143 ,MeanObject." + filter[1] + "MeanPSFMagMin = MAG_MIN \ 144 ,MeanObject." + filter[1] + "MeanPSFMagMax = MAG_MAX \ 145 ,MeanObject." + filter[1] + "MeanPSFMagNpt = NUSED \ 146 ,MeanObject." + filter[1] + "MeanKronMag = MAG_KRON \ 147 ,MeanObject." + filter[1] + "MeanKronMagErr = MAG_KRON_ERR \ 148 ,MeanObject." + filter[1] + "MeanKronMagStd = MAG_KRON_STDEV \ 149 ,MeanObject." + filter[1] + "MeanKronMagNpt = NUSED_KRON \ 150 ,MeanObject." + filter[1] + "MeanApMag = MAG_AP \ 151 ,MeanObject." + filter[1] + "MeanApMagErr = MAG_AP_ERR \ 152 ,MeanObject." + filter[1] + "MeanApMagStd = MAG_AP_STDEV \ 153 ,MeanObject." + filter[1] + "MeanApMagNpt = NUSED_AP \ 154 ,MeanObject." + filter[1] + "Flags = (0x7fff & FLAGS) | ((FLAGS >> 11) & 0x2000) " 155 156 157 try: self.scratchDb.execute(sql) 158 except: 159 self.logger.errorPair("failed update MeanObject", sql) 160 raise 161 162 # now set to null all MeanMagErr values > 0.5 (cut set by Gene, 2012-04-12) 163 # XXX EAM 20140724 : keep this cut? 164 cut = 0.5 165 self.logger.infoPair("Setting to NULL all MeanMagErr value >", "%f" % cut) 166 for filter in filters: 167 168 sql = "UPDATE MeanObject \ 169 SET " + filter[1] + "MeanPSFMagErr = null \ 170 WHERE " + filter[1] + "MeanPSFMagErr > " + str(cut) 171 self.scratchDb.execute(sql) 172 173 ''' 174 Inserts stuff for all mags 175 ''' 176 def updateObjectThinFromCps(self, cpsTable): 110 177 111 178 # list of all filters PSPS is interested in … … 126 193 filterID = self.scratchDb.getFilterID(filter[1]) 127 194 128 # NOTE: Manipulation of FLAGS from cpsTable is to move ID_SECF_OBJ_EXT flag (0x01000000) 129 # from bit 24 to bit 13 so that it fits into the SMALLINT Object.Flags 130 131 sql = "UPDATE Object JOIN \ 132 " + cpsTable + " AS cps ON (cps.row = (Object.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \ 133 SET \ 134 n" + filter[1] + " = NCODE \ 135 ," + filter[1] + "MeanPSFMag = MAG \ 136 ," + filter[1] + "MeanPSFMagErr = MAG_ERR \ 137 ," + filter[1] + "MeanKronMag = MAG_KRON \ 138 ," + filter[1] + "MeanKronMagErr = MAG_KRON_ERR \ 139 ," + filter[1] + "StackPSFMag = STACK_PSF_MAG \ 140 ," + filter[1] + "StackPSFMagErr = STACK_PSF_MAG_ERR \ 141 ," + filter[1] + "StackKronMag = STACK_KRON_MAG \ 142 ," + filter[1] + "StackKronMagErr = STACK_KRON_MAG_ERR \ 143 ," + filter[1] + "20pct = MAG_20/1000 \ 144 ," + filter[1] + "80pct = MAG_80/1000 \ 145 ," + filter[1] + "Flags = (0x7fff & FLAGS) | ((FLAGS >> 11) & 0x2000) \ 146 ," + filter[1] + "StackDetectID = STACK_DETECT_ID" 147 148 # old method for setting the Stack (PSF,Kron) Mags: 149 # ," + filter[1] + "StackPSFMag = -2.5 * log10(FLUX_PSF) + 8.9 \ 150 # ," + filter[1] + "StackPSFMagErr = FLUX_PSF_ERR / FLUX_PSF \ 151 # ," + filter[1] + "StackKronMag = -2.5 * log10(FLUX_KRON) + 8.9 \ 152 # ," + filter[1] + "StackKronMagErr = FLUX_KRON_ERR / FLUX_KRON \ 153 154 #self.logger.info(sql) 155 self.scratchDb.execute(sql) 156 195 # XXX EAM 20140724 : this is quite awkward, add a objRow and ncode value to mysql db table? 196 # sqlLine = sqlUtility() 197 198 sql = "UPDATE ObjectThin JOIN " 199 sql += cpsTable + " AS cps " 200 sql += "ON (cps.row = (ObjectThin.row * " 201 sql += str(filterCount) + ")-(" 202 sql += str(filterCount) + " - " 203 sql += str(filter[0]) 204 sql += ")) " 205 206 sql += "SET ObjectThin.n" + filter[1] + " = NCODE, " 207 sql += "ObjectThin.nStackDetections = ObjectThin.nStackDetections + cps.NSTACK_DET" 208 self.logger.info(sql) 209 self.scratchDb.execute(sql) 210 211 # XXX this does not seem like a good thing to leave in SQL 157 212 self.logger.infoPair("Calculating nDetections from", "n[filters]") 158 213 for filter in filters: 159 214 # now do a sum of n[filters], but do not include the ones with -999 160 sql = "UPDATE Object \ 161 SET nDetections = nDetections + n" + filter[1] + " \ 162 WHERE n" + filter[1] + " != -999" 163 self.scratchDb.execute(sql) 164 165 166 167 168 # now set to null all MeanMagErr values > 0.5 (cut set by Gene, 2012-04-12) 169 cut = 0.5 170 self.logger.infoPair("Setting to NULL all MeanMagErr value >", "%f" % cut) 171 for filter in filters: 172 173 sql = "UPDATE Object \ 174 SET " + filter[1] + "MeanPSFMagErr = null \ 175 WHERE " + filter[1] + "MeanPSFMagErr > " + str(cut) 176 self.scratchDb.execute(sql) 177 178 self.logger.infoPair("Setting to NULL all x20pct =", "32.767" ) 179 for filter in filters: 180 sql = "UPDATE Object \ 181 SET " + filter[1] + "20pct = null \ 182 WHERE " + filter[1] + "20pct > 32.766" 183 self.scratchDb.execute(sql) 184 self.logger.infoPair("Setting to NULL all x80pct =", "32.767" ) 185 for filter in filters: 186 sql = "UPDATE Object \ 187 SET " + filter[1] + "80pct = null \ 188 WHERE " + filter[1] + "80pct > 32.766" 189 self.scratchDb.execute(sql) 190 191 192 193 194 ''' 195 Inserts colors 196 ''' 197 def updateColors(self): 198 199 self.logger.infoPair("Calculating", "colors") 200 sql = "UPDATE Object \ 201 SET \ 202 grMeanColor = (gMeanMag - rMeanMag) \ 203 ,riMeanColor = (rMeanMag - iMeanMag) \ 204 ,izMeanColor = (iMeanMag - zMeanMag) \ 205 ,zyMeanColor = (zMeanMag - yMeanMag) \ 206 ,grMeanColorErr = SQRT(POW(gMeanMagErr,2) + POW(rMeanMagErr,2)) \ 207 ,riMeanColorErr = SQRT(POW(rMeanMagErr,2) + POW(iMeanMagErr,2)) \ 208 ,izMeanColorErr = SQRT(POW(iMeanMagErr,2) + POW(zMeanMagErr,2)) \ 209 ,zyMeanColorErr = SQRT(POW(zMeanMagErr,2) + POW(yMeanMagErr,2)) \ 210 " 211 try: 212 self.scratchDb.execute(sql) 213 except: 214 self.logger.errorPair("Couldn't calculate colors", sql) 215 sql = "UPDATE ObjectThin " 216 sql += "SET nDetections = nDetections + n" + filter[1] 217 sql += " WHERE n" + filter[1] + " != -999" 218 self.scratchDb.execute(sql) 219 220 ''' 221 give objectName to objectThin 222 XXX EAM 20140714 : This seems quite inefficient in SQL, move to dvopsps? 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") 262 ## use mean ra and dec (dec >= 0) 263 sql = "update ObjectThin set objName = concat('PS1.2 J', \ 264 lpad(floor(raMean/15.),2,'0'), \ 265 lpad((raMean/15.-(floor(raMean/15.)))*60. ,2,'0'), \ 266 lpad(format(((raMean/15.-(floor(raMean/15.)))*60.-floor((raMean/15.-(floor(raMean/15.)))*60.))*60.,2),4,'0'), \ 267 '+', \ 268 lpad(floor(decMean),2,'0'), \ 269 lpad((decMean-(floor(decMean)))*60. ,2,'0'), \ 270 lpad(format(((decMean-(floor(decMean)))*60.-floor((decMean-(floor(decMean)))*60.))*60.,2),4,'0') \ 271 ) where raMean > -999 and decMean > -999 and decMean >= 0" 272 try: 273 self.scratchDb.execute(sql) 274 except: 275 self.logger.errorPair("failed sql", sql) 276 return False 277 278 ## use mean ra and dec (dec < 0) 279 280 sql = "update ObjectThin set objName = concat('PS1.2 J', \ 281 lpad(floor(raMean/15.),2,'0'), \ 282 lpad((raMean/15.-(floor(raMean/15.)))*60. ,2,'0'), \ 283 lpad(format(((raMean/15.-(floor(raMean/15.)))*60.-floor((raMean/15.-(floor(raMean/15.)))*60.))*60.,2),4,'0'), \ 284 '-', \ 285 lpad(floor(decMean),2,'0'), \ 286 lpad((decMean-(floor(decMean)))*60. ,2,'0'), \ 287 lpad(format(((decMean-(floor(decMean)))*60.-floor((decMean-(floor(decMean)))*60.))*60.,2),4,'0') \ 288 ) where raMean > -999 and decMean > -999 and decMean < 0" 289 290 try: 291 self.scratchDb.execute(sql) 292 except: 293 self.logger.errorPair("failed sql", sql) 294 return False 215 295 216 296 ''' 217 297 Populates the Object table 218 298 ''' 219 def populateObjectT able(self):299 def populateObjectThinTable(self): 220 300 221 301 cptTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cpt") … … 223 303 224 304 if False: 305 # XXX EAM 20140724 : this is probably wrong : flux measurements can be 0.0 or negative: please review 225 306 self.logger.infoPair("setting to null > 1e-38 and < 1e-38 in", "cps FLUX_KRON_ERR") 226 307 sql = "UPDATE " + cpsTableName + " set FLUX_KRON_ERR = NULL where FLUX_KRON_ERR < 1e-37 AND FLUX_KRON_ERR > -1e-37 " 308 self.exitProgram("review this code" + sql) 227 309 228 310 try: … … 242 324 243 325 244 self.logger.infoPair("Populating", "Object s") 245 self.logger.infoPair("Inserting objects from", "cpt file") 246 247 # note `` around dec here, as this is a reserved word in MySQL 248 sql = "INSERT IGNORE INTO Object (\ 249 objID \ 250 ,ippObjID \ 251 ,objInfoFlag \ 252 ,qualityFlag \ 253 ,surveyID \ 254 ,ra \ 255 ,`dec` \ 256 ,raErr \ 257 ,decErr \ 258 ,nDetections \ 259 ,qfPerfect \ 260 ,sgSep \ 261 ,dataRelease \ 262 ,Random \ 263 ,batchID \ 264 ) \ 265 SELECT \ 266 EXT_ID \ 267 ,CAT_ID*1000000000 + OBJ_ID \ 268 ,FLAGS \ 269 ,FLAGS >> 24 & 0xFF \ 270 ," + str(self.surveyID) + " \ 271 ,RA \ 272 ,DEC_ \ 273 ,RA_ERR \ 274 ,DEC_ERR \ 275 ,0 \ 276 ,PSF_QF_PERF \ 277 ,STARGAL_SEP \ 278 , " + str(self.skychunk.dataRelease) + "\ 279 , RAND() \ 280 , " + str(self.batchID) + "\ 281 FROM " + cptTableName 326 self.logger.info("Populating ThinObject") 327 self.logger.info("Inserting objects from cpt file") 328 329 # note "dec" is a reserved word in MySQL 330 # XXX EAM 20140724 : do not use INGORE unless we discover unavoidable problems... 331 # INSERT IGNORE INTO ObjectThin 332 333 sqlLine = sqlUtility("INSERT INTO ObjectThin (") 334 335 sqlLine.group("objID", "EXT_ID") 336 sqlLine.group("ippObjID", "OBJ_ID + (CAT_ID << 32)") # NOTE: shift by 32 bits exactly 337 sqlLine.group("surveyID", "'" + str(self.surveyID) + "'") 338 sqlLine.group("randomID", "FLOOR(RAND()*9223372036854775807)") # XXX where does this number come from?? 339 sqlLine.group("batchID", "'" + str(self.batchID) + "'") 340 sqlLine.group("dvoRegionID", "CAT_ID") 341 sqlLine.group("tessID", "TESS_ID") 342 sqlLine.group("projectionID", "PROJECTION_ID") 343 sqlLine.group("skycellID", "SKYCELL_ID") 344 sqlLine.group("dataRelease", "'" + str(self.skychunk.dataRelease) + "'") 345 sqlLine.group("objInfoFlag", "FLAGS") 346 sqlLine.group("qualityFlag", "FLAGS >> 24 & 0xFF") 347 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'") 359 sqlLine.group("nDetections", "'0'") 360 sql = sqlLine.makeRaw(") SELECT ", " FROM " + cptTableName) 282 361 283 362 try: … … 289 368 # add row count columns so we can perform joins to get colors 290 369 self.logger.infoPair("Adding 'row' columns to", "Object and cps tables") 291 self.scratchDb.addRowCountColumn("Object ", "row")370 self.scratchDb.addRowCountColumn("ObjectThin", "row") 292 371 self.scratchDb.addRowCountColumn(cpsTableName, "row") 293 372 294 self.insertMags(cpsTableName) 295 296 #don't do this as we removed those columns.. 297 # self.updateColors() 298 373 ## self.insertMeanMags(cpsTableName) 374 ## this is the new version 375 self.logger.infoPair("update objName for ","objectThin") 376 self.updateObjName() 377 378 self.logger.infoPair("update ObjectThin from ","cps table") 379 380 self.updateObjectThinFromCps(cpsTableName) 381 382 # XXX EAM 20140724 : is this necessary?? 299 383 #objects can have out of range ra dec in dvo - need to find and kill them at the end 300 384 … … 312 396 #count out of range 313 397 314 sql = "SELECT count(*) FROM Object where Object.dec > " + str(decMax) + " or Object.dec < " + str(decMin) + " or Object.ra > " + str(raMax) + " or Object.ra < " + str(raMin) 398 sql = "SELECT count(*) FROM ObjectThin where \ 399 ObjectThin.decMean > " + str(decMax) + " \ 400 or ObjectThin.decMean < " + str(decMin) + " \ 401 or ObjectThin.raMean > " + str(raMax) + " \ 402 or ObjectThin.raMean < " + str(raMin) 315 403 316 404 rs = self.scratchDb.executeQuery(sql) … … 321 409 322 410 323 sql = "DELETE FROM Object where Object.dec > " + str(decMax) + " or Object.dec < " + str(decMin) + " or Object.ra > " + str(raMax) + " or Object.ra < " + str(raMin) 411 sql = "DELETE FROM ObjectThin where \ 412 ObjectThin.decMean > " + str(decMax) + " or \ 413 ObjectThin.decMean < " + str(decMin) + " or \ 414 ObjectThin.raMean > " + str(raMax) + " or \ 415 ObjectThin.raMean < " + str(raMin) 324 416 self.logger.infoPair("Deleting", str(nToDelete) + " objects outside of ra/dec range") 325 417 … … 327 419 self.scratchDb.execute(sql) 328 420 except: 329 self.logger.errorPair("Couldn't cull outsiders from Object table", sql) 330 return False 331 332 self.logger.infoPair("Dropping row column from", "Object table") 333 self.scratchDb.dropColumn("Object", "row") 334 self.logger.infoPair("Purging from scratch Db", self.region + " region") 335 336 self.dvoObjects.purgeRegion(self.region) 337 338 self.setMinMaxObjID(["Object"]) 421 self.logger.errorPair("Couldn't cull outsiders from ObjectThin table", sql) 422 return False 423 424 self.logger.infoPair("Dropping row column from", "ObjectThin table") 425 self.scratchDb.dropColumn("ObjectThin", "row") 426 ##self.logger.infoPair("Purging from scratch Db", self.region + " region") 427 428 ##Don't do this till after MeanObject 429 ##self.dvoObjects.purgeRegion(self.region) 430 431 self.setMinMaxObjID(["ObjectThin"]) 339 432 340 433 return True … … 343 436 Populates the ObjectCalColor table 344 437 ''' 345 def populateObjectCalColorTable(self): 346 347 self.logger.infoPair("Populating", "ObjectCalColor") 348 349 sql = "INSERT INTO ObjectCalColor ( \ 350 objID \ 351 ,ippObjID \ 352 ,dataRelease \ 353 ) \ 354 SELECT \ 355 objID \ 356 ,ippObjID \ 357 ,dataRelease \ 358 FROM Object" 359 try: 360 self.scratchDb.execute(sql) 361 except: 362 self.logger.errorPair("Couldn't populate ObjectCalColor table", sql) 363 return False 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 False 449 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") 364 460 365 461 return True … … 370 466 def populatePspsTables(self): 371 467 372 if not self.populateObjectT able(): return False468 if not self.populateObjectThinTable(): return False 373 469 #if not self.populateObjectCalColorTable(): return False 470 if not self.populateMeanObjectTable(): return False 374 471 375 472 # now remove the objID duplicates. We could not do this before as cpt/cps tables relate by row number 376 self.logger.infoPair("Forcing uniqueness on", "objID in Object table")377 rowCountBefore = self.scratchDb.getRowCount("Object ")473 self.logger.infoPair("Forcing uniqueness on", "objID in ObjectThin table") 474 rowCountBefore = self.scratchDb.getRowCount("ObjectThin") 378 475 379 476 # XXX EAM : note that in mysql versions later than 5.1, this fails … … 386 483 self.scratchDb.execute("set session old_alter_table=1") 387 484 388 self.scratchDb.execute("ALTER IGNORE TABLE Object ADD UNIQUE INDEX(objID)")485 self.scratchDb.execute("ALTER IGNORE TABLE ObjectThin ADD UNIQUE INDEX(objID)") 389 486 if self.scratchDb.version > 5.1: 390 487 self.scratchDb.execute("set session old_alter_table=0") 391 488 392 rowCountAfter = self.scratchDb.getRowCount("Object ")489 rowCountAfter = self.scratchDb.getRowCount("ObjectThin") 393 490 self.logger.infoPair("Number of duplicated objIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore)) 394 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)) 510 511 self.dvoObjects.purgeRegion(self.region) 512 513 #this is abuse of something but this is how I get the object batches to crash to further investigate them 514 515 # rowCountAfter = self.scratchDb.getRowCount("Object") 395 516 return True 396 517 # return False
Note:
See TracChangeset
for help on using the changeset viewer.
