Files
nixpkgs/pkgs/development/python-modules/scanpy/default.nix

186 lines
3.0 KiB
Nix

{
lib,
buildPythonPackage,
fetchFromGitHub,
hatch-vcs,
hatchling,
anndata,
h5py,
joblib,
legacy-api-wrap,
matplotlib,
natsort,
networkx,
numba,
numpy,
packaging,
pandas,
patsy,
pynndescent,
scikit-learn,
scipy,
seaborn,
session-info2,
statsmodels,
tqdm,
typing-extensions,
umap-learn,
dask,
dask-ml,
igraph,
leidenalg,
scikit-image,
scikit-misc,
zarr,
pytestCheckHook,
pytest-cov-stub,
pytest-mock,
pytest-randomly,
pytest-rerunfailures,
pytest-xdist,
tuna,
}:
buildPythonPackage rec {
pname = "scanpy";
version = "1.11.5";
pyproject = true;
src = fetchFromGitHub {
owner = "scverse";
repo = "scanpy";
tag = version;
hash = "sha256-GnZ1qJ4SaTLDzfLAH6IHrYeuMBo8PglKUlj4f3ljeR0=";
};
build-system = [
hatch-vcs
hatchling
];
dependencies = [
anndata
h5py
joblib
legacy-api-wrap
matplotlib
natsort
networkx
numba
numpy
packaging
pandas
patsy
pynndescent
scikit-learn
scipy
seaborn
session-info2
statsmodels
tqdm
typing-extensions
umap-learn
];
optional-dependencies = {
# commented attributes are due to some dependencies not being in Nixpkgs
#bbknn = [
# bbknn
#];
dask = [
anndata
dask
];
dask-ml = [
dask-ml
];
#harmony = [
# harmonypy
#];
leiden = [
igraph
leidenalg
];
#louvain = [
# igraph
# louvain
#];
#magic = [
# magic-impute
#];
paga = [
igraph
];
#rapids = [
# cudf
# cugraph
# cuml
#];
#scanorama = [
# scanorama
#];
scrublet = [
scikit-image
];
skmisc = [
scikit-misc
];
};
nativeCheckInputs = [
pytestCheckHook
pytest-cov-stub
pytest-mock
pytest-randomly
pytest-rerunfailures
pytest-xdist
tuna
zarr
];
preCheck = ''
export NUMBA_CACHE_DIR=$(mktemp -d);
'';
disabledTestPaths = [
# try to download data:
"tests/test_aggregated.py"
"tests/test_highly_variable_genes.py"
"tests/test_normalization.py"
"tests/test_pca.py"
"tests/test_plotting.py"
"tests/test_plotting_embedded/"
];
disabledTests = [
# try to download data:
"scanpy.get._aggregated.aggregate"
"scanpy.plotting._tools.scatterplots.spatial"
"test_clip"
"test_download_failure"
"test_mean_var"
"test_regress_out_int"
"test_score_with_reference"
# fails to find the trivial test script for some reason:
"test_external"
# AssertionError: Not equal to tolerance rtol=1e-07, atol=0
"test_connectivities_euclidean"
];
pythonImportsCheck = [
"scanpy"
];
meta = {
description = "Single-cell analysis in Python which scales to >100M cells";
homepage = "https://scanpy.readthedocs.io";
changelog = "https://github.com/scverse/scanpy/releases/tag/${src.tag}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ bcdarwin ];
mainProgram = "scanpy";
};
}