1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 cython,
6 numpy,
7 scipy,
8 scikit-learn,
9 pytestCheckHook,
10 pythonOlder,
11 setuptools,
12}:
13
14let
15 self = buildPythonPackage rec {
16 pname = "opentsne";
17 version = "1.0.3";
18 pyproject = true;
19
20 disabled = pythonOlder "3.9";
21
22 src = fetchFromGitHub {
23 owner = "pavlin-policar";
24 repo = "openTSNE";
25 tag = "v${version}";
26 hash = "sha256-dJM8hv85ST5qGo/oZVr/MgIHGPGpZ+ajaUL7pfSJLAg=";
27 };
28
29 build-system = [
30 cython
31 numpy
32 setuptools
33 ];
34
35 dependencies = [
36 numpy
37 scipy
38 scikit-learn
39 ];
40
41 pythonImportsCheck = [ "openTSNE" ];
42
43 doCheck = false;
44
45 passthru = {
46 tests.pytest = self.overridePythonAttrs (old: {
47 pname = "${old.pname}-tests";
48 format = "other";
49
50 postPatch = "rm openTSNE -rf";
51
52 doBuild = false;
53 doInstall = false;
54
55 doCheck = true;
56 nativeCheckInputs = [
57 pytestCheckHook
58 self
59 ];
60 });
61 };
62
63 meta = with lib; {
64 description = "Modular Python implementation of t-Distributed Stochasitc Neighbor Embedding";
65 homepage = "https://github.com/pavlin-policar/openTSNE";
66 changelog = "https://github.com/pavlin-policar/openTSNE/releases/tag/v${version}";
67 license = licenses.bsd3;
68 maintainers = with maintainers; [ lucasew ];
69 };
70 };
71in
72self