1 """
2 The Test Pattern window allows input patterns to be previewed.
3
4 $Id: testpattern.py 11310 2010-07-27 16:56:14Z ceball $
5 """
6 __version__='$Revision: 11310 $'
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 from Tkinter import Frame
24
25 import param
26 from param import tk
27
28 import topo
29
30 from topo.base.functionfamily import PatternDrivenAnalysis
31 from topo.base.sheetview import SheetView
32 from topo.base.patterngenerator import PatternGenerator, Constant
33 from topo.misc.generatorsheet import GeneratorSheet
34 from topo.command.basic import pattern_present
35 from topo.plotting.plot import make_template_plot
36 from topo.plotting.plotgroup import SheetPlotGroup
37
38 from plotgrouppanel import SheetPanel
39
40
41
42
44
50
52 dynamic_plots = []
53 for kw in [dict(sheet=sheet) for sheet in self.sheets()]:
54 sheet = kw['sheet']
55 new_view = SheetView((sheet.input_generator(),sheet.bounds),
56 sheet.name,sheet.precedence,topo.sim.time())
57 sheet.sheet_views['Activity']=new_view
58 channels = {'Strength':'Activity','Hue':None,'Confidence':None}
59
60
61 dynamic_plots.append(make_template_plot(channels,sheet.sheet_views,
62 sheet.xdensity,sheet.bounds,self.normalize,
63 name=''))
64
65 return self._static_plots[:]+dynamic_plots
66
67
68
70
71 sheet_type = GeneratorSheet
72
73 dock = param.Boolean(False)
74
75 edit_sheet = param.ObjectSelector(doc="""
76 Sheet for which to edit pattern properties.""")
77
78 plastic = param.Boolean(default=False,doc="""
79 Whether to enable plasticity during presentation.""")
80
81 duration = param.Number(default=1.0, softbounds=(0.0,10.0),doc="""
82 How long to run the simulation for each presentation.""")
83
84 Present = tk.Button(doc="""Present this pattern to the simulation.""")
85
86 pattern_generator = param.ClassSelector(default=Constant(), class_=PatternGenerator, doc="""
87 Type of pattern to present. Each type has various parameters that can be changed.""")
88
89
90
91 - def __init__(self,master,plotgroup=None,**params):
92 plotgroup = plotgroup or TestPatternPlotGroup()
93
94 super(TestPattern,self).__init__(master,plotgroup,**params)
95
96 self.auto_refresh = True
97
98 self.plotcommand_frame.pack_forget()
99 for name in ['pre_plot_hooks','plot_hooks','Fwd','Back']:
100 self.hide_param(name)
101
102 edit_sheet_param = self.get_parameter_object('edit_sheet')
103 edit_sheet_param.objects = self.plotgroup.sheets()
104
105 self.pg_control_pane = Frame(self)
106 self.pg_control_pane.pack(side="top",expand='yes',fill='x')
107
108 self.params_frame = tk.ParametersFrame(
109 self.pg_control_pane,
110 parameterized_object=self.pattern_generator,
111 on_modify=self.conditional_refresh,
112 msg_handler=master.status)
113
114 self.params_frame.hide_param('Close')
115 self.params_frame.hide_param('Refresh')
116
117
118
119
120 self.pack_param('edit_sheet',parent=self.pg_control_pane,on_modify=self.switch_sheet,widget_options={'new_default':True,'sort_fn_args':{'cmp':lambda x, y: cmp(-x.precedence,-y.precedence)}})
121 self.pack_param('pattern_generator',parent=self.pg_control_pane,
122 on_modify=self.change_pattern_generator,side="top")
123
124 present_frame = Frame(self)
125 present_frame.pack(side='bottom')
126
127 self.pack_param('plastic',side='bottom',parent=present_frame)
128 self.params_frame.pack(side='bottom',expand='yes',fill='x')
129 self.pack_param('duration',parent=present_frame,side='left')
130 self.pack_param('Present',parent=present_frame,on_set=self.present_pattern,side="right")
131
132
142
143
148
149
165
166
168 """
169 Simply update the plots: skip all handling of history.
170 """
171 self.refresh_plots()
172
173
191