plinder.core.scores.search#

Search PLINDER using an input table, protein structures, or sequences.

plinder.core.scores.search.search(inputs: str | Path | DataFrame, *, output_dir: str | Path, release: PlinderRelease | None = None, mode: Literal['auto', 'pockets', 'ligands', 'interfaces', 'both'] = 'auto', backends: Iterable[str] | None = None, threads: int = 1, search_config: CustomProteinSearchConfig | None = None, plinder_entry_ids: Iterable[str] | None = None, store_aligned_pocket_residues: bool = False, include_monomers: bool = True) → CustomScoringResult | CustomSequenceScoringResult[source]#

Search with the same structure table accepted by evaluation.

Tables contain input_id, structure_path and optional ligand_path. A receptor and its SDFs share an input ID; paths are relative to the table. Complete mmCIFs use an empty ligand_path. reference_id is ignored here.

For ligand-free queries, pass a FASTA, one PDB/mmCIF, or a folder of those structures. FASTA searches use MMseqs; structure searches use Foldseek and MMseqs by default. mode='pockets' compares protein/pocket features, 'ligands' includes ligand similarities, and 'interfaces' includes protein interfaces. 'both' includes both; 'auto' uses applicable features (ligand comparisons require a table).

PDB receptors contribute amino-acid residues, including modified amino acids; other PDB components are omitted. Supply ligand poses through ligand_path.

The returned result contains paths to score tables and alignment files. chain_similarity_scores gives direct protein-chain hits, with query and target coverage, identity, sequence similarity, and Foldseek lDDT as integer percentages. FASTA results include the original sequence_id. With include_monomers=True, chain hits also cover proteins outside ligand pockets and protein interfaces. Pocket and interface scores still use their own targets. search_config controls search filters. Its shared evalue defaults to 0.01; foldseek_evalue, mmseqs_evalue and steam_evalue override it independently for their respective backends. Input IDs become custom structure IDs in these outputs. Generated ligand chain IDs map to the original SDF paths in inputs/<input_id>.ligands.tsv.