def relabeliseSpots(self,mw, nofrois, name, geo, offset): mask = mw.getSelectionMask( ).astype("i") mask = (mask>0).astype("i") newmask = spotdetection.relabelise(mask,mask, nofrois) self.checkNspots(newmask.max(), nofrois , name) mw.setSelectionMask( newmask ) globalMask = self.mws[0].getSelectionMask().astype("i") globalMask[geo] = newmask self.mws[0].setSelectionMask( globalMask )
def registerSpots( self, mw, layoutString , name, nofrois) : mask = mw.getSelectionMask().astype("i") newmask = spotdetection.relabelise(mask,mask, nofrois) self.checkNspots(newmask.max(), nofrois , name) mask = newmask nspots = mask.max() spots = [] for i in range(1,nspots+1): zone = (mask==i) mask[zone]=i+100 m = zone.astype("f") msum=m.sum() if msum: ny,nx = m.shape px= (m.sum(axis=0)*numpy.arange(nx)).sum()/msum py= (m.sum(axis=1)*numpy.arange(ny)).sum()/msum spots.append((py,px,i)) self.checkNspots(len(spots), nofrois , name) print type(str(layoutString)) if "3x4" in str(layoutString): positions = [ [px,py] for (py,px,i) in spots ] print str( numpy.array(positions)) choices = match.register(numpy.array(positions) ) newspots = [] for (cx,cy),(y,x,i) in zip(choices, spots ): print x,y, cx, cy newspots.append((y,x,i, (cy*4+cx)+1 ) ) else: spots.sort() newspots = [] for k,(y,x,i) in enumerate( spots): newspots.append((y,x,i,k+1) ) print " NEWSPOTS ", newspots for (y,x,i,k) in newspots: zone = (mask==(i+100)) mask[zone] = k mw.setSelectionMask(mask)