- Timestamp:
- May 29, 2012, 5:07:20 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20120405/ippToPsps/jython/objectbatch.py
r33715 r33948 51 51 1) 52 52 53 if not self.everythingOK: return 54 55 self.dvoObjects = DvoObjects(self.logger, self.config, self.scratchDb.dbName) 53 try: 54 self.dvoObjects = DvoObjects(self.logger, self.config, self.scratchDb.dbName) 55 except: 56 self.logger.errorPair("Unable to create instance of", "DvoObjects") 57 raise 56 58 57 59 # create an output filename, which is {dvoINDEX}.FITS … … 78 80 def alterPspsTables(self): 79 81 80 self.logger.debug("Altering PSPS tables") 82 # dec is reserved in MySQL, so STILTS replaces if with dec_, which PSPS doesn't like. so, force it back again using `` 83 self.scratchDb.execute("ALTER TABLE Object CHANGE dec_ `dec` double") 84 81 85 return True 82 86 … … 95 99 def insertMags(self, cpsTable): 96 100 97 # list of all filters we areinterested in98 allFilters = ['g', 'r', 'i', 'z', 'y']101 # list of all filters PSPS is interested in 102 interestedFilters = ['g', 'r', 'i', 'z', 'y'] 99 103 100 # this loop looks into the DVO Photcodes tables and gets the 'CODE' for each the filters above that are listed 101 filters = [] 102 for filter in allFilters: 103 code = self.scratchDb.getCodeForThisFilter(filter) 104 if code < 0: continue 105 filters.append([code, filter]) 104 filters = self.scratchDb.getOrderedListOfFiltersFromPhotcodesTable(interestedFilters) 106 105 107 106 # get a count of the available filters 108 107 filterCount = len(filters) 109 108 110 self.logger.infoPair("Available filters ", filters)109 self.logger.infoPair("Available filters in Photcodes", filters) 111 110 112 111 # the 'code' now defines the order in the cps file that the mags are listed for a given filter 112 self.logger.infoPair("Adding magnitudes from", "cps table") 113 113 for filter in filters: 114 114 115 115 sql = "UPDATE Object \ 116 JOIN " + cpsTable + " AS cps ON (cps.row = (Object.row*" + str(filterCount) + ")- " + str(filter[0]) + ") \116 JOIN " + cpsTable + " AS cps ON (cps.row = (Object.row*" + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \ 117 117 SET \ 118 118 n" + filter[1] + " = NCODE \ … … 120 120 ," + filter[1] + "MeanFlux = 3631 * POW(10.0, (-0.4*MAG)) \ 121 121 ," + filter[1] + "MeanMagErr = MAG_ERR \ 122 ," + filter[1] + "Min = MAG_20 \123 ," + filter[1] + "Max = MAG_80 \122 ," + filter[1] + "Min = MAG_20/1000 \ 123 ," + filter[1] + "Max = MAG_80/1000 \ 124 124 " 125 125 126 self.scratchDb.execute(sql) 127 128 # now set to null all MeanMagErr values > 0.5 (cut set by Gene, 2012-04-12) 129 cut = 0.5 130 self.logger.infoPair("Setting to NULL all MeanMagErr value >", "%f" % cut) 131 for filter in filters: 132 133 sql = "UPDATE Object \ 134 SET " + filter[1] + "MeanMagErr = null \ 135 WHERE " + filter[1] + "MeanMagErr > " + str(cut) 126 136 self.scratchDb.execute(sql) 127 137 … … 131 141 def updateColors(self): 132 142 143 self.logger.infoPair("Calculating", "colors") 133 144 sql = "UPDATE Object \ 134 145 SET \ … … 147 158 self.logger.errorPair("Couldn't calculate colors", sql) 148 159 149 150 ''' 151 Does the processing, i.e. pulling stuff from IPP tables into PSPS tables 152 ''' 153 def populatePspsTables(self): 160 ''' 161 Populates the Object table 162 ''' 163 def populateObjectTable(self): 154 164 155 165 cptTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cpt") 156 166 cpsTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cps") 157 167 158 self.logger.infoPair("Inserting objects from", "cpt") 159 sql = "INSERT INTO Object (\ 168 self.logger.infoPair("Populating", "ObjectCalColor") 169 self.logger.infoPair("Inserting objects from", "cpt file") 170 171 # note `` around dec here, as this is a reserved word in MySQL 172 sql = "INSERT IGNORE INTO Object (\ 160 173 objID \ 161 174 ,ippObjID \ 162 175 ,objInfoFlag \ 176 ,varFlag \ 163 177 ,surveyID \ 164 178 ,ra \ 165 , dec_\179 ,`dec` \ 166 180 ,raErr \ 167 181 ,decErr \ 168 182 ,nDetections \ 183 ,dataRelease \ 169 184 ) \ 170 185 SELECT \ … … 172 187 ,CAT_ID*1000000000 + OBJ_ID \ 173 188 ,FLAGS \ 189 ,0 \ 174 190 ," + str(self.surveyID) + " \ 175 191 ,RA \ … … 178 194 ,DEC_ERR \ 179 195 ,NMEASURE \ 196 , " + str(self.config.dataRelease) + "\ 180 197 FROM " + cptTableName 181 198 … … 184 201 except: 185 202 self.logger.errorPair("Couldn't populate Object table", sql) 203 return False 186 204 187 205 # add row count columns so we can perform joins to get colors … … 190 208 self.scratchDb.addRowCountColumn(cpsTableName, "row") 191 209 192 self.logger.infoPair("Adding magnitudes from", "cps table")193 210 self.insertMags(cpsTableName) 194 211 195 self.logger.infoPair("Calculating", "colors")196 212 self.updateColors() 197 213 … … 205 221 return True 206 222 223 ''' 224 Populates the ObjectCalColor table 225 ''' 226 def populateObjectCalColorTable(self): 227 228 self.logger.infoPair("Populating", "ObjectCalColor") 229 230 sql = "INSERT INTO ObjectCalColor ( \ 231 objID \ 232 ,ippObjID \ 233 ,dataRelease \ 234 ) \ 235 SELECT \ 236 objID \ 237 ,ippObjID \ 238 ,dataRelease \ 239 FROM Object" 240 try: 241 self.scratchDb.execute(sql) 242 except: 243 self.logger.errorPair("Couldn't populate ObjectCalColor table", sql) 244 return False 245 246 return True 247 248 ''' 249 Does the processing, i.e. pulling stuff from IPP tables into PSPS tables 250 ''' 251 def populatePspsTables(self): 252 253 if not self.populateObjectTable(): return False 254 #if not self.populateObjectCalColorTable(): return False 255 256 # now remove the objID duplicates. We could not do this before as cpt/cps tables relate by row number 257 self.logger.infoPair("Forcing uniqueness on", "objID in Object table") 258 rowCountBefore = self.scratchDb.getRowCount("Object") 259 self.scratchDb.execute("ALTER IGNORE TABLE Object ADD UNIQUE INDEX(objID)") 260 rowCountAfter = self.scratchDb.getRowCount("Object") 261 self.logger.infoPair("Number of duplicated objIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore)) 262 263 return True 264
Note:
See TracChangeset
for help on using the changeset viewer.
