Example #1
0
    def __init__(self):
        """
        """
        EDPluginExecProcessScript.__init__(self)
        self.setXSDataInputClass(XSDataInputDamaver)

        self.__xsDataResult = XSDataResultDamaver()

        self.__strSymmetry = ''
        self.__bAutomatic = True
Example #2
0
    def __init__(self):
        """
        """
        EDPluginExecProcessScript.__init__(self)
        self.setXSDataInputClass(XSDataInputDamaver)

        self.__xsDataResult = XSDataResultDamaver()

        self.__strSymmetry = ''
        self.__bAutomatic = True
Example #3
0
    def postProcess(self, _edObject=None):
        EDPluginExecProcessScript.postProcess(self)
        EDVerbose.DEBUG("EDPluginExecDamaverv0_1.postProcess")
        # Create some output data
        xsDataResult = XSDataResultDamaver()
        self.setDataOutput(xsDataResult)

        self.outputDamaverPdbFiles()
        if self.__bAutomatic:
            self.parseDamselLog()

        self.setDataOutput(self.__xsDataResult)
Example #4
0
class EDPluginExecDamaverv0_2(EDPluginExecProcessScript):
    """
    Execution plugin running DAMAVER pipeline for alignment of input pdb models,
    selecting the most typical one and building an averaged model  
    """
    knownSymmetry = ["P%i" % i for i in range(1, 20)
                     ] + ["P%i2" % i for i in range(2, 13)]

    #    name = "damaver"

    def __init__(self):
        """
        """
        EDPluginExecProcessScript.__init__(self)
        self.setXSDataInputClass(XSDataInputDamaver)

        self.__xsDataResult = XSDataResultDamaver()

        self.__strSymmetry = ''
        self.__bAutomatic = True

    def checkParameters(self):
        """
        Checks the mandatory parameters.
        """
        self.DEBUG("EDPluginExecDamaverv0_2.checkParameters")
        self.checkMandatoryParameters(self.dataInput, "Data Input is None")
        self.checkMandatoryParameters(self.dataInput.pdbInputFiles,
                                      "PDB input files are missing")

    def preProcess(self, _edObject=None):
        EDPluginExecProcessScript.preProcess(self)
        self.DEBUG("EDPluginExecDamaverv0_2.preProcess")

        self.checkDamaverPath()
        self.checkDamaverAutomaticInput()
        self.checkDamaverSymmetryInput()
        self.generateDamaverScript()

    def checkDamaverPath(self):
        if '.' in self.getScriptExecutable():
            self.WARNING(
                'Damaver might not run properly when \'.\' is present in the path to launch it'
            )

    def checkDamaverAutomaticInput(self):
        if self.dataInput.automatic:
            try:
                if self.dataInput.automatic:
                    self.__bAutomatic = self.dataInput.automatic.value
            except Exception as error:
                self.WARNING(
                    "Running Damaver automation pipeline by default: %s" %
                    error)

    def checkDamaverSymmetryInput(self):
        self.DEBUG("EDPluginExecDammifv0_2.checkDammifSymmetryInput")
        if self.dataInput.symmetry:
            try:
                if self.dataInput.symmetry.value in self.knownSymmetry:
                    self.__strSymmetry = self.dataInput.symmetry.value
            except Exception as error:
                self.WARNING(
                    "Symmetry wasn't specified. Setting symmetry to P1: %s" %
                    error)

    def postProcess(self, _edObject=None):
        EDPluginExecProcessScript.postProcess(self)
        self.DEBUG("EDPluginExecDamaverv0_2.postProcess")
        # Create some output data

        self.outputDamaverPdbFiles()
        if self.__bAutomatic:
            self.parseDamselLog()
        self.generateExecutiveSummary()
        self.__xsDataResult.status = XSDataStatus(
            message=self.getXSDataMessage(),
            executiveSummary=XSDataString(
                os.linesep.join(self.getListExecutiveSummaryLines())))
        self.dataOutput = self.__xsDataResult

    def outputDamaverPdbFiles(self):
        cwd = self.getWorkingDirectory()
        damaverPDB = os.path.join(cwd, "damaver.pdb")
        if os.path.exists(damaverPDB):
            self.__xsDataResult.model = XSDataSaxsModel(
                name=XSDataString("damaver"))
            self.__xsDataResult.damaverPdbFile = self.__xsDataResult.model.pdbFile = XSDataFile(
                XSDataString(damaverPDB))

        if self.__bAutomatic:
            damfilterFile = os.path.join(cwd, "damfilt.pdb")
            if os.path.exists(damfilterFile):
                self.__xsDataResult.damfilterPdbFile = XSDataFile(
                    XSDataString(damfilterFile))

            damstartFile = os.path.join(cwd, "damstart.pdb")
            if os.path.exists(damstartFile):
                self.__xsDataResult.damstartPdbFile = XSDataFile(
                    XSDataString(damstartFile))

    def parseDamselLog(self):
        damselLog = open(os.path.join(self.getWorkingDirectory(),
                                      "damsel.log"))

        for line in damselLog:
            wordsLine = [
                tmpStr for tmpStr in line.split(' ') if tmpStr is not ''
            ]
            if wordsLine[:4] == ['Mean', 'value', 'of', 'NSD']:
                self.__xsDataResult.setMeanNSD(
                    XSDataDouble(float(wordsLine[-1])))
            if wordsLine[:3] == ['Variation', 'of', 'NSD']:
                self.__xsDataResult.setVariationNSD(
                    XSDataDouble(float(wordsLine[-1])))

    def generateDamaverScript(self):
        self.DEBUG("EDPluginExecDammifv0_2.generateDammifScript")

        dataFileNames = []
        for idx, pdbInputFile in enumerate(self.dataInput.pdbInputFiles):
            tmpInputFileName = pdbInputFile.path.value
            self.symlink(tmpInputFileName, 'dammif-' + str(idx + 1) + '.pdb')
            dataFileNames.append('dammif-' + str(idx + 1) + '.pdb')

        if self.__bAutomatic:
            commandScriptLine = ['/a', self.__strSymmetry]
        else:
            damsupLog = open(
                os.path.join(self.getWorkingDirectory(), "damsup.log"), 'w')
            damsupLog.write('\n'.join(dataFileNames))
            damsupLog.close()
            commandScriptLine = ['damsup.log']
        self.setScriptCommandline(' '.join(commandScriptLine))

    def generateExecutiveSummary(self, __edPlugin=None):
        self.addExecutiveSummaryLine(
            "DAMAVER output pdb model : %s" %
            os.path.join(self.getWorkingDirectory(), "damaver.pdb"))
        if self.__bAutomatic:
            self.addExecutiveSummaryLine(
                "DAMFILT output pdb model : %s" %
                os.path.join(self.getWorkingDirectory(), "damfilt.pdb"))
            self.addExecutiveSummaryLine(
                "DAMSTART output pdb model : %s" %
                os.path.join(self.getWorkingDirectory(), "damstart.pdb"))
            damselLog = open(
                os.path.join(self.getWorkingDirectory(), "damsel.log"))
            for line in damselLog:
                self.addExecutiveSummaryLine(line)

    def symlink(self, filen, link):
        """
        Create a symlink to CWD with relative path
        """
        src = os.path.abspath(filen)
        cwd = self.getWorkingDirectory()
        dest = os.path.join(cwd, link)
        os.symlink(os.path.relpath(src, cwd), dest)
Example #5
0
class EDPluginExecDamaverv0_3(EDPluginExecProcessScript):
    """
    Execution plugin running DAMAVER pipeline for alignment of input pdb models,
    selecting the most typical one and building an averaged model  
    """
    knownSymmetry = ["P%i" % i for i in range(1, 20)] + ["P%i2" % i for i in range(2, 13)]
#    name = "damaver"

    def __init__(self):
        """
        """
        EDPluginExecProcessScript.__init__(self)
        self.setXSDataInputClass(XSDataInputDamaver)

        self.__xsDataResult = XSDataResultDamaver()

        self.__strSymmetry = ''
        self.__bAutomatic = True

    def checkParameters(self):
        """
        Checks the mandatory parameters.
        """
        self.DEBUG("EDPluginExecDamaverv0_3.checkParameters")
        self.checkMandatoryParameters(self.dataInput, "Data Input is None")
        self.checkMandatoryParameters(self.dataInput.pdbInputFiles, "PDB input files are missing")


    def preProcess(self, _edObject=None):
        EDPluginExecProcessScript.preProcess(self)
        self.DEBUG("EDPluginExecDamaverv0_3.preProcess")

        self.checkDamaverPath()
        self.checkDamaverAutomaticInput()
        self.checkDamaverSymmetryInput()
        self.generateDamaverScript()

    def checkDamaverPath(self):
        if '.' in self.getScriptExecutable():
            self.WARNING('Damaver might not run properly when \'.\' is present in the path to launch it')

    def checkDamaverAutomaticInput(self):
        if self.dataInput.automatic:
            try:
                if self.dataInput.automatic:
                    self.__bAutomatic = self.dataInput.automatic.value
            except Exception as error:
                self.WARNING("Running Damaver automation pipeline by default: %s"%error)


    def checkDamaverSymmetryInput(self):
        self.DEBUG("EDPluginExecDammifv0_2.checkDammifSymmetryInput")
        if self.dataInput.symmetry:
            try:
                if self.dataInput.symmetry.value in self.knownSymmetry:
                    self.__strSymmetry = self.dataInput.symmetry.value
            except Exception as error:
                self.WARNING("Symmetry wasn't specified. Setting symmetry to P1: %s" % error)


    def postProcess(self, _edObject=None):
        EDPluginExecProcessScript.postProcess(self)
        self.DEBUG("EDPluginExecDamaverv0_3.postProcess")
        # Create some output data

        self.outputDamaverPdbFiles()
        if self.__bAutomatic:
            self.parseDamselLog()
        self.generateExecutiveSummary()
        self.__xsDataResult.status = XSDataStatus(message=self.getXSDataMessage(),
                                                  executiveSummary=XSDataString(os.linesep.join(self.getListExecutiveSummaryLines())))
        self.dataOutput = self.__xsDataResult


    def outputDamaverPdbFiles(self):
        cwd = self.getWorkingDirectory()
        damaverPDB = os.path.join(cwd, "damaver.pdb")
        if os.path.exists(damaverPDB):
            self.__xsDataResult.model = XSDataSaxsModel(name=XSDataString("damaver"))
            self.__xsDataResult.damaverPdbFile = self.__xsDataResult.model.pdbFile = XSDataFile(XSDataString(damaverPDB))

        if self.__bAutomatic:
            damfilterFile = os.path.join(cwd, "damfilt.pdb")
            if os.path.exists(damfilterFile):
                self.__xsDataResult.damfilterPdbFile = XSDataFile(XSDataString(damfilterFile))

            damstartFile = os.path.join(cwd, "damstart.pdb")
            if os.path.exists(damstartFile):
                self.__xsDataResult.damstartPdbFile = XSDataFile(XSDataString(damstartFile))

    def parseDamselLog(self):
        damselLog = open(os.path.join(self.getWorkingDirectory(), "damsel.log"))

        for line in damselLog:
            wordsLine = [tmpStr for tmpStr in line.split(' ') if tmpStr is not '']
            if wordsLine[:4] == ['Mean', 'value', 'of', 'NSD']:
                self.__xsDataResult.setMeanNSD(XSDataDouble(float(wordsLine[-1])))
            if wordsLine[:3] == ['Variation', 'of', 'NSD']:
                self.__xsDataResult.setVariationNSD(XSDataDouble(float(wordsLine[-1])))



    def generateDamaverScript(self):
        self.DEBUG("EDPluginExecDammifv0_2.generateDammifScript")

        dataFileNames = []
        for idx, pdbInputFile in enumerate(self.dataInput.pdbInputFiles):
            tmpInputFileName = pdbInputFile.path.value
            self.symlink(tmpInputFileName, 'dammif-' + str(idx + 1) + '.pdb')
            dataFileNames.append('dammif-' + str(idx + 1) + '.pdb')

        if self.__bAutomatic:
            commandScriptLine = ['--automatic']
            if self.__strSymmetry:
                commandScriptLine.append("--symmetry=%s"%self.__strSymmetry)
            commandScriptLine+=dataFileNames
        else:
            #no input specification files in damaver revison >= r 2912 
            #damsupLog = open(os.path.join(self.getWorkingDirectory(), "damsup.log"), 'w')
            #damsupLog.write('\n'.join(dataFileNames))
            #damsupLog.close()
            commandScriptLine = dataFileNames
        self.setScriptCommandline(' '.join(commandScriptLine))

    def generateExecutiveSummary(self, __edPlugin=None):
        self.addExecutiveSummaryLine("DAMAVER output pdb model : %s" % os.path.join(self.getWorkingDirectory(), "damaver.pdb"))
        if self.__bAutomatic:
            self.addExecutiveSummaryLine("DAMFILT output pdb model : %s" % os.path.join(self.getWorkingDirectory(), "damfilt.pdb"))
            self.addExecutiveSummaryLine("DAMSTART output pdb model : %s" % os.path.join(self.getWorkingDirectory(), "damstart.pdb"))
            damselLog = open(os.path.join(self.getWorkingDirectory(), "damsel.log"))
            for line in damselLog:
                self.addExecutiveSummaryLine(line)

    def symlink(self, filen, link):
        """
        Create a symlink to CWD with relative path
        """
        src = os.path.abspath(filen)
        cwd = self.getWorkingDirectory()
        dest = os.path.join(cwd, link)
        os.symlink(os.path.relpath(src, cwd), dest)
Example #6
0
class EDPluginExecDamaverv0_1(EDPluginExecProcessScript):
    """
    Execution plugin running DAMAVER pipeline for alignment of input pdb models,
    selecting the most typical one and building an averaged model  
    """
    def __init__(self):
        """
        """
        EDPluginExecProcessScript.__init__(self)
        self.setXSDataInputClass(XSDataInputDamaver)

        self.__xsDataResult = XSDataResultDamaver()

        self.__strSymmetry = ''
        self.__bAutomatic = True

    def checkParameters(self):
        """
        Checks the mandatory parameters.
        """
        EDVerbose.DEBUG("EDPluginExecDamaverv0_1.checkParameters")
        self.checkMandatoryParameters(self.getDataInput(),
                                      "Data Input is None")
        self.checkMandatoryParameters(self.getDataInput().getPdbInputFiles(),
                                      "PDB input files are missing")

    def preProcess(self, _edObject=None):
        EDPluginExecProcessScript.preProcess(self)
        EDVerbose.DEBUG("EDPluginExecDamaverv0_1.preProcess")

        self.checkDamaverPath()
        self.checkDamaverAutomaticInput()
        self.checkDamaverSymmetryInput()
        self.generateDamaverScript()

    def checkDamaverPath(self):
        if '.' in self.getScriptExecutable():
            EDVerbose.WARNING(
                'Damaver might not run properly when \'.\' is present in the path to launch it'
            )

    def checkDamaverAutomaticInput(self):
        try:
            if self.getDataInput().getAutomatic():
                self.__bAutomatic = self.getDataInput().getAutomatic(
                ).getValue()
        except Exception:
            EDVerbose.WARNING(
                "Running Damaver automation pipeline by default.")

    def checkDamaverSymmetryInput(self):
        EDVerbose.DEBUG("EDPluginExecDammifv0_1.checkDammifSymmetryInput")

        knownSymmetry = []
        knownSymmetry.extend(
            itertools.imap(lambda i: 'P' + str(i), range(1, 20)))
        knownSymmetry.extend(
            itertools.imap(lambda i: 'P' + str(i) + '2', range(2, 13)))

        try:
            if self.getDataInput().getSymmetry().getValue() in knownSymmetry:
                self.__strSymmetry = self.getDataInput().getSymmetry(
                ).getValue()
        except Exception:
            EDVerbose.WARNING(
                "Symmetry wasn't specified. Setting symmetry to P1")

    def process(self, _edObject=None):
        EDPluginExecProcessScript.process(self)
        EDVerbose.DEBUG("EDPluginExecDamaverv0_1.process")

    def postProcess(self, _edObject=None):
        EDPluginExecProcessScript.postProcess(self)
        EDVerbose.DEBUG("EDPluginExecDamaverv0_1.postProcess")
        # Create some output data
        xsDataResult = XSDataResultDamaver()
        self.setDataOutput(xsDataResult)

        self.outputDamaverPdbFiles()
        if self.__bAutomatic:
            self.parseDamselLog()

        self.setDataOutput(self.__xsDataResult)

    def outputDamaverPdbFiles(self):
        pathDamaverFile = XSDataString(
            os.path.join(self.getWorkingDirectory(), "damaver.pdb"))
        xsDamaverFile = XSDataFile(pathDamaverFile)
        if os.path.exists(pathDamaverFile.getValue()):
            self.__xsDataResult.setDamaverPdbFile(xsDamaverFile)

        if self.__bAutomatic:
            pathDamfilterFile = XSDataString(
                os.path.join(self.getWorkingDirectory(), "damfilt.pdb"))
            pathDamstartFile = XSDataString(
                os.path.join(self.getWorkingDirectory(), "damstart.pdb"))
            xsDamfilterFile = XSDataFile(pathDamfilterFile)
            xsDamstartFile = XSDataFile(pathDamstartFile)

            if os.path.exists(pathDamfilterFile.getValue()):
                self.__xsDataResult.setDamfilterPdbFile(xsDamfilterFile)
            if os.path.exists(pathDamstartFile.getValue()):
                self.__xsDataResult.setDamstartPdbFile(xsDamstartFile)

    def parseDamselLog(self):
        damselLog = open(os.path.join(self.getWorkingDirectory(),
                                      "damsel.log"))

        for line in damselLog:
            wordsLine = [
                tmpStr for tmpStr in line.split(' ') if tmpStr is not ''
            ]
            if wordsLine[:4] == ['Mean', 'value', 'of', 'NSD']:
                self.__xsDataResult.setMeanNSD(
                    XSDataDouble(float(wordsLine[-1])))
            if wordsLine[:3] == ['Variation', 'of', 'NSD']:
                self.__xsDataResult.setVariationNSD(
                    XSDataDouble(float(wordsLine[-1])))

    def generateDamaverScript(self):
        EDVerbose.DEBUG("*** EDPluginExecDammifv0_1.generateDammifScript")

        dataFileNames = []
        for idx, pdbInputFile in enumerate(
                self.getDataInput().getPdbInputFiles()):
            tmpInputFileName = pdbInputFile.getPath().getValue()
            os.symlink(
                tmpInputFileName,
                os.path.join(self.getWorkingDirectory(),
                             'dammif-' + str(idx + 1) + '.pdb'))
            dataFileNames.append('dammif-' + str(idx + 1) + '.pdb')

        if self.__bAutomatic:
            commandScriptLine = ['/a', self.__strSymmetry]
        else:
            damsupLog = open(
                os.path.join(self.getWorkingDirectory(), "damsup.log"), 'w')
            damsupLog.write('\n'.join(dataFileNames))
            damsupLog.close()
            commandScriptLine = ['damsup.log']

        self.setScriptCommandline(' '.join(commandScriptLine))

    def generateExecutiveSummary(self, __edPlugin=None):
        self.addExecutiveSummaryLine(
            "Results of model averaging using DAMAVER pipeline")
        self.addExecutiveSummarySeparator()
        self.addExecutiveSummaryLine(
            "DAMAVER output pdb model : %s" %
            os.path.join(self.getWorkingDirectory(), "damaver.pdb"))

        if self.__bAutomatic:
            self.addExecutiveSummaryLine(
                "DAMFILT output pdb model : %s" %
                os.path.join(self.getWorkingDirectory(), "damfilt.pdb"))
            self.addExecutiveSummaryLine(
                "DAMSTART output pdb model : %s" %
                os.path.join(self.getWorkingDirectory(), "damstart.pdb"))
            damselLog = open(
                os.path.join(self.getWorkingDirectory(), "damsel.log"))
            for line in damselLog:
                self.addExecutiveSummaryLine(line)

        self.addExecutiveSummarySeparator()
class EDPluginExecDamaverv0_1(EDPluginExecProcessScript):
    """
    Execution plugin running DAMAVER pipeline for alignment of input pdb models,
    selecting the most typical one and building an averaged model  
    """


    def __init__(self):
        """
        """
        EDPluginExecProcessScript.__init__(self)
        self.setXSDataInputClass(XSDataInputDamaver)

        self.__xsDataResult = XSDataResultDamaver()

        self.__strSymmetry = ''
        self.__bAutomatic = True

    def checkParameters(self):
        """
        Checks the mandatory parameters.
        """
        EDVerbose.DEBUG("EDPluginExecDamaverv0_1.checkParameters")
        self.checkMandatoryParameters(self.getDataInput(), "Data Input is None")
        self.checkMandatoryParameters(self.getDataInput().getPdbInputFiles(), "PDB input files are missing")


    def preProcess(self, _edObject=None):
        EDPluginExecProcessScript.preProcess(self)
        EDVerbose.DEBUG("EDPluginExecDamaverv0_1.preProcess")

        self.checkDamaverPath()
        self.checkDamaverAutomaticInput()
        self.checkDamaverSymmetryInput()
        self.generateDamaverScript()

    def checkDamaverPath(self):
        if '.' in self.getScriptExecutable():
            EDVerbose.WARNING('Damaver might not run properly when \'.\' is present in the path to launch it')

    def checkDamaverAutomaticInput(self):
        try:
            if self.getDataInput().getAutomatic():
                self.__bAutomatic = self.getDataInput().getAutomatic().getValue()
        except Exception:
            EDVerbose.WARNING("Running Damaver automation pipeline by default.")

    def checkDamaverSymmetryInput(self):
        EDVerbose.DEBUG("EDPluginExecDammifv0_1.checkDammifSymmetryInput")

        knownSymmetry = []
        knownSymmetry.extend(itertools.imap(lambda i: 'P' + str(i), range(1, 20)))
        knownSymmetry.extend(itertools.imap(lambda i: 'P' + str(i) + '2', range(2, 13)))

        try:
            if self.getDataInput().getSymmetry().getValue() in knownSymmetry:
                self.__strSymmetry = self.getDataInput().getSymmetry().getValue()
        except Exception:
            EDVerbose.WARNING("Symmetry wasn't specified. Setting symmetry to P1")


    def process(self, _edObject=None):
        EDPluginExecProcessScript.process(self)
        EDVerbose.DEBUG("EDPluginExecDamaverv0_1.process")


    def postProcess(self, _edObject=None):
        EDPluginExecProcessScript.postProcess(self)
        EDVerbose.DEBUG("EDPluginExecDamaverv0_1.postProcess")
        # Create some output data
        xsDataResult = XSDataResultDamaver()
        self.setDataOutput(xsDataResult)

        self.outputDamaverPdbFiles()
        if self.__bAutomatic:
            self.parseDamselLog()

        self.setDataOutput(self.__xsDataResult)

    def outputDamaverPdbFiles(self):
        pathDamaverFile = XSDataString(os.path.join(self.getWorkingDirectory(), "damaver.pdb"))
        xsDamaverFile = XSDataFile(pathDamaverFile)
        if os.path.exists(pathDamaverFile.getValue()):
            self.__xsDataResult.setDamaverPdbFile(xsDamaverFile)

        if self.__bAutomatic:
            pathDamfilterFile = XSDataString(os.path.join(self.getWorkingDirectory(), "damfilt.pdb"))
            pathDamstartFile = XSDataString(os.path.join(self.getWorkingDirectory(), "damstart.pdb"))
            xsDamfilterFile = XSDataFile(pathDamfilterFile)
            xsDamstartFile = XSDataFile(pathDamstartFile)

            if os.path.exists(pathDamfilterFile.getValue()):
                self.__xsDataResult.setDamfilterPdbFile(xsDamfilterFile)
            if os.path.exists(pathDamstartFile.getValue()):
                self.__xsDataResult.setDamstartPdbFile(xsDamstartFile)

    def parseDamselLog(self):
        damselLog = open(os.path.join(self.getWorkingDirectory(), "damsel.log"))

        for line in damselLog:
            wordsLine = [tmpStr for tmpStr in line.split(' ') if tmpStr is not '']
            if wordsLine[:4] == ['Mean', 'value', 'of', 'NSD']:
                self.__xsDataResult.setMeanNSD(XSDataDouble(float(wordsLine[-1])))
            if wordsLine[:3] == ['Variation', 'of', 'NSD']:
                self.__xsDataResult.setVariationNSD(XSDataDouble(float(wordsLine[-1])))



    def generateDamaverScript(self):
        EDVerbose.DEBUG("*** EDPluginExecDammifv0_1.generateDammifScript")

        dataFileNames = []
        for idx, pdbInputFile in enumerate(self.getDataInput().getPdbInputFiles()):
            tmpInputFileName = pdbInputFile.getPath().getValue()
            os.symlink(tmpInputFileName, os.path.join(self.getWorkingDirectory(), 'dammif-' + str(idx + 1) + '.pdb'))
            dataFileNames.append('dammif-' + str(idx + 1) + '.pdb')

        if self.__bAutomatic:
            commandScriptLine = ['/a', self.__strSymmetry]
        else:
            damsupLog = open(os.path.join(self.getWorkingDirectory(), "damsup.log"), 'w')
            damsupLog.write('\n'.join(dataFileNames))
            damsupLog.close()
            commandScriptLine = ['damsup.log']

        self.setScriptCommandline(' '.join(commandScriptLine))

    def generateExecutiveSummary(self, __edPlugin=None):
        self.addExecutiveSummaryLine("Results of model averaging using DAMAVER pipeline")
        self.addExecutiveSummarySeparator()
        self.addExecutiveSummaryLine("DAMAVER output pdb model : %s" % os.path.join(self.getWorkingDirectory(), "damaver.pdb"))

        if self.__bAutomatic:
            self.addExecutiveSummaryLine("DAMFILT output pdb model : %s" % os.path.join(self.getWorkingDirectory(), "damfilt.pdb"))
            self.addExecutiveSummaryLine("DAMSTART output pdb model : %s" % os.path.join(self.getWorkingDirectory(), "damstart.pdb"))
            damselLog = open(os.path.join(self.getWorkingDirectory(), "damsel.log"))
            for line in damselLog:
                self.addExecutiveSummaryLine(line)

        self.addExecutiveSummarySeparator()