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}