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
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)
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)
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
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)
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
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
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
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
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
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
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
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
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)