diff --git a/pkgs/development/python-modules/biosppy/default.nix b/pkgs/development/python-modules/biosppy/default.nix new file mode 100644 index 000000000000..0e739754692c --- /dev/null +++ b/pkgs/development/python-modules/biosppy/default.nix @@ -0,0 +1,70 @@ +{ + lib, + stdenv, + fetchFromGitHub, + buildPythonPackage, + setuptools, + bidict, + h5py, + matplotlib, + numpy, + scikit-learn, + scipy, + shortuuid, + six, + joblib, + pywavelets, + mock, + tkinter, + opencv-python, +}: + +buildPythonPackage rec { + pname = "biosppy"; + version = "2.2.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "scientisst"; + repo = "BioSPPy"; + tag = "v${version}"; + hash = "sha256-U0ZftAlRlazSO66raH74o/6eP1RpmuFoA6HJ+xmgKR8="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + opencv-python + bidict + h5py + matplotlib + numpy + scikit-learn + scipy + shortuuid + six + joblib + pywavelets + mock + ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ tkinter ]; + + doCheck = false; # no tests + + pythonImportsCheck = [ + "biosppy" + "biosppy.signals" + "biosppy.synthesizers" + "biosppy.inter_plotting" + "biosppy.features" + ]; + + meta = { + description = "Biosignal Processing in Python"; + homepage = "https://biosppy.readthedocs.io/"; + changelog = "https://github.com/scientisst/BioSPPy/releases/tag/v${version}"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ genga898 ]; + }; +} diff --git a/pkgs/development/python-modules/neurokit2/default.nix b/pkgs/development/python-modules/neurokit2/default.nix new file mode 100644 index 000000000000..acbfa7b94929 --- /dev/null +++ b/pkgs/development/python-modules/neurokit2/default.nix @@ -0,0 +1,101 @@ +{ + lib, + stdenv, + fetchFromGitHub, + buildPythonPackage, + setuptools, + pytest, + scipy, + scikit-learn, + pandas, + matplotlib, + requests, + cvxopt, + biosppy, + pytest-cov-stub, + mock, + plotly, + astropy, + coverage, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "neurokit2"; + version = "0.2.10"; + pyproject = true; + + src = fetchFromGitHub { + owner = "neuropsychology"; + repo = "NeuroKit"; + tag = "v${version}"; + hash = "sha256-e/B1JvO6uYZ6iVskFvxZLSSXi0cPep9bBZ0JXZTVS28="; + }; + + postPatch = '' + substituteInPlace setup.py \ + --replace-fail '"pytest-runner"' '"pytest"' + ''; + + build-system = [ + setuptools + pytest + ]; + + dependencies = [ + scipy + scikit-learn + pandas + matplotlib + requests + cvxopt + biosppy + ]; + + nativeCheckInputs = [ + pytest-cov-stub + mock + plotly + astropy + coverage + pytestCheckHook + ]; + + disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ + # Crash in matplotlib (Fatal Python error: Aborted) + "test_events_plot" + ]; + + disabledTestPaths = [ + # Required dependencies not available in nixpkgs + "tests/tests_complexity.py" + "tests/tests_eeg.py" + "tests/tests_eog.py" + "tests/tests_ecg.py" + "tests/tests_bio.py" + "tests/tests_data.py" + "tests/tests_epochs.py" + "tests/tests_ecg_findpeaks.py" + "tests/tests_eda.py" + "tests/tests_emg.py" + "tests/tests_hrv.py" + "tests/tests_rsp.py" + "tests/tests_ppg.py" + "tests/tests_signal.py" + + # Dependency is broken `mne-python` + "tests/tests_microstates.py" + ]; + + pythonImportsCheck = [ + "neurokit2" + ]; + + meta = { + description = "Python Toolbox for Neurophysiological Signal Processing"; + homepage = "https://github.com/neuropsychology/NeuroKit"; + changelog = "https://github.com/neuropsychology/NeuroKit/releases/tag/v${version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ genga898 ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a1594fc20648..35ec6d5d5012 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1673,6 +1673,8 @@ self: super: with self; { biopython = callPackage ../development/python-modules/biopython { }; + biosppy = callPackage ../development/python-modules/biosppy { }; + biothings-client = callPackage ../development/python-modules/biothings-client { }; biplist = callPackage ../development/python-modules/biplist { }; @@ -9184,6 +9186,8 @@ self: super: with self; { neuralfoil = callPackage ../development/python-modules/neuralfoil { }; + neurokit2 = callPackage ../development/python-modules/neurokit2 { }; + neuron-full = pkgs.neuron-full.override { python3 = python; }; neuronpy = toPythonModule neuron-full;