Skip to content

mwinokan/PoseButcher

Repository files navigation

PoseButcher

logo

GitHub Tag GitHub Actions Workflow Status Documentation Status GitHub last commit GitHub Issues or Pull Requests

"A good butcher always trims the fat"

PoseButcher is a tool for categorising and segmenting virtual hits with reference to experimental protein structures and (fragment) hits.

DOCUMENTATION

Ligand atoms are tagged with categories:

- GOOD:

	* fragment space: within the fragment bolus
	* pocket X: in a specified catalytic/allosteric pocket X

- BAD:
	
	* protein clash: Clashing with the protein
	* solvent space: Heading out of the protein/crystal

Usage at a glance

1. Create the butcher (see PoseButcher.__init__):

	from posebutcher import PoseButcher
	butcher = PoseButcher(protein, hits, pockets)

2. Chop up a posed virtual hit (rdkit.ROMol with a conformer):

	result = butcher.chop(mol)

3. Tag a compound based on its pocket occupancy and clashes:

	tags = butcher.tag(mol)

4. Explore the expansion opportunities from a given atom in a virtual hit

	result = butcher.explore(mol)

5. (Coming soon) Trim a parts of a compound that clash with a protein or leave the crystal

	mol = butcher.trim(mol)

6. (Coming soon) Score how well a virtual hit recapitulates shape and colour of the fragment bolus

	score: float = butcher.score(mol)

Sample output

Protein, ligand, and catalytic site pockets with Open3D:

butcher_3d

A chopped up ligand:

butcher_2d

Exploring expansion vector into a desirable pocket

butcher_vector