def genMergeCase(self,ExcludeClassifier,filterFunc=None):
     compliant=False
     x1,x2,Y=None,None,None
     while not compliant:
         x1='a'+choice(self.points)
         x2='a'+choice(self.points)
         Y=Oracle.mergeDecision(x1,x2)
         compliant=filterFunc(x1,x2,Y) if filterFunc else True
     #print x1,x2,'=>',Y
     s=Schema(x1,x2)
     R=s.expandX()[0]
     iSB=s.scoring2merge(R,ExcludeClassifier)
     X=iSB.mergeInputModel()
     #X=IN,OUT,SUM,DIFF
     return X,Y
 def genExcludeCaseGroup(self,filterFunc=None):
     x1,x2=None,None
     merge=False
     compliant=False
     while not (merge and compliant):
         x1='a'+choice(self.points)
         x2='a'+choice(self.points)
         merge=Oracle.mergeDecision(x1,x2)
         compliant=filterFunc(x1,x2,merge) if filterFunc else True
     s=Schema(x1,x2)
     R=s.expandX()[0]
     iSB=s.scoring2exclude(R)
     exP,exQ=iSB.excludeInputModels()
     exP_Y=Oracle.excludeOnMerge(x1)
     exQ_Y=Oracle.excludeOnMerge(x2)
     return zip(exP,[i in exP_Y for i in range(len(x1))])+zip(exQ,[i in exQ_Y for i in range(len(x2))])
 def genMergeCase_old(self,filterFunc=None,blame=0.2):
     #use old manual exclude classifier so it s deprecated
     compliant=False
     x1,x2,Y=None,None,None
     while not compliant:
         x1='a'+choice(self.points)
         x2='a'+choice(self.points)
         Y=Oracle.mergeDecision(x1,x2)
         compliant=filterFunc(x1,x2,Y) if filterFunc else True
     #print x1,x2,'=>',Y
     s=Schema(x1,x2)
     R=s.expandX()[0]
     iSB=s.scoring2merge_old(R,blameRatio=blame)
     X=iSB.mergeInputModel()
     #X=IN,OUT,SUM,DIFF
     return X,Y