def createOutputStep(self):

        outVolFn = self._getExtraPath("inputVolumeAligned.mrc")
        Ts = self.inputVolume.get().getSamplingRate()
        self.runJob("xmipp_image_header",
                    "-i %s --sampling_rate %f" % (outVolFn, Ts))
        outVol = Volume()
        outVol.setLocation(outVolFn)
        #set transformation matrix
        fhInputTranMat = self._getExtraPath('transformation-matrix.txt')
        transMatFromFile = np.loadtxt(fhInputTranMat)
        transformationMat = np.reshape(transMatFromFile, (4, 4))
        transform = Transform()
        transform.setMatrix(transformationMat)
        outVol.setTransform(transform)
        outVol.setSamplingRate(Ts)

        outputArgs = {'outputVolume': outVol}
        self._defineOutputs(**outputArgs)
        self._defineSourceRelation(self.inputVolume, outVol)

        #particles....
        outParticlesFn = self._getExtraPath('outputParticles.xmd')
        outputParticles = self._createSetOfParticles()
        outputParticles.copyInfo(self.inputParticles.get())
        outputParticles.setAlignmentProj()
        readSetOfParticles(outParticlesFn, outputParticles)
        outputArgs = {'outputParticles': outputParticles}
        self._defineOutputs(**outputArgs)
        self._defineSourceRelation(self.inputParticles, outputParticles)
    def createOutputStep(self):
        Ts = self.inputReference.get().getSamplingRate()

        vols = []
        idx = 1
        for vol in self._iterInputVolumes():
            outVol = Volume()
            fnOutVol = self._getExtraPath("vol%02d.mrc" % idx)
            outVol.setLocation(fnOutVol)
            outVol.setObjComment(vol.getObjComment())
            #set transformation matrix
            fhInputTranMat = self._getExtraPath(
                'transformation-matrix_vol%06d.txt' % idx)
            transMatFromFile = np.loadtxt(fhInputTranMat)
            transformationMat = np.reshape(transMatFromFile, (4, 4))
            transform = Transform()
            transform.setMatrix(transformationMat)
            outVol.setTransform(transform)
            vols.append(outVol)

            # Set the sampling rate in the mrc header
            self.runJob("xmipp_image_header",
                        "-i %s --sampling_rate %f" % (fnOutVol, Ts))

            idx += 1

        if len(vols) > 1:
            volSet = self._createSetOfVolumes()
            volSet.setSamplingRate(Ts)
            for vol in vols:
                volSet.append(vol)
            outputArgs = {'outputVolumes': volSet}
        else:
            vols[0].setSamplingRate(Ts)
            outputArgs = {'outputVolume': vols[0]}

        self._defineOutputs(**outputArgs)
        if len(vols) > 1:
            for pointer in self.inputVolumes:
                self._defineSourceRelation(pointer,
                                           outputArgs['outputVolumes'])
        else:
            for pointer in self.inputVolumes:
                self._defineSourceRelation(pointer, outputArgs['outputVolume'])