99 lines
2.2 KiB
Nix
99 lines
2.2 KiB
Nix
{ lib
|
|
, buildPythonPackage
|
|
, pythonOlder
|
|
, fetchPypi
|
|
, tensorflow
|
|
, annoy
|
|
, pillow
|
|
, matplotlib
|
|
, numpy
|
|
, pandas
|
|
, pygame
|
|
, pyopengl
|
|
, scipy
|
|
, scikitimage
|
|
, gym
|
|
, bokeh
|
|
, kubernetes
|
|
, redis
|
|
, minio
|
|
, pytest
|
|
, psutil
|
|
}:
|
|
|
|
buildPythonPackage rec {
|
|
version = "1.0.1";
|
|
pname = "rl-coach";
|
|
|
|
src = fetchPypi {
|
|
inherit pname version;
|
|
sha256 = "0i47hf0l76ydyrky6f8h760bfr0zg5g3vy675x6m6pgm9wrklkqc";
|
|
};
|
|
|
|
propagatedBuildInputs = [
|
|
tensorflow
|
|
annoy
|
|
pillow
|
|
matplotlib
|
|
numpy
|
|
pandas
|
|
pygame
|
|
pyopengl
|
|
scipy
|
|
scikitimage
|
|
gym
|
|
bokeh
|
|
kubernetes
|
|
redis
|
|
minio
|
|
psutil
|
|
];
|
|
|
|
checkInputs = [
|
|
pytest
|
|
];
|
|
|
|
# run only some tests that do not need any optional dependencies
|
|
# available tests: https://github.com/NervanaSystems/coach/tree/master/rl_coach/tests
|
|
testsToRun = [
|
|
# test only the tensorflow backend (not mxnet)
|
|
"architectures/tensorflow_components"
|
|
"agents"
|
|
"exploration_policies"
|
|
"filters"
|
|
"memories"
|
|
"utils"
|
|
];
|
|
checkPhase = let
|
|
fullTestPaths = map (testfile: "rl_coach/tests/${testfile}") testsToRun;
|
|
escapedPaths = map lib.escapeShellArg fullTestPaths;
|
|
pytestArgs = builtins.concatStringsSep " " escapedPaths;
|
|
in
|
|
''
|
|
pytest ${pytestArgs}
|
|
'';
|
|
|
|
postPatch = ''
|
|
# pinned to 8.0.1 for unknown reason, at least basic functionallity seems to work without it
|
|
# https://github.com/NervanaSystems/coach/pull/149#issuecomment-495915804
|
|
sed -i '/kubernetes/d' requirements.txt
|
|
|
|
# this is just an "intel-optimized" version of tensorflow, e.g. an implementation detail
|
|
sed -i 's/intel-tensorflow/tensorflow/g' setup.py
|
|
|
|
# backports of python3 features not needed
|
|
# https://github.com/NervanaSystems/coach/issues/324
|
|
sed -i '/futures/d' requirements.txt
|
|
'';
|
|
|
|
disabled = pythonOlder "3.5"; # minimum required version
|
|
|
|
meta = with lib; {
|
|
description = "Enables easy experimentation with state of the art Reinforcement Learning algorithms";
|
|
homepage = "https://nervanasystems.github.io/coach/";
|
|
license = licenses.asl20;
|
|
maintainers = with maintainers; [ timokau ];
|
|
# pythonPackages.gym is too new
|
|
broken = true; # since 2020-04-20
|
|
};
|
|
}
|