IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 29, 2014, 12:16:23 PM (12 years ago)
Author:
eugene
Message:

move importIppSTTables from batch.py to stackbatch.py and rename importIppTables; make batch:run call importIppTables consistently for all batch types

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20140717/ippToPsps/jython/stackbatch.py

    r37133 r37138  
    7575 #      self.logger.infoPair("y stackID ",ystackID)
    7676 #      raise
    77        # from each stackget fits name from getStackStageCmf
     77       # from each stack, get fits name from getStackStageCmf
    7878       if gstackID > 0:
    7979           self.logger.infoPair ("finding fits file for: ","g.00000")
     
    141141
    142142       metastackid = -999
    143        if gstackID > 0:
    144            metastackid = gstackID
    145        if rstackID > 0:
    146            metastackid = rstackID
    147        if istackID > 0:
    148            metastackid = istackID   
    149        if zstackID > 0:
    150            metastackid = zstackID
    151        if ystackID > 0:
    152            metastackid = ystackID
     143       if gstackID > 0: metastackid = gstackID
     144       if rstackID > 0: metastackid = rstackID
     145       if istackID > 0: metastackid = istackID   
     146       if zstackID > 0: metastackid = zstackID
     147       if ystackID > 0: metastackid = ystackID
     148
    153149       #there is probably a better way to do this
    154150       if metastackid < 0:
     
    159155       ## this should be ok - it takes a stack_id and returns filter/skycell etc.
    160156
    161 
    162157       if not meta:
    163158           self.logger.errorPair("Could not get stack", "metadata")
     
    174169       # we need 1133.081 for skycell, but store as an int, so instead store 1133081
    175170       # projection cell is just the 1133 bit
     171
    176172       # This Is how it should be done
    177173       #self.projectioncell = self.skycell[8:12]
     
    217213
    218214       self.scratchDb.dropTable("StackToImage")
    219              # self.testprint()
     215       # self.testprint()
    220216
    221217       # for PV2 we will have (grizy) of stack meta and skychip     
    222 
    223218
    224219       # delete IPP tables
     
    13351330    def exportPspsTablesToFits(self, regex="(.*)"):
    13361331        return super(StackBatch, self).exportPspsTablesToFits("(Stack.*)")
     1332
     1333    '''
     1334    Imports IPP tables from FITS file
     1335    Accepts a regular expression to match the tables so not all tables need to be imported
     1336    (This regex feature is not currently used...)
     1337    '''
     1338    def importIppTables(self, columns="*", tableRE=""):
     1339
     1340      self.logger.infoPair("Importing ST tables with table match expression: ", tableRE)
     1341
     1342      # print "trying to read ", self.fits.getPath()
     1343
     1344      # ST has 5 cmf files - all with the same table names. To counter this we do it like this.
     1345
     1346      filters = ["g","r","i","z","y"]
     1347      count = 0
     1348      for f in filters:
     1349          skip = 0
     1350          if (f == "g"):
     1351              if self.gstackID > 0: 
     1352                  fileName = self.gfits.getPath()
     1353              else:
     1354                  skip = 1
     1355          if (f == "r"):
     1356              if self.rstackID > 0:
     1357                  fileName = self.rfits.getPath()
     1358              else:
     1359                  skip = 1
     1360          if (f == "i"):
     1361              if self.istackID > 0:
     1362                  fileName = self.ifits.getPath()
     1363              else:
     1364                  skip = 1
     1365          if (f == "z"):
     1366              if self.zstackID > 0:
     1367                  fileName = self.zfits.getPath()
     1368              else:
     1369                  skip = 1
     1370          if (f == "y"):
     1371              if self.ystackID > 0:
     1372                  fileName = self.yfits.getPath()
     1373              else:
     1374                  skip = 1
     1375
     1376          if skip == 1:
     1377              self.logger.infoPair("no files for filter" , f)
     1378          else:
     1379             self.logger.infoPair("using filename:",fileName)
     1380         
     1381             try:
     1382              tables = stilts.treads(fileName)
     1383             except:
     1384              self.logger.errorPair("STILTS could not import from", fileName)
     1385              return False
     1386             
     1387             #count = 0
     1388             for table in tables:
     1389             
     1390              # print "import smf table ", table
     1391              match = re.match(tableRE, table.name)
     1392             
     1393              if not match: continue
     1394              self.logger.infoPair("Reading IPP table", f + table.name)
     1395              table = stilts.tpipe(table, cmd='addcol table_index $0')
     1396                 
     1397              table = stilts.tpipe(table, cmd='explodeall')
     1398                 
     1399              # print "read smf table ", table
     1400                 
     1401              # drop any previous tables before import
     1402              self.scratchDb.dropTable(f + table.name)
     1403                 
     1404              # IPP FITS files are littered with infinities, so remove these
     1405              self.logger.debug("Removing Infinity values from all columns")
     1406              table = stilts.tpipe(table, cmd='keepcols "' + columns + '"')
     1407              table = stilts.tpipe(table, cmd='replaceval -Infinity null *')
     1408              table = stilts.tpipe(table, cmd='replaceval Infinity null *')
     1409              # print "cleaned up values ", table
     1410                 
     1411              try:
     1412                  table.write(self.scratchDb.url + '#' + f + table.name)
     1413                  count = count + 1
     1414              except:
     1415                  self.logger.exception("Problem writing table '" + f + table.name + "' to the database")
     1416                     
     1417      self.logger.infoPair("Done. Imported", "%d tables" % count)
     1418      self.indexIppTables()
     1419                     
     1420      return True
Note: See TracChangeset for help on using the changeset viewer.