Beispiel #1
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'))
Beispiel #2
0
def postEvaluation(log,WorkingDir):
        levelFiles=glob.glob(os.path.join(WorkingDir,"extra/level_??/level_classes_core.xmd"))
        if levelFiles:
            levelFiles.sort()
            lastLevelFile=levelFiles[-1]
            createLink(log,lastLevelFile,os.path.join(WorkingDir,'classes_core.xmd'))
        levelFiles=glob.glob(os.path.join(WorkingDir,"extra/level_??/level_classes_stable_core.xmd"))
        if levelFiles:
            levelFiles.sort()
            lastLevelFile=levelFiles[-1]
            createLink(log,lastLevelFile,os.path.join(WorkingDir,'classes_stable_core.xmd'))
Beispiel #3
0
def postCl2d(log, WorkingDir, NumberOfReferences):
    levelDirs=glob.glob(os.path.join(WorkingDir,"extra/level_??"))
    createLink(log,os.path.join(WorkingDir,"extra/images.xmd"),os.path.join(WorkingDir,"images.xmd"))
    if levelDirs:
        levelDirs.sort()
        lastLevelDir=levelDirs[-1]
        fnLastLevelFile=os.path.join(lastLevelDir,"level_classes.xmd")
        from protlib_xmipp import getMdSize
        size = getMdSize("classes@"+fnLastLevelFile)
        if size == NumberOfReferences:
            createLink(log, fnLastLevelFile, os.path.join(WorkingDir,"classes.xmd"))
def rewriteClassBlock(log,WorkingDir,ExtraDir):
    fnClassMetadata=os.path.join(ExtraDir,"kerdensom_classes.xmd")
    fnClass="classes@%s"%fnClassMetadata
    fnClassStack=os.path.join(ExtraDir,"classes.stk")
    mD = MetaData(fnClass)
    counter = 1
    for id in mD:
        mD.setValue(MDL_IMAGE,"%06d@%s"%(counter,fnClassStack),id)
        counter += 1
    mD.write(fnClass,MD_APPEND)
    createLink(log,fnClassMetadata,os.path.join(WorkingDir,"classes.xmd"))
    createLink(log,os.path.join(ExtraDir,"kerdensom_images.xmd"),os.path.join(WorkingDir,"images.xmd"))
def createAcquisition(log,InputFile,WorkingDir,DoResize,NewSize):
    fnAcqIn = findAcquisitionInfo(InputFile)
    if not fnAcqIn is None:
        fnAcqOut = getProtocolFilename('acquisition', WorkingDir=WorkingDir)
              
        if not DoResize:
            createLink(log, fnAcqIn, fnAcqOut)
        else:    
            md = MetaData(fnAcqIn)
            id = md.firstObject()
            Ts = md.getValue(MDL_SAMPLINGRATE, id)
            (Xdim, Ydim, Zdim, Ndim, _) = MetaDataInfo(InputFile)
            downsampling = float(Xdim)/NewSize;
            md.setValue(MDL_SAMPLINGRATE,Ts*downsampling,id)
            md.write(getProtocolFilename('acquisition', WorkingDir=WorkingDir))
def createResults(log
                 , CTFDatName
                 , DoCtfCorrection
                 , inDocfile
                 , listWithResultVolume
                 , resultsImages
                 , resultsClasses3DRef
                 , resultsClasses3DRefDefGroup
                 , resultsVolumes
                 , selFileName
                 , workingDir
                  ):
    ''' Create standard output results_images, result_classes'''
    from os import remove
    from os.path import exists
    #create metadata file with volume names
    mdVolume = MetaData()
    for resultVolume in listWithResultVolume:
        objId = mdVolume.addObject()
        mdVolume.setValue(MDL_IMAGE,resultVolume,objId)
        #link also last iteration volumes
        createLink(log,resultVolume,join(workingDir, basename(resultVolume)))
    mdVolume.write(resultsVolumes)
    #read file with results
    allExpImagesinDocfile = FileName()
    all_exp_images="all_exp_images"
    allExpImagesinDocfile.compose(all_exp_images, inDocfile)
    md = MetaData(allExpImagesinDocfile)
    #read file with ctfs
    mdOut = MetaData()
    if DoCtfCorrection:
        #read only image and ctf_model
        mdOut = MetaData()
        mdCTF = MetaData()
        mdCTF.read(CTFDatName, [MDL_IMAGE, MDL_CTF_MODEL])
        md.addIndex(MDL_IMAGE)
        mdCTF.addIndex(MDL_IMAGE)
        mdOut.joinNatural(md, mdCTF)
    else:
        mdOut = MetaData(md)#becareful with copy metadata since it only copies pointers
    mdref3D = MetaData()
    mdrefCTFgroup = MetaData()
    mdref3D.aggregate(mdOut, AGGR_COUNT, MDL_REF3D, MDL_REF3D, MDL_COUNT)
    mdrefCTFgroup.aggregate(mdOut, AGGR_COUNT, MDL_DEFGROUP, MDL_DEFGROUP, MDL_COUNT)
    #total number Image
    numberImages = mdOut.size()
    #total number CTF
    numberDefocusGroups = mdrefCTFgroup.size()
    #total number volumes 
    numberRef3D = mdref3D.size()
    fnResultImages=FileName()
    fnResultClasses=FileName()

    fnResultImages.compose("images",resultsImages)
    comment  = " numberImages=%d..................................................... "%numberImages
    comment += " numberDefocusGroups=%d................................................."%numberDefocusGroups
    comment += " numberRef3D=%d........................................................."%numberRef3D
    #
    mdAux1 = MetaData()
    mdAux2 = MetaData()
    mdAux1.read(selFileName,[MDL_IMAGE,MDL_ITEM_ID])
    mdAux2.join1(mdOut, mdAux1, MDL_IMAGE, LEFT_JOIN)
    mdAux2.setComment(comment)
    mdAux2.write(fnResultImages)
    #
    #make query and store ref3d with all
    for id in mdref3D:
        ref3D = mdref3D.getValue(MDL_REF3D, id)
        md.importObjects(mdOut, MDValueEQ(MDL_REF3D, ref3D))
        fnResultClasses.compose(("images_ref3d%06d"%ref3D),resultsClasses3DRef)
        md.write(fnResultClasses,MD_APPEND)
    
    md2=MetaData()
    for id in mdref3D:
        ref3D = mdref3D.getValue(MDL_REF3D, id)
        #a multiquey would be better but I do not know how to implement it in python
        md.importObjects(mdOut, MDValueEQ(MDL_REF3D, ref3D))
        for id in mdrefCTFgroup:
            defocusGroup = mdrefCTFgroup.getValue(MDL_DEFGROUP, id)
            md2.importObjects(md, MDValueEQ(MDL_DEFGROUP, defocusGroup))
            fnResultClasses.compose(("images_ref3d%06d_defocusGroup%06d"%(ref3D,defocusGroup)),resultsClasses3DRefDefGroup)
            md2.write(fnResultClasses,MD_APPEND)