示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)