aboutsummaryrefslogtreecommitdiff
path: root/app/scripts/makeReport.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/scripts/makeReport.py')
-rw-r--r--app/scripts/makeReport.py458
1 files changed, 458 insertions, 0 deletions
diff --git a/app/scripts/makeReport.py b/app/scripts/makeReport.py
new file mode 100644
index 0000000..4f693ac
--- /dev/null
+++ b/app/scripts/makeReport.py
@@ -0,0 +1,458 @@
+#!/usr/bin/python3
+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")
+fallback = 0
+
+print("## Visualisation", end="\n\n")
+print(f"![]({image})", end="\n\n")
+
+natural_ligands = []
+showNaturalLigands = True
+
+try:
+ for x in range(len(doc.report.bindingsite)):
+ if doc.report.bindingsite[x]["has_interactions"] == "True" and x != indexForUNL:
+ natural_ligands.append(x)
+except:
+ fallback == 1
+
+if natural_ligands == []:
+ showNaturalLigands == False
+
+for ligand in natural_ligands:
+ print("### Natural Ligand " + str(ligand+1), end="\n\n")
+ if doc.report.bindingsite[ligand].interactions.hydrophobic_interactions.cdata == "":
+ print("No Hydrophobic Interactions Found", end="\n\n")
+ else:
+ print("#### Hydrophobic Interactions", end="\n\n")
+ tableBody = []
+ tableHeaders = ["No.", "Res.", "AA", "Dist", "Ligand Atom", "Proton Atom"]
+ i = 1
+ for x in doc.report.bindingsite[
+ ligand
+ ].interactions.hydrophobic_interactions.hydrophobic_interaction:
+ l = [
+ i,
+ x.resnr.cdata,
+ x.restype.cdata,
+ x.dist.cdata,
+ x.ligcarbonidx.cdata,
+ x.protcarbonidx.cdata,
+ ]
+ i += 1
+ tableBody.append(l)
+ print(tabulate(tableBody, headers=tableHeaders), end="\n\n")
+ if doc.report.bindingsite[ligand].interactions.hydrogen_bonds.cdata == "":
+ print("No Hydrogen Bonds Found", end="\n\n")
+ else:
+ 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[
+ ligand
+ ].interactions.hydrogen_bonds.hydrogen_bond:
+ l = [
+ 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,
+ ]
+ 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")
+
+print("## Docked Ligand Interactions", end="\n\n")
+
+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 = [
+ i,
+ x.resnr.cdata,
+ x.restype.cdata,
+ x.dist.cdata,
+ x.ligcarbonidx.cdata,
+ 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 = [
+ 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,
+ ]
+ 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 = [
+ i,
+ x.resnr.cdata,
+ x.restype.cdata,
+ x.dist.cdata,
+ x.protispos.cdata,
+ 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 = [
+ i,
+ x.resnr.cdata,
+ x.restype.cdata,
+ x.dist.cdata,
+ x.offset.cdata,
+ 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 = [
+ i,
+ x.resnr.cdata,
+ x.restype.cdata,
+ x.dist.cdata,
+ x.ligcarbonidx.cdata,
+ 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 = [
+ 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,
+ ]
+ 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 = [
+ i,
+ x.resnr.cdata,
+ x.restype.cdata,
+ x.dist.cdata,
+ x.protispos.cdata,
+ 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 = [
+ i,
+ x.resnr.cdata,
+ x.restype.cdata,
+ x.dist.cdata,
+ x.offset.cdata,
+ 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")
+
+