import sys
from collections import defaultdict
import numpy as np
import py3Dmol
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import PandasTools
import pandas as pd
IPythonConsole.ipython_3d=True
%pylab inline
# File locations, this is the final output from ConformationGenerationDocking.ipynb
DockingsdfFilePath = 'Alldata.sdf.gz' # The results of the docking experiment.
docked_df = PandasTools.LoadSDF(DockingsdfFilePath,molColName='Molecule', removeHs=False)
docked_df.head(5) #view the first 5 rows
#docked_df.sort_values(["minimizedAffinity"], axis=0, ascending=False, inplace=True) #sort by minimised affinity
docked_df.sort_values(["RFScoreVS_v2"], axis=0, ascending=False, inplace=True) #or sort by scoring function
docked_df.head(5) # rows should now be sorted with best scoring top
selectedPose = 'selectedpose.sdf'
PandasTools.WriteSDF(docked_df.head(5), selectedPose, molColName="Molecule", idName="ID", properties=list(docked_df.columns))
selecteddocked_df = PandasTools.LoadSDF(selectedPose,molColName='Molecule', removeHs=False)
selecteddocked_df
m = Chem.MolFromMolFile(selectedPose, removeHs=False) #View first structure, No hydrogens
m
selectedPose = 'selectedpose.sdf'
selectedPoseH = 'selectedposeH.sdf' #added hydrogens
from openbabel import pybel
largeSDfile = pybel.Outputfile("sdf", selectedPoseH, overwrite=True)
for molecule in pybel.readfile("sdf", selectedPose):
molecule.OBMol.AddHydrogens()
largeSDfile.write(molecule)
mH = Chem.MolFromMolFile(selectedPoseH, removeHs=False) #View first structure, Hydrogens present
mH
#first type pymol R in a Terminal window to start pymol
import xmlrpc.client as xmlrpclib
ProteinForDocking = 'protein_minus_ligand.pdb'
selectedPoseH = 'selectedposeH.sdf' #
srv = xmlrpclib.ServerProxy('http://localhost:9123')
svrcommand = 'load ' + ProteinForDocking
srv.do(svrcommand)
svrcommand = 'load ' + selectedPoseH
srv.do(svrcommand)
srv.do ('select prot, (protein)')
srv.do ('show surface, prot')