IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 31367


Ignore:
Timestamp:
Apr 25, 2011, 9:40:49 AM (15 years ago)
Author:
rhenders
Message:

now does all SQL necessary to build up dvoDetection and dvoMeta tables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippToPsps/jython/dvoToMySQL.py

    r31353 r31367  
    4242        self.gpc1Db = Gpc1Db(self.logger)
    4343
    44         # create DVO table
     44        # create DVO tables
    4545        self.scratchDb.createDvoTables()
    4646
    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)
    50139       
     140        self.scratchDb.dropTable(imagesTableName)
     141
    51142
    52143    '''
     
    60151    Imports a FITS file. A regex filter lets you choose which tables to pull from the file
    61152    '''
    62     def importFits(self, path, file, columns):
     153    def importFits(self, path, subdir, file, columns):
    63154
    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 + "'")
    66163
    67164      tables = stilts.treads(fullPath)
     
    70167      for table in tables:
    71168
    72           self.logger.info("   Reading IPP table " + table.name + " from FITS file")
     169          self.logger.info("Reading IPP table " + table.name + " from FITS file")
    73170          table = stilts.tpipe(table, cmd='explodeall')
    74171     
    75           self.scratchDb.dropTable(table.name)
    76 
    77           table.cmd_keepcols('PHOTCODE')
    78172          # 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")
    80174          table = stilts.tpipe(table, cmd='replaceval -Infinity null *')
    81175          table = stilts.tpipe(table, cmd='replaceval Infinity null *')
    82176
    83177          #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)
    85179          #except:
    86180          #    self.logger.exception("   Problem writing table '" + table.name + "' to the database")
     
    89183      self.logger.info("Done. Imported %d tables" % count)
    90184
     185      return tableName
    91186
    92187logging.config.fileConfig("logging.conf")
     
    96191dvoToMySql = DvoToMySql(logger, "/data/ipp005.0/gpc1/catdirs/MD04.merges/MD04.merge")
    97192
     193logger.info("Program complete")
    98194
Note: See TracChangeset for help on using the changeset viewer.