def __init__(self,name):
     self.metric=name
     self.make_name()
     #self.param=0
     self.simCalc=SimCalculator()
     #self.reverse=False
     self.param=(0,False) #flag for negating values to swap direction of inequality - false is >, true is <
class ClassifierUP():
    def __init__(self,name):
        self.metric=name
        self.make_name()
        #self.param=0
        self.simCalc=SimCalculator()
        #self.reverse=False
        self.param=(0,False) #flag for negating values to swap direction of inequality - false is >, true is <

    def make_name(self):
        self.name=self.metric+"_UP"

    def fit(self,pairs,term_map,target):
        logging.info("Baseline fit: Ignoring training data as unsupervised classifier: "+self.name)

    def predict(self,pairs,term_map):
        #term_map is dictionary from terms (in pairs) to vectors
        #print "Baseline prediction: "+self.name
        #print "Generating width_map from "+str(len(term_map.keys()))+" keys"


        tags=[]
        for pair in pairs:
            wd = self.simCalc.compute_score(pair,term_map,self.metric)
            if self.param[1]:
                wd=-wd
            if wd > self.param[0]:
                tags.append(1)
            else:
                tags.append(0)

        return np.array(tags,dtype=int)

    def get_params(self):
        return str(self.param)
class ClassifierUP():
    def __init__(self,name):
        self.metric=name
        self.make_name()
        self.param=0
        self.simCalc=SimCalculator()

    def make_name(self):
        self.name=self.metric+"_UP"

    def fit(self,pairs,term_map,target):
        logging.info("Baseline fit: Ignoring training data as unsupervised classifier: "+self.name)

    def predict(self,pairs,term_map):
        #term_map is dictionary from terms (in pairs) to vectors
        #print "Baseline prediction: "+self.name
        #print "Generating width_map from "+str(len(term_map.keys()))+" keys"


        tags=[]
        for pair in pairs:
            wd = self.simCalc.compute_score(pair,term_map,self.metric)
            if wd > self.param:
                tags.append(1)
            else:
                tags.append(0)

        return np.array(tags,dtype=int)
 def __init__(self,name):
     self.metric=name
     self.make_name()
     self.param=0
     self.simCalc=SimCalculator()