diff options
-rw-r--r-- | scripts/makeReport.py | 269 |
1 files changed, 203 insertions, 66 deletions
diff --git a/scripts/makeReport.py b/scripts/makeReport.py index 79d9c70..2a32d29 100644 --- a/scripts/makeReport.py +++ b/scripts/makeReport.py @@ -1,8 +1,8 @@ #!/usr/bin/python3 -import argparse +import argparse parser = argparse.ArgumentParser(description="Make Report Helper Script") -parser.add_argument("-i","--input",help="Path to report folder") +parser.add_argument("-i", "--input", help="Path to report folder") args = parser.parse_args() @@ -11,147 +11,232 @@ if args.input == None: exit(1) path = args.input -#path = '/Users/navanchauhan/Desktop/nCOV-19/scripts/pymol/test/' +# 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') +# 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: + if ".png" in x and "UNL" in x: image = x import os -fname = os.path.join(path,'report.xml') + +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 +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': + if x.identifiers.longname.cdata == "UNL": break else: indexForUNL += 1 name = doc.report.pdbid.cdata -#print(("# " + (name.replace("_"," ")).replace("PROTEIN","")), end="\n\n") +# print(("# " + (name.replace("_"," ")).replace("PROTEIN","")), end="\n\n") +fallback = 0 -print("## Visualisation", end="\n\n") -print(f'![]({image})', end="\n\n") +print("## Visualisation", end="\n\n") +print(f"![]({image})", end="\n\n") -print("## Interactions", 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(x), 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 = [] + 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 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 = [] + 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") + +print("## Ligand Interactions", end="\n\n") -fallback = 0 try: - if doc.report.bindingsite[indexForUNL].interactions.hydrophobic_interactions.cdata == '': + 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 + fallback = 1 -if fallback==0: - if doc.report.bindingsite[indexForUNL].interactions.hydrophobic_interactions.cdata == '': +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 == '': + 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 == '': + 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 == '': + 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 == '': + 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 == '': + 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 == '': + 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") + 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 == '': + 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 == '': + 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 == '': + 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 == '': + 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 == '': + 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 == '': + 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 == '': + 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") + 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") + print("## Hydrophobic Interactions", end="\n\n") tableBody = [] - tableHeaders = ['No.','Res.','AA','Dist','Ligand Atom','Proton Atom'] + tableHeaders = ["No.", "Res.", "AA", "Dist", "Ligand Atom", "Proton Atom"] i = 1 - for x in doc.report.bindingsite[indexForUNL].interactions.hydrophobic_interactions.hydrophobic_interaction: + for x in doc.report.bindingsite[ + indexForUNL + ].interactions.hydrophobic_interactions.hydrophobic_interaction: l = [] l.append(i) l.append(x.resnr.cdata) @@ -164,11 +249,24 @@ if fallback == 0: print(tabulate(tableBody, headers=tableHeaders), end="\n\n") if hb == 1: - print("## Hydrogen Bonds",end="\n\n") + 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'] + 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: + for x in doc.report.bindingsite[ + indexForUNL + ].interactions.hydrogen_bonds.hydrogen_bond: l = [] l.append(i) l.append(x.resnr.cdata) @@ -182,15 +280,25 @@ if fallback == 0: 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(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") + print("## Salt Bridges", end="\n\n") tableBody = [] - tableHeaders = ['Index','Residue','AA','Distance','Protein positive?','Ligand Group','Ligand Atoms'] + 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: + for x in doc.report.bindingsite[ + indexForUNL + ].interactions.salt_bridges.salt_bridge: l = [] l.append(i) l.append(x.resnr.cdata) @@ -206,12 +314,14 @@ if fallback == 0: tableBody.append(l) print(tabulate(tableBody, headers=tableHeaders), end="\n\n") - if pc==1: - print("## Pi Cation Interactions",end="\n\n") + if pc == 1: + print("## Pi Cation Interactions", end="\n\n") tableBody = [] - tableHeaders = ['Index','Residue','AA','Distance','Prot charged?','Atoms'] + tableHeaders = ["Index", "Residue", "AA", "Distance", "Prot charged?", "Atoms"] i = 1 - for x in doc.report.bindingsite[indexForUNL].interactions.pi_cation_interactions.pi_cation_interaction: + for x in doc.report.bindingsite[ + indexForUNL + ].interactions.pi_cation_interactions.pi_cation_interaction: l = [] l.append(i) l.append(x.resnr.cdata) @@ -228,11 +338,15 @@ if fallback == 0: print(tabulate(tableBody, headers=tableHeaders), end="\n\n") elif fallback == 1: if hi == 1: - print("## Hydrophobic Interactions",end="\n\n") + print("## Hydrophobic Interactions", end="\n\n") tableBody = [] - tableHeaders = ['No.','Res.','AA','Dist','Ligand Atom','Proton Atom'] + tableHeaders = ["No.", "Res.", "AA", "Dist", "Ligand Atom", "Proton Atom"] i = 1 - for x in doc.report.bindingsite.interactions.hydrophobic_interactions.hydrophobic_interaction: + for ( + x + ) in ( + doc.report.bindingsite.interactions.hydrophobic_interactions.hydrophobic_interaction + ): l = [] l.append(i) l.append(x.resnr.cdata) @@ -245,9 +359,20 @@ elif fallback == 1: print(tabulate(tableBody, headers=tableHeaders), end="\n\n") if hb == 1: - print("## Hydrogen Bonds",end="\n\n") + 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'] + 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 = [] @@ -263,13 +388,21 @@ elif fallback == 1: 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(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") + print("## Salt Bridges", end="\n\n") tableBody = [] - tableHeaders = ['Index','Residue','AA','Distance','Protein positive?','Ligand Group','Ligand Atoms'] + 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 = [] @@ -287,12 +420,16 @@ elif fallback == 1: tableBody.append(l) print(tabulate(tableBody, headers=tableHeaders), end="\n\n") - if pc==1: - print("## Pi Cation Interactions",end="\n\n") + if pc == 1: + print("## Pi Cation Interactions", end="\n\n") tableBody = [] - tableHeaders = ['Index','Residue','AA','Distance','Prot charged?','Atoms'] + tableHeaders = ["Index", "Residue", "AA", "Distance", "Prot charged?", "Atoms"] i = 1 - for x in doc.report.bindingsite.interactions.pi_cation_interactions.pi_cation_interaction: + for ( + x + ) in ( + doc.report.bindingsite.interactions.pi_cation_interactions.pi_cation_interaction + ): l = [] l.append(i) l.append(x.resnr.cdata) @@ -310,7 +447,7 @@ elif fallback == 1: 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") +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") |