statLens / src /pyproject.toml
domizzz2025's picture
sync: src/ at 0.1.11
a694491 verified
[build-system]
requires = ["hatchling>=1.21"]
build-backend = "hatchling.build"
[project]
name = "statlens"
version = "0.1.11"
description = "Self-hosted DEA method selector — point a TSV at a Qwen3-32B + LoRA classifier and get the right DESeq2/limma pipeline auto-run."
readme = "README.md"
requires-python = ">=3.10"
license = { text = "Apache-2.0" }
authors = [
{ name = "statLens contributors" },
]
keywords = ["bioinformatics", "differential expression", "DESeq2", "limma", "LLM", "Qwen3", "vLLM"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: Apache Software License",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering :: Bio-Informatics",
]
dependencies = [
# web
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
"python-multipart>=0.0.10",
"httpx>=0.27",
# serving — LLaMA-Factory wraps transformers + bitsandbytes for streamable bnb 4-bit
"llamafactory>=0.9,<1.0",
"bitsandbytes>=0.43",
"torch>=2.1",
# torchaudio 2.11+ requires CUDA 13; pin <2.11 to keep CUDA 12.x users happy.
# (llamafactory imports torchaudio unconditionally for multimodal templates.)
"torchaudio<2.11",
"transformers>=4.45",
"peft>=0.12",
"huggingface_hub>=0.25",
"pyyaml>=6.0",
# data + plots used by V4 pipelines
"pandas>=2.0",
"numpy>=1.26",
"matplotlib>=3.8",
"seaborn>=0.13",
"scipy>=1.13",
"statsmodels>=0.14",
"scikit-learn>=1.4",
# DESeq2 (pure Python; no R)
"pydeseq2>=0.5",
# CLI niceties
"rich>=13.0",
"click>=8.0",
]
[project.urls]
Homepage = "https://huggingface.co/domizzz2025/statLens"
Repository = "https://huggingface.co/domizzz2025/statLens"
[project.scripts]
statlens = "statlens.cli:main"
[tool.hatch.build.targets.wheel]
packages = ["statlens"]
# data/ + pipelines/ are inside the package dir and picked up automatically;
# we only need to make sure they're not excluded.
include = [
"statlens/**/*.py",
"statlens/**/*.html",
"statlens/**/*.tsv",
"statlens/**/*.sh",
"statlens/**/*.md",
]