def validation(Point_P, Point_Q, gEpG,radius,a=0.7): P = compactPoint(Point_P) P_list = P.keys() Q = compactPoint(Point_Q) Q_list = Q.keys() vr = validationReport() PQ_EpG = cross_EpG(gEpG,P_list,Q_list) #identificazione prove IJK,IKL,I=observations(P_list, Q_list, PQ_EpG) if len(IJK)+len(IKL)<4: vr.merge=True PE=[] QE=[] vr.setMerge(P,Q,PE,QE) #osservazione inlier_IJK,rkp,inlier_IKL,rip,inlier_I=pointTransferVectorized(P,Q,PQ_EpG,maxLevel=radius,alfa=a,IJK=IJK,IKL=IKL,I=I) #calcolo punteggio==>parte da rifare ISB=iterativeScoreBoard(P_list,Q_list,IJK,inlier_IJK,IKL,inlier_IKL,I,inlier_I) iterations=0 while ISB.board.outliers_count > 0 and ISB.tick(ExcludeClassifier): iterations+=1 #now the point is stable under worst point exclusion merge_x=ISB.mergeInputModel() vr.merge=MergeClassifier.predict(merge_x) if vr.merge: PE=ISB.Pe QE=ISB.Qe vr.setMerge(P,Q,PE,QE) else: vr.setSplit(P,Q,I) return vr
def scoring(self,realization,blameRatio=0.2): self.iSB=iterativeScoreBoard( self.P,self.Q, self.IJK,realization[0], self.IKL,realization[1], self.I,realization[2],Pe=[],Qe=[]) g=self.iSB.board.gain() iterations=0 while self.iSB.board.outliers_count > 0 and self.iSB.tick()>g: g=self.iSB.board.gain() #print iterations , self.iSB.board.inliers_count ," vs ", self.iSB.board.outliers_count iterations+=1 merge=self.iSB.board.gain()>0 if merge: P_exclude,Q_exclude=self.clearCommons( self.I,realization[2], self.iSB.board.P_inliers, self.iSB.board.P_outliers, self.iSB.board.Q_inliers, self.iSB.board.Q_outliers) self.iSB=iterativeScoreBoard( self.P,self.Q, self.IJK,realization[0], self.IKL,realization[1], self.I,realization[2], Pe=P_exclude,Qe=Q_exclude) g=self.iSB.board.gain() iterations=0 while self.iSB.board.outliers_count > 0 and self.iSB.tick()>g: g=self.iSB.board.gain() #print iterations , self.iSB.board.inliers_count ," vs ", self.iSB.board.outliers_count iterations+=1 P_exclude=self.iSB.Pe Q_exclude=self.iSB.Qe out=[self.mergeView(i,P_exclude,Q_exclude) for i in range(len(self.Pv))] out=''.join(out) else: P_exclude,Q_exclude=self.splitCommons( self.I,realization[2], self.iSB.board.P_inliers, self.iSB.board.P_outliers, self.iSB.board.Q_inliers, self.iSB.board.Q_outliers) p_out=[self.Pv[i] if i not in P_exclude else '?' for i in range(len(self.Pv))] q_out=[self.Qv[i] if i not in Q_exclude else '?' for i in range(len(self.Qv))] out=[''.join(p_out),''.join(q_out)] return merge,P_exclude,Q_exclude,out
def scoring2exclude(self,realization): self.iSB=iterativeScoreBoard( self.P,self.Q, self.IJK,realization[0], self.IKL,realization[1], self.I,realization[2],Pe=[],Qe=[]) iterations=0 return self.iSB
def scoring2merge(self,realization,ExcludeClassifier): self.iSB=iterativeScoreBoard( self.P,self.Q, self.IJK,realization[0], self.IKL,realization[1], self.I,realization[2],Pe=[],Qe=[]) iterations=0 while self.iSB.board.outliers_count > 0 and self.iSB.tick(ExcludeClassifier): iterations+=1 return self.iSB
def scoring2merge_old(self,realization,blameRatio=0.2): self.iSB=iterativeScoreBoard( self.P,self.Q, self.IJK,realization[0], self.IKL,realization[1], self.I,realization[2],Pe=[],Qe=[]) g=self.iSB.board.gain() iterations=0 while self.iSB.board.outliers_count > 0 and self.iSB.tick(acceptance=blameRatio)>g: g=self.iSB.board.gain() #print iterations , self.iSB.board.inliers_count ," vs ", self.iSB.board.outliers_count iterations+=1 return self.iSB