Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change to rye #9

Merged
merged 1 commit into from
Sep 16, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -8,13 +8,18 @@ jobs:
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: poetry install
- name: Setup rye
uses: eifinger/setup-rye@v4
with:
enable-cache: true
version: '0.39.0'
- name: Setup environment
run: make .venv
- name: Build figures
run: make all -j 2
- name: Upload files
uses: actions/upload-artifact@v4
with:
name: files
path: |
output/*.svg
output/*.svg
30 changes: 0 additions & 30 deletions .github/workflows/test.yml

This file was deleted.

29 changes: 13 additions & 16 deletions makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
SHELL := /bin/bash

.PHONY: clean test
.PHONY: clean test pyright

flist = $(wildcard spatialpf2/figures/figure*.py)
allOutput = $(patsubst spatialpf2/figures/figure%.py, output/figure%.svg, $(flist))
@@ -9,21 +7,20 @@ all: $(allOutput)

output/figure%.svg: spatialpf2/figures/figure%.py
@ mkdir -p ./output
poetry run fbuild $*
rye run fbuild $*

test:
poetry run pytest -s -x -v
test: .venv
rye run pytest -s -v -x

coverage.xml:
poetry run pytest --cov=spatialpf2 --cov-report=xml
.venv:
rye sync

clean:
rm -rf output profile profile.svg
rm -rf factor_cache
coverage.xml: .venv
rye run pytest --junitxml=junit.xml --cov=spatialpf2 --cov-report xml:coverage.xml

testprofile:
poetry run python3 -m cProfile -o profile -m pytest -s -v -x
gprof2dot -f pstats --node-thres=5.0 profile | dot -Tsvg -o profile.svg
pyright: .venv
rye run pyright spatialpf2

mypy:
poetry run mypy --install-types --non-interactive --ignore-missing-imports --check-untyped-defs spatialpf2
clean:
rm -rf output profile profile.svg
rm -rf factor_cache
2,147 changes: 0 additions & 2,147 deletions poetry.lock

This file was deleted.

92 changes: 65 additions & 27 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,31 +1,69 @@
[tool.poetry]
[project]
name = "spatialpf2"
version = "0.0.0"
version = "0.1.0"
description = "Spatial data analysis using PARAFAC2."
authors = ["Andrew Ramirez", "Nathaniel Thomas", "Breanna Remigio", "Aaron Meyer <git@asmlab.org>"]
authors = [{name = "Nathaniel Thomas"}, {name="Breanna Remigio"}, {name = "Andrew Ramirez"}, {name="Aaron Meyer", email = "git@asmlab.org"}]
license = "MIT"
requires-python = ">= 3.11, <= 3.13"

[tool.poetry.dependencies]
python = ">=3.11,<3.13"
numpy = "^1.26"
scipy = "^1.12"
scikit-learn = "^1.4"
seaborn = "^0.13.2"
pandas = "^2.2.1"
tensorly = "0.8.1"
parafac2 = { git = "https://github.com/meyer-lab/parafac2.git", rev = "b0bf58fd3b285d5cf6e598ccd254f7df04c083b9" }
h5netcdf = "^1.3"
anndata = "^0.10.3"
datashader = "^0.16"
gseapy = "^1.1"
scanpy = "^1.10"
pacmap = "^0.7.1"
leidenalg = "^0.10.1"
tqdm = "^4.66.1"
tlviz = "^0.1.1"
statsmodels = "^0.14.1"
dask = {extras = ["dataframe"], version = "^2024.3.1"}
ruff = "^0.4.2"

[tool.poetry.scripts]
fbuild = "spatialpf2.figures.common:genFigure"

dependencies = [
"pandas>=2.1.3",
"scanpy>=1.9.6",
"matplotlib>=3.9",
"scikit-learn>=1.5",
"tensorly>=0.8.1",
"numpy>=1.26.2",
"parafac2 @ git+https://github.com/meyer-lab/parafac2.git@793f8ad06791ffcc698105d80941774741722574",
"pacmap>=0.7.3",
"anndata>=0.10.3",
"tlviz>=0.1.1",
"datashader>=0.16.2",
"dask[dataframe]>=2024.5.0",
"setuptools>=69.5",
"doubletdetection>=4.2",
"networkx>=3.3"
]


readme = "README.md"

[project.scripts]
fbuild = "spatialpf2.figures.common:genFigure"
factor = "spatialpf2.imports:factorSave"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.0",
"pytest-cov>=5.0",
"pyright>=1.1",
]

[tool.hatch.metadata]
allow-direct-references = true

[tool.hatch.build.targets.wheel]
packages = ["spatialpf2"]

[tool.ruff.lint]
select = [
# pycodestyle
"E",
# Pyflakes
"F",
# pyupgrade
"UP",
# flake8-bugbear
"B",
# flake8-simplify
"SIM",
# isort
"I",
# Unused arguments
"ARG",
]
311 changes: 311 additions & 0 deletions requirements-dev.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,311 @@
# generated by rye
# use `rye lock` or `rye sync` to update this lockfile
#
# last locked with the following flags:
# pre: false
# features: []
# all-features: false
# with-sources: false
# generate-hashes: false
# universal: false

-e file:.
anndata==0.10.9
# via doubletdetection
# via parafac2
# via scanpy
# via spatialpf2
annoy==1.17.3
# via pacmap
array-api-compat==1.8
# via anndata
asttokens==2.4.1
# via stack-data
certifi==2024.8.30
# via requests
charset-normalizer==3.3.2
# via requests
click==8.1.7
# via dask
cloudpickle==3.0.0
# via dask
colorcet==3.1.0
# via datashader
comm==0.2.2
# via ipywidgets
contourpy==1.3.0
# via matplotlib
coverage==7.6.1
# via pytest-cov
cupy-cuda12x==13.3.0
# via parafac2
cycler==0.12.1
# via matplotlib
dask==2024.9.0
# via dask-expr
# via datashader
# via spatialpf2
dask-expr==1.1.14
# via dask
datashader==0.16.3
# via spatialpf2
decorator==5.1.1
# via ipython
doubletdetection==4.2
# via spatialpf2
executing==2.1.0
# via stack-data
fastrlock==0.8.2
# via cupy-cuda12x
fonttools==4.53.1
# via matplotlib
fsspec==2024.9.0
# via dask
h5py==3.11.0
# via anndata
# via scanpy
idna==3.10
# via requests
igraph==0.11.6
# via leidenalg
# via louvain
importlib-metadata==8.5.0
# via dask
iniconfig==2.0.0
# via pytest
ipython==8.27.0
# via ipywidgets
ipywidgets==8.1.5
# via doubletdetection
jedi==0.19.1
# via ipython
joblib==1.4.2
# via pynndescent
# via scanpy
# via scikit-learn
jupyterlab-widgets==3.0.13
# via ipywidgets
kiwisolver==1.4.7
# via matplotlib
legacy-api-wrap==1.4
# via scanpy
leidenalg==0.10.2
# via doubletdetection
# via phenograph
llvmlite==0.43.0
# via numba
# via pynndescent
locket==1.0.0
# via partd
louvain==0.8.2
# via doubletdetection
matplotlib==3.9.2
# via doubletdetection
# via scanpy
# via seaborn
# via spatialpf2
# via tlviz
matplotlib-inline==0.1.7
# via ipython
multipledispatch==1.0.0
# via datashader
natsort==8.4.0
# via anndata
# via scanpy
networkx==3.3
# via scanpy
# via spatialpf2
nodeenv==1.9.1
# via pyright
numba==0.60.0
# via datashader
# via pacmap
# via pynndescent
# via scanpy
# via umap-learn
numpy==1.26.4
# via anndata
# via contourpy
# via cupy-cuda12x
# via dask
# via datashader
# via doubletdetection
# via h5py
# via matplotlib
# via numba
# via pacmap
# via pandas
# via parafac2
# via patsy
# via phenograph
# via pyarrow
# via scanpy
# via scikit-learn
# via scipy
# via seaborn
# via spatialpf2
# via statsmodels
# via tensorly
# via tlviz
# via umap-learn
# via xarray
packaging==24.1
# via anndata
# via dask
# via datashader
# via matplotlib
# via pytest
# via scanpy
# via statsmodels
# via xarray
pacmap==0.7.3
# via parafac2
# via spatialpf2
pandas==2.2.2
# via anndata
# via dask
# via dask-expr
# via datashader
# via doubletdetection
# via scanpy
# via seaborn
# via spatialpf2
# via statsmodels
# via tlviz
# via xarray
parafac2 @ git+https://github.com/meyer-lab/parafac2.git@793f8ad06791ffcc698105d80941774741722574
# via spatialpf2
param==2.1.1
# via datashader
# via pyct
parso==0.8.4
# via jedi
partd==1.4.2
# via dask
patsy==0.5.6
# via scanpy
# via statsmodels
pexpect==4.9.0
# via ipython
phenograph==1.5.7
# via doubletdetection
pillow==10.4.0
# via datashader
# via matplotlib
pluggy==1.5.0
# via pytest
prompt-toolkit==3.0.47
# via ipython
psutil==6.0.0
# via phenograph
ptyprocess==0.7.0
# via pexpect
pure-eval==0.2.3
# via stack-data
pyarrow==17.0.0
# via dask-expr
pyct==0.5.0
# via datashader
pygments==2.18.0
# via ipython
pynndescent==0.5.13
# via scanpy
# via umap-learn
pyparsing==3.1.4
# via matplotlib
pyright==1.1.380
pytest==8.3.3
# via pytest-cov
pytest-cov==5.0.0
python-dateutil==2.9.0.post0
# via matplotlib
# via pandas
pytz==2024.2
# via pandas
pyyaml==6.0.2
# via dask
requests==2.32.3
# via datashader
# via tlviz
scanpy==1.10.2
# via doubletdetection
# via spatialpf2
scikit-learn==1.5.2
# via pacmap
# via parafac2
# via phenograph
# via pynndescent
# via scanpy
# via spatialpf2
# via umap-learn
scipy==1.14.1
# via anndata
# via datashader
# via doubletdetection
# via parafac2
# via phenograph
# via pynndescent
# via scanpy
# via scikit-learn
# via statsmodels
# via tensorly
# via tlviz
# via umap-learn
seaborn==0.13.2
# via scanpy
session-info==1.0.0
# via scanpy
setuptools==75.1.0
# via phenograph
# via spatialpf2
six==1.16.0
# via asttokens
# via patsy
# via python-dateutil
stack-data==0.6.3
# via ipython
statsmodels==0.14.3
# via scanpy
# via tlviz
stdlib-list==0.10.0
# via session-info
tensorly==0.8.1
# via parafac2
# via spatialpf2
texttable==1.7.0
# via igraph
threadpoolctl==3.5.0
# via scikit-learn
tlviz==0.1.1
# via spatialpf2
toolz==0.12.1
# via dask
# via datashader
# via partd
tqdm==4.66.5
# via doubletdetection
# via parafac2
# via scanpy
# via umap-learn
traitlets==5.14.3
# via comm
# via ipython
# via ipywidgets
# via matplotlib-inline
typing-extensions==4.12.2
# via ipython
tzdata==2024.1
# via pandas
umap-learn==0.5.6
# via scanpy
urllib3==2.2.3
# via requests
wcwidth==0.2.13
# via prompt-toolkit
widgetsnbextension==4.0.13
# via ipywidgets
xarray==2024.9.0
# via datashader
# via tlviz
zipp==3.20.2
# via importlib-metadata
298 changes: 298 additions & 0 deletions requirements.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,298 @@
# generated by rye
# use `rye lock` or `rye sync` to update this lockfile
#
# last locked with the following flags:
# pre: false
# features: []
# all-features: false
# with-sources: false
# generate-hashes: false
# universal: false

-e file:.
anndata==0.10.9
# via doubletdetection
# via parafac2
# via scanpy
# via spatialpf2
annoy==1.17.3
# via pacmap
array-api-compat==1.8
# via anndata
asttokens==2.4.1
# via stack-data
certifi==2024.8.30
# via requests
charset-normalizer==3.3.2
# via requests
click==8.1.7
# via dask
cloudpickle==3.0.0
# via dask
colorcet==3.1.0
# via datashader
comm==0.2.2
# via ipywidgets
contourpy==1.3.0
# via matplotlib
cupy-cuda12x==13.3.0
# via parafac2
cycler==0.12.1
# via matplotlib
dask==2024.9.0
# via dask-expr
# via datashader
# via spatialpf2
dask-expr==1.1.14
# via dask
datashader==0.16.3
# via spatialpf2
decorator==5.1.1
# via ipython
doubletdetection==4.2
# via spatialpf2
executing==2.1.0
# via stack-data
fastrlock==0.8.2
# via cupy-cuda12x
fonttools==4.53.1
# via matplotlib
fsspec==2024.9.0
# via dask
h5py==3.11.0
# via anndata
# via scanpy
idna==3.10
# via requests
igraph==0.11.6
# via leidenalg
# via louvain
importlib-metadata==8.5.0
# via dask
ipython==8.27.0
# via ipywidgets
ipywidgets==8.1.5
# via doubletdetection
jedi==0.19.1
# via ipython
joblib==1.4.2
# via pynndescent
# via scanpy
# via scikit-learn
jupyterlab-widgets==3.0.13
# via ipywidgets
kiwisolver==1.4.7
# via matplotlib
legacy-api-wrap==1.4
# via scanpy
leidenalg==0.10.2
# via doubletdetection
# via phenograph
llvmlite==0.43.0
# via numba
# via pynndescent
locket==1.0.0
# via partd
louvain==0.8.2
# via doubletdetection
matplotlib==3.9.2
# via doubletdetection
# via scanpy
# via seaborn
# via spatialpf2
# via tlviz
matplotlib-inline==0.1.7
# via ipython
multipledispatch==1.0.0
# via datashader
natsort==8.4.0
# via anndata
# via scanpy
networkx==3.3
# via scanpy
# via spatialpf2
numba==0.60.0
# via datashader
# via pacmap
# via pynndescent
# via scanpy
# via umap-learn
numpy==1.26.4
# via anndata
# via contourpy
# via cupy-cuda12x
# via dask
# via datashader
# via doubletdetection
# via h5py
# via matplotlib
# via numba
# via pacmap
# via pandas
# via parafac2
# via patsy
# via phenograph
# via pyarrow
# via scanpy
# via scikit-learn
# via scipy
# via seaborn
# via spatialpf2
# via statsmodels
# via tensorly
# via tlviz
# via umap-learn
# via xarray
packaging==24.1
# via anndata
# via dask
# via datashader
# via matplotlib
# via scanpy
# via statsmodels
# via xarray
pacmap==0.7.3
# via parafac2
# via spatialpf2
pandas==2.2.2
# via anndata
# via dask
# via dask-expr
# via datashader
# via doubletdetection
# via scanpy
# via seaborn
# via spatialpf2
# via statsmodels
# via tlviz
# via xarray
parafac2 @ git+https://github.com/meyer-lab/parafac2.git@793f8ad06791ffcc698105d80941774741722574
# via spatialpf2
param==2.1.1
# via datashader
# via pyct
parso==0.8.4
# via jedi
partd==1.4.2
# via dask
patsy==0.5.6
# via scanpy
# via statsmodels
pexpect==4.9.0
# via ipython
phenograph==1.5.7
# via doubletdetection
pillow==10.4.0
# via datashader
# via matplotlib
prompt-toolkit==3.0.47
# via ipython
psutil==6.0.0
# via phenograph
ptyprocess==0.7.0
# via pexpect
pure-eval==0.2.3
# via stack-data
pyarrow==17.0.0
# via dask-expr
pyct==0.5.0
# via datashader
pygments==2.18.0
# via ipython
pynndescent==0.5.13
# via scanpy
# via umap-learn
pyparsing==3.1.4
# via matplotlib
python-dateutil==2.9.0.post0
# via matplotlib
# via pandas
pytz==2024.2
# via pandas
pyyaml==6.0.2
# via dask
requests==2.32.3
# via datashader
# via tlviz
scanpy==1.10.2
# via doubletdetection
# via spatialpf2
scikit-learn==1.5.2
# via pacmap
# via parafac2
# via phenograph
# via pynndescent
# via scanpy
# via spatialpf2
# via umap-learn
scipy==1.14.1
# via anndata
# via datashader
# via doubletdetection
# via parafac2
# via phenograph
# via pynndescent
# via scanpy
# via scikit-learn
# via statsmodels
# via tensorly
# via tlviz
# via umap-learn
seaborn==0.13.2
# via scanpy
session-info==1.0.0
# via scanpy
setuptools==75.1.0
# via phenograph
# via spatialpf2
six==1.16.0
# via asttokens
# via patsy
# via python-dateutil
stack-data==0.6.3
# via ipython
statsmodels==0.14.3
# via scanpy
# via tlviz
stdlib-list==0.10.0
# via session-info
tensorly==0.8.1
# via parafac2
# via spatialpf2
texttable==1.7.0
# via igraph
threadpoolctl==3.5.0
# via scikit-learn
tlviz==0.1.1
# via spatialpf2
toolz==0.12.1
# via dask
# via datashader
# via partd
tqdm==4.66.5
# via doubletdetection
# via parafac2
# via scanpy
# via umap-learn
traitlets==5.14.3
# via comm
# via ipython
# via ipywidgets
# via matplotlib-inline
typing-extensions==4.12.2
# via ipython
tzdata==2024.1
# via pandas
umap-learn==0.5.6
# via scanpy
urllib3==2.2.3
# via requests
wcwidth==0.2.13
# via prompt-toolkit
widgetsnbextension==4.0.13
# via ipywidgets
xarray==2024.9.0
# via datashader
# via tlviz
zipp==3.20.2
# via importlib-metadata