From 4be08f7bdd77991e9e453c1cda863c3f20c338d5 Mon Sep 17 00:00:00 2001 From: Navan Chauhan Date: Thu, 2 Jul 2020 20:48:33 +0530 Subject: initial commit --- scripts/makeReport.py | 315 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 scripts/makeReport.py (limited to 'scripts/makeReport.py') diff --git a/scripts/makeReport.py b/scripts/makeReport.py new file mode 100644 index 0000000..dcf3576 --- /dev/null +++ b/scripts/makeReport.py @@ -0,0 +1,315 @@ +import argparse + +parser = argparse.ArgumentParser(description="Make Report Helper Script") +parser.add_argument("-i","--input",help="Path to report folder") + +args = parser.parse_args() + +if args.input == None: + print("Error: Please specify path") + exit(1) + +path = args.input +#path = '/Users/navanchauhan/Desktop/nCOV-19/scripts/pymol/test/' + +import untangle +from tabulate import tabulate + +#import sys +#report = path + "report.md" +#sys.stdout = open(report, 'w') + +from os import listdir +from os.path import isfile, join +onlyfiles = [f for f in listdir(path) if isfile(join(path, f))] +image = "" +for x in onlyfiles: + if '.png' in x and 'UNL' in x: + image = x +import os +fname = os.path.join(path,'report.xml') + +doc = untangle.parse(fname) + +hi, hb, wb, sb, ps, pc, hab, mc = 0,0,0,0,0,0,0,0 + +indexForUNL = 0 + +for x in doc.report.bindingsite: + if x.identifiers.longname.cdata == 'UNL': + break + else: + indexForUNL += 1 + + +name = doc.report.pdbid.cdata +print(("# " + (name.replace("_"," ")).replace("PROTEIN","")), end="\n\n") + +print("## Visualisation", end="\n\n") +print(f'![]({image})', end="\n\n") + +print("## Interactions", end="\n\n") + +fallback = 0 +try: + if doc.report.bindingsite[indexForUNL].interactions.hydrophobic_interactions.cdata == '': + print("No Hydrophobic Interactions Found", end="\n\n") + else: + print("**Hydrophobic Interactions Found**", end="\n\n") + hi = 1 +except AttributeError: + fallback=1 + +if fallback==0: + if doc.report.bindingsite[indexForUNL].interactions.hydrophobic_interactions.cdata == '': + print("No Hydrophobic Interactions Found", end="\n\n") + else: + print("**Hydrophobic Interactions Found**", end="\n\n") + hi = 1 + if doc.report.bindingsite[indexForUNL].interactions.hydrogen_bonds.cdata == '': + print("No Hydrogen Bonds Found", end="\n\n") + else: + print("**Hydrogen Bonds Found**", end="\n\n") + hb = 1 + if doc.report.bindingsite[indexForUNL].interactions.water_bridges.cdata == '': + print("No Water Bridges Found", end="\n\n") + else: + print("**Water Bridges Found**", end="\n\n") + wb = 1 + if doc.report.bindingsite[indexForUNL].interactions.salt_bridges.cdata == '': + print("No Salt Bridges Found", end="\n\n") + else: + print("**Salt Bridges Found**", end="\n\n") + sb = 1 + if doc.report.bindingsite[indexForUNL].interactions.pi_stacks.cdata == '': + print("No Pi Stacks Found", end="\n\n") + else: + print("**Pi Stacks Found**", end="\n\n") + ps = 1 + if doc.report.bindingsite[indexForUNL].interactions.pi_cation_interactions.cdata == '': + print("No Pi Cation Interactions Found", end="\n\n") + else: + print("**Pi Cation Interactions Found**", end="\n\n") + pc = 1 + if doc.report.bindingsite[indexForUNL].interactions.halogen_bonds.cdata == '': + print("No Halogen Bonds Found", end="\n\n") + else: + print("** Halogen Bonds Found**", end="\n\n") + hab = 1 + if doc.report.bindingsite[indexForUNL].interactions.metal_complexes.cdata == '': + print("No Metal Complexes Found", end="\n\n") + else: + print("**Metal Complexes Found**", end="\n\n") + mc = 1 + +if fallback == 1: + if doc.report.bindingsite.interactions.hydrophobic_interactions.cdata == '': + print("No Hydrophobic Interactions Found", end="\n\n") + else: + print("**Hydrophobic Interactions Found**", end="\n\n") + hi = 1 + if doc.report.bindingsite.interactions.hydrogen_bonds.cdata == '': + print("No Hydrogen Bonds Found", end="\n\n") + else: + print("**Hydrogen Bonds Found**", end="\n\n") + hb = 1 + if doc.report.bindingsite.interactions.water_bridges.cdata == '': + print("No Water Bridges Found", end="\n\n") + else: + print("**Water Bridges Found**", end="\n\n") + wb = 1 + if doc.report.bindingsite.interactions.salt_bridges.cdata == '': + print("No Salt Bridges Found", end="\n\n") + else: + print("**Salt Bridges Found**", end="\n\n") + sb = 1 + if doc.report.bindingsite.interactions.pi_stacks.cdata == '': + print("No Pi Stacks Found", end="\n\n") + else: + print("**Pi Stacks Found**", end="\n\n") + ps = 1 + if doc.report.bindingsite.interactions.pi_cation_interactions.cdata == '': + print("No Pi Cation Interactions Found", end="\n\n") + else: + print("**Pi Cation Interactions Found**", end="\n\n") + pc = 1 + if doc.report.bindingsite.interactions.halogen_bonds.cdata == '': + print("No Halogen Bonds Found", end="\n\n") + else: + print("** Halogen Bonds Found**", end="\n\n") + hab = 1 + if doc.report.bindingsite.interactions.metal_complexes.cdata == '': + print("No Metal Complexes Found", end="\n\n") + else: + print("**Metal Complexes Found**", end="\n\n") + mc = 1 + +if fallback == 0: + if hi == 1: + print("## Hydrophobic Interactions",end="\n\n") + tableBody = [] + tableHeaders = ['No.','Res.','AA','Dist','Ligand Atom','Proton Atom'] + i = 1 + for x in doc.report.bindingsite[indexForUNL].interactions.hydrophobic_interactions.hydrophobic_interaction: + l = [] + l.append(i) + l.append(x.resnr.cdata) + l.append(x.restype.cdata) + l.append(x.dist.cdata) + l.append(x.ligcarbonidx.cdata) + l.append(x.protcarbonidx.cdata) + i += 1 + tableBody.append(l) + print(tabulate(tableBody, headers=tableHeaders), end="\n\n") + + if hb == 1: + print("## Hydrogen Bonds",end="\n\n") + tableBody = [] + tableHeaders = ['No.','Res.','AA','Dist H-A','Dist D-A','Don Angle','Protisdon?','Sidechain?','D. Atom','A. Atom'] + i = 1 + for x in doc.report.bindingsite[indexForUNL].interactions.hydrogen_bonds.hydrogen_bond: + l = [] + l.append(i) + l.append(x.resnr.cdata) + l.append(x.restype.cdata) + l.append(x.dist_h_a.cdata) + l.append(x.dist_d_a.cdata) + l.append(x.don_angle.cdata) + l.append(x.protisdon.cdata) + l.append(x.sidechain.cdata) + l.append((x.donoridx.cdata + "[" + x.donortype.cdata + "]")) + l.append((x.acceptoridx.cdata + "[" + x.acceptortype.cdata + "]")) + i += 1 + tableBody.append(l) + #print(i, x.resnr.cdata, x.restype.cdata, x.dist_h_a.cdata, x.dist_d_a.cdata, x.don_angle.cdata, x.protisdon.cdata, x.sidechain.cdata, (x.donoridx.cdata + "[" + x.donortype.cdata + "]"), (x.acceptoridx.cdata + "[" + x.acceptortype.cdata + "]")) + print(tabulate(tableBody, headers=tableHeaders), end="\n\n") + + if sb == 1: + print("## Salt Bridges",end="\n\n") + tableBody = [] + tableHeaders = ['Index','Residue','AA','Distance','Protein positive?','Ligand Group','Ligand Atoms'] + i = 1 + for x in doc.report.bindingsite[indexForUNL].interactions.salt_bridges.salt_bridge: + l = [] + l.append(i) + l.append(x.resnr.cdata) + l.append(x.restype.cdata) + l.append(x.dist.cdata) + l.append(x.protispos.cdata) + l.append(x.lig_group.cdata) + atoms = [] + for y in x.lig_idx_list.idx: + atoms.append(y.cdata) + l.append(atoms) + i += 1 + tableBody.append(l) + print(tabulate(tableBody, headers=tableHeaders), end="\n\n") + + if pc==1: + print("## Pi Cation Interactions",end="\n\n") + tableBody = [] + tableHeaders = ['Index','Residue','AA','Distance','Prot charged?','Atoms'] + i = 1 + for x in doc.report.bindingsite[indexForUNL].interactions.pi_cation_interactions.pi_cation_interaction: + l = [] + l.append(i) + l.append(x.resnr.cdata) + l.append(x.restype.cdata) + l.append(x.dist.cdata) + l.append(x.offset.cdata) + l.append(x.protcharged.cdata) + atoms = [] + for y in x.lig_idx_list.idx: + atoms.append(y.cdata) + l.append(atoms) + i += 1 + tableBody.append(l) + print(tabulate(tableBody, headers=tableHeaders), end="\n\n") +elif fallback == 1: + if hi == 1: + print("## Hydrophobic Interactions",end="\n\n") + tableBody = [] + tableHeaders = ['No.','Res.','AA','Dist','Ligand Atom','Proton Atom'] + i = 1 + for x in doc.report.bindingsite.interactions.hydrophobic_interactions.hydrophobic_interaction: + l = [] + l.append(i) + l.append(x.resnr.cdata) + l.append(x.restype.cdata) + l.append(x.dist.cdata) + l.append(x.ligcarbonidx.cdata) + l.append(x.protcarbonidx.cdata) + i += 1 + tableBody.append(l) + print(tabulate(tableBody, headers=tableHeaders), end="\n\n") + + if hb == 1: + print("## Hydrogen Bonds",end="\n\n") + tableBody = [] + tableHeaders = ['No.','Res.','AA','Dist H-A','Dist D-A','Don Angle','Protisdon?','Sidechain?','D. Atom','A. Atom'] + i = 1 + for x in doc.report.bindingsite.interactions.hydrogen_bonds.hydrogen_bond: + l = [] + l.append(i) + l.append(x.resnr.cdata) + l.append(x.restype.cdata) + l.append(x.dist_h_a.cdata) + l.append(x.dist_d_a.cdata) + l.append(x.don_angle.cdata) + l.append(x.protisdon.cdata) + l.append(x.sidechain.cdata) + l.append((x.donoridx.cdata + "[" + x.donortype.cdata + "]")) + l.append((x.acceptoridx.cdata + "[" + x.acceptortype.cdata + "]")) + i += 1 + tableBody.append(l) + #print(i, x.resnr.cdata, x.restype.cdata, x.dist_h_a.cdata, x.dist_d_a.cdata, x.don_angle.cdata, x.protisdon.cdata, x.sidechain.cdata, (x.donoridx.cdata + "[" + x.donortype.cdata + "]"), (x.acceptoridx.cdata + "[" + x.acceptortype.cdata + "]")) + print(tabulate(tableBody, headers=tableHeaders), end="\n\n") + + if sb == 1: + print("## Salt Bridges",end="\n\n") + tableBody = [] + tableHeaders = ['Index','Residue','AA','Distance','Protein positive?','Ligand Group','Ligand Atoms'] + i = 1 + for x in doc.report.bindingsite.interactions.salt_bridges.salt_bridge: + l = [] + l.append(i) + l.append(x.resnr.cdata) + l.append(x.restype.cdata) + l.append(x.dist.cdata) + l.append(x.protispos.cdata) + l.append(x.lig_group.cdata) + atoms = [] + for y in x.lig_idx_list.idx: + atoms.append(y.cdata) + l.append(atoms) + i += 1 + tableBody.append(l) + print(tabulate(tableBody, headers=tableHeaders), end="\n\n") + + if pc==1: + print("## Pi Cation Interactions",end="\n\n") + tableBody = [] + tableHeaders = ['Index','Residue','AA','Distance','Prot charged?','Atoms'] + i = 1 + for x in doc.report.bindingsite.interactions.pi_cation_interactions.pi_cation_interaction: + l = [] + l.append(i) + l.append(x.resnr.cdata) + l.append(x.restype.cdata) + l.append(x.dist.cdata) + l.append(x.offset.cdata) + l.append(x.protcharged.cdata) + atoms = [] + for y in x.lig_idx_list.idx: + atoms.append(y.cdata) + l.append(atoms) + i += 1 + tableBody.append(l) + print(tabulate(tableBody, headers=tableHeaders), end="\n\n") + +print("## Figures", end="\n\n") + +print(f'![](output-back.png)', end="\n\n") +print(f'![](output-front.png)', end="\n\n") +print(f'![](closeup-back.png)', end="\n\n") +print(f'![](closeup-front.png)', end="\n\n") -- cgit v1.2.3