Mercurial > repos > guerler > springsuite
view spring_model_all.py @ 41:f316caf098a6 draft default tip
"planemo upload commit 685e1236afde7cf6bb0c9236de06998d2c211dd3"
author | guerler |
---|---|
date | Mon, 01 Mar 2021 15:02:36 +0000 |
parents | 172398348efd |
children |
line wrap: on
line source
#! /usr/bin/env python3 import argparse from os import mkdir, remove from os.path import isdir, isfile from spring_package.DBKit import DBKit from spring_package.Modeller import createModel class ModelArguments: def __init__(self, args): self.log = args.log self.index = args.index self.database = args.database self.cross = args.cross self.wenergy = args.wenergy self.minscore = args.minscore self.maxtries = args.maxtries self.maxclashes = args.maxclashes self.showtemplate = args.showtemplate def set(self, a_hhr, b_hhr, output): self.a_hhr = a_hhr self.b_hhr = b_hhr self.output = output def main(args): modelArgs = ModelArguments(args) outPath = args.outputpath.rstrip("/") if not isdir(outPath): mkdir(outPath) if not isdir("temp"): mkdir("temp") dbkit = DBKit(args.hhr_index, args.hhr_database) logFile = open(args.log, "w") logFile.write("#namea\t nameb\t springscore\t tmscore\t energy\t clashes\t zscore\t templatea\t templateb\n") with open(args.pairs, "r") as file: for line in file: param = line.split() aIdentifier = param[0] bIdentifier = param[1] aFile = "temp/%s" % aIdentifier bFile = "temp/%s" % bIdentifier if not dbkit.createFile(aIdentifier, aFile): print("Failed to retrieve entry %s." % aIdentifier) continue if not dbkit.createFile(bIdentifier, bFile): print("Failed to retrieve entry %s." % bIdentifier) continue output = "%s/%s.%s.pdb" % (outPath, aIdentifier, bIdentifier) modelArgs.set(a_hhr=aFile, b_hhr=bFile, output=output) modelData = createModel(modelArgs) if modelData: infoStr = "%s\t %s\t %5.2f\t %5.2f\t %5.2f\t %5.2f\t %5.2f\t %s\t %s\n" infoStr = infoStr % (aIdentifier, bIdentifier, modelData["springscore"], modelData["tmscore"], modelData["energy"], modelData["clashes"], modelData["zscore"], modelData["aTemplate"], modelData["bTemplate"]) logFile.write(infoStr) logFile.flush() if isfile(aFile): remove(aFile) if isfile(bFile): remove(bFile) logFile.close() if __name__ == "__main__": parser = argparse.ArgumentParser(description='Create 3D models from HH-search results.') parser.add_argument('-p', '--pairs', help='Interaction table e.g. from min-Z evaluation (2-columns)', required=True) parser.add_argument('-ih', '--hhr_index', help='HHR Index database file (ffindex)', required=True) parser.add_argument('-dh', '--hhr_database', help='HHR Database file (ffdata)', required=True) parser.add_argument('-i', '--index', help='PDB Database Index file (ffindex)', required=True) parser.add_argument('-d', '--database', help='PDB Database file (ffdata)', required=True) parser.add_argument('-c', '--cross', help='PDB Cross Reference', required=True) parser.add_argument('-g', '--log', help='Log file', required=True) parser.add_argument('-o', '--outputpath', help='Path to output directory', required=True) parser.add_argument('-we', '--wenergy', help='Weight Energy term', type=float, default=-0.01, required=False) parser.add_argument('-ms', '--minscore', help='Minimum min-Z score threshold', type=float, default=10.0, required=False) parser.add_argument('-mt', '--maxtries', help='Maximum number of templates', type=int, default=20, required=False) parser.add_argument('-mc', '--maxclashes', help='Maximum fraction of clashes', type=float, default=0.1, required=False) parser.add_argument('-sr', '--showtemplate', help='Add reference template to model structure', required=False, default="true") args = parser.parse_args() main(args)