plinder.eval.commands#

Run OpenStructure and PoseBusters on prepared structures.

Results retain the tools’ field names and assignments. Reference selection and PLINDER’s proper-ligand selection belong to the calling workflow.

plinder.eval.commands.run_openstructure(model: str | Path, reference: str | Path, output: str | Path, *, action: Literal['compare-structures', 'compare-ligand-structures'], options: Sequence[str] = (), executable: str | Path = 'ost') → dict[str, Any][source]#

Run an OST comparison and return its complete JSON result.

model and reference are coordinate files accepted by OST. Ligand comparisons include lDDT-PLI, binding-site-superposed RMSD, backbone RMSD (bb_rmsd) and lDDT-LP. Structure comparisons include lDDT, iLDDT, QS-score and DockQ, including penalties for unmapped reference interfaces. options passes additional CLI arguments directly to OST, for example ["--model-ligands", "pose.sdf"]. Embedded mmCIF ligands use OST’s own detection and chemistry rules.

The JSON file and a sibling .log file are retained. Failed comparisons raise an error, including when OST reports FAILURE with a zero exit code. Requires the ost executable from Bioconda’s OpenStructure package.

plinder.eval.commands.run_posebusters(ligands: Sequence[str | Path], receptor: Mol, output: str | Path, *, full_report: bool = False) → pd.DataFrame[source]#

Check SDF poses against a receptor RDKit molecule with residue metadata.

Create the receptor using biotite.interface.rdkit.to_mol(receptor_atoms). Its residue names and hetero flags let PoseBusters distinguish receptor, cofactor and water atoms. An SDF round trip loses that distinction. Ligands must have lowercase .sdf extensions. The returned table and CSV retain PoseBusters’ columns, file names and SDF record positions. Requires pip install plinder[eval].

Failed plausibility checks are returned as False. A missing/unreadable result or an unloaded receptor raises an error, because intermolecular checks would otherwise be absent.