Changeset 31965
- Timestamp:
- Aug 1, 2011, 4:05:53 PM (15 years ago)
- Location:
- trunk/ippToPsps
- Files:
-
- 5 edited
-
jython/detectionbatch.py (modified) (2 diffs)
-
jython/dvoToMySQL.py (modified) (11 diffs)
-
jython/scratchdb.py (modified) (5 diffs)
-
jython/stackbatch.py (modified) (3 diffs)
-
src/Dvo.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippToPsps/jython/detectionbatch.py
r31951 r31965 533 533 Updates provided table with DVO IDs from DVO table 534 534 ''' 535 def updateDvoIDs(self, table, sourceID, imageID): 536 537 self.logger.debug("Updating table '" + table + "' with DVO IDs using imageID = " + imageID) 535 def updateDvoIDs(self, table, sourceID, externID): 536 537 imageID = self.scratchDb.getImageIDFromExternID(sourceID, externID) 538 self.logger.debug("Updating table '" + table + "' with DVO IDs using imageID = %d" % imageID) 538 539 sql = "UPDATE IGNORE " + table + " AS a, " + self.scratchDb.dvoDetection + " AS b SET \ 539 540 a.ippObjID = b.ippObjID, \ … … 617 618 # store sourceID/imageID combo in Db so DVO can look up later 618 619 if not self.useFullTables: 619 self.scratchDb.insertNewDvo Image(header['SOURCEID'], header['IMAGEID'])620 self.scratchDb.insertNewDvoExternID(header['SOURCEID'], header['IMAGEID']) 620 621 621 622 # store these for later -
trunk/ippToPsps/jython/dvoToMySQL.py
r31398 r31965 10 10 from subprocess import call, PIPE, Popen 11 11 12 from gpc1db import Gpc1Db12 from pslogger import PSLogger 13 13 from scratchdb import ScratchDb 14 14 … … 27 27 28 28 ''' 29 def __init__(self, logger , pathToDvo):29 def __init__(self, logger): 30 30 31 31 # set up logging 32 32 self.logger = logger 33 self. pathToDvo = pathToDvo34 self.logger. debug("DvoToMySql class constructor")35 36 self. logger.debug("Important DVO database at " + self.pathToDvo)33 self.logger.infoSeparator() 34 self.logger.info("Started dvoToMySql") 35 self.dvoMetaTable = "dvoMetaFull" 36 self.dvoDetectionTable = "dvoDetectionFull" 37 37 38 38 # open config 39 doc = ElementTree(file="config.xml") 39 self.doc = ElementTree(file="config.xml") 40 self.dvoLocation = self.doc.find("dvo/location").text 41 42 # some log stuff 43 self.logger.infoPair("Using DVO meta table", self.dvoMetaTable) 44 self.logger.infoPair("Using DVO detection table", self.dvoDetectionTable) 45 self.logger.infoPair("Importing DVO database at", self.dvoLocation) 40 46 41 47 # create database objects 42 self.scratchDb = ScratchDb(logger) 43 self.gpc1Db = Gpc1Db(self.logger) 48 self.scratchDb = ScratchDb(logger, self.doc, 1) 44 49 45 50 # create DVO tables … … 47 52 48 53 # import Images.dat table 54 self.logger.infoPair("Deleting from table", self.dvoMetaTable) 49 55 sql = "DELETE FROM dvoMetaFull" 50 self.scratchDb. stmt.execute(sql)51 52 imagesTableName = self.importFits(self. pathToDvo,56 self.scratchDb.execute(sql) 57 58 imagesTableName = self.importFits(self.dvoLocation, 53 59 "", 54 60 "Images.dat", 55 " IMAGE_ID SOURCE_ID CCDNUM EXTERN_ID FLAGS PHOTCODE NSTAR")56 self.scratchDb.createIndex(imagesTableName, " IMAGE_ID")61 "SOURCE_ID IMAGE_ID CCDNUM EXTERN_ID FLAGS PHOTCODE NSTAR") 62 self.scratchDb.createIndex(imagesTableName, "EXTERN_ID") 57 63 58 64 # insert into dvoMetaFull 65 # NB what we and smf files call IMAGE_ID, DVO calls EXTERN_ID. We are sticking 66 # with the smf name 59 67 self.logger.info("Inserting all image meta data into database") 60 sql = "INSERT INTO dvoMeta New( \68 sql = "INSERT INTO dvoMetaFull ( \ 61 69 sourceID, \ 62 70 imageID, \ … … 71 79 PHOTCODE \ 72 80 FROM " + imagesTableName 73 self.scratchDb. stmt.execute(sql)81 self.scratchDb.execute(sql) 74 82 75 83 subdirs = ['n0000'] … … 77 85 for subdir in subdirs: 78 86 79 files = glob.glob( pathToDvo+ "/" + subdir + "/*.cpm")87 files = glob.glob(self.dvoLocation + "/" + subdir + "/*.cpm") 80 88 81 89 #files = ['0247.06', '0244.06', '0244.10'] … … 90 98 91 99 # import cpm table and index 92 cpmTableName = self.importFits(self. pathToDvo,100 cpmTableName = self.importFits(self.dvoLocation, 93 101 subdir, 94 102 file + ".cpm", … … 98 106 99 107 # import cpt table and index 100 cptTableName = self.importFits(self. pathToDvo,108 cptTableName = self.importFits(self.dvoLocation, 101 109 subdir, 102 110 file + ".cpt", … … 107 115 # shove SOURCE_IDs into measurement table 108 116 self.logger.info("Adding SOURCE_IDs into measurements table") 109 sql = "ALTER TABLE " +cpmTableName+" ADD COLUMN (SOURCE_ID SMALLINT)"110 self.scratchDb. stmt.execute(sql)111 sql = "UPDATE " +cpmTableName+" AS a, "+imagesTableName+" AS b \117 sql = "ALTER TABLE " + cpmTableName + " ADD COLUMN (SOURCE_ID SMALLINT)" 118 self.scratchDb.execute(sql) 119 sql = "UPDATE " + cpmTableName + " AS a, " + imagesTableName + " AS b \ 112 120 SET a.SOURCE_ID = b.SOURCE_ID \ 113 121 WHERE a.IMAGE_ID = b.IMAGE_ID" 114 self.scratchDb. stmt.execute(sql)122 self.scratchDb.execute(sql) 115 123 116 124 # shove PSPS objID in measurement table 117 125 self.logger.info("Adding PSPS objID into measurements table") 118 126 sql = "ALTER TABLE "+cpmTableName+" ADD COLUMN (PSPS_OBJ_ID BIGINT)" 119 self.scratchDb. stmt.execute(sql)127 self.scratchDb.execute(sql) 120 128 sql = "UPDATE "+cpmTableName+" AS a, "+cptTableName+" AS b \ 121 129 SET a.PSPS_OBJ_ID = b.EXT_ID \ 122 130 WHERE a.CAT_ID = b.CAT_ID \ 123 131 AND a.OBJ_ID = b.OBJ_ID" 124 self.scratchDb. stmt.execute(sql)125 126 self.logger.info ("Putting everything into dvoDetectionFull table")132 self.scratchDb.execute(sql) 133 134 self.logger.infoPair("Populating", self.dvoDetectionTable) 127 135 sql = "INSERT IGNORE INTO dvoDetectionFull (\ 128 136 sourceID \ … … 142 150 ,DB_FLAGS \ 143 151 FROM " + cpmTableName 144 self.scratchDb. stmt.execute(sql)152 self.scratchDb.execute(sql) 145 153 146 154 # now drop what we don't need … … 173 181 tableName = tableName.replace('.', '_') 174 182 175 self.logger.info("Attempting to import tables from '" + fullPath + "' to '" + tableName + "'") 183 self.logger.infoPair("Importing tables from file", fullPath) 184 self.logger.infoPair("Writing to database table", tableName) 176 185 177 186 tables = stilts.treads(fullPath) … … 195 204 count = count + 1 196 205 197 self.logger.info ("Done. Imported%d tables" % count)206 self.logger.infoPair("Finished importing", "%d tables" % count) 198 207 199 208 return tableName 200 209 201 210 logging.config.fileConfig("logging.conf") 202 logger = logging.getLogger("dvotomysql") 203 logger.info("Starting") 204 205 dvoToMySql = DvoToMySql(logger, "/data/ipp005.0/gpc1/catdirs/MD04.merges/MD04.merge") 206 #dvoToMySql = DvoToMySql(logger, "/export/ippc00.1/rhenders/MD04.merge") 207 208 logger.info("Program complete") 209 211 logging.setLoggerClass(PSLogger) 212 logger = logging.getLogger("dvoToMySQLLog") 213 logger.setLevel(logging.INFO) 214 215 216 dvoToMySql = DvoToMySql(logger) 217 218 logger.infoPair("Program...", "complete") 219 -
trunk/ippToPsps/jython/scratchdb.py
r31950 r31965 52 52 return -1 53 53 54 ''' 55 Gets imageID from extern ID 56 ''' 57 def getImageIDFromExternID(self, sourceID, externID): 58 59 imageID = -1 60 61 sql = "SELECT imageID FROM " + self.dvoMeta + " WHERE sourceID = %s AND externID = %s" % (sourceID, externID) 62 try: 63 rs = self.executeQuery(sql) 64 rs.first() 65 imageID = rs.getInt(1) 66 except: 67 self.logger.exception("Unable to get imageID from dvo meta table using " + sql) 68 69 return imageID 70 54 71 ''' 55 72 Gets DVO image flags 56 73 ''' 57 def getDvoImageFlags(self, sourceID, imageID):74 def getDvoImageFlags(self, sourceID, externID): 58 75 59 76 flags = 0 60 77 61 sql = "SELECT flags FROM " + self.dvoMeta + " WHERE sourceID = %s AND imageID = %s" % (sourceID, imageID)78 sql = "SELECT flags FROM " + self.dvoMeta + " WHERE sourceID = %s AND externID = %s" % (sourceID, externID) 62 79 try: 63 80 rs = self.executeQuery(sql) … … 71 88 Gets photcode (aka photoCalID from dvo table) 72 89 ''' 73 def getPhotoCalID(self, sourceID, imageID):90 def getPhotoCalID(self, sourceID, externID): 74 91 75 92 photcode = -1 76 93 77 sql = "SELECT photcode FROM " + self.dvoMeta + " WHERE sourceID = %s AND imageID = %s" % (sourceID, imageID)94 sql = "SELECT photcode FROM " + self.dvoMeta + " WHERE sourceID = %s AND externID = %s" % (sourceID, externID) 78 95 try: 79 96 rs = self.executeQuery(sql) … … 96 113 Inserts a new sourceID/imageID combo into dvoMeta 97 114 ''' 98 def insertNewDvo Image(self, sourceID, imageID):115 def insertNewDvoExternID(self, sourceID, externID): 99 116 100 117 sql = "INSERT INTO dvoMeta ( \ 101 118 sourceID, \ 102 imageID \119 externID \ 103 120 ) VALUES (\ 104 121 " + str(sourceID) + ", \ 105 " + str( imageID) + "\122 " + str(externID) + " \ 106 123 )" 107 124 self.execute(sql) … … 152 169 sourceID INT, \ 153 170 imageID INT, \ 171 externID INT, \ 154 172 flags INT, \ 155 173 photcode INT, \ 156 PRIMARY KEY (sourceID, imageID ) \174 PRIMARY KEY (sourceID, imageID, externID) \ 157 175 )" 158 176 … … 172 190 PRIMARY KEY (sourceID, imageID, ippDetectID) \ 173 191 )" 174 #INDEX (sourceID), \175 #INDEX (imageID), \176 #INDEX (ippDetectID) \177 192 178 193 try: self.execute(sql) -
trunk/ippToPsps/jython/stackbatch.py
r31951 r31965 88 88 # insert sourceID/imageID combo so DVO can look it up 89 89 if not self.useFullTables: 90 self.scratchDb.insertNewDvo Image(self.header['SOURCEID'], self.header['IMAGEID'])90 self.scratchDb.insertNewDvoExternID(self.header['SOURCEID'], self.header['IMAGEID']) 91 91 92 92 ''' … … 588 588 def updateDvoIDs(self, table): 589 589 590 imageID = self.scratchDb.getImageIDFromExternID(self.header['SOURCEID'], self.header['IMAGEID']) 590 591 self.logger.debug("Updating table '" + table + "' with DVO IDs...") 591 592 sql = "UPDATE IGNORE " + table + " AS a, " + self.scratchDb.dvoDetection + " AS b SET \ … … 595 596 WHERE a.ippDetectID = b.ippDetectID \ 596 597 AND b.sourceID = " + self.header['SOURCEID'] + "\ 597 AND b.imageID = " + s elf.header['IMAGEID']598 AND b.imageID = " + str(imageID) 598 599 self.scratchDb.execute(sql) 599 600 -
trunk/ippToPsps/src/Dvo.c
r31928 r31965 35 35 mysql_query(this->mysql, "DELETE FROM dvoDetection"); 36 36 37 mysql_query(this->mysql, "SELECT sourceID, imageID FROM dvoMeta");37 mysql_query(this->mysql, "SELECT sourceID, externID FROM dvoMeta"); 38 38 MYSQL_RES* result = mysql_store_result(this->mysql); 39 39 … … 41 41 MYSQL_ROW row; 42 42 char sql[500]; 43 int sourceID, imageID;43 int sourceID, externID; 44 44 while ((row = mysql_fetch_row(result))) { 45 45 46 46 sourceID = atoi(row[0]); 47 imageID = atoi(row[1]);47 externID = atoi(row[1]); 48 48 49 49 this->logger->print(this->logger, MSG_INFO, "Dvo", "---------------------------------------------------------------------\n"); 50 this->logger->print(this->logger, MSG_INFO, "Dvo", "Getting skylist from DVO database for source ID = %d and imageID = %d\n",51 sourceID, imageID);52 skyList = dvoSkyListByExternID(this->dvoConfig, sourceID, imageID, &image);50 this->logger->print(this->logger, MSG_INFO, "Dvo", "Getting skylist from DVO database for source ID = %d and extern ID = %d\n", 51 sourceID, externID); 52 skyList = dvoSkyListByExternID(this->dvoConfig, sourceID, externID, &image); 53 53 if (!skyList) { 54 54 55 55 this->logger->print(this->logger, MSG_ERROR, 56 "Dvo", "Could not find skylist for sourceId=%d and imageID = %d\n",57 sourceID, imageID);56 "Dvo", "Could not find skylist for sourceId=%d and extern ID = %d\n", 57 sourceID, externID); 58 58 59 59 continue; … … 61 61 62 62 sprintf(sql, 63 "UPDATE dvoMeta SET flags = %d, photcode = %d WHERE sourceID = %d AND imageID = %d", 63 "UPDATE dvoMeta SET imageID = %d,flags = %d, photcode = %d WHERE sourceID = %d AND externID = %d", 64 image->imageID, 64 65 image->flags, 65 66 image->photcode, 66 67 sourceID, 67 imageID);68 externID); 68 69 mysql_query(this->mysql, sql); 69 70 … … 92 93 "INSERT INTO dvoDetection (sourceID, imageID, ippDetectID, detectID, ippObjID, objID, flags) VALUES (%d, %d, %u, %lu, %lu, %lu, %u)", 93 94 sourceID, // sourceID 94 image ID, // imageID95 image->imageID, // imageID 95 96 dvoDetections[i].meas.detID, // ippDetectID 96 97 dvoDetections[i].meas.extID, // detectID
Note:
See TracChangeset
for help on using the changeset viewer.
