- Timestamp:
- Sep 6, 2011, 11:00:22 AM (15 years ago)
- Location:
- branches/eam_branches/ipp-20110710/ippToPsps/jython
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
scratchdb.py (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20110710/ippToPsps/jython
-
Property svn:ignore
set to
*.class
-
Property svn:ignore
set to
-
branches/eam_branches/ipp-20110710/ippToPsps/jython/scratchdb.py
r31841 r32337 23 23 24 24 if useFull: 25 self.dvoMeta = "dvoMetaNew" 26 self.dvoDetection = "dvoDetectionFull" 25 self.dvoMetaTable = "dvoMetaFull" 26 self.dvoDetectionTable = "dvoDetectionFull" 27 self.dvoDoneTable = "dvoDone" 27 28 else: 28 self.dvoMeta = "dvoMeta" 29 self.dvoDetection = "dvoDetection" 30 31 self.logger.debug("ScratchDb constructor, using DVO tables: " + self.dvoMeta + " and " + self.dvoDetection) 29 self.dvoMetaTable = "dvoMeta" 30 self.dvoDetectionTable = "dvoDetection" 31 32 self.logger.debugPair("Using DVO meta table", self.dvoMetaTable) 33 self.logger.debugPair("Using DVO detection table", self.dvoDetectionTable) 32 34 33 35 ''' … … 37 39 38 40 self.logger.debug("ScratchDb destructor") 41 42 43 ''' 44 Creates a stored procedure for psfLikelihood. This uses an implementation of the complimentary error function taken from Numerical Recipes in C. 45 ''' 46 def createPsfLikelihoodFunction(self): 47 sql = "DELIMITER $$ \ 48 DROP FUNCTION IF EXISTS `psfLikelihood` $$ \ 49 CREATE FUNCTION `psfLikelihood`(x REAL) RETURNS REAL \ 50 DETERMINISTIC \ 51 COMMENT 'Returns the psfLikelihood using the complimentary error function with fractional error everywhere less than 1.2 x 10-7. From Numerical Recipes in C' \ 52 BEGIN \ 53 DECLARE ans REAL; \ 54 DECLARE t REAL; \ 55 DECLARE z REAL; \ 56 SET x = ABS(x) / 1.4142135623731; \ 57 SET z=ABS(x); \ 58 SET t=1.0 / (1.0 + 0.5*z); \ 59 SET ans = t * EXP(-z*z-1.26551223+t*(1.00002368+t*(.37409196+t*(.09678418+t*(-.18628806+t*(.27886807+t*(-1.13520398+t*(1.48851587+t*(-.82215223+t*.17087277))))))))); \ 60 IF x < 0.0 THEN \ 61 SET ans = 2.0 - ans; \ 62 END IF; \ 63 RETURN ans; \ 64 END $$ \ 65 DELIMITER ;" 66 67 try: 68 self.execute(sql) 69 self.logger.debugPair("Installed stored procedure", "psfLikelihood") 70 return True 71 except: 72 self.logger.errorPair("Could not install stored procedure", "psfLikelihood") 73 return False 39 74 40 75 ''' … … 47 82 rs = self.executeQuery(sql) 48 83 rs.first() 49 return rs.getInt(1) 50 except: 51 self.logger.exception("No survey ID found for this survey: '" + self.survey + "'") 52 return -1 84 surveyID = rs.getInt(1) 85 except: 86 self.logger.errorPair("No survey ID found for survey", name) 87 surveyID = -1 88 89 return surveyID 90 91 ''' 92 Gets filter ID for this filter name 93 ''' 94 def getFilterID(self, name): 95 96 sql = "SELECT filterID FROM Filter WHERE filterType = '" + name + "'" 97 try: 98 rs = self.executeQuery(sql) 99 rs.first() 100 filterID = rs.getInt(1) 101 except: 102 self.logger.errorPair("No filter ID found for filter", name) 103 filterID = -1 104 105 return filterID 106 107 ''' 108 Gets imageID from extern ID 109 ''' 110 def getImageIDFromExternID(self, sourceID, externID): 111 112 imageID = -1 113 114 sql = "SELECT imageID FROM " + self.dvoMetaTable + " WHERE sourceID = %s AND externID = %s" % (sourceID, externID) 115 try: 116 rs = self.executeQuery(sql) 117 rs.first() 118 imageID = rs.getInt(1) 119 except: 120 self.logger.errorPair("Unable to get imageID from dvo using", sql) 121 122 return imageID 53 123 54 124 ''' … … 59 129 flags = 0 60 130 61 sql = "SELECT flags FROM " + self.dvoMeta + " WHERE sourceID = %s AND externID = %s" % (sourceID, externID)131 sql = "SELECT flags FROM " + self.dvoMetaTable + " WHERE sourceID = %s AND externID = %s" % (sourceID, externID) 62 132 try: 63 133 rs = self.executeQuery(sql) … … 65 135 flags = rs.getInt(1) 66 136 except: 67 self.logger.e xception("Unable to get flags from dvo table using " +sql)137 self.logger.errorPair("Unable to get flags from dvo using", sql) 68 138 return flags 69 139 70 140 ''' 71 Gets imageID from extern ID72 ''' 73 def get ImageIDFromExternID(self, sourceID, externID):74 75 imageID= -176 77 sql = "SELECT imageID FROM " + self.dvoMeta+ " WHERE sourceID = %s AND externID = %s" % (sourceID, externID)141 Gets photcode (aka photoCalID from dvo table) 142 ''' 143 def getPhotoCalID(self, sourceID, externID): 144 145 photcode = -1 146 147 sql = "SELECT photcode FROM " + self.dvoMetaTable + " WHERE sourceID = %s AND externID = %s" % (sourceID, externID) 78 148 try: 79 149 rs = self.executeQuery(sql) 80 150 rs.first() 81 imageID = rs.getInt(1)82 except:83 self.logger.exception("Unable to get imageID from dvo meta table using " + sql)84 85 return imageID86 87 '''88 Gets photcode (aka photoCalID from dvo table)89 '''90 def getPhotoCalID(self, sourceID, externID):91 92 photcode = -193 94 sql = "SELECT photcode FROM " + self.dvoMeta + " WHERE sourceID = %s AND externID = %s" % (sourceID, externID)95 try:96 rs = self.executeQuery(sql)97 rs.first()98 151 photcode = rs.getInt(1) 99 152 except: 100 self.logger.e xception("Unable to get photcode from dvo table with: " +sql)153 self.logger.errorPair("Unable to get photcode from dvo with", sql) 101 154 102 155 return photcode … … 113 166 Inserts a new sourceID/imageID combo into dvoMeta 114 167 ''' 115 def insertNewDvo Image(self, sourceID, imageID):168 def insertNewDvoExternID(self, sourceID, externID): 116 169 117 170 sql = "INSERT INTO dvoMeta ( \ 118 171 sourceID, \ 119 imageID, \120 172 externID \ 121 173 ) VALUES (\ 122 174 " + str(sourceID) + ", \ 123 " + str(imageID) + " , \ 124 " + str(imageID) + " \ 175 " + str(externID) + " \ 125 176 )" 126 177 self.execute(sql) … … 135 186 136 187 ''' 188 Checks whether the astrometric solution is ok for this chip 189 TODO the value of 50 for numAstroRef is hardcoded here, but this should be temporary anyway 190 ''' 191 def astrometricSolutionOK(self, ota): 192 193 sql = "SELECT numAstroRef FROM ImageMeta_" + ota 194 195 try: 196 rs = self.executeQuery(sql) 197 rs.first() 198 if rs.getInt(1) < 50: 199 self.logger.debug("Bad astrometric solution for", ota) 200 return False 201 else: 202 return True 203 except: 204 self.logger.debug("Unable to check astrometric solution") 205 206 return True 207 208 ''' 137 209 Have we already imported this DVO table? 138 210 ''' … … 145 217 rs.first() 146 218 if rs.getInt(1) > 0: 147 self.logger.error ("DVO tables " + name + " have already been imported")219 self.logger.errorPair("Already imported DVO tables for", name) 148 220 return True 149 221 else: … … 158 230 def createDvoTables(self): 159 231 160 self.logger. infoPair("Creating DVO table", "dvoMeta")232 self.logger.debugPair("Creating DVO table", "dvoMeta") 161 233 162 234 sql = "DROP TABLE dvoMeta" … … 174 246 flags INT, \ 175 247 photcode INT, \ 176 PRIMARY KEY (sourceID, imageID ) \248 PRIMARY KEY (sourceID, imageID, externID) \ 177 249 )" 178 250 … … 181 253 self.logger.error("Unable to create DVO meta-data database table") 182 254 183 self.logger. infoPair("Creating DVO table", "dvoDetection")255 self.logger.debugPair("Creating DVO table", "dvoDetection") 184 256 sql = "CREATE TABLE dvoDetection ( \ 185 257 sourceID INT, \ … … 192 264 PRIMARY KEY (sourceID, imageID, ippDetectID) \ 193 265 )" 194 #INDEX (sourceID), \195 #INDEX (imageID), \196 #INDEX (ippDetectID) \197 266 198 267 try: self.execute(sql) 199 268 except: 200 269 self.logger.error("Unable to create DVO detection database table") 270 271 272 ''' 273 Drops and recreates tables necessary for dvoToMySQL program. Be very careful before using this... 274 ''' 275 def resetDvoToMysqlTables(self): 276 277 self.logger.infoPair("Dropping table", self.dvoMetaTable) 278 self.dropTable(self.dvoMetaTable) 279 self.logger.infoPair("Dropping table", self.dvoDetectionTable) 280 self.dropTable(self.dvoDetectionTable) 281 self.logger.infoPair("Dropping table", self.dvoDoneTable) 282 self.dropTable(self.dvoDoneTable) 283 284 self.logger.infoPair("Creating table", self.dvoMetaTable) 285 sql = "CREATE TABLE " + self.dvoMetaTable + " LIKE dvoMeta" 286 try: self.execute(sql) 287 except: self.logger.errorPair("Unable to create table", self.dvoMetaTable) 288 289 self.logger.infoPair("Creating table", self.dvoDetectionTable) 290 sql = "CREATE TABLE " + self.dvoDetectionTable + " LIKE dvoDetection" 291 try: self.execute(sql) 292 except: self.logger.errorPair("Unable to create table", self.dvoDetectionTable) 293 294 self.logger.infoPair("Creating table", self.dvoDoneTable ) 295 sql = "CREATE TABLE " + self.dvoDoneTable + " (name VARCHAR(100))" 296 try: self.execute(sql) 297 except: self.logger.errorPair("Unable to create table", self.dvoDoneTable) 298 299 300
Note:
See TracChangeset
for help on using the changeset viewer.
