aboutsummaryrefslogtreecommitdiff
path: root/app/scripts/quick-ligand-protein.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/scripts/quick-ligand-protein.py')
-rw-r--r--app/scripts/quick-ligand-protein.py121
1 files changed, 121 insertions, 0 deletions
diff --git a/app/scripts/quick-ligand-protein.py b/app/scripts/quick-ligand-protein.py
new file mode 100644
index 0000000..6ea16c1
--- /dev/null
+++ b/app/scripts/quick-ligand-protein.py
@@ -0,0 +1,121 @@
+#!/usr/bin/python3
+import argparse
+
+# import logzero
+# import logging
+# from logzero import logger as log
+import pymol2
+import time
+
+import os
+
+print(os.getcwd())
+
+#################
+# Configuration #
+#################
+
+startTime = time.time()
+version = "1.0"
+desc_text = "PyMol Quick Visualtion " + version
+ligandColor = "red"
+# logzero.loglevel(logging.INFO)
+height = 1000
+width = 800
+dpi = 300
+ray = 0
+
+
+m1 = "target"
+m2 = "ligand"
+
+parser = argparse.ArgumentParser(description=desc_text)
+parser.add_argument("-p", "--protein", help="Path to protein file")
+parser.add_argument("-l", "--ligand", help="Path to ligand_out file")
+parser.add_argument("-c", "--color", help="Color for ligand in visualisation")
+
+args = parser.parse_args()
+
+if args.protein == None:
+ print("Error: Please specify protein file")
+ exit(1)
+if args.ligand == None:
+ print("Error: Please specify ligand file")
+ exit(1)
+if args.color == None:
+ print("No color was speciifed, using default settings.")
+
+protein = args.protein
+print("Protein: ", protein)
+ligand = args.ligand
+
+
+def loadMol(filename, name):
+ print("Loading " + filename + " as " + name)
+ cmd.load(filename, name)
+
+
+def changeColor(name, colorName):
+ print("Changed " + name + "'s color to " + colorName)
+ cmd.color(colorName, name)
+
+
+def orientEtZoom():
+ cmd.orient()
+ cmd.zoom()
+
+
+def showSurface(name):
+ cmd.show("surface", name)
+
+
+def surfaceTransparency(amount):
+ print("Changed surface transparency to " + str(amount * 100) + "%")
+ cmd.set("transparency", amount)
+
+
+def generatePNG(filename, height=height, width=width, dpi=dpi, ray=ray):
+ print("Generating " + filename + ".png")
+ cmd.png(filename, height, width, dpi=dpi, ray=ray)
+
+
+def flipHorizontal():
+ cmd.rotate("y", 180)
+
+
+def zoomTo(name):
+ cmd.zoom(name)
+
+
+def generatePictures():
+ generatePNG("output-front")
+ flipHorizontal()
+ generatePNG("output-back")
+ zoomTo(m2)
+ generatePNG("closeup-back")
+ orientEtZoom()
+ flipHorizontal()
+ zoomTo(m2)
+ generatePNG("closeup-front")
+
+
+print("Initialising PyMol")
+session = pymol2.PyMOL()
+print("Starting PyMol Session")
+session.start()
+cmd = session.cmd
+
+loadMol(protein, m1)
+cmd.remove("resn hoh") # remove water
+loadMol(ligand, m2)
+changeColor(m1, "grey60")
+changeColor(m2, ligandColor)
+cmd.color("blue", "hetatm") # color heteroatoms
+orientEtZoom()
+showSurface(m1)
+surfaceTransparency(0.6)
+
+generatePictures()
+
+endTime = time.time()
+print("Finished Execution in " + str(round((endTime - startTime), 2)) + " seconds.")