Skip to main content

poke PyPI License Python

Overview

Poké is a high-performance pocket scouting engine. It uses an energy-based approach to identify low-energy regions on protein surfaces. These regions are characterized by a set of physical descriptors, which are used by a neural network to assign a ligandability score to the pocket.

It is designed to be used on long molecular dynamics trajectories, but it works equally well on single frames.

Installation

Poké is available on PyPI under the name poke-scouter. Install it using pip:

python -m pip install poke-scouter

The package provides the poke command and the poke Python module. Alternatively, the package can be installed directly from GitHub:

git clone https://github.com/SibyllaBiotech/poke
pip install ./poke

Getting started

Poké can be used on a single structure with the following command:

poke -dvp protein.pdb

The result will appear in a folder named after the input file (in this example protein) in the current working directory. The flags -dvp specify the desired output files:

  • -d for the descriptors CSV
  • -v for the volumes (a PDB file with the grid points of each pocket)
  • -p for a PyMOL script to visualize the pockets

Use -h to see all available options, or see the CLI Reference for the complete list.

Poké can be used on multiple files:

poke -dvp protein1.pdb protein2.pdb

In this case it will create two output folders called protein1 and protein2.

To run the scouter on all frames of a trajectory, a reference structure must be provided to define the atom types (its positions will not be used):

poke -dvp reference.pdb trajectory.xtc

Multiple trajectories can be concatenated:

poke -dvp reference.pdb trajectory1.xtc trajectory2.xtc

If the input is a long list of different files they can be listed in a text file (.txt, one path per line) and passed to Poké:

poke -dvp list.txt

Structure Preparation

The --prepare flag enables automatic structure preparation before pocket scouting. This includes selecting the best alternate locations, adding missing hydrogen atoms according to the CHARMM force field, and assigning terminal caps to chains. When preparation is enabled, the extraction flag (-e) is automatically turned on so that the protonated structure is written to the output.

poke -dvp --prepare protein.pdb

Alt-location selection

When atoms have alternate locations (alt-locs), the preparator selects the best conformer for each residue based on highest occupancy. In case of a tie, the conformer with the lowest temperature factor is preferred.

Hydrogen addition

Missing hydrogen atoms are added based on the CHARMM force field definitions. By default all existing hydrogens are removed and re-added. Use --keep-hydrogens to retain existing hydrogens and only add the missing ones:

poke -dvp --prepare --keep-hydrogens protein.pdb

Capping

Terminal caps are automatically added to chain ends. The preparator detects chain separations based on several criteria: changes in species type (protein, nucleic acid), segment ID (chain) changes, large jumps in residue IDs, and explicit termini indices.

The default caps are NH3+/COO- for proteins and 5TER/3TER for nucleic acids. These can be customized:

Flag Description
--caps-types TYPE N_TERM C_TERM ... Cap types for each species (e.g., protein NH3+ COO-)
--caps-exclude NAME ... Residue names to skip when capping (default: ACE NME)
--ignore-segid Do not use segment IDs to detect chain separations
--max-other-len LEN Max "other" residues before a chain is considered interrupted (default: 5)
--resid-threshold LEN Residue ID jump to consider a chain interrupted (default: 50, used only if segid is absent)
--ter-indices IX ... Explicit 0-based residue indices to treat as terminal

Protonation states

Residues with titratable side chains can be assigned specific protonation states. The default is auto, which uses the presence of specific hydrogen atoms or geometric criteria (covalent/hydrogen bond detection) to determine the correct state.

Flag Options Auto-detection method
--his TYPE auto, bond, HSP, HSE, HSD Presence of HD1/HE2 or hydrogen bonding
--cys TYPE auto, bond, CYS, CYS2 Presence of HG1 or covalent bonding (disulfide)
--lys TYPE auto, LYS, LSN —
--arg TYPE auto, ARG, ARGN —
--glu TYPE auto, GLU, GLUP —
--asp TYPE auto, ASP, ASPP —

For fine-grained control, --custom-restype IX TYPE can be used to override the residue type at specific 0-based indices:

poke -dvp --prepare --custom-restype 42 HSE 105 CYS2 protein.pdb

Preparation selection

By default, only proteins, nucleic acids, and common cofactors and structural ions are prepared. Use --selection-prepare with an MDAnalysis selection string to control which atoms undergo preparation:

poke -dvp --prepare --selection-prepare "protein" protein.pdb

Output Descriptors

Use the -d flag to save pocket descriptors in a CSV file (descriptors.csv). The file contains one row per pocket with the following columns, in order:

Column Description
OutputFrame Index of the frame in the output trajectory. Equal to the input frame index when no extraction or sorting is performed.
OriginalFrame Index of the frame in the input trajectory. When multiple trajectories are concatenated this is the index in the concatenated trajectory (the reference frame is not counted).
PocketResid Residue ID assigned to the pocket in the volume PDB file (starting at 800).
Score Druggability score assigned by the neural network model.
Core Volume Low-energy space available to the ligand, in ų. Proportional to the number of grid points and the grid spacing.
Surface Surface area of the pocket, in Ų. A point is considered superficial when it has fewer than 5 adjacent points. The surface-to-volume ratio provides insight into pocket shape.
Accessible Volume Low-energy space surrounding the pocket core, in ų. Counted on the low-resolution grid within the distance set by --accessible-cutoff.
Length1 First principal length of the pocket: the square root of the largest eigenvalue of the covariance matrix of the pocket surface points, in units of the grid spacing (0.5 Å).
Length2 Second principal length, in the same units.
Length3 Third principal length (smallest), in the same units.
Hydrophobicity Fraction of pocket atoms with an absolute partial charge less than 0.3e.
Enclosure Enclosure indicator between 0 and 1, computed from the vectors joining each surface point to its nearest atoms. In a buried pocket the atoms surround the points and the vectors cancel out, giving a value close to 1; in an open pocket they point one way and the value is close to 0.
#PolarAtoms Number of pocket atoms with an absolute partial charge between 0.3e and 0.7e.
#ChargedAtoms Number of pocket atoms with an absolute partial charge greater than 0.7e.
Residues Space-separated list of residue IDs that form the pocket.
Atoms (Optional) Space-separated list of atom indices belonging to the pocket. Only included when the --write-atoms flag is used.

Other Outputs

Extracted trajectory

Normally Poké does not produce a new trajectory. Use the -e flag to extract frames that contain at least one pocket into a new trajectory file (frames.xtc + structure.pdb).

Frames can be sorted by any pocket property using the -s flag (descending order). Combined with -n, only the top n frames are kept:

poke -dvp -e -s score -n 10 protein.pdb

The OutputFrame column in the descriptors CSV reflects the new frame ordering after sorting.

Volume points

The -v flag writes a multi-model PDB file (volumes.pdb) containing the grid points of each pocket. Each pocket is assigned a unique residue ID (starting at 800) with residue name PCK. The B-factor column stores the electrostatic potential value at each point.

Density maps

The -dx flag produces an OpenDX density map (density.dx) showing pocket occupancy across trajectory frames. The grid uses a 1.0 Å spacing with a 5.0 Å margin around the structure bounding box. If the mrcfile package is installed, an MRC format map (density.mrc) is also generated.

PyMOL script

The -p flag generates a PyMOL script (pymol.pml) that loads the structure, trajectory, and volume files and sets up a ready-to-use visualization.

Pickle

The -k flag saves the raw Pocket objects in a pickle file (pockets.pickle), one list per frame. This is useful for custom analysis in Python.

Histograms

The -g flag generates histogram plots (histograms/*.png) showing the distribution of each descriptor across all pockets found. The appearance can be customized with environment variables:

Variable Description
POKE_FONT Font family for plots
POKE_FIGSIZE Figure size as comma-separated values (e.g., 8,4)
POKE_COLOR Override bar color
POKE_QUANTILES Set to no, false, or 0 to hide quantile lines

Launch script

The -ls flag saves the full Poké command to a bash script (launch.sh) for reproducibility.

Compression

The -z flag compresses the volume PDB and pickle outputs using gzip (.pdb.gz, .pickle.gz). Most downstream programs can read gzip-compressed files directly.

Input Atoms Filtering

It is possible to use only a subset of the atoms to compute energy maps. The atoms can be selected using the -ss flag with an MDAnalysis selection string. For example, to select only protein atoms when the PDB file contains water molecules:

poke -dvp -ss "protein" protein.pdb

The -so flag controls which atoms are written in the output trajectory. Atoms not in the -so selection are still used to compute energy maps unless removed with -ss.

Pocket Filtering

Pockets can be filtered by any property or by the residues involved. The -f flag takes a Python expression; a pocket is kept only if the expression evaluates to True.

To select pockets with volume greater than 100 ų:

poke -dvp -f "volume > 100" protein.pdb

To combine conditions:

poke -dvp -f "score > 6 and enclosure > 0.5" protein.pdb

Available properties

All pocket descriptors are available in filter and sort expressions: score, volume, surface, accessible, hydrophobicity, enclosure, lengths (array of 3), n_polar_atoms, n_charged_atoms, n_apolar_atoms. Note that volume and accessible are the properties written in the Core Volume and Accessible Volume columns.

Filter functions

Function Description
residues(*resids, min_common=, max_extra=) Check if the pocket contains at least min_common residues from the given list and at most max_extra additional residues.
jaccard(*resids) Jaccard similarity between the pocket's residues and the given residue IDs.
tversky(*resids, a=, b=) Tversky similarity index with tunable weights.
rmsd(selection="all") RMSD of the pocket atoms against the reference. Use selection="CA" for Cα-only RMSD.
resids Set of residue IDs belonging to the pocket.

Example — keep only pockets that overlap with residues 42, 58, and 102:

poke -dvp -f "residues(42, 58, 102, min_common=2)" protein.pdb

Sorting

The -s flag sorts pockets using the same expression syntax (descending order). After sorting, -n limits the output to the first n pockets:

poke -dvp -s score -n 5 protein.pdb

Python Package

The scouter can be used through Python for maximum flexibility:

from poke import Poke
from MDAnalysis import Universe

u = Universe('1gkc.pdb')

scouter = Poke.from_mdanalysis(u.atoms)
pockets = scouter.get_pockets(u.atoms.positions)

for p in pockets:
    print(p)

Plugins

Chimera plugin

The plugin allows interactive pocket scouting directly inside UCSF Chimera. To install, copy the plugin directory to the Chimera share folder:

cp -r plugins/chimera/Poke /path-to-chimera/share/

How to cite

If you use Poké in your research, please cite:

Colasurdo, E., Boldrini, A., Terruzzi, L., Langini, C., Risueño Fernández, C., Varricchio, C., Primavera, E., Cassese, E., Patsilinakos, A. & Spagnolli, G. Poké: Fast and Reliable Neural-Network-Based Identification of Protein Ligandable Sites. ACS Omega (2026). https://doi.org/10.1021/acsomega.6c04816

Metadata

Release files for poke-scouter 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for poke-scouter 0.1.1
File Size Uploaded Provenance
poke_scouter-0.1.1.tar.gz 296.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for poke-scouter 0.1.1
File Interpreter ABI Platform
poke_scouter-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 602.7 kB

Release files / poke_scouter-0.1.1.tar.gz

Download URL poke_scouter-0.1.1.tar.gz
Size 296.4 kB
Tags Source
SHA-256 checksum
How to use checksums
67b344a529f8314874f775ef4d8b8ec1fa77ee738cfa03e4f29d4b8196e1442e
BLAKE2b-256 checksum
How to use checksums
cf3e651a7a1dedd42ce4a94ef6e43d78430eee2c08c23a15d84e8211d6bc3770
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.0

Release files / poke_scouter-0.1.1-py3-none-any.whl

Download URL poke_scouter-0.1.1-py3-none-any.whl
Size 306.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
66fa8b927ff8d28ca9432f10bc51c402602bee1092549937f242a68e13e7f487
BLAKE2b-256 checksum
How to use checksums
d0ec2657dbd32631444603313a4d49242b64bbe85750be99d2e6402087bbfe49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.0

Security for poke-scouter 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page