Skip to content

Commit b3c0a0d

Browse files
committed
create_(groups|annotated)_table: Add new column as class if the data has none
1 parent e5f5128 commit b3c0a0d

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

Orange/widgets/utils/annotated_data.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,19 @@ def get_unique_names(names, proposed):
8080
return proposed
8181

8282

83+
def _table_with_annotation_column(data, values, column_data, var_name):
84+
var = DiscreteVariable(get_next_name(data.domain, var_name), values)
85+
class_vars, metas = data.domain.class_vars, data.domain.metas
86+
if not data.domain.class_vars:
87+
class_vars += (var, )
88+
else:
89+
metas += (var, )
90+
domain = Domain(data.domain.attributes, class_vars, metas)
91+
table = data.transform(domain)
92+
table[:, var] = column_data.reshape((len(data), 1))
93+
return table
94+
95+
8396
def create_annotated_table(data, selected_indices):
8497
"""
8598
Returns data with concatenated flag column. Flag column represents
@@ -92,15 +105,11 @@ def create_annotated_table(data, selected_indices):
92105
"""
93106
if data is None:
94107
return None
95-
names = [var.name for var in data.domain.variables + data.domain.metas]
96-
name = get_next_name(names, ANNOTATED_DATA_FEATURE_NAME)
97-
domain = add_columns(data.domain, metas=[DiscreteVariable(name, ("No", "Yes"))])
98108
annotated = np.zeros((len(data), 1))
99109
if selected_indices is not None:
100110
annotated[selected_indices] = 1
101-
table = data.transform(domain)
102-
table[:, name] = annotated
103-
return table
111+
return _table_with_annotation_column(
112+
data, ("No", "Yes"), annotated, ANNOTATED_DATA_FEATURE_NAME)
104113

105114

106115
def create_groups_table(data, selection,
@@ -115,10 +124,4 @@ def create_groups_table(data, selection,
115124
mask = np.flatnonzero(selection)
116125
data = data[mask]
117126
selection = selection[mask] - 1
118-
119-
var_name = get_next_name(data.domain, var_name)
120-
metas = data.domain.metas + (DiscreteVariable(var_name, values), )
121-
domain = Domain(data.domain.attributes, data.domain.class_vars, metas)
122-
table = data.transform(domain)
123-
table.metas[:, len(data.domain.metas):] = selection.reshape(len(data), 1)
124-
return table
127+
return _table_with_annotation_column(data, values, selection, var_name)

0 commit comments

Comments
 (0)