Skip to content

Commit 4462394

Browse files
authored
Merge pull request #4424 from janezd/lazy-tsne
[ENH] Import openTSNE lazily for faster loading of Orange
2 parents 374f0ab + ae4ff39 commit 4462394

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

Orange/projection/manifold.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88
from scipy.sparse.linalg import eigsh as arpack_eigh
99
import sklearn.manifold as skl_manifold
1010

11-
import openTSNE
12-
import openTSNE.affinity
13-
import openTSNE.initialization
14-
1511
import Orange
1612
from Orange.data import Table, Domain, ContinuousVariable
1713
from Orange.distance import Distance, DistanceModel, Euclidean
@@ -21,9 +17,19 @@
2117
__all__ = ["MDS", "Isomap", "LocallyLinearEmbedding", "SpectralEmbedding",
2218
"TSNE"]
2319

24-
# Disable t-SNE user warnings
25-
openTSNE.tsne.log.setLevel(logging.ERROR)
26-
openTSNE.affinity.log.setLevel(logging.ERROR)
20+
21+
class _LazyTSNE: # pragma: no cover
22+
def __getattr__(self, attr):
23+
# pylint: disable=import-outside-toplevel,redefined-outer-name,global-statement
24+
global openTSNE
25+
import openTSNE
26+
# Disable t-SNE user warnings
27+
openTSNE.tsne.log.setLevel(logging.ERROR)
28+
openTSNE.affinity.log.setLevel(logging.ERROR)
29+
return openTSNE.__dict__[attr]
30+
31+
32+
openTSNE = _LazyTSNE()
2733

2834

2935
def torgerson(distances, n_components=2, eigen_solver="auto"):

0 commit comments

Comments
 (0)