binderqc
Quality control and tag-site scoring for designed protein binders — geometry and sequence only, one CSV row per binder, straight from a predicted complex.
Install
pip install binderqc
Python 3.10+. Pulls in biotite, numpy, and pandas. (From source, for
development: pip install -e ".[test]".)
Usage
binderqc --binder-chains A --target-chains B --out out.csv complex.cif some_dir/
from binderqc import score_structure
rows = score_structure("complex.pdb", binder_chains=["A"], target_chains=["B"])
Inputs are PDB/CIF files, globs, or directories. Leave --binder-chains off to
guess the binder as the shortest chain (20–250 aa, printed for each file);
--target-chains defaults to the remaining chains.
| flag | default | meaning |
|---|---|---|
--binder-chains |
auto-guess | comma-separated binder chain ids |
--target-chains |
all non-binder | comma-separated target chain ids |
--interface-cutoff |
5.0 |
heavy-atom contact distance (Å) |
--exposure-cutoff |
0.25 |
relSASA below which a terminus is buried |
--out |
binderqc.csv |
output CSV path |
--fasta |
off | also write the QC-passing binders to this FASTA |
Example output for the bundled LCB1 minibinder (a few of the columns):
| recommended_tag | binder_bsa | epitope_planarity | epitope_aromatic_n | pi | qc_pass |
|---|---|---|---|---|---|
| C | 1021.4 | 3.21 | 11 | 4.17 | True |
Its warnings field reads both termini ~equidistant from interface (ambiguous) —
a tag-site advisory, so qc_pass stays True.
What it reports
Per binder chain:
- Interface — buried surface area, interface residue count, hydrogen-bond and salt-bridge counts, and a contact-packing density (a lightweight proxy for contact molecular surface).
- Pose — approach angle (end-on vs. lying across the surface).
- Grippability — epitope planarity, hydrophobic fraction, aromatic anchors.
- Tag site — recommended terminus (N/C) and the numbers behind it: relative SASA, CA–CA distance to the paratope, orientation, and a terminal cysteine's SG SASA.
- Developability — an SAP-style spatial aggregation score, sequence liabilities, GRAVY, pI, MW, ε₂₈₀.
A warnings column flags problems (small, flat, or anchorless interfaces;
buried, ambiguous, or interface-facing tag sites; hydrophobic sequences).
qc_pass is true when there are no quality warnings — tag-site advisories like
an ambiguous terminus don't count — and --fasta dumps exactly those binders.
Full column list
pdb, binder_chain, target_chains, n_interface_res, binder_bsa, n_hbonds, n_salt_bridges, interface_packing, approach_angle, epitope_planarity, epitope_hydrophobic_frac, epitope_aromatic_n, nterm_resnum, nterm_resname, nterm_relsasa, nterm_dist_to_interface, nterm_orientation, nterm_sg_sasa, cterm_resnum, cterm_resname, cterm_relsasa, cterm_dist_to_interface, cterm_orientation, cterm_sg_sasa, recommended_tag, mw, gravy, pi, ext_coeff_280, sap_score, sequence_liabilities, warnings, qc_pass, binder_sequence
Tests
pip install -e ".[test]"
pytest
Runs against a bundled example, PDB 7JZU (the LCB1 minibinder on the SARS-CoV-2 RBD). LCB1 comes from Cao et al. (2020), whose framing is exactly what binderqc is built around — the bottleneck is selecting good binders, not designing them:
"…not in the de novo design of proteins with shape and chemical complementarity to the target surface, but in recognizing the best candidates."
In that work LCB1 buries ~1,000 Ų and forms "multiple hydrogen bonds and salt bridges … consistent with the subnanomolar affinities." binderqc run on 7JZU is in line with that: it reports 1021 Ų buried area (matching the reported ~1,000 Ų), plus 2 salt bridges and 17 interface polar contacts. The buried-area figure is a genuine quantitative match; the polar-contact count is a geometric proxy (no hydrogens/angles) that corroborates "multiple," not an exact H-bond count. See Cao et al., De novo design of picomolar SARS-CoV-2 miniprotein inhibitors, Science 370, 426–431 (2020), doi:10.1126/science.abd9909.
tests/pisa_correctness.py is a separate script (not part of the unit
tests) that downloads 18 public complexes from RCSB and PDBePISA and checks the
interface area against PISA (r ≈ 1.0, ~1% median error):
pip install -e ".[validation]"
python tests/pisa_correctness.py
License
MIT
Metadata
Release files for binderqc 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| binderqc-0.2.0.tar.gz | 485.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| binderqc-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 502.1 kB
Release files / binderqc-0.2.0.tar.gz
| Download URL | binderqc-0.2.0.tar.gz |
|---|---|
| Size | 485.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2d70f82099f2389a20c46cf90753b7178875a117c6077b8d2bcdb1c18cf594bf
|
|
BLAKE2b-256 checksum How to use checksums |
0463f3a2161f220bc0e17786f7dbc7cd28158544b950838cdcaef166e861db64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.
Transparency logRelease files / binderqc-0.2.0-py3-none-any.whl
| Download URL | binderqc-0.2.0-py3-none-any.whl |
|---|---|
| Size | 16.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d8b6fe8920ae1fd40c5a221eeb4a65a1d5da1e5406e3902f37ef42ed4ca13224
|
|
BLAKE2b-256 checksum How to use checksums |
f8c4c1b5822adf829f04a2fbfe181db22c6d8fe8addc64ed72d08f97878baa82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.
Transparency log