IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 6, 2011, 11:00:22 AM (15 years ago)
Author:
eugene
Message:

merge changes from trunk

Location:
branches/eam_branches/ipp-20110710/ippToPsps/jython
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20110710/ippToPsps/jython

    • Property svn:ignore set to
      *.class
  • branches/eam_branches/ipp-20110710/ippToPsps/jython/scratchdb.py

    r31841 r32337  
    2323
    2424        if useFull:
    25             self.dvoMeta = "dvoMetaNew"
    26             self.dvoDetection = "dvoDetectionFull"
     25            self.dvoMetaTable = "dvoMetaFull"
     26            self.dvoDetectionTable = "dvoDetectionFull"
     27            self.dvoDoneTable = "dvoDone"
    2728        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)
    3234
    3335    '''
     
    3739
    3840        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
    3974
    4075    '''
     
    4782            rs = self.executeQuery(sql)
    4883            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
    53123
    54124    '''
     
    59129        flags = 0
    60130
    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)
    62132        try:
    63133            rs = self.executeQuery(sql) 
     
    65135            flags = rs.getInt(1)
    66136        except:
    67             self.logger.exception("Unable to get flags from dvo table using " + sql)
     137            self.logger.errorPair("Unable to get flags from dvo using", sql)
    68138        return flags
    69139
    70140    '''
    71     Gets imageID from extern ID
    72     '''
    73     def getImageIDFromExternID(self, sourceID, externID):
    74 
    75         imageID = -1
    76 
    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)
    78148        try:
    79149            rs = self.executeQuery(sql) 
    80150            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 imageID
    86 
    87     '''
    88     Gets photcode (aka photoCalID from dvo table)
    89     '''
    90     def getPhotoCalID(self, sourceID, externID):
    91 
    92         photcode = -1
    93 
    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()
    98151            photcode = rs.getInt(1)
    99152        except:
    100             self.logger.exception("Unable to get photcode from dvo table with: " + sql)
     153            self.logger.errorPair("Unable to get photcode from dvo with", sql)
    101154
    102155        return photcode
     
    113166    Inserts a new sourceID/imageID combo into dvoMeta
    114167    '''
    115     def insertNewDvoImage(self, sourceID, imageID):
     168    def insertNewDvoExternID(self, sourceID, externID):
    116169
    117170        sql = "INSERT INTO dvoMeta ( \
    118171               sourceID, \
    119                imageID, \
    120172               externID \
    121173               ) VALUES (\
    122174               " + str(sourceID) + ", \
    123                " + str(imageID) + " ,   \
    124                " + str(imageID) + "    \
     175               " + str(externID) + "   \
    125176               )"
    126177        self.execute(sql)
     
    135186       
    136187    '''
     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    '''
    137209    Have we already imported this DVO table?
    138210    '''
     
    145217            rs.first()
    146218            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)
    148220                return True
    149221            else:
     
    158230    def createDvoTables(self):
    159231
    160         self.logger.infoPair("Creating DVO table", "dvoMeta")
     232        self.logger.debugPair("Creating DVO table", "dvoMeta")
    161233
    162234        sql = "DROP TABLE dvoMeta"
     
    174246               flags INT, \
    175247               photcode INT, \
    176                PRIMARY KEY (sourceID, imageID) \
     248               PRIMARY KEY (sourceID, imageID, externID) \
    177249               )"
    178250
     
    181253            self.logger.error("Unable to create DVO meta-data database table")
    182254
    183         self.logger.infoPair("Creating DVO table", "dvoDetection")
     255        self.logger.debugPair("Creating DVO table", "dvoDetection")
    184256        sql = "CREATE TABLE dvoDetection ( \
    185257               sourceID INT, \
     
    192264               PRIMARY KEY (sourceID, imageID, ippDetectID) \
    193265               )"
    194                #INDEX (sourceID), \
    195                #INDEX (imageID), \
    196                #INDEX (ippDetectID) \
    197266
    198267        try: self.execute(sql)
    199268        except:
    200269            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.