def insertAffinityPropagationRun(self, classes): ### Preliminary data numclass = len(classes.keys()) projectid = apProject.getProjectIdFromAlignStackId(self.params['alignstackid']) alignstackdata = appiondata.ApAlignStackData.direct_query(self.params['alignstackid']) pathdata = appiondata.ApPathData(path=os.path.abspath(self.params['rundir'])) ### Affinity Propagation Params object affpropq = appiondata.ApAffinityPropagationClusterParamsData() affpropq['mask_diam'] = 2.0*self.params['maskrad'] affpropq['run_seconds'] = time.time()-self.t0 affpropq['preference_type'] = self.params['preftype'] ### Align Analysis Run object analysisq = appiondata.ApAlignAnalysisRunData() analysisq['runname'] = self.params['runname'] analysisq['path'] = pathdata analysisq['description'] = self.params['description'] analysisq['alignstack'] = alignstackdata analysisq['hidden'] = False ### linked through cluster not analysis ### Clustering Run object clusterrunq = appiondata.ApClusteringRunData() clusterrunq['runname'] = self.params['runname'] clusterrunq['description'] = self.params['description'] clusterrunq['boxsize'] = alignstackdata['boxsize'] clusterrunq['pixelsize'] = alignstackdata['pixelsize'] clusterrunq['num_particles'] = self.params['numpart'] clusterrunq['alignstack'] = alignstackdata clusterrunq['analysisrun'] = analysisq clusterrunq['affpropparams'] = affpropq ### Clustering Stack object clusterstackq = appiondata.ApClusteringStackData() clusterstackq['avg_imagicfile'] = "classaverage-"+self.timestamp+".hed" clusterstackq['num_classes'] = numclass clusterstackq['clusterrun'] = clusterrunq clusterstackq['path'] = pathdata clusterstackq['hidden'] = False imagicfile = os.path.join(self.params['rundir'], clusterstackq['avg_imagicfile']) if not os.path.isfile(imagicfile): apDisplay.printError("could not find average stack file: "+imagicfile) ### looping over clusters apDisplay.printColor("Inserting particle classification data, please wait", "cyan") for i,classkey in enumerate(classes.keys()): classnum = i+1 partlist = classes[classkey] #print "MINIMUM: ", min(partlist) classroot = "%s.%d"% (self.timestamp, classnum-1) classdocfile = os.path.join(self.params['rundir'], classroot) ### Clustering Particle object clusterrefq = appiondata.ApClusteringReferenceData() clusterrefq['refnum'] = classnum clusterrefq['clusterrun'] = clusterrunq clusterrefq['path'] = pathdata clusterrefq['num_particles'] = len(partlist) #clusterrefq['ssnr_resolution'] = self.cluster_resolution[i] ### looping over particles sys.stderr.write(".") for partnum in partlist: alignpartdata = self.getAlignParticleData(partnum, alignstackdata) ### Clustering Particle objects clusterpartq = appiondata.ApClusteringParticleData() clusterpartq['clusterstack'] = clusterstackq clusterpartq['alignparticle'] = alignpartdata clusterpartq['partnum'] = partnum clusterpartq['refnum'] = classnum clusterpartq['clusterreference'] = clusterrefq ### finally we can insert parameters if self.params['commit'] is True: clusterpartq.insert() return
def insertRotKerDenSOM(self): inserttime = time.time() ### Preliminary data projectid = apProject.getProjectIdFromAlignStackId(self.params['alignstackid']) alignstackdata = appiondata.ApAlignStackData.direct_query(self.params['alignstackid']) numclass = self.params['xdim']*self.params['ydim'] pathdata = appiondata.ApPathData(path=os.path.abspath(self.params['rundir'])) ### rotKerDen SOM Params object rotkerdenson = appiondata.ApRotKerDenSOMParamsData() #rotkerdenson['mask_diam'] = 2.0*self.params['maskrad'] rotkerdenson['x_dimension'] = self.params['xdim'] rotkerdenson['y_dimension'] = self.params['ydim'] #rotkerdenson['convergence'] = self.params['converge'] rotkerdenson['run_seconds'] = time.time()-self.t0 rotkerdenson['initregulfact'] = self.params['initregulfact'] rotkerdenson['finalregulfact'] = self.params['finalregulfact'] rotkerdenson['incrementregulfact'] = self.params['incrementregulfact'] rotkerdenson['spectrainnerradius'] = self.params['spectrainnerradius'] rotkerdenson['spectraouterradius'] = self.params['spectraouterradius'] rotkerdenson['spectralowharmonic'] = self.params['spectralowharmonic'] rotkerdenson['spectrahighharmonic'] = self.params['spectrahighharmonic'] ### Analysis Run object analysisq = appiondata.ApAlignAnalysisRunData() analysisq['runname'] = self.params['runname'] analysisq['path'] = pathdata analysisq['description'] = self.params['description'] analysisq['alignstack'] = alignstackdata analysisq['hidden'] = False ### Clustering Run object clusterrunq = appiondata.ApClusteringRunData() clusterrunq['runname'] = self.params['runname'] clusterrunq['description'] = self.params['description'] clusterrunq['boxsize'] = alignstackdata['boxsize'] clusterrunq['pixelsize'] = alignstackdata['pixelsize'] clusterrunq['num_particles'] = self.params['numpart'] clusterrunq['alignstack'] = alignstackdata clusterrunq['analysisrun'] = analysisq clusterrunq['rotkerdenparams'] = rotkerdenson ### Clustering Stack object #Stack with cluster averages?????? template =os.path.join(self.params['rundir'],self.spectraTemporalFilesMask + ".png") files = glob.glob(template) imglist = [] for listname in files: a=apImage.readPNG(listname) imglist.append(a) apImagicFile.writeImagic(imglist,"rotkerdenstack" +self.timestamp + ".hed") clusterstackq = appiondata.ApClusteringStackData() clusterstackq['avg_imagicfile'] = "rotkerdenstack"+self.timestamp+".hed" clusterstackq['num_classes'] = numclass clusterstackq['clusterrun'] = clusterrunq clusterstackq['path'] = pathdata clusterstackq['hidden'] = False imagicfile = os.path.join(self.params['rundir'], clusterstackq['avg_imagicfile']) if not os.path.isfile(imagicfile): apDisplay.printError("could not find average stack file: "+imagicfile) ### looping over clusters apDisplay.printColor("Inserting particle classification data, please wait", "cyan") numclass = self.params['xdim']*self.params['ydim'] for i in range(numclass): classnum = i+1 classroot = "%s.%d"% (self.timestamp, classnum-1) classdocfile = os.path.join(self.params['rundir'], classroot) partlist = self.readClassDocFile(classdocfile) ### Clustering Particle object # MRC image for each code node but plot or image clusterrefq = appiondata.ApClusteringReferenceData() clusterrefq['refnum'] = classnum clusterrefq['avg_mrcfile'] = classroot+".mrc" clusterrefq['clusterrun'] = clusterrunq clusterrefq['path'] = pathdata clusterrefq['num_particles'] = len(partlist) ### looping over particles #which particles belong to which code node sys.stderr.write(".") for partnum in partlist: alignpartdata = self.getAlignParticleData(partnum, alignstackdata) ### Clustering Particle objects clusterpartq = appiondata.ApClusteringParticleData() clusterpartq['clusterstack'] = clusterstackq clusterpartq['alignparticle'] = alignpartdata clusterpartq['partnum'] = partnum clusterpartq['refnum'] = classnum clusterpartq['clusterreference'] = clusterrefq ### finally we can insert parameters if self.params['commit'] is True: clusterpartq.insert() sys.stderr.write("\n") apDisplay.printMsg("Insertion complete in %s"%(apDisplay.timeString(time.time()-inserttime)))
def insertKerDenSOM(self, binned=None): ### Preliminary data projectid = apProject.getProjectIdFromAlignStackId(self.params['alignstackid']) alignstackdata = appiondata.ApAlignStackData.direct_query(self.params['alignstackid']) numclass = self.params['xdim']*self.params['ydim'] pathdata = appiondata.ApPathData(path=os.path.abspath(self.params['rundir'])) ### KerDen SOM Params object kerdenq = appiondata.ApKerDenSOMParamsData() kerdenq['mask_diam'] = 2.0*self.params['maskrad'] kerdenq['x_dimension'] = self.params['xdim'] kerdenq['y_dimension'] = self.params['ydim'] kerdenq['convergence'] = self.params['converge'] kerdenq['run_seconds'] = time.time()-self.t0 ### Align Analysis Run object analysisq = appiondata.ApAlignAnalysisRunData() analysisq['runname'] = self.params['runname'] analysisq['path'] = pathdata analysisq['description'] = self.params['description'] analysisq['alignstack'] = alignstackdata analysisq['hidden'] = False ### linked through cluster not analysis #analysisq['kerdenparams'] = kerdenq ### Clustering Run object clusterrunq = appiondata.ApClusteringRunData() clusterrunq['runname'] = self.params['runname'] clusterrunq['description'] = self.params['description'] # what if we binned the aligned stack to get the new one if binned is None: boxsize = alignstackdata['boxsize'] pixelsize = alignstackdata['pixelsize'] else: boxsize = alignstackdata['boxsize'] / binned pixelsize = alignstackdata['pixelsize'] * binned clusterrunq['boxsize'] = boxsize clusterrunq['pixelsize'] = pixelsize clusterrunq['num_particles'] = self.params['numpart'] clusterrunq['alignstack'] = alignstackdata clusterrunq['analysisrun'] = analysisq clusterrunq['kerdenparams'] = kerdenq ### Clustering Stack object clusterstackq = appiondata.ApClusteringStackData() clusterstackq['avg_imagicfile'] = "kerdenstack"+self.timestamp+".hed" clusterstackq['num_classes'] = numclass clusterstackq['clusterrun'] = clusterrunq clusterstackq['path'] = pathdata clusterstackq['hidden'] = False imagicfile = os.path.join(self.params['rundir'], clusterstackq['avg_imagicfile']) if not os.path.isfile(imagicfile): apDisplay.printError("could not find average stack file: "+imagicfile) ### looping over clusters apDisplay.printColor("Inserting particle classification data, please wait", "cyan") for i in range(numclass): classnum = i+1 classroot = "%s.%d"% (self.timestamp, classnum-1) classdocfile = os.path.join(self.params['rundir'], classroot) partlist = self.readClassDocFile(classdocfile) ### Clustering Particle object clusterrefq = appiondata.ApClusteringReferenceData() clusterrefq['refnum'] = classnum clusterrefq['avg_mrcfile'] = classroot+".mrc" clusterrefq['clusterrun'] = clusterrunq clusterrefq['path'] = pathdata clusterrefq['num_particles'] = len(partlist) clusterrefq['ssnr_resolution'] = self.cluster_resolution[i] ### looping over particles sys.stderr.write(".") for partnum in partlist: alignpartdata = self.getAlignParticleData(partnum, alignstackdata) ### Clustering Particle objects clusterpartq = appiondata.ApClusteringParticleData() clusterpartq['clusterstack'] = clusterstackq clusterpartq['alignparticle'] = alignpartdata clusterpartq['partnum'] = partnum clusterpartq['refnum'] = classnum clusterpartq['clusterreference'] = clusterrefq ### finally we can insert parameters if self.params['commit'] is True: clusterpartq.insert()
def insertRotKerDenSOM(self): inserttime = time.time() ### Preliminary data projectid = apProject.getProjectIdFromAlignStackId( self.params['alignstackid']) alignstackdata = appiondata.ApAlignStackData.direct_query( self.params['alignstackid']) numclass = self.params['xdim'] * self.params['ydim'] pathdata = appiondata.ApPathData( path=os.path.abspath(self.params['rundir'])) ### rotKerDen SOM Params object rotkerdenson = appiondata.ApRotKerDenSOMParamsData() #rotkerdenson['mask_diam'] = 2.0*self.params['maskrad'] rotkerdenson['x_dimension'] = self.params['xdim'] rotkerdenson['y_dimension'] = self.params['ydim'] #rotkerdenson['convergence'] = self.params['converge'] rotkerdenson['run_seconds'] = time.time() - self.t0 rotkerdenson['initregulfact'] = self.params['initregulfact'] rotkerdenson['finalregulfact'] = self.params['finalregulfact'] rotkerdenson['incrementregulfact'] = self.params['incrementregulfact'] rotkerdenson['spectrainnerradius'] = self.params['spectrainnerradius'] rotkerdenson['spectraouterradius'] = self.params['spectraouterradius'] rotkerdenson['spectralowharmonic'] = self.params['spectralowharmonic'] rotkerdenson['spectrahighharmonic'] = self.params[ 'spectrahighharmonic'] ### Analysis Run object analysisq = appiondata.ApAlignAnalysisRunData() analysisq['runname'] = self.params['runname'] analysisq['path'] = pathdata analysisq['description'] = self.params['description'] analysisq['alignstack'] = alignstackdata analysisq['hidden'] = False ### Clustering Run object clusterrunq = appiondata.ApClusteringRunData() clusterrunq['runname'] = self.params['runname'] clusterrunq['description'] = self.params['description'] clusterrunq['boxsize'] = alignstackdata['boxsize'] clusterrunq['pixelsize'] = alignstackdata['pixelsize'] clusterrunq['num_particles'] = self.params['numpart'] clusterrunq['alignstack'] = alignstackdata clusterrunq['analysisrun'] = analysisq clusterrunq['rotkerdenparams'] = rotkerdenson ### Clustering Stack object #Stack with cluster averages?????? template = os.path.join(self.params['rundir'], self.spectraTemporalFilesMask + ".png") files = glob.glob(template) imglist = [] for listname in files: a = apImage.readPNG(listname) imglist.append(a) apImagicFile.writeImagic(imglist, "rotkerdenstack" + self.timestamp + ".hed") clusterstackq = appiondata.ApClusteringStackData() clusterstackq[ 'avg_imagicfile'] = "rotkerdenstack" + self.timestamp + ".hed" clusterstackq['num_classes'] = numclass clusterstackq['clusterrun'] = clusterrunq clusterstackq['path'] = pathdata clusterstackq['hidden'] = False imagicfile = os.path.join(self.params['rundir'], clusterstackq['avg_imagicfile']) if not os.path.isfile(imagicfile): apDisplay.printError("could not find average stack file: " + imagicfile) ### looping over clusters apDisplay.printColor( "Inserting particle classification data, please wait", "cyan") numclass = self.params['xdim'] * self.params['ydim'] for i in range(numclass): classnum = i + 1 classroot = "%s.%d" % (self.timestamp, classnum - 1) classdocfile = os.path.join(self.params['rundir'], classroot) partlist = self.readClassDocFile(classdocfile) ### Clustering Particle object # MRC image for each code node but plot or image clusterrefq = appiondata.ApClusteringReferenceData() clusterrefq['refnum'] = classnum clusterrefq['avg_mrcfile'] = classroot + ".mrc" clusterrefq['clusterrun'] = clusterrunq clusterrefq['path'] = pathdata clusterrefq['num_particles'] = len(partlist) ### looping over particles #which particles belong to which code node sys.stderr.write(".") for partnum in partlist: alignpartdata = self.getAlignParticleData( partnum, alignstackdata) ### Clustering Particle objects clusterpartq = appiondata.ApClusteringParticleData() clusterpartq['clusterstack'] = clusterstackq clusterpartq['alignparticle'] = alignpartdata clusterpartq['partnum'] = partnum clusterpartq['refnum'] = classnum clusterpartq['clusterreference'] = clusterrefq ### finally we can insert parameters if self.params['commit'] is True: clusterpartq.insert() sys.stderr.write("\n") apDisplay.printMsg("Insertion complete in %s" % (apDisplay.timeString(time.time() - inserttime)))