Skip to content

Commit cb04b60

Browse files
committed
Nomogram: Speedups
1 parent c2c6357 commit cb04b60

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

Orange/widgets/visualize/ownomogram.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import time
22
from enum import IntEnum
3+
from collections import OrderedDict
34

45
import numpy as np
56

@@ -866,12 +867,15 @@ def calculate_log_reg_coefficients(self):
866867
self.log_reg_coeffs = [coeffs[:, ranges[i]] for i in range(len(attrs))]
867868
self.log_reg_coeffs_orig = self.log_reg_coeffs.copy()
868869

869-
for i in range(len(self.log_reg_coeffs)):
870+
min_values = nan_min(self.data.X, axis=0)
871+
max_values = nan_max(self.data.X, axis=0)
872+
873+
for i, min_t, max_t in zip(range(len(self.log_reg_coeffs)),
874+
min_values, max_values):
870875
if self.log_reg_coeffs[i].shape[1] == 1:
871876
coef = self.log_reg_coeffs[i]
872-
min_t = nan_min(self.data.X, axis=0)[i]
873-
max_t = nan_max(self.data.X, axis=0)[i]
874-
self.log_reg_coeffs[i] = np.hstack((coef * min_t, coef * max_t))
877+
self.log_reg_coeffs[i] = np.hstack(
878+
(coef * min_t, coef * max_t))
875879
self.log_reg_cont_data_extremes.append(
876880
[sorted([min_t, max_t], reverse=(c < 0)) for c in coef])
877881
else:
@@ -1105,13 +1109,15 @@ def send_report(self):
11051109

11061110
@staticmethod
11071111
def reconstruct_domain(original, preprocessed):
1108-
attrs = []
1112+
# abuse dict to make "in" comparisons faster
1113+
attrs = OrderedDict()
11091114
for attr in preprocessed.attributes:
11101115
cv = attr._compute_value.variable._compute_value
11111116
var = cv.variable if cv else original[attr.name]
1112-
if var in attrs:
1117+
if var in attrs: # the reason for OrderedDict
11131118
continue
1114-
attrs.append(var)
1119+
attrs[var] = None # we only need keys
1120+
attrs = list(attrs.keys())
11151121
return Domain(attrs, original.class_var, original.metas)
11161122

11171123
@staticmethod

0 commit comments

Comments
 (0)