Changeset 31367
- Timestamp:
- Apr 25, 2011, 9:40:49 AM (15 years ago)
- File:
-
- 1 edited
-
trunk/ippToPsps/jython/dvoToMySQL.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippToPsps/jython/dvoToMySQL.py
r31353 r31367 42 42 self.gpc1Db = Gpc1Db(self.logger) 43 43 44 # create DVO table 44 # create DVO tables 45 45 self.scratchDb.createDvoTables() 46 46 47 # now import tables 48 self.importFits(self.pathToDvo, "Images.dat", 49 "IMAGE_ID SOURCE_ID CCDNUM EXTERN_ID FLAGS PHOTCODE") 47 # import Images.dat table 48 imagesTableName = self.importFits(self.pathToDvo, 49 "", 50 "Images.dat", 51 "IMAGE_ID SOURCE_ID CCDNUM EXTERN_ID FLAGS PHOTCODE NSTAR") 52 self.scratchDb.createIndex(imagesTableName, "IMAGE_ID") 53 54 # insert into dvoMeta 55 self.logger.info("Inserting all image meta data into database") 56 sql = "INSERT INTO dvoMeta ( \ 57 sourceID, \ 58 imageID, \ 59 flags, \ 60 photcode \ 61 ) SELECT \ 62 SOURCE_ID, \ 63 IMAGE_ID, \ 64 FLAGS, \ 65 PHOTCODE \ 66 FROM " + imagesTableName 67 self.scratchDb.stmt.execute(sql) 68 69 subdirs = ['n0000'] 70 71 for subdir in subdirs: 72 73 files = ['0247.06', '0244.06', '0244.10'] 74 75 for file in files: 76 77 self.logger.info("---------------------------------------------") 78 79 # import cpm table and index 80 cpmTableName = self.importFits(self.pathToDvo, 81 subdir, 82 file + ".cpm", 83 "IMAGE_ID DET_ID OBJ_ID CAT_ID EXT_ID DB_FLAGS") 84 self.scratchDb.createIndex(cpmTableName, "CAT_ID") 85 self.scratchDb.createIndex(cpmTableName, "OBJ_ID") 86 87 # import cpt table and index 88 cptTableName = self.importFits(self.pathToDvo, 89 subdir, 90 file + ".cpt", 91 "OBJ_ID CAT_ID EXT_ID") 92 self.scratchDb.createIndex(cptTableName, "CAT_ID") 93 self.scratchDb.createIndex(cptTableName, "OBJ_ID") 94 95 # shove SOURCE_IDs into measurement table 96 self.logger.info("Adding SOURCE_IDs into measurements table") 97 sql = "ALTER TABLE "+cpmTableName+" ADD COLUMN (SOURCE_ID SMALLINT)" 98 self.scratchDb.stmt.execute(sql) 99 sql = "UPDATE "+cpmTableName+" AS a, "+imagesTableName+" AS b \ 100 SET a.SOURCE_ID = b.SOURCE_ID \ 101 WHERE a.IMAGE_ID = b.IMAGE_ID" 102 self.scratchDb.stmt.execute(sql) 103 104 # shove PSPS objID in measurement table 105 self.logger.info("Adding PSPS objID into measurements table") 106 sql = "ALTER TABLE "+cpmTableName+" ADD COLUMN (PSPS_OBJ_ID BIGINT)" 107 self.scratchDb.stmt.execute(sql) 108 sql = "UPDATE "+cpmTableName+" AS a, "+cptTableName+" AS b \ 109 SET a.PSPS_OBJ_ID = b.EXT_ID \ 110 WHERE a.CAT_ID = b.CAT_ID \ 111 AND a.OBJ_ID = b.OBJ_ID" 112 self.scratchDb.stmt.execute(sql) 113 114 # now put everything into dvoDetection table 115 self.logger.info("Putting everything into dvoDetection table") 116 sql = "INSERT INTO dvoDetection (\ 117 sourceID \ 118 ,imageID \ 119 ,ippDetectID \ 120 ,detectID \ 121 ,ippObjID \ 122 ,objID \ 123 ,flags \ 124 ) SELECT \ 125 SOURCE_ID \ 126 ,IMAGE_ID \ 127 ,DET_ID \ 128 ,EXT_ID \ 129 ,CAT_ID * 1000000000 + OBJ_ID \ 130 ,PSPS_OBJ_ID \ 131 ,DB_FLAGS \ 132 FROM " + cpmTableName 133 self.scratchDb.stmt.execute(sql) 134 135 # now drop what we don't need 136 self.logger.info("Dropping tables") 137 self.scratchDb.dropTable(cpmTableName) 138 self.scratchDb.dropTable(cptTableName) 50 139 140 self.scratchDb.dropTable(imagesTableName) 141 51 142 52 143 ''' … … 60 151 Imports a FITS file. A regex filter lets you choose which tables to pull from the file 61 152 ''' 62 def importFits(self, path, file, columns):153 def importFits(self, path, subdir, file, columns): 63 154 64 fullPath = path + "/" + file 65 self.logger.info("Attempting to import tables from: " + fullPath) 155 fullPath = path + "/" + subdir + "/" + file 156 157 if len(subdir) < 1: tableName = file 158 else: tableName = subdir + "_" + file 159 160 tableName = tableName.replace('.', '_') 161 162 self.logger.info("Attempting to import tables from '" + fullPath + "' to '" + tableName + "'") 66 163 67 164 tables = stilts.treads(fullPath) … … 70 167 for table in tables: 71 168 72 self.logger.info(" Reading IPP table " + table.name + " from FITS file")169 self.logger.info("Reading IPP table " + table.name + " from FITS file") 73 170 table = stilts.tpipe(table, cmd='explodeall') 74 171 75 self.scratchDb.dropTable(table.name)76 77 table.cmd_keepcols('PHOTCODE')78 172 # IPP FITS files are littered with infinities, so remove these 79 self.logger.info(" Removing Infinity values from all columns")173 self.logger.info("Removing Infinity values from all columns") 80 174 table = stilts.tpipe(table, cmd='replaceval -Infinity null *') 81 175 table = stilts.tpipe(table, cmd='replaceval Infinity null *') 82 176 83 177 #try: 84 table.cmd_keepcols( 'IMAGE_ID SOURCE_ID CCDNUM EXTERN_ID FLAGS PHOTCODE').write(self.scratchDb.url + '#' + file)178 table.cmd_keepcols(columns).write(self.scratchDb.url + '#' + tableName) 85 179 #except: 86 180 # self.logger.exception(" Problem writing table '" + table.name + "' to the database") … … 89 183 self.logger.info("Done. Imported %d tables" % count) 90 184 185 return tableName 91 186 92 187 logging.config.fileConfig("logging.conf") … … 96 191 dvoToMySql = DvoToMySql(logger, "/data/ipp005.0/gpc1/catdirs/MD04.merges/MD04.merge") 97 192 193 logger.info("Program complete") 98 194
Note:
See TracChangeset
for help on using the changeset viewer.
