def _loadClassesInfo(self, iteration): """ Read some information about the produced Relion 3D classes from the *model.star file. """ self._classesInfo = {} # store classes info, indexed by class id modelFn = self._protocol._getFileName('model', iter=iteration) modelIter = Table.iterRows('model_classes@' + modelFn) for classNumber, row in enumerate(modelIter): index, fn = relionToLocation(row.rlnReferenceImage) # Store info indexed by id self._classesInfo[classNumber + 1] = (index, fn, row)
def fillClassesFromIter(self, clsSet, iteration): """ Create the SetOfClasses3D from a given iteration. """ prot = self._protocol # shortcut self._loadClassesInfo(iteration) tableName = 'particles@' # if Plugin.IS_GT30() else '' dataStar = prot._getFileName('data', iter=iteration) pixelSize = prot.inputParticles.get().getSamplingRate() self._reader = createReader(alignType=self._alignType, pixelSize=pixelSize) mdIter = Table.iterRows(tableName + dataStar, key='rlnImageId') clsSet.classifyItems(updateItemCallback=self._updateParticle, updateClassCallback=self._updateClass, itemDataIterator=mdIter, doClone=False)
def _fillDataFromIter(self, subtomoClassesSet, iteration): # tableName = 'particles@' if self.IS_GT30() else '' dataStar = self._getFileName('data', iter=iteration) # imgSet.setAlignmentProj() for item in subtomoClassesSet: item.setAlignmentProj() # with open(dataStar) as fid: # self.dataTable.readStar(fid) self.reader = convert31.Reader( alignType=ALIGN_PROJ, pixelSize=subtomoClassesSet.getSamplingRate()) mdIter = Table.iterRows(dataStar, key='rlnImageName') subtomoClassesSet.copyItems(self._getInputParticles(), doClone=False, updateItemCallback=self._updateParticle, itemDataIterator=mdIter)