Example #1
0
def reformatOutputPDB(log,WorkingDir,NumberOfModes):
    currentDir=os.getcwd()
    changeDir(log,WorkingDir)
    createDir(log,"modes")
    Natoms=countAtoms("atoms.pdb")
    fhIn=open('diagrtb.eigenfacs')
    fhAni=open('vec_ani.txt','w')
    for n in range(NumberOfModes):
        # Skip two lines
        fhIn.readline()
        fhIn.readline()
        fhOut=open('modes/vec.%d'%(n+1),'w')
        for i in range(Natoms):
            line=fhIn.readline()
            fhOut.write(line)
            fhAni.write(line.rstrip().lstrip()+" ")
        fhOut.close()
        if n!=(NumberOfModes-1):
            fhAni.write("\n")
    fhIn.close()
    fhAni.close()
    runJob(log,"nma_prepare_for_animate.py","")
    runJob(log,"rm","vec_ani.txt")
    moveFile(log,'vec_ani.pkl','extra/vec_ani.pkl')
    changeDir(log,currentDir)
Example #2
0
def runCLTomo(log, WorkingDir, params, nproc):
    runJob(log,'xmipp_mpi_classify_CLTomo','%d %s'%(nproc,params))
    levelFiles=glob.glob(WorkingDir+"/extra/results_classes_level*.xmd")
    if levelFiles:
        levelFiles.sort()
        lastLevelFile=levelFiles[-1]
        createLink(log,lastLevelFile,os.path.join(WorkingDir,'results.xmd'))
def integrateVolumes(log,WorkingDir,NumVolumes,NumIter):
    
    fnOut = 'volumesProposed.xmd'
    for n in range(NumVolumes-1):
        fnRoot=os.path.join(WorkingDir,'volumeProposed%05d'%n)
        fnRoot2=os.path.join(WorkingDir,'volumeProposed%05d'%n+1)
        runJob(log,"xmipp_metadata_utilities","-i %s --set union_all %s -o %s"%(fnRoot,fnRoot2,fnOut))
def coarseSearch(log,WorkingDir,InputVolume,CylinderRadius,Rot0, RotF, RotStep, Z0, ZF, ZStep, NumberOfThreads,fnCoarse):
    args="-i %s --sym helical -z %f %f %f --rotHelical %f %f %f --thr %d -o %s"%(InputVolume,float(Z0),float(ZF),float(ZStep),
                                                                  float(Rot0),float(RotF),float(RotStep),NumberOfThreads,fnCoarse)
    if CylinderRadius>0:
        [xdim,ydim,zdim,ndim]=getImageSize(InputVolume)
        args+=" --mask cylinder %d %d"%(int(-CylinderRadius),int(-xdim))
    runJob(log,'xmipp_volume_find_symmetry',args)
def getBestVolumes(log,WorkingDir,NRansac,NumVolumes,UseAll):
    volumes = []
    inliers = []
    
    for n in range(NRansac):
        fnAngles = os.path.join(WorkingDir,"tmp/angles_ransac%05d"%n+".xmd")
        md=MetaData("inliers@"+fnAngles)
        numInliers=md.getValue(MDL_WEIGHT,md.firstObject())
        volumes.append(fnAngles)
        inliers.append(numInliers)
    
    index = sorted(range(inliers.__len__()), key=lambda k: inliers[k])
    fnBestAngles = ''
    threshold=getCCThreshold(WorkingDir)
 
    i=NRansac-1
    indx = 0
    while i>=0 and indx<NumVolumes:
        fnBestAngles = volumes[index[i]]
        fnBestAnglesOut=os.path.join(WorkingDir,"volumeProposed%05d"%indx+".xmd")
        copyFile(log,fnBestAngles,fnBestAnglesOut)
        print("Best volume "+str(indx)+" = "+fnBestAngles)
        if not UseAll:
            runJob(log,"xmipp_metadata_utilities","-i %s -o %s --query select \"maxCC>%f \" --mode append" %(fnBestAnglesOut,fnBestAnglesOut,threshold))
            if getMdSize(fnBestAnglesOut) > 0:
                indx += 1
        else:
            indx += 1
        i -= 1
        
    # Remove unnecessary files
    for n in range(NRansac):
        fnAngles = os.path.join(WorkingDir,"tmp/angles_ransac%05d"%n+".xmd")
        deleteFile(log, fnAngles)
def scoreFinalVolumes(log,WorkingDir,NumVolumes):
    threshold=getCCThreshold(WorkingDir)
    mdOut=MetaData()
    for n in range(NumVolumes):
        fnRoot=os.path.join(WorkingDir,'volumeProposed%05d'%n)
        fnAssignment=fnRoot+".xmd"
        if exists(fnAssignment):
            runJob(log,"xmipp_metadata_utilities","-i %s --fill weight constant 1"%fnAssignment)
            MDassignment=MetaData(fnAssignment)
            sum=0
            thresholdedSum=0
            N=0
            minCC=2
            for id in MDassignment:
                cc=MDassignment.getValue(MDL_MAXCC,id)
                sum+=cc
                thresholdedSum+=cc-threshold
                if cc<minCC:
                    minCC=cc
                N+=1
            avg=sum/N
            id=mdOut.addObject()
            mdOut.setValue(MDL_IMAGE,fnRoot+".vol",id)
            mdOut.setValue(MDL_VOLUME_SCORE_SUM,float(sum),id)
            mdOut.setValue(MDL_VOLUME_SCORE_SUM_TH,float(thresholdedSum),id)
            mdOut.setValue(MDL_VOLUME_SCORE_MEAN,float(avg),id)
            mdOut.setValue(MDL_VOLUME_SCORE_MIN,float(minCC),id)
    mdOut.write(os.path.join(WorkingDir,"volumesProposed.xmd"))
Example #7
0
def animateModes(log,WorkingDir,LastMode,Amplitude,NFrames,Downsample,PseudoAtomThreshold,PseudoAtomRadius,Sampling,StructureType):
    createDir(log,os.path.join(WorkingDir,"extra/animations"))
    currentDir=os.getcwd()
    changeDir(log,WorkingDir)
    if StructureType=="EM":
        fn="pseudoatoms.pdb"
        runJob(log,"nma_animate_pseudoatoms.py","%s extra/vec_ani.pkl 7 %d %f extra/animations/animated_mode %d %d %f"%\
                  (fn,LastMode,Amplitude,NFrames,Downsample,PseudoAtomThreshold))
    else:
        fn="atoms.pdb"
    	runJob(log,"nma_animate_atoms.py","%s extra/vec_ani.pkl 7 %d %f extra/animations/animated_mode %d"%\
                  (fn,LastMode,Amplitude,NFrames))
    
    for mode in range(7,LastMode+1):
        fnAnimation="extra/animations/animated_mode_%03d"%mode
        fhCmd=open(fnAnimation+".vmd",'w')
        fhCmd.write("mol new "+os.path.join(WorkingDir,fnAnimation)+".pdb\n")
        fhCmd.write("animate style Loop\n")
        fhCmd.write("display projection Orthographic\n")
        if StructureType=="EM":
            fhCmd.write("mol modcolor 0 0 Beta\n")
            fhCmd.write("mol modstyle 0 0 Beads %f 8.000000\n"%(PseudoAtomRadius*Sampling))
        else:
            fhCmd.write("mol modcolor 0 0 Index\n")
            fhCmd.write("mol modstyle 0 0 Beads 1.000000 8.000000\n")
        fhCmd.write("animate speed 0.5\n")
        fhCmd.write("animate forward\n")
        fhCmd.close();
    
    changeDir(log,currentDir)
def createProjections(_log
                      ,AngSamplingRateDeg
                      ,DocFileExp
                      ,maskReconstructedVolume
                      ,MaxChangeInAngles
                      , MpiJobSize
                      ,NumberOfMpi
                      ,NumberOfThreads
                      ,referenceStack
                      ,SymmetryGroup
):

    parameters  = ' -i ' +  maskReconstructedVolume 
    parameters += ' --experimental_images ' +  DocFileExp
    
    parameters += ' -o ' +  referenceStack
    parameters += ' --sampling_rate ' + AngSamplingRateDeg
    parameters += ' --sym ' + SymmetryGroup +'h'
    parameters += ' --compute_neighbors --near_exp_data ' 
    parameters += ' --angular_distance ' + str(MaxChangeInAngles)
    if ((NumberOfMpi *NumberOfThreads)>1):
            parameters += ' --mpi_job_size ' + MpiJobSize

    runJob(_log,'xmipp_angular_project_library',
                             parameters,
                             NumberOfMpi *NumberOfThreads)
Example #9
0
def vector2img(log, Mask, ExtraDir):
    args=' -i ' + os.path.join(ExtraDir,"kerdensom_vectors.xmd")+\
         ' -o ' + os.path.join(ExtraDir,"classes.stk")
    if Mask != '':
        args += ' --mask binary_file ' + Mask
    runJob(log,"xmipp_image_vectorize", args)
    deleteFiles(log, [os.path.join(ExtraDir,"kerdensom_vectors.xmd"),os.path.join(ExtraDir,"kerdensom_vectors.vec")], True)
def setOption(log,OperationSetType, md, md2, Label, Label2, fnOut,ModeType):
    if OperationSetType=="inner_join":
        runJob(log,'xmipp_metadata_utilities',"-i %s --set %s %s %s %s -o %s --mode %s"
               %(md,OperationSetType,md2,Label,Label2,fnOut,ModeType))
    else:
        runJob(log,'xmipp_metadata_utilities',"-i %s --set %s %s %s %s -o %s --mode %s"
               %(md,OperationSetType,md2,Label,Label2,fnOut,ModeType))
def  filter_volume(_log
                   , FourierMaxFrequencyOfInterest
                   , ReconstructedVolume
                   , ReconstructedFilteredVolume
                   , DoComputeResolution
                   , OuterRadius
                   , DoLowPassFilter
                   , UseFscForFilter
                   , ConstantToAddToFiltration
                   , ResolutionXmdPrevIterMax
                   , ResolSam
                   ):

    if (not DoLowPassFilter):
        copyFile(_log, ReconstructedVolume, ReconstructedFilteredVolume)
    else:   
        if (UseFscForFilter):
           if (FourierMaxFrequencyOfInterest == -1):
               md = MetaData(ResolutionXmdPrevIterMax)
               id = md.firstObject()
               FourierMaxFrequencyOfInterest = md.getValue(MDL_RESOLUTION_FREQREAL, id)
               FourierMaxFrequencyOfInterest = ResolSam / FourierMaxFrequencyOfInterest
            
           filter_in_pixels_at = float(FourierMaxFrequencyOfInterest) + float(ConstantToAddToFiltration)
        else:
           filter_in_pixels_at = float(ConstantToAddToFiltration)

        if (filter_in_pixels_at > 0.5):
           copyFile(_log, ReconstructedVolume, ReconstructedFilteredVolume)
        else:
           command = " -i " + ReconstructedVolume + \
                     " -o " + ReconstructedFilteredVolume + ' --fourier low_pass ' + \
                     str (filter_in_pixels_at)
           runJob(_log, "xmipp_transform_filter", command)
Example #12
0
def runResize(log,stack,new_size,Nproc):
    size = MetaDataInfo(stack)[0]
    args="-i %(stack)s" % locals()
    if new_size<size:
        args+=" --fourier %(new_size)d" % locals()
    else:
        args+=" --dim %(new_size)d" % locals()
    runJob(log,"xmipp_image_resize",args,Nproc)
def window(log,input,OutModel,SingleVolume,Size):
    if Size>0:
        args="-i %s --size %d"%(input,int(Size))
        if not SingleVolume:
            args+=" --save_metadata_stack"
        if input!=OutModel:
            args+=" -o %s"%OutModel
        runJob(log,"xmipp_transform_window",args)
Example #14
0
def kerdensom(log,ExtraDir,SomXdim,SomYdim,SomReg0,SomReg1,SomSteps,KerdensomExtraCommand):
    args='-i '+join(ExtraDir,"rotSpectra.xmd")+\
         ' --oroot '+join(ExtraDir,"kerdensom")+\
         ' --xdim ' + str(SomXdim) + \
         ' --ydim ' + str(SomYdim) + \
         ' --deterministic_annealing %f %f %f'%(SomSteps,SomReg0,SomReg1) + \
         ' '+ str(KerdensomExtraCommand)
    runJob(log,"xmipp_classify_kerdensom",args)
    deleteFiles(log, [os.path.join(ExtraDir,"rotSpectra.xmd"),os.path.join(ExtraDir,"rotSpectra.vec")], True)
Example #15
0
def convertFromPDB(log,InModel,WorkingDir,Ts,Size,CenterPDB):
    args="-i %s -o %s/volume --sampling %f"%(InModel,WorkingDir,Ts)
    if CenterPDB:
        args+=" --centerPDB"
    if Size>0:
        args+=" --size %d"%(int(Size))
    if Ts>4:
        args+=" --poor_Gaussian"
    runJob(log,"xmipp_volume_from_pdb",args)
Example #16
0
def runFourierFilter(log,stack,freq_low,freq_high,freq_decay,Nproc):
    program = "xmipp_transform_filter"
    args = "-i %(stack)s --fourier "
    if freq_low == 0:
        args += "low_pass %(freq_high)f %(freq_decay)f"
    elif freq_high == 0.5:
        args += "high_pass %(freq_low)f %(freq_decay)f"
    else:
        args += "band_pass %(freq_low)f %(freq_high)f %(freq_decay)f"
    runJob(log, program, args % locals())
def symmetrize(log,WorkingDir,InputVolume,OutputVolume,CylinderRadius,fnFine):
    md=MetaData(fnFine)
    id=md.firstObject()
    rot0=md.getValue(MDL_ANGLE_ROT,id)
    z0=md.getValue(MDL_SHIFT_Z,id)
    args="-i %s --sym helical --helixParams %f %f -o %s"%(InputVolume,z0,rot0,OutputVolume)
    runJob(log,'xmipp_transform_symmetrize',args)
    if CylinderRadius>0:
        [xdim,ydim,zdim,ndim]=getImageSize(InputVolume)
        args="-i %s --mask cylinder %d %d"%(OutputVolume,int(-CylinderRadius),int(-xdim))
        runJob(log,'xmipp_transform_mask',args)
def fineSearch(log,WorkingDir,InputVolume,CylinderRadius,fnCoarse,Rot0, RotF, Z0, ZF,fnFine):
    md=MetaData(fnCoarse)
    id=md.firstObject()
    rot0=md.getValue(MDL_ANGLE_ROT,id)
    z0=md.getValue(MDL_SHIFT_Z,id)
    args="-i %s --sym helical -z %f %f --rotHelical %f %f --localHelical %f %f -o %s"%(InputVolume,float(Z0),float(ZF),
                                                                                       float(Rot0),float(RotF),z0,rot0,fnFine)
    if CylinderRadius>0:
        [xdim,ydim,zdim,ndim]=getImageSize(InputVolume)
        args+=" --mask cylinder %d %d"%(int(-CylinderRadius),int(-xdim))
    runJob(log,'xmipp_volume_find_symmetry',args)
def segment(log,WorkingDir,InModel,SegmentationType,SegmentationMass,Ts):
    fnMask="%s/mask.vol"%WorkingDir
    args="-i %s -o %s --method "%(InModel,fnMask)
    if SegmentationType=="Number of voxels":
        args+="voxel_mass %d"%(int(SegmentationMass))
    elif SegmentationType=="Number of aminoacids":
        args+="aa_mass %d %f"%(int(SegmentationMass),float(Ts))
    elif SegmentationType=="Dalton mass":
        args+="dalton_mass %d %f"%(int(SegmentationMass),float(Ts))
    else:
        args+="otsu"
    runJob(log,"xmipp_volume_segment",args)
def splitMetadata(log,InMetadata,WorkingDir,Nparts,SortBy,RemoveDisabled,RandomSplit):
    fnRoot=os.path.join(WorkingDir,'images')
    args="-i %s --oroot %s -n %d"%(InMetadata,fnRoot,Nparts)
    if SortBy=="Do not sort":
        args+=" --dont_sort"
    elif SortBy=="image name":
        args+=" --l image"
    elif SortBy=="micrograph name":
        args+=" --l micrograph"
    if not RandomSplit:
        args+=" --dont_randomize"
    runJob(log,"xmipp_metadata_split",args)
def launchParticlePickingGUI(log, InputMicrographs, ExtraDir, PickingMode=PM_MANUAL,
                             TiltPairs=False, Memory=2):
    ''' Utility function to launch the Particle Picking application '''
    if TiltPairs:
        program = "xmipp_micrograph_tiltpair_picking "
        args="-i micrographPairs@%(InputMicrographs)s"%locals()
    else:
        program = "xmipp_micrograph_particle_picking"
        args="-i %(InputMicrographs)s"%locals()
    args += " -o %(ExtraDir)s --mode %(PickingMode)s --memory %(Memory)dg"%locals()
   
    runJob(log, program, args, RunInBackground=False)
Example #22
0
def sortImages(log, ImagesFn, rejectionMethod='None', maxZscore=3, percentage=5):    
    md = MetaData(ImagesFn)
    if not md.isEmpty():
        args=""
        if rejectionMethod=='MaxZscore':
            args+=" --zcut "+str(maxZscore)
        elif rejectionMethod=='Percentage':
            args+=" --percent "+str(percentage)
        runJob(log, "xmipp_image_sort_by_statistics","-i %(ImagesFn)s --addToInput" % locals()+args)
        md.read(ImagesFn) # Should have ZScore label after runJob
        md.sort(MDL_ZSCORE)
        md.write(ImagesFn)        
Example #23
0
def sortClasses(log,ExtraDir,Nproc,suffix):
    if Nproc==1:
        Nproc=2
    if Nproc>8:
        Nproc=8
    for filename in glob.glob(os.path.join(ExtraDir,"level_??/level_classes%s.xmd"%suffix)):
        level=int(re.search('level_(\d\d)',filename).group(1))
        fnRoot=os.path.join(ExtraDir,"level_%02d/level_classes%s_sorted"%(level,suffix))
        params= "-i classes@"+filename+" --oroot "+fnRoot
        runJob(log,"xmipp_image_sort",params,Nproc)
        mD=MetaData(fnRoot+".xmd")
        mD.write("classes_sorted@"+filename,MD_APPEND)
        deleteFile(log,fnRoot+".xmd")
def sortImages(log, inputFile, outputFile, addToSelf, rejectionMethod, maxZscore, percentage):
    from xmipp import MetaDataInfo
    (Xdim, Ydim, Zdim, Ndim, _) = MetaDataInfo(inputFile)
    args=""
    if rejectionMethod=='MaxZscore':
        args+=" --zcut "+str(maxZscore)
    elif rejectionMethod=='Percentage':
        args+=" --percent "+str(percentage)
    if Ndim > 0:
        if addToSelf: 
            runJob(log,"xmipp_image_sort_by_statistics","-i "+outputFile+" --addToInput"+args)
        else:
            runJob(log,"xmipp_image_sort_by_statistics","-i "+inputFile+" -o "+outputFile+args)
def automaticRejection(log,WorkingDir,condition,MDL_TYPE):
    fnMic=os.path.join(WorkingDir,"micrographs.xmd")
    fnRejected=os.path.join(WorkingDir,"tmp/rejectedMicrographs.xmd")
    runJob(log,"xmipp_metadata_utilities",'-i %s --query select "%s" -o %s'%(fnMic,condition,fnRejected))
    md = xmipp.MetaData(fnRejected)
    fnRejectedMicrographs=md.getColumnValues(MDL_TYPE)
    md.read(fnMic)
    for id in md:
        fnCurrentMicrograph=md.getValue(MDL_TYPE,id)
        if fnCurrentMicrograph in fnRejectedMicrographs:
            md.setValue(xmipp.MDL_ENABLED,-1,id)
    md.write(fnMic)
    deleteFile(log,fnRejected)
Example #26
0
def projMatch(log, WorkingDir,WorkingDirStructure, fnClasses, fnBase, AngularSampling, SymmetryGroup, Xdim):
    fnRoot=os.path.join(WorkingDirStructure,fnBase)
    fnGallery=os.path.join(WorkingDir,'tmp/gallery_'+fnBase+'.stk')
    
    AngularSampling=int(max(floor(AngularSampling/2.0),2));
    runJob(log,"xmipp_angular_project_library", "-i %s.vol -o %s --sampling_rate %f --sym %s --method fourier 1 0.25 bspline --compute_neighbors --angular_distance -1 --experimental_images %s -v 0"\
                          %(fnRoot,fnGallery,float(AngularSampling),SymmetryGroup,fnClasses))

    runJob(log,"xmipp_angular_projection_matching", "-i %s.xmd -o %s.xmd --ref %s --Ri 0 --Ro %s --max_shift %s --append -v 0"\
           %(fnRoot,fnRoot,fnGallery,str(Xdim/2),str(Xdim/20)))
            
    deleteFile(log,os.path.join(WorkingDir,'tmp/gallery_'+fnBase+'_sampling.xmd'))
    deleteFile(log,os.path.join(WorkingDir,'tmp/gallery_'+fnBase+'.doc'))
    deleteFile(log,os.path.join(WorkingDir,'tmp/gallery_'+fnBase+'.stk'))
Example #27
0
def evaluateClasses(log,WorkingDir,ExtraDir,subset):
    levelFiles=glob.glob(os.path.join(ExtraDir,"level_??/level_classes%s.xmd"%subset))
    levelFiles.sort()
    for filename in levelFiles:
        runJob(log,"xmipp_classify_evaluate_classes","-i "+filename)
        level=int(re.search('level_(\d\d)',filename).group(1))
        if level>0:
            previousFile=os.path.join(ExtraDir,"level_%02d/level_classes%s.xmd"%(level-1,subset))
            if os.path.exists(previousFile):
                fnOut="%s/classes%s_hierarchy.txt"%(ExtraDir,subset)
                args="--i1 %s --i2 %s -o %s"%(previousFile,filename,fnOut)
                if os.path.exists(fnOut):
                    args+=" --append"
                runJob(log,"xmipp_classify_compare_classes",args)
Example #28
0
def qualifyModes(log,WorkingDir,NumberOfModes,StructureType,CollectivityThreshold):
    currentDir=os.getcwd()
    changeDir(log,WorkingDir)
    
    fnVec=glob.glob("modes/vec.*")
    if len(fnVec)<NumberOfModes:
        fhWarning=open("warnings.xmd",'w')
        fhWarning.write(redStr("There are only "+str(len(fnVec))+" modes instead of "+str(NumberOfModes)+". Check the number of modes you asked to compute and/or consider increasing cut-off distance. The maximum number of modes allowed by the method for atomic normal mode analysis is 6 times the number of RTB blocks and for pseudoatomic normal mode analysis 3 times the number of pseudoatoms. However, the protocol allows only up to 200 modes as 20-100 modes are usually enough. If the number of modes is below the minimum between these two numbers, consider increasing cut-off distance.")+"\n")
        fhWarning.close()

    fnDiag="diagrtb.eigenfacs"
    if StructureType=="EM":
        runJob(log,"nma_reformatForElNemo.sh","%d"%NumberOfModes)
        fnDiag="diag_arpack.eigenfacs"
        
    runJob(log,"echo","%s | nma_check_modes"%fnDiag)
    deleteFile(log,fnDiag)
    
    fh=open("Chkmod.res")
    MDout=MetaData()
    collectivityList=[]
    for n in range(NumberOfModes):
        line=fh.readline()
        collectivity=float(line.split()[1])
        collectivityList.append(collectivity)

        id=MDout.addObject()
        MDout.setValue(MDL_NMA_MODEFILE,os.path.join(WorkingDir,"modes/vec.%d"%(n+1)),id)
        MDout.setValue(MDL_ORDER,long(n+1),id)
        if n>=6:
            MDout.setValue(MDL_ENABLED,1,id)
        else:
            MDout.setValue(MDL_ENABLED,-1,id)
        MDout.setValue(MDL_NMA_COLLECTIVITY,collectivity,id)
        if collectivity<CollectivityThreshold:
            MDout.setValue(MDL_ENABLED,-1,id)
    fh.close()
    idxSorted=[i[0] for i in sorted(enumerate(collectivityList), key=lambda x:x[1])]
    score=[0]*NumberOfModes
    for i in range(NumberOfModes):
       score[i]+=i+1
       score[idxSorted[i]]+=NumberOfModes-i
    i=0
    for id in MDout:
        score_i=float(score[i])/(2.0*NumberOfModes)
        MDout.setValue(MDL_NMA_SCORE,score_i,id)
        i+=1
    MDout.write("modes.xmd")
    deleteFile(log,"Chkmod.res")
    changeDir(log,currentDir)
Example #29
0
def runNormalize(log,stack,normType,bgRadius,Nproc):
    program = "xmipp_transform_normalize"
    args = "-i %(stack)s "
    
    if bgRadius <= 0:
        particleSize = MetaDataInfo(stack)[0]
        bgRadius = int(particleSize/2)
    
    if normType=="OldXmipp":
        args += "--method OldXmipp"
    elif normType=="NewXmipp":
        args += "--method NewXmipp --background circle %(bgRadius)d"
    else:
        args += "--method Ramp --background circle %(bgRadius)d"
    runJob(log, program, args % locals(), Nproc)
def maskVolume(_log
              ,dRradiusMax
              ,dRradiusMin
              ,maskReconstructedVolume
              ,reconstructedVolume
              ,NumberOfMpi
              ,NumberOfThreads
):
    parameters  = ' -i ' +  reconstructedVolume 
    parameters += ' -o ' +  maskReconstructedVolume 
    parameters += ' --mask raised_crown -%d -%d 2' %(dRradiusMin, dRradiusMax)

    runJob( _log,"xmipp_transform_mask",
                             parameters,
                             NumberOfMpi *NumberOfThreads)