1{ stdenv
2, lib
3, buildPythonPackage
4, fetchPypi
5, cython
6, ecos
7, joblib
8, numexpr
9, numpy
10, osqp
11, pandas
12, setuptools-scm
13, scikit-learn
14, scipy
15, pytestCheckHook
16}:
17
18buildPythonPackage rec {
19 pname = "scikit-survival";
20 version = "0.22.1";
21 pyproject = true;
22
23 src = fetchPypi {
24 inherit pname version;
25 hash = "sha256-Ft0Hg5iF9Sb9VSOsFMgfAvc4Nsam216kzt5Xv2iykv8=";
26 };
27
28 nativeBuildInputs = [
29 cython
30 setuptools-scm
31 ];
32
33 propagatedBuildInputs = [
34 ecos
35 joblib
36 numexpr
37 numpy
38 osqp
39 pandas
40 scikit-learn
41 scipy
42 ];
43
44 pythonImportsCheck = [ "sksurv" ];
45
46 nativeCheckInputs = [ pytestCheckHook ];
47
48 # treat numpy versions as lower bounds, same as setuptools build
49 postPatch = ''
50 sed -i 's/numpy==/numpy>=/' pyproject.toml
51 '';
52
53 # Hack needed to make pytest + cython work
54 # https://github.com/NixOS/nixpkgs/pull/82410#issuecomment-827186298
55 preCheck = ''
56 export HOME=$(mktemp -d)
57 cp -r $TMP/$sourceRoot/tests $HOME
58 pushd $HOME
59 '';
60 postCheck = "popd";
61
62 # very long tests, unnecessary for a leaf package
63 disabledTests = [
64 "test_coxph"
65 "test_datasets"
66 "test_ensemble_selection"
67 "test_minlip"
68 "test_pandas_inputs"
69 "test_survival_svm"
70 "test_tree"
71 ] ++ lib.optional (stdenv.isDarwin && stdenv.isAarch64)
72 # floating point mismatch on aarch64
73 # 27079905.88052468 to far from 27079905.880496684
74 "test_coxnet"
75 ;
76
77 meta = with lib; {
78 description = "Survival analysis built on top of scikit-learn";
79 homepage = "https://github.com/sebp/scikit-survival";
80 license = licenses.gpl3Only;
81 maintainers = with maintainers; [ GuillaumeDesforges ];
82 };
83}