1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, pythonOlder
5, ninja
6, ignite
7, numpy
8, pybind11
9, torch
10, which
11}:
12
13buildPythonPackage rec {
14 pname = "monai";
15 version = "1.3.0";
16 disabled = pythonOlder "3.8";
17
18 src = fetchFromGitHub {
19 owner = "Project-MONAI";
20 repo = "MONAI";
21 rev = "refs/tags/${version}";
22 hash = "sha256-h//igmSV1cPAFifE1woIluSyGwZBRByYMLqeY3oLHnk=";
23 };
24
25 # Ninja is not detected by setuptools for some reason even though it's present:
26 postPatch = ''
27 substituteInPlace "setup.cfg" --replace " ninja" ""
28 '';
29
30 preBuild = ''
31 export MAX_JOBS=$NIX_BUILD_CORES;
32 '';
33
34 nativeBuildInputs = [ ninja which ];
35 buildInputs = [ pybind11 ];
36 propagatedBuildInputs = [ numpy torch ignite ];
37
38 BUILD_MONAI = 1;
39
40 doCheck = false; # takes too long; tries to download data
41
42 pythonImportsCheck = [
43 "monai"
44 "monai.apps"
45 "monai.data"
46 "monai.engines"
47 "monai.handlers"
48 "monai.inferers"
49 "monai.losses"
50 "monai.metrics"
51 "monai.optimizers"
52 "monai.networks"
53 "monai.transforms"
54 "monai.utils"
55 "monai.visualize"
56 ];
57
58 meta = with lib; {
59 description = "Pytorch framework (based on Ignite) for deep learning in medical imaging";
60 homepage = "https://github.com/Project-MONAI/MONAI";
61 changelog = "https://github.com/Project-MONAI/MONAI/releases/tag/${version}";
62 license = licenses.asl20;
63 maintainers = [ maintainers.bcdarwin ];
64 };
65}