示例#1
0
    def __createTemporaryCtfs(self, obj, setOfMics):
        """ Create a temporary .sqlite file to visualize CTF while the
             protocol has not finished yet.
            """
        cleanPath(obj._getPath("ctfs_temporary.sqlite"))
        ctfSet = self.protocol._createSetOfCTF("_temporary")

        for mic in setOfMics:
            micFn = mic.getFileName()
            micDir = obj._getExtraPath(removeBaseExt(mic.getFileName()))
            samplingRate = mic.getSamplingRate() * self.protocol.ctfDownFactor.get()
            mic.setSamplingRate(samplingRate)
            out = self.protocol._getCtfOutPath(micDir)
            psdFile = self.protocol._getPsdPath(micDir)

            if exists(out) and exists(psdFile):
                ctfModel = em.CTFModel()
                readCtfModel(ctfModel, out,
                             ctf4=self.protocol.useCtffind4.get())
                ctfModel.setPsdFile(psdFile)
                ctfModel.setMicrograph(mic)
                ctfSet.append(ctfModel)

        if not ctfSet.isEmpty():
            ctfSet.write()
            ctfSet.close()

        return ctfSet
示例#2
0
 def _createOutputStep(self):
     ctfSet = self._createSetOfCTF()
     ctfSet.setMicrographs(self.inputMics)
     defocusList = []
     
     for _, micDir, mic in self._iterMicrographs():
         samplingRate = mic.getSamplingRate() * self.ctfDownFactor.get()
         mic.setSamplingRate(samplingRate)
         psdFile = self._getPsdPath(micDir)
         out = self._getCtfOutPath(micDir)
         
         ctfModel = em.CTFModel()
     
         if not self.useCftfind4:
             readCtfModel(ctfModel, out)
         else:
             readCtfModel(ctfModel, out, True)
         
         ctfModel.setPsdFile(psdFile)
         ctfModel.setMicrograph(mic)
         
         defocusList.append(ctfModel.getDefocusU())
         defocusList.append(ctfModel.getDefocusV())
         ctfSet.append(ctfModel)
     
     self._defocusMaxMin(defocusList)
     self._defineOutputs(outputCTF=ctfSet)
     self._defineCtfRelation(self.inputMics, ctfSet)
示例#3
0
 def visualizeObjs(obj, setOfMics):
     if exists(obj._getPath("ctfs_temporary.sqlite")):
         os.remove(obj._getPath("ctfs_temporary.sqlite"))
      
     ctfSet = self.protocol._createSetOfCTF("_temporary")
     for fn, micDir, mic in iterMicrographs(setOfMics):
         samplingRate = mic.getSamplingRate() * self.protocol.ctfDownFactor.get()
         mic.setSamplingRate(samplingRate)
         out = self.protocol._getCtfOutPath(micDir)
         psdFile = self.protocol._getPsdPath(micDir)
         
         if exists(out) and exists(psdFile):
             ctfModel = em.CTFModel()
         
             if not self.protocol.useCftfind4:
                 readCtfModel(ctfModel, out)
             else:
                 readCtfModel(ctfModel, out, True)
             
             ctfModel.setPsdFile(psdFile)
             ctfModel.setMicrograph(mic)
             
             ctfSet.append(ctfModel)
     
     if ctfSet.getSize() < 1:
         raise Exception("Has not been completed the CTF estimation of any micrograph")
     else:
         ctfSet.write()
         ctfSet.close()
         self._visualize(ctfSet)
示例#4
0
    def __createTemporaryCtfs(self, obj, setOfMics):
        """ Create a temporary .sqlite file to visualize CTF while the
             protocol has not finished yet.
            """
        cleanPath(obj._getPath("ctfs_temporary.sqlite"))
        ctfSet = self.protocol._createSetOfCTF("_temporary")

        for mic in setOfMics:
            micFn = mic.getFileName()
            micDir = obj._getExtraPath(removeBaseExt(mic.getFileName()))
            samplingRate = mic.getSamplingRate(
            ) * self.protocol.ctfDownFactor.get()
            mic.setSamplingRate(samplingRate)
            out = self.protocol._getCtfOutPath(micDir)
            psdFile = self.protocol._getPsdPath(micDir)

            if exists(out) and exists(psdFile):
                ctfModel = em.CTFModel()
                readCtfModel(ctfModel,
                             out,
                             ctf4=self.protocol.useCtffind4.get())
                ctfModel.setPsdFile(psdFile)
                ctfModel.setMicrograph(mic)
                ctfSet.append(ctfModel)

        if not ctfSet.isEmpty():
            ctfSet.write()
            ctfSet.close()

        return ctfSet
示例#5
0
        def visualizeObjs(obj, setOfMics):
            if exists(obj._getPath("ctfs_temporary.sqlite")):
                os.remove(obj._getPath("ctfs_temporary.sqlite"))

            ctfSet = self.protocol._createSetOfCTF("_temporary")
            for fn, micDir, mic in iterMicrographs(setOfMics):
                samplingRate = mic.getSamplingRate(
                ) * self.protocol.ctfDownFactor.get()
                mic.setSamplingRate(samplingRate)
                out = self.protocol._getCtfOutPath(micDir)
                psdFile = self.protocol._getPsdPath(micDir)

                if exists(out) and exists(psdFile):
                    ctfModel = em.CTFModel()
                    readCtfModel(ctfModel, out)
                    ctfModel.setPsdFile(psdFile)
                    ctfModel.setMicrograph(mic)
                    ctfSet.append(ctfModel)

            if ctfSet.getSize() < 1:
                raise Exception(
                    "Has not been completed the CTF estimation of any micrograph"
                )
            else:
                ctfSet.write()
                ctfSet.close()
                self._visualize(ctfSet)
示例#6
0
 def _createNewCtfModel(self, mic):
     micDir = self._getMicrographDir(mic)
     out = self._getCtfOutPath(micDir)
     psdFile = self._getPsdPath(micDir)
     ctfModel2 = em.CTFModel()
     readCtfModel(ctfModel2, out, ctf4=self.useCtffind4.get())
     ctfModel2.setPsdFile(psdFile)
     ctfModel2.setMicrograph(mic)
     return ctfModel2
示例#7
0
    def importCTF(self, mic, fileName):
        ctf = CTFModel()
        ctf.setMicrograph(mic)
        readCtfModel(ctf, fileName, ctf4=ctffindOutputVersion(fileName) == 4)

        for suffix in ["_psd.mrc", ".mrc"]:
            if os.path.exists(pwutils.removeExt(fileName) + suffix):
                ctf.setPsdFile(pwutils.removeExt(fileName) + suffix)
        return ctf
示例#8
0
 def _createNewCtfModel(self, mic):
     micDir = self._getMicrographDir(mic)
     out = self._getCtfOutPath(micDir)
     psdFile = self._getPsdPath(micDir)
     ctfModel2 = em.CTFModel()
     
     if not self.useCftfind4:
         readCtfModel(ctfModel2, out)
     else:
         readCtfModel(ctfModel2, out, True)
     
     ctfModel2.setPsdFile(psdFile)
     ctfModel2.setMicrograph(mic)
     return ctfModel2
示例#9
0
    def importCTF(self, mic, fileName):
        ctf = CTFModel()
        ctf.setMicrograph(mic)
        readCtfModel(ctf, fileName, ctf4=ctffindOutputVersion(fileName) == 4)

        # Try to find the given PSD file associated with the cttfind log file
        # we handle special cases of .ctf extension and _ctffindX prefix for Relion runs
        fnBase = pwutils.removeExt(fileName)
        for suffix in ["_psd.mrc", ".mrc", ".ctf"]:
            psdPrefixes = [fnBase, fnBase.replace("_ctffind3", ""), fnBase.replace("_ctffind4", "")]
            for prefix in psdPrefixes:
                psdFile = prefix + suffix
                if os.path.exists(psdFile):
                    if psdFile.endswith(".ctf"):
                        psdFile += ":mrc"
                    ctf.setPsdFile(psdFile)
        return ctf
示例#10
0
    def _createCtfModel(self, mic, updateSampling=True):
        #  When downsample option is used, we need to update the
        # sampling rate of the micrograph associated with the CTF
        # since it could be downsampled
        if updateSampling:
            newSampling = mic.getSamplingRate() * self.ctfDownFactor.get()
            mic.setSamplingRate(newSampling)

        micDir = self._getMicrographDir(mic)
        out = self._getCtfOutPath(micDir)
        psdFile = self._getPsdPath(micDir)

        ctfModel2 = em.CTFModel()
        readCtfModel(ctfModel2, out)
        ctfModel2.setPsdFile(psdFile)
        ctfModel2.setMicrograph(mic)

        return ctfModel2
示例#11
0
    def _createCtfModel(self, mic, updateSampling=True):
        #  When downsample option is used, we need to update the
        # sampling rate of the micrograph associeted with the CTF
        # since it could be downsampled
        if updateSampling:
            newSampling = mic.getSamplingRate() * self.ctfDownFactor.get()
            mic.setSamplingRate(newSampling)

        micDir = self._getMicrographDir(mic)
        out = self._getCtfOutPath(micDir)
        psdFile = self._getPsdPath(micDir)

        ctfModel = em.CTFModel()
        readCtfModel(ctfModel, out, ctf4=self.useCtffind4.get())
        ctfModel.setPsdFile(psdFile)
        ctfModel.setMicrograph(mic)

        return ctfModel
示例#12
0
 def importCTF(self, mic, fileName):
     ctf = CTFModel()
     ctf.setMicrograph(mic)
     readCtfModel(ctf, fileName, ctf4=False)
     
     # Try to find the given PSD file associated with the cttfind log file
     # we handle special cases of .ctf extension and _ctffindX prefix for Relion runs
     fnBase = pwutils.removeExt(fileName)
     for suffix in ['_psd.mrc', '.mrc', '.ctf']:
         psdPrefixes = [fnBase, 
                        fnBase.replace('_ctffind3', ''),
                        fnBase.replace('_gctf', '')]
         for prefix in psdPrefixes:
             psdFile =  prefix + suffix
             if os.path.exists(psdFile):
                 if psdFile.endswith('.ctf'):
                     psdFile += ':mrc'
                 ctf.setPsdFile(psdFile)
     return ctf
示例#13
0
    def importCTF(self, mic, fileName):
        ctf = CTFModel()
        ctf.setMicrograph(mic)
        readCtfModel(ctf, fileName, ctf4=False)

        # Try to find the given PSD file associated with the cttfind log file
        # we handle special cases of .ctf extension and _ctffindX prefix for Relion runs
        fnBase = pwutils.removeExt(fileName)
        for suffix in ['_psd.mrc', '.mrc', '.ctf']:
            psdPrefixes = [
                fnBase,
                fnBase.replace('_ctffind3', ''),
                fnBase.replace('_gctf', '')
            ]
            for prefix in psdPrefixes:
                psdFile = prefix + suffix
                if os.path.exists(psdFile):
                    if psdFile.endswith('.ctf'):
                        psdFile += ':mrc'
                    ctf.setPsdFile(psdFile)
        return ctf
示例#14
0
 def _createOutputStep(self):
     ctfSet = self._createSetOfCTF()
     ctfSet.setMicrographs(self.inputMics)
     defocusList = []
     
     for _, micDir, mic in self._iterMicrographs():
         samplingRate = mic.getSamplingRate() * self.ctfDownFactor.get()
         mic.setSamplingRate(samplingRate)
         psdFile = self._getPsdPath(micDir)
         out = self._getCtfOutPath(micDir)
         
         ctfModel = em.CTFModel()
         readCtfModel(ctfModel, out, ctf4=self.useCtffind4.get())
         ctfModel.setPsdFile(psdFile)
         ctfModel.setMicrograph(mic)
         
         defocusList.append(ctfModel.getDefocusU())
         defocusList.append(ctfModel.getDefocusV())
         ctfSet.append(ctfModel)
     
     self._defocusMaxMin(defocusList)
     self._defineOutputs(outputCTF=ctfSet)
     self._defineCtfRelation(self.inputMics, ctfSet)