Skip to content

ligand-classification

GitHub Pages docs

Configuration-driven ligand model benchmarking

ligand-classification turns raw SMILES tables into reproducible feature sets, trains multiple classical ML classifiers through nested cross-validation, and saves enough metadata to audit every run later.

Ligand classification diagram

What this project is for

  • Benchmarking multiple classifiers on the same ligand dataset without rewriting preprocessing code.
  • Keeping feature engineering, hyperparameter search, and output locations under versioned YAML configs.
  • Producing reusable artifacts: processed CSVs, trained pipelines, metrics YAML, dataset summaries, logs, and a central run ledger.

End-to-end workflow

  1. Start from a raw CSV with SMILES and either ID or name.
  2. Run src.cli.process_features to generate descriptors, Mordred features, Morgan fingerprints, and optional DeepPK outputs.
  3. Point a training config at those generated CSVs.
  4. Train via src.cli.train or src.training.train.
  5. Score saved models with src.cli.evaluate or append predictions with src.cli.predict.

Canonical starter example

The docs now use data/example/raw/psychlight_a.csv as the canonical example dataset because it is a populated, checked-in raw CSV with the expected columns and a usable class balance.

conda activate lig-cls
python -m src.cli.process_features data/example/raw/psychlight_a.csv \
    --output-dir data/example/processed/psychlight_a
python -m src.cli.train --config configs/train.yaml \
    --datasets psychlight_a_descriptors \
    --models logisticregression

Note

Older checked-in processed descriptor exports in this repo may still use the legacy *_rdkit.csv name. The current feature CLI writes *_descriptors.csv, and the refreshed configs and docs assume the current naming.

Docs map