src/HOL/Tools/Sledgehammer/MaSh/src/server.py
changeset 54432 68f8bd1641da
parent 54150 942bb9d9b7a8
child 57124 e4c2c792226f
equal deleted inserted replaced
54431:e98996c2a32c 54432:68f8bd1641da
    12 from dictionaries import Dictionaries
    12 from dictionaries import Dictionaries
    13 from parameters import init_parser
    13 from parameters import init_parser
    14 from sparseNaiveBayes import sparseNBClassifier
    14 from sparseNaiveBayes import sparseNBClassifier
    15 from KNN import KNN,euclidean
    15 from KNN import KNN,euclidean
    16 from KNNs import KNNAdaptPointFeatures,KNNUrban
    16 from KNNs import KNNAdaptPointFeatures,KNNUrban
       
    17 #from bayesPlusMetric import sparseNBPlusClassifier
    17 from predefined import Predefined
    18 from predefined import Predefined
    18 from ExpandFeatures import ExpandFeatures
    19 from ExpandFeatures import ExpandFeatures
    19 from stats import Statistics
    20 from stats import Statistics
    20 
    21 
    21 
    22 
    56         if argv == '':
    57         if argv == '':
    57             self.server.args = init_parser([])
    58             self.server.args = init_parser([])
    58         else:
    59         else:
    59             argv = argv.split(';')
    60             argv = argv.split(';')
    60             self.server.args = init_parser(argv)
    61             self.server.args = init_parser(argv)
       
    62 
       
    63         # Set up logging
       
    64         logging.basicConfig(level=logging.DEBUG,
       
    65                             format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
       
    66                             datefmt='%d-%m %H:%M:%S',
       
    67                             filename=self.server.args.log+'server',
       
    68                             filemode='w')    
       
    69         self.server.logger = logging.getLogger('server')
       
    70             
    61         # Load all data
    71         # Load all data
    62         self.server.dicts = Dictionaries()
    72         self.server.dicts = Dictionaries()
    63         if os.path.isfile(self.server.args.dictsFile):
    73         if os.path.isfile(self.server.args.dictsFile):
    64             self.server.dicts.load(self.server.args.dictsFile)            
    74             self.server.dicts.load(self.server.args.dictsFile)
       
    75         #elif not self.server.args.dictsFile == '../tmp/dict.pickle':
       
    76         #    raise IOError('Cannot find dictsFile at %s '% self.server.args.dictsFile)        
    65         elif self.server.args.init:
    77         elif self.server.args.init:
    66             self.server.dicts.init_all(self.server.args)
    78             self.server.dicts.init_all(self.server.args)
    67         # Pick model
    79         # Pick model
    68         if self.server.args.algorithm == 'nb':
    80         if self.server.args.algorithm == 'nb':
    69             self.server.model = sparseNBClassifier(self.server.args.NBDefaultPriorWeight,self.server.args.NBPosWeight,self.server.args.NBDefVal)
    81             ###TODO: !! 
       
    82             self.server.model = sparseNBClassifier(self.server.args.NBDefaultPriorWeight,self.server.args.NBPosWeight,self.server.args.NBDefVal)            
       
    83             #self.server.model = sparseNBPlusClassifier(self.server.args.NBDefaultPriorWeight,self.server.args.NBPosWeight,self.server.args.NBDefVal)
    70         elif self.server.args.algorithm == 'KNN':
    84         elif self.server.args.algorithm == 'KNN':
    71             #self.server.model = KNN(self.server.dicts)
    85             #self.server.model = KNN(self.server.dicts)
    72             self.server.model = KNNAdaptPointFeatures(self.server.dicts)
    86             self.server.model = KNNAdaptPointFeatures(self.server.dicts)
    73         elif self.server.args.algorithm == 'predef':
    87         elif self.server.args.algorithm == 'predef':
    74             self.server.model = Predefined(self.server.args.predef)
    88             self.server.model = Predefined(self.server.args.predef)
    78             self.server.expandFeatures = ExpandFeatures(self.server.dicts)
    92             self.server.expandFeatures = ExpandFeatures(self.server.dicts)
    79             self.server.expandFeatures.initialize(self.server.dicts)
    93             self.server.expandFeatures.initialize(self.server.dicts)
    80         # Create Model
    94         # Create Model
    81         if os.path.isfile(self.server.args.modelFile):
    95         if os.path.isfile(self.server.args.modelFile):
    82             self.server.model.load(self.server.args.modelFile)          
    96             self.server.model.load(self.server.args.modelFile)          
       
    97         #elif not self.server.args.modelFile == '../tmp/model.pickle':
       
    98         #    raise IOError('Cannot find modelFile at %s '% self.server.args.modelFile)        
    83         elif self.server.args.init:
    99         elif self.server.args.init:
    84             trainData = self.server.dicts.featureDict.keys()
   100             trainData = self.server.dicts.featureDict.keys()
    85             self.server.model.initializeModel(trainData,self.server.dicts)
   101             self.server.model.initializeModel(trainData,self.server.dicts)
    86            
   102            
    87         if self.server.args.statistics:
   103         if self.server.args.statistics:
    88             self.server.stats = Statistics(self.server.args.cutOff)
   104             self.server.stats = Statistics(self.server.args.cutOff)
    89             self.server.statementCounter = 1
   105             self.server.statementCounter = 1
    90             self.server.computeStats = False
   106             self.server.computeStats = False
    91 
   107 
    92         # Set up logging
       
    93         logging.basicConfig(level=logging.DEBUG,
       
    94                             format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
       
    95                             datefmt='%d-%m %H:%M:%S',
       
    96                             filename=self.server.args.log+'server',
       
    97                             filemode='w')    
       
    98         self.server.logger = logging.getLogger('server')
       
    99         self.server.logger.debug('Initialized in '+str(round(time()-self.startTime,2))+' seconds.')
   108         self.server.logger.debug('Initialized in '+str(round(time()-self.startTime,2))+' seconds.')
   100         self.request.sendall('Server initialized in '+str(round(time()-self.startTime,2))+' seconds.')
   109         self.request.sendall('Server initialized in '+str(round(time()-self.startTime,2))+' seconds.')
   101         self.server.callCounter = 1
   110         self.server.callCounter = 1
   102 
   111 
   103     def update(self):
   112     def update(self):
   115             self.server.statementCounter += 1
   124             self.server.statementCounter += 1
   116 
   125 
   117         if self.server.args.expandFeatures:
   126         if self.server.args.expandFeatures:
   118             self.server.expandFeatures.update(self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId])
   127             self.server.expandFeatures.update(self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId])
   119         # Update Dependencies, p proves p
   128         # Update Dependencies, p proves p
   120         self.server.dicts.dependenciesDict[problemId] = [problemId]+self.server.dicts.dependenciesDict[problemId]
   129         if not problemId == 0:
       
   130             self.server.dicts.dependenciesDict[problemId] = [problemId]+self.server.dicts.dependenciesDict[problemId]
       
   131         ###TODO: 
   121         self.server.model.update(problemId,self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId])
   132         self.server.model.update(problemId,self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId])
       
   133         #self.server.model.update(problemId,self.server.dicts.featureDict[problemId],self.server.dicts.dependenciesDict[problemId],self.server.dicts)
   122 
   134 
   123     def overwrite(self):
   135     def overwrite(self):
   124         # Overwrite old proof.
   136         # Overwrite old proof.
   125         problemId,newDependencies = self.server.dicts.parse_overwrite(self.data)
   137         problemId,newDependencies = self.server.dicts.parse_overwrite(self.data)
   126         newDependencies = [problemId]+newDependencies
   138         newDependencies = [problemId]+newDependencies