55from AnyQt .QtCore import Qt
66
77from orangewidget .report import bool_str
8+ from orangewidget .settings import Setting
89
910from Orange .data import Table , Domain , StringVariable , ContinuousVariable
1011from Orange .data .util import get_unique_names
1112from Orange .data .sql .table import SqlTable , AUTO_DL_LIMIT
1213from Orange .preprocess import preprocess
1314from Orange .projection import PCA
14- from Orange .widgets import widget , gui , settings
15+ from Orange .widgets import widget , gui
16+ from Orange .widgets .utils .annotated_data import add_columns
1517from Orange .widgets .utils .concurrent import ConcurrentWidgetMixin
1618from Orange .widgets .utils .slidergraph import SliderGraph
1719from Orange .widgets .utils .widgetpreview import WidgetPreview
@@ -38,12 +40,12 @@ class Outputs:
3840 components = Output ("Components" , Table )
3941 pca = Output ("PCA" , PCA , dynamic = False )
4042
41- ncomponents = settings . Setting (2 )
42- variance_covered = settings . Setting (100 )
43- auto_commit = settings . Setting (True )
44- normalize = settings . Setting (True )
45- maxp = settings . Setting (20 )
46- axis_labels = settings . Setting (10 )
43+ ncomponents = Setting (2 )
44+ variance_covered = Setting (100 )
45+ auto_commit = Setting (True )
46+ normalize = Setting (True )
47+ maxp = Setting (20 )
48+ axis_labels = Setting (10 )
4749
4850 graph_name = "plot.plotItem" # QGraphicsView (pg.PlotWidget -> SliderGraph)
4951
@@ -222,8 +224,7 @@ def _setup_plot(self):
222224 self ._update_axis ()
223225
224226 def _on_cut_changed (self , components ):
225- if components == self .ncomponents \
226- or self .ncomponents == 0 :
227+ if self .ncomponents in (components , 0 ):
227228 return
228229
229230 self .ncomponents = components
@@ -333,9 +334,9 @@ def commit(self):
333334 proposed = [a .name for a in self ._pca .orig_domain .attributes ]
334335 meta_name = get_unique_names (proposed , 'components' )
335336 meta_vars = [StringVariable (name = meta_name )]
336- metas = numpy .array ([[ 'PC{}' . format ( i + 1 )
337- for i in range (self .ncomponents )]],
338- dtype = object ).T
337+ metas = numpy .array (
338+ [[ f"PC { i + 1 } " for i in range (self .ncomponents )]], dtype = object
339+ ).T
339340 if self ._variance_ratio is not None :
340341 variance_name = get_unique_names (proposed , "variance" )
341342 meta_vars .append (ContinuousVariable (variance_name ))
@@ -351,14 +352,8 @@ def commit(self):
351352 metas = metas )
352353 components .name = 'components'
353354
354- data_dom = Domain (
355- self .data .domain .attributes ,
356- self .data .domain .class_vars ,
357- self .data .domain .metas + domain .attributes )
358- data = Table .from_numpy (
359- data_dom , self .data .X , self .data .Y ,
360- numpy .hstack ((self .data .metas , transformed .X )),
361- ids = self .data .ids )
355+ data_dom = add_columns (self .data .domain , metas = domain .attributes )
356+ data = self .data .transform (data_dom )
362357
363358 self .Outputs .transformed_data .send (transformed )
364359 self .Outputs .components .send (components )
@@ -371,7 +366,7 @@ def send_report(self):
371366 self .report_items ((
372367 ("Normalize data" , bool_str (self .normalize )),
373368 ("Selected components" , self .ncomponents ),
374- ("Explained variance" , "{ :.3f} %". format ( self . variance_covered ) )
369+ ("Explained variance" , f" { self . variance_covered :.3f} %" )
375370 ))
376371 self .report_plot ()
377372
0 commit comments