- gpu/modal_app.py: add the `pose` local entrypoint used for the HDAC2 pose-RMSD validation (run: `modal run gpu/modal_app.py::pose`). - pyproject [structure] extra: add the deps we actually use locally (gemmi, spyrmsd, meeko, modal) for reproducibility; document the non-pip tools (Vina binary, open-babel) and that Boltz/cuequivariance are Modal-image-only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
59 lines
2.0 KiB
TOML
59 lines
2.0 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "reverso-mvp"
|
|
version = "0.1.0"
|
|
description = "Sickle cell drug repurposing MVP — disease signature + drug profile matching via CMap-style connectivity scoring"
|
|
readme = "README.md"
|
|
requires-python = ">=3.11,<3.14"
|
|
license = { text = "Proprietary" }
|
|
authors = [{ name = "Reverso" }]
|
|
|
|
dependencies = [
|
|
"pandas>=2.0",
|
|
"numpy>=1.24",
|
|
"scipy>=1.11",
|
|
"requests>=2.31",
|
|
"chembl_webresource_client>=0.10", # ChEMBL API client
|
|
"GEOparse>=2.0", # GEO dataset access
|
|
"pydeseq2>=0.4", # Differential expression in Python
|
|
"cmapPy>=4.0", # Reference CMap connectivity implementation
|
|
"pyarrow>=14.0", # Parquet I/O
|
|
"jupyter>=1.0",
|
|
"matplotlib>=3.7", # Sanity-check plots
|
|
"seaborn>=0.13",
|
|
"pydantic>=2.0", # Schema validation for signatures/profiles
|
|
"mygene>=3.2", # Gene symbol -> Entrez/Ensembl mapping
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.0",
|
|
"ruff>=0.5",
|
|
]
|
|
# Structure-based binding track (PLAN §12); see docs/structure_binding_notes.md.
|
|
# Non-pip tools (install separately): AutoDock Vina binary (tools/vina, from the AutoDock-Vina
|
|
# GitHub release) and open-babel (brew). Boltz-2 + cuequivariance run only in the Modal GPU image
|
|
# (gpu/modal_app.py), not locally.
|
|
structure = [
|
|
"rdkit>=2024.3", # ligand prep, fingerprints
|
|
"requests>=2.31", # PubChem / RCSB fetch
|
|
"gemmi>=0.6", # structure parsing + superposition
|
|
"spyrmsd>=0.9", # symmetry-corrected pose RMSD
|
|
"meeko>=0.7", # production docking ligand prep
|
|
"modal>=1.5", # ephemeral GPU orchestration
|
|
]
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["."]
|
|
include = ["src*"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|