#!/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 cmd.color("blue", "hetatm") # color heteroatoms loadMol(ligand, m2) changeColor(m1, "grey60") changeColor(m2, ligandColor) orientEtZoom() showSurface(m1) surfaceTransparency(0.6) generatePictures() endTime = time.time() print("Finished Execution in " + str(round((endTime - startTime), 2)) + " seconds.")