[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"]