-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
103 lines (97 loc) · 4.09 KB
/
Copy pathpyproject.toml
File metadata and controls
103 lines (97 loc) · 4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
[build-system]
requires = ["setuptools>=61", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "procap-atlas-local"
version = "0.1.0"
description = "Local Python environment for PRO-cap atlas scripts"
requires-python = ">=3.12,<3.13"
dependencies = [
"bpnet-lite>=1.0.0",
# finemo's pyBigWig dependency ships Linux-only wheels and fails to build
# cleanly from sdist on macOS; Fi-NeMo hit calling is a Sherlock/Linux step.
"finemo; sys_platform == 'linux'",
"joblib",
"jupyter-client",
"leidenalg==0.10.2",
"matplotlib",
"numpy",
"pandas",
# Pillow 12.3.0 dropped manylinux_2_17 wheels (Sherlock's glibc tier),
# forcing a source build that fails without system jpeg headers.
"pillow<12.3.0",
# Newer pybigtools releases can require source builds that fail on
# Sherlock's older assembler/toolchain.
"pybigtools==0.2.5",
"pyfaidx",
"pyyaml",
"scipy",
"seaborn",
"tangermeme>=1.4.0",
"tqdm",
]
[project.optional-dependencies]
hf = ["huggingface-hub"]
# torch is not a base dependency: Sherlock's pip/uv can only resolve wheels up
# to torch==2.6.0, while Cherimoya needs its real torch>=2.9.0/triton>=3.5.1.
# These can't be satisfied by one resolution, so each lives in its own extra
# below, declared mutually exclusive via tool.uv.conflicts.
sherlock = [
"torch==2.6.0; sys_platform == 'linux'",
"torch; sys_platform != 'linux'",
]
# Apptainer on Sherlock bypasses this lock entirely; use this extra for a
# native (non-Apptainer) Cherimoya install on other, modern-glibc Linux
# hardware. See src/cherimoya/apptainer/ for the Sherlock path.
# Pinned to an exact commit rather than PyPI's 0.2.0 release or the "v0.2.0"
# git tag: the tag was force-moved upstream to this commit (adds EMA weight
# averaging, switches checkpoint selection to valid_count_corr instead of a
# combined loss), but the PyPI 0.2.0 wheel predates that rewrite and still
# has the old behavior -- see src/cherimoya/apptainer/cherimoya.def and
# src/cherimoya/sherlock_native/setup_env.sh, pinned to the same commit.
cherimoya = ["cherimoya @ git+https://github.com/jmschrei/cherimoya.git@8e4283fe56db4a29418c1d8119da3240d7c709ba ; sys_platform == 'linux'"]
# MotifCompendium and personal_bpnet are external/local research dependencies
# until resolvable install sources are confirmed.
# Metaformer / promoterai-torch is still in development and will be added
# when finished.
[dependency-groups]
dev = ["pytest"]
notebook = [
"ipykernel",
"jupyterlab",
# pyzmq 27.1 has no manylinux2014 x86_64 wheel and builds against
# Sherlock's system libraries. 26.4 provides a compatible CPython 3.12 wheel.
"pyzmq==26.4.0",
]
[tool.uv]
# bpnet-lite and cherimoya both declare MACS3, but this repository never
# calls it; skipping it avoids slow source builds during environment setup.
exclude-dependencies = ["macs3"]
# hdf5plugin (pulled in by finemo and modisco) publishes no manylinux_2_17
# wheel -- Sherlock's glibc tier -- so it always builds from source there. Its
# build script probes the host and adds -march=native, which makes GCC
# auto-vectorize the popcount loops in the bundled SPERR sources into
# AVX512-VPOPCNTDQ instructions that Sherlock's assembler cannot assemble.
# Disabling native also keeps the login node's ISA out of filter plugins that
# jobs load on older compute nodes.
extra-build-variables = { hdf5plugin = { HDF5PLUGIN_NATIVE = "False" } }
required-environments = [
"sys_platform == 'darwin' and platform_machine == 'arm64'",
]
# sherlock's torch==2.6.0 pin and cherimoya's real torch>=2.9.0 requirement
# are never installed together, so let uv resolve them independently instead
# of forcing one universal torch version across both.
conflicts = [
[
{ extra = "sherlock" },
{ extra = "cherimoya" },
],
]
[tool.setuptools]
# This project uses pyproject.toml as a local environment definition. The
# workflow scripts are run from the repository checkout, not installed as
# importable top-level packages such as bpnet, cherimoya, or preprocess.
packages = []
[tool.pytest.ini_options]
pythonpath = ["."]
testpaths = ["tests"]