aboutsummaryrefslogtreecommitdiff
path: root/scripts/makeReport.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/makeReport.py')
-rw-r--r--scripts/makeReport.py315
1 files changed, 315 insertions, 0 deletions
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")