Skip to content

Commit

Permalink
added receptor preprocessing
Browse files Browse the repository at this point in the history
  • Loading branch information
lmdu committed Jul 14, 2023
1 parent ff26e3b commit 3b5265a
Show file tree
Hide file tree
Showing 6 changed files with 587 additions and 202 deletions.
14 changes: 7 additions & 7 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,6 @@ class DockeyApplication(QApplication):

def __init__(self, argv):
super().__init__(argv)
self.setOrganizationName("BIG")
self.setOrganizationDomain("dockey.readthedocs.io")
self.setApplicationName("Dockey")
self.setApplicationVersion(DOCKEY_VERSION)

def event(self, event):
if sys.platform == 'darwin':
Expand All @@ -33,14 +29,18 @@ def event(self, event):
#fix incorrect icon display in taskbar on Windows
if os.name == 'nt':
import ctypes
myappid = "BIG.Dockey.Dockey.{}".format(DOCKEY_VERSION)
myappid = "Dulab.Dockey.Dockey.{}".format(DOCKEY_VERSION)
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)

QCoreApplication.setOrganizationName("Dulab")
QCoreApplication.setOrganizationDomain("big.cdu.edu.cn")
QCoreApplication.setApplicationName("Dockey")
QCoreApplication.setApplicationVersion(DOCKEY_VERSION)
QSettings.setDefaultFormat(QSettings.Format.IniFormat)

app = DockeyApplication(sys.argv)
win = DockeyMainWindow()

QSettings.setDefaultFormat(QSettings.Format.IniFormat)

#support for macos open with when associated with dock file
app.osx_open_with.connect(win.create_db_connect)

Expand Down
68 changes: 57 additions & 11 deletions src/prepare.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
import MolKit.molecule
import MolKit.protein

#from pdbfixer import PDBFixer
from pdbfixer import PDBFixer
from openmm.app import PDBFile

from pdb2pqr.main import build_main_parser, main_driver

from MolKit import Read
from MolKit.molecule import BondSet
Expand All @@ -21,21 +24,64 @@
from utils import load_molecule_from_file

__all__ = ['prepare_autodock_ligand', 'prepare_autodock_receptor',
'prepare_meeko_ligand', 'prepare_ligand', 'prepare_flex_receptor'
'prepare_meeko_ligand', 'prepare_ligand', 'prepare_flex_receptor',
'fix_receptor_pdb', 'convert_pdb_to_pqr'
]


def fix_receptor_pdb(receptor_file):
fixer = PDBFixer(receptor_file)
def fix_receptor_pdb(pdbfile, outfile, params):
fixer = PDBFixer(filename = pdbfile)
fixer.findMissingResidues()
fixer.findNonstandardResidues()
fixer.replaceNonstandardResidues()
fixer.removeHeterogens(True)
fixer.findMissingAtoms()
fixer.addMissingAtoms()
fixer.addMissingHydrogens(7.0)
fixer.addSolvent(fixer.topology.getUnitCellDimensions())

if params['replace_nonres']:
fixer.findNonstandardResidues()
fixer.replaceNonstandardResidues()

if params['remove_heterogen']:
fixer.removeHeterogens(True)
else:
fixer.removeHeterogens(False)

if params['add_misheavy']:
fixer.findMissingAtoms()
fixer.addMissingAtoms()

if params['add_mishydrogen']:
fixer.addMissingHydrogens(params['mishydrogen_ph'])

with open(outfile, 'w') as fw:
PDBFile.writeFile(fixer.topology, fixer.positions, fw)

def convert_pdb_to_pqr(pdbfile, pqrfile, params):
args_list = ["--ff", params['force_field']]

if params['force_field'] == 'PARSE':
if params['neutraln']:
args_list.append('--neutraln')

if params['neutralc']:
args_list.append('--neutralc')

if params['use_propka']:
args_list.extend(['--titration-state-method', 'propka'])
args_list.extend(['--with-ph', params['propka_ph']])

if params['node_bump']:
args_list.append('--nodebump')

if params['no_hopt']:
args_list.append('--noopt')

if params['remove_water']:
args_list.append('--drop-water')

args_list.append(pdbfile)
args_list.append(pqrfile)
args_list.extend(['--log-level', 'ERROR'])

parser = build_main_parser()
args = parser.parse_args(args_list)
main_driver(args)

def prepare_autodock_ligand(ligand_file, ligand_pdbqt, params):
repairs = params['repairs']
Expand Down
13 changes: 12 additions & 1 deletion src/process.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ def __init__(self, job, params, cmds, work_dir, producer):
self.dock_params = params[0]
self.ligp_params = params[1]
self.repp_params = params[2]
self.prep_params = params[3]
#self.grid_spacing = params[3]

if os.name == 'nt':
Expand Down Expand Up @@ -269,7 +270,7 @@ def update_success(self):
def prepare_receptor(self):
rpdbqt = os.path.join(self.work_dir, "{}.pdbqt".format(self.job.rn))

if self.job.rf in ['pdb', 'mol2']:
if self.job.rf == 'pdb':
content = self.job.rc
rfile = os.path.join(self.work_dir, "{}.{}".format(self.job.rn, self.job.rf))

Expand All @@ -280,6 +281,16 @@ def prepare_receptor(self):
with open(rfile, 'w', encoding='utf-8') as fw:
fw.write(content)

if self.prep_params['use_pdbfix']:
pfile = rfile
rfile = os.path.join(self.work_dir, "{}.fix.pdb".format(self.job.rn))
fix_receptor_pdb(pfile, rfile, self.prep_params)

if self.prep_params['use_pdbpqr']:
pfile = rfile
rfile = os.path.join(self.work_dir, "{}.pqr".format(self.job.rn))
convert_pdb_to_pqr(pfile, rfile, self.prep_params)

prepare_autodock_receptor(rfile, rpdbqt, self.repp_params)

#prepare flexible residues
Expand Down
Loading

0 comments on commit 3b5265a

Please sign in to comment.