def average_sub_pl(self, pl, name_prefix, weight_average): """For worker node, do two things, averaging & obtaining the even/odd partitions to save some time. @param pl: particle list @type ps: L{pytom.basic.structures.ParticleList} @param name_prefix: name prefix output densities @type name_prefix: C{str} @param weight_average: weighted average @type weight_average: C{str} """ from pytom.basic.structures import ParticleList even = ParticleList('.') odd = ParticleList('.') for i in range(len(pl)): if i % 2 == 0: even.append(pl[i]) else: odd.append(pl[i]) even.average(name_prefix + 'even.em', progressBar=False, createInfoVolumes=False, _mpiParallel=False, weighting=weight_average) odd.average(name_prefix + 'odd.em', progressBar=False, createInfoVolumes=False, _mpiParallel=False, weighting=weight_average)
def average_sub_pl(self, pl, name_prefix, weight_average): """For worker node, do two things, averaging & obtaining the even/odd partitions to save some time. """ from pytom.basic.structures import ParticleList even = ParticleList('.') odd = ParticleList('.') for i in xrange(len(pl)): if i % 2 == 0: even.append(pl[i]) else: odd.append(pl[i]) even.average(name_prefix + 'even.em', progressBar=False, createInfoVolumes=False, _mpiParallel=False, weighting=weight_average) odd.average(name_prefix + 'odd.em', progressBar=False, createInfoVolumes=False, _mpiParallel=False, weighting=weight_average)
from pytom_volume import read from sh.frm import frm_align_vol from pytom.tools.maths import rotation_distance, euclidianDistance from pytom.tools.timing import Timing from pytom.basic.structures import ParticleList from pytom.basic.structures import Shift, Rotation pl = ParticleList('.') pl.fromXMLFile('/fs/home/ychen/4Chen/first100.xml') r = read('/fs/home/ychen/4Chen/avg_first100.em') for pp in pl: v = read(pp.getFilename()) pos, ang = frm_align_vol(v, [-60.0, 60.0], r, [8, 32], 10, mask=30) pp.setShift( Shift([ pos[0] - v.sizeX() / 2, pos[1] - v.sizeY() / 2, pos[2] - v.sizeZ() / 2 ])) pp.setRotation(Rotation(ang)) pl.average('average.em', True)
def growingAverageNew(particleList=None,angleObject=None,maskFile=None,scoreObject=None,startClassNumber=0,destinationDirectory='.',preprocessing = None,binning=1,verbose=False): """ """ from pytom.alignment.alignmentFunctions import bestAlignment from pytom.basic.structures import Reference,Particle,Rotation,ParticleList from pytom.alignment.preprocessing import Preprocessing if not preprocessing: preprocessing = Preprocessing() numberOfClasses = len(particleList.splitByClass()) if verbose: print('Processing ' + str(numberOfClasses) + ' classes.') print('Generating start average') startAverageList = particleList.particlesFromClass(float(startClassNumber)) startAverageList.average(destinationDirectory + '/GA_it0.em',progressBar=verbose) currentReference = Reference(destinationDirectory + '/GA_it0.em') growingAverageParticleList = ParticleList(particleList.getDirectory()) for p in startAverageList: p.setRotation(Rotation(0,0,0)) growingAverageParticleList.append(p) for i in range(2,numberOfClasses): currentParticleList = particleList.particlesFromClass(float(i)) if verbose: print('Generating ' + str(i) + '. class average') currentParticleList.average(destinationDirectory + '/CA_it'+str(i)+'.em',progressBar=verbose) currentParticle = Particle(destinationDirectory + '/CA_it'+str(i)+'.em',wedgeInfo=currentParticleList[0].getWedgeInfo()) if verbose: print('Running alignment iteration ' + str(i)) print(currentParticle) print(currentReference) currentPeak = bestAlignment(currentParticle.getVolume(),currentReference.getVolume(),currentReference.getWeighting(),currentParticle.getWedgeInfo(),angleObject,scoreObject,maskFile,preprocessing=preprocessing,binning=binning) if verbose: print('Parameters determined:') print(currentPeak) for p in currentParticleList: p.setRotation(currentPeak.getRotation()) p.setShift(currentPeak.getShift()) growingAverageParticleList.append(p) if verbose: print('Generating growing average ' + str(i)) growingAverageParticleList.average(destinationDirectory + '/GA_it'+ str(i) +'.em',progressBar=verbose) currentReference = Reference(destinationDirectory + '/GA_it'+ str(i) +'.em') angleObject.reset()