Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #4
0
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()