1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, pythonOlder
5, pytestCheckHook
6, numpy
7, pykwalify
8, pywavelets
9, setuptools
10, simpleitk
11, six
12, versioneer
13}:
14
15buildPythonPackage rec {
16 pname = "pyradiomics";
17 version = "3.1.0";
18 format = "pyproject";
19
20 disabled = pythonOlder "3.6";
21
22 src = fetchFromGitHub {
23 owner = "AIM-Harvard";
24 repo = "pyradiomics";
25 rev = "refs/tags/v${version}";
26 hash = "sha256-/qFNN63Bbq4DUZDPmwUGj1z5pY3ujsbqFJpVXbO+b8E=";
27 name = "pyradiomics";
28 };
29
30 nativeBuildInputs = [ setuptools versioneer ];
31
32 propagatedBuildInputs = [
33 numpy
34 pykwalify
35 pywavelets
36 simpleitk
37 six
38 ];
39
40 nativeCheckInputs = [ pytestCheckHook ];
41 preCheck = ''
42 rm -rf radiomics
43 '';
44 # tries to access network at collection time:
45 disabledTestPaths = [ "tests/test_wavelet.py" ];
46 # various urllib download errors and (probably related) missing feature errors:
47 disabledTests = [
48 "brain1_shape2D-original_shape2D"
49 "brain2_shape2D-original_shape2D"
50 "breast1_shape2D-original_shape2D"
51 "lung1_shape2D-original_shape2D"
52 "lung2_shape2D-original_shape2D"
53 ];
54 # note the above elements of disabledTests are patterns, not exact tests,
55 # so simply setting `disabledTests` does not suffice:
56 pytestFlagsArray = [
57 "-k '${toString (lib.intersperse "and" (lib.forEach disabledTests (t: "not ${t}")))}'"
58 ];
59
60 pythonImportsCheck = [
61 "radiomics"
62 ];
63
64 meta = with lib; {
65 homepage = "https://pyradiomics.readthedocs.io";
66 description = "Extraction of Radiomics features from 2D and 3D images and binary masks";
67 changelog = "https://github.com/AIM-Harvard/pyradiomics/releases/tag/v${version}";
68 license = licenses.bsd3;
69 maintainers = with maintainers; [ bcdarwin ];
70 };
71}