diff --git a/pkgs/development/python-modules/nifty8/default.nix b/pkgs/development/python-modules/nifty8/default.nix new file mode 100644 index 000000000000..ba3e0f14932e --- /dev/null +++ b/pkgs/development/python-modules/nifty8/default.nix @@ -0,0 +1,86 @@ +{ + config, + lib, + stdenv, + buildPythonPackage, + fetchFromGitLab, + + cudaSupport ? config.cudaSupport, + + # build-system + setuptools, + + # dependencies + astropy, + ducc0, + h5py, + jax, + jaxlib, + matplotlib, + mpi, + mpi4py, + numpy, + scipy, + + # test + pytestCheckHook, + mpiCheckPhaseHook, + openssh, +}: + +buildPythonPackage rec { + pname = "nifty8"; + version = "8.5.2"; + pyproject = true; + + src = fetchFromGitLab { + domain = "gitlab.mpcdf.mpg.de"; + owner = "ift"; + repo = "nifty"; + rev = "v${version}"; + hash = "sha256-EWsJX+iqKOhQXEWlQfYUiPYqyfOfrwLtbI+DVn7vCQI="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + astropy + ducc0 + h5py + jax + (jaxlib.override { inherit cudaSupport; }) + matplotlib + mpi4py + mpi + numpy + scipy + ]; + + nativeCheckInputs = [ + pytestCheckHook + mpiCheckPhaseHook + openssh + ]; + + checkPhase = '' + runHook preCheck + + python3 -m pytest test + + if [ "${stdenv.buildPlatform.system}" != "aarch64-linux" ] && \ + [ "${stdenv.buildPlatform.system}" != "x86_64-darwin" ]; then + ${mpi}/bin/mpiexec -n 2 --bind-to none python3 -m pytest test/test_mpi + fi + + runHook postCheck + ''; + + pythonImportsCheck = [ "nifty8" ]; + + meta = { + homepage = "https://gitlab.mpcdf.mpg.de/ift/nifty"; + description = "Bayesian Imaging library for high-dimensional posteriors"; + license = lib.licenses.gpl3; + maintainers = with lib.maintainers; [ parras ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b5208d033fec..2cf6b393c300 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9192,6 +9192,8 @@ self: super: with self; { nidaqmx = callPackage ../development/python-modules/nidaqmx { }; + nifty8 = callPackage ../development/python-modules/nifty8 { }; + nikola = callPackage ../development/python-modules/nikola { }; niko-home-control = callPackage ../development/python-modules/niko-home-control { };