source: sasview/_modules/sas/perspectives/invariant/invariant.html @ a462c6a

gh-pages
Last change on this file since a462c6a was a462c6a, checked in by ajj, 9 years ago

Rebuild to fix index and modules docs

  • Property mode set to 100644
File size: 60.8 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>sas.perspectives.invariant.invariant &mdash; SasView 3.0.0 documentation</title>
10   
11    <link rel="stylesheet" href="../../../../_static/default.css" type="text/css" />
12    <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
13   
14    <script type="text/javascript">
15      var DOCUMENTATION_OPTIONS = {
16        URL_ROOT:    '../../../../',
17        VERSION:     '3.0.0',
18        COLLAPSE_INDEX: false,
19        FILE_SUFFIX: '.html',
20        HAS_SOURCE:  true
21      };
22    </script>
23    <script type="text/javascript" src="../../../../_static/jquery.js"></script>
24    <script type="text/javascript" src="../../../../_static/underscore.js"></script>
25    <script type="text/javascript" src="../../../../_static/doctools.js"></script>
26    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
27    <link rel="top" title="SasView 3.0.0 documentation" href="../../../../index.html" />
28    <link rel="up" title="sas.perspectives.invariant" href="../invariant.html" /> 
29  </head>
30  <body>
31    <div class="related">
32      <h3>Navigation</h3>
33      <ul>
34        <li class="right" style="margin-right: 10px">
35          <a href="../../../../genindex.html" title="General Index"
36             accesskey="I">index</a></li>
37        <li class="right" >
38          <a href="../../../../py-modindex.html" title="Python Module Index"
39             >modules</a> |</li>
40        <li><a href="../../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
41          <li><a href="../../../index.html" >Module code</a> &raquo;</li>
42          <li><a href="../invariant.html" accesskey="U">sas.perspectives.invariant</a> &raquo;</li> 
43      </ul>
44    </div> 
45
46    <div class="document">
47      <div class="documentwrapper">
48        <div class="bodywrapper">
49          <div class="body">
50           
51  <h1>Source code for sas.perspectives.invariant.invariant</h1><div class="highlight"><pre>
52<span class="c">################################################################################</span>
53<span class="c">#This software was developed by the University of Tennessee as part of the</span>
54<span class="c">#Distributed Data Analysis of Neutron Scattering Experiments (DANSE)</span>
55<span class="c">#project funded by the US National Science Foundation. </span>
56<span class="c">#</span>
57<span class="c">#See the license text in license.txt</span>
58<span class="c">#</span>
59<span class="c">#copyright 2009, University of Tennessee</span>
60<span class="c">################################################################################</span>
61
62
63<span class="kn">import</span> <span class="nn">sys</span>
64<span class="kn">import</span> <span class="nn">wx</span>
65<span class="kn">import</span> <span class="nn">copy</span>
66<span class="kn">import</span> <span class="nn">logging</span>
67<span class="kn">from</span> <span class="nn">sas.guiframe.gui_manager</span> <span class="kn">import</span> <span class="n">MDIFrame</span>
68<span class="kn">from</span> <span class="nn">sas.guiframe.dataFitting</span> <span class="kn">import</span> <span class="n">Data1D</span>
69<span class="kn">from</span> <span class="nn">sas.guiframe.events</span> <span class="kn">import</span> <span class="n">NewPlotEvent</span>
70<span class="kn">from</span> <span class="nn">sas.guiframe.events</span> <span class="kn">import</span> <span class="n">StatusEvent</span>
71<span class="kn">from</span> <span class="nn">sas.guiframe.gui_style</span> <span class="kn">import</span> <span class="n">GUIFRAME_ID</span>
72<span class="kn">from</span> <span class="nn">sas.perspectives.invariant.invariant_state</span> <span class="kn">import</span> <span class="n">Reader</span> <span class="k">as</span> <span class="n">reader</span>
73<span class="kn">from</span> <span class="nn">sas.dataloader.loader</span> <span class="kn">import</span> <span class="n">Loader</span>
74<span class="kn">from</span> <span class="nn">sas.perspectives.invariant.invariant_panel</span> <span class="kn">import</span> <span class="n">InvariantPanel</span>
75<span class="kn">from</span> <span class="nn">sas.guiframe.plugin_base</span> <span class="kn">import</span> <span class="n">PluginBase</span>
76
77<span class="k">class</span> <span class="nc">Plugin</span><span class="p">(</span><span class="n">PluginBase</span><span class="p">):</span>
78    <span class="sd">&quot;&quot;&quot;</span>
79<span class="sd">    This class defines the interface for invariant Plugin class</span>
80<div class="viewcode-block" id="Plugin"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin">[docs]</a><span class="sd">    that can be used by the gui_manager.       </span>
81<span class="sd">    &quot;&quot;&quot;</span>
82   
83    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">standalone</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
84        <span class="n">PluginBase</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s">&quot;Invariant&quot;</span><span class="p">,</span> <span class="n">standalone</span><span class="o">=</span><span class="n">standalone</span><span class="p">)</span>
85       
86        <span class="c">#dictionary containing data name and error on dy of that data </span>
87        <span class="bp">self</span><span class="o">.</span><span class="n">err_dy</span> <span class="o">=</span> <span class="p">{}</span>
88       
89        <span class="c">#default state objects</span>
90        <span class="bp">self</span><span class="o">.</span><span class="n">state_reader</span> <span class="o">=</span> <span class="bp">None</span> 
91        <span class="bp">self</span><span class="o">.</span><span class="n">_extensions</span> <span class="o">=</span> <span class="s">&#39;.inv&#39;</span>
92        <span class="bp">self</span><span class="o">.</span><span class="n">temp_state</span> <span class="o">=</span> <span class="bp">None</span> 
93        <span class="bp">self</span><span class="o">.</span><span class="n">__data</span> <span class="o">=</span> <span class="bp">None</span> 
94       
95        <span class="c"># Log startup</span>
96        <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Invariant plug-in started&quot;</span><span class="p">)</span>
97       
98    <span class="k">def</span> <span class="nf">help</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">evt</span><span class="p">):</span>
99        <span class="sd">&quot;&quot;&quot;</span>
100<span class="sd">        Show a general help dialog. </span>
101<div class="viewcode-block" id="Plugin.help"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.help">[docs]</a><span class="sd">        &quot;&quot;&quot;</span>
102        <span class="kn">from</span> <span class="nn">help_panel</span> <span class="kn">import</span>  <span class="n">HelpWindow</span>
103        <span class="n">frame</span> <span class="o">=</span> <span class="n">HelpWindow</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> 
104        <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">frame</span><span class="p">,</span> <span class="s">&quot;IsIconized&quot;</span><span class="p">):</span>
105            <span class="k">if</span> <span class="ow">not</span> <span class="n">frame</span><span class="o">.</span><span class="n">IsIconized</span><span class="p">():</span>
106                <span class="k">try</span><span class="p">:</span>
107                    <span class="n">icon</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">GetIcon</span><span class="p">()</span>
108                    <span class="n">frame</span><span class="o">.</span><span class="n">SetIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">)</span>
109                <span class="k">except</span><span class="p">:</span>
110                    <span class="k">pass</span> 
111        <span class="n">frame</span><span class="o">.</span><span class="n">Show</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
112       
113    <span class="k">def</span> <span class="nf">get_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
114        <span class="sd">&quot;&quot;&quot;</span>
115<span class="sd">        &quot;&quot;&quot;</span></div>
116<div class="viewcode-block" id="Plugin.get_data"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.get_data">[docs]</a>        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span>
117   
118    <span class="k">def</span> <span class="nf">get_panels</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">):</span>
119        <span class="sd">&quot;&quot;&quot;</span>
120<span class="sd">        Create and return the list of wx.Panels for your plug-in.</span></div>
121<div class="viewcode-block" id="Plugin.get_panels"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.get_panels">[docs]</a><span class="sd">        Define the plug-in perspective.</span>
122<span class="sd">        </span>
123<span class="sd">        Panels should inherit from DefaultPanel defined below,</span>
124<span class="sd">        or should present the same interface. They must define</span>
125<span class="sd">        &quot;window_caption&quot; and &quot;window_name&quot;.</span>
126<span class="sd">        </span>
127<span class="sd">        :param parent: parent window</span>
128<span class="sd">        </span>
129<span class="sd">        :return: list of panels</span>
130<span class="sd">        &quot;&quot;&quot;</span>
131        <span class="c">## Save a reference to the parent</span>
132        <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span>
133        <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">MDIFrame</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="s">&#39;None&#39;</span><span class="p">,</span> <span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">200</span><span class="p">))</span>     
134        <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span> <span class="o">=</span> <span class="n">InvariantPanel</span><span class="p">(</span><span class="n">parent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span>       
135        <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">set_panel</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="p">)</span>
136        <span class="bp">self</span><span class="o">.</span><span class="n">_frame_set_helper</span><span class="p">()</span>
137        <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">set_manager</span><span class="p">(</span><span class="n">manager</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
138        <span class="bp">self</span><span class="o">.</span><span class="n">perspective</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">window_name</span><span class="p">)</span> 
139        <span class="c">#Create reader when fitting panel are created</span>
140        <span class="bp">self</span><span class="o">.</span><span class="n">state_reader</span> <span class="o">=</span> <span class="n">reader</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">set_state</span><span class="p">)</span>   
141        <span class="c">#append that reader to list of available reader </span>
142        <span class="n">loader</span> <span class="o">=</span> <span class="n">Loader</span><span class="p">()</span>
143        <span class="n">loader</span><span class="o">.</span><span class="n">associate_file_reader</span><span class="p">(</span><span class="s">&quot;.inv&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">state_reader</span><span class="p">)</span>
144        <span class="c">#loader.associate_file_reader(&quot;.svs&quot;, self.state_reader)</span>
145        <span class="c"># Return the list of panels</span>
146        <span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="p">]</span>
147 
148    <span class="k">def</span> <span class="nf">get_context_menu</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plotpanel</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
149        <span class="sd">&quot;&quot;&quot;</span>
150<span class="sd">        This method is optional.</span></div>
151<div class="viewcode-block" id="Plugin.get_context_menu"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.get_context_menu">[docs]</a><span class="sd">    </span>
152<span class="sd">        When the context menu of a plot is rendered, the </span>
153<span class="sd">        get_context_menu method will be called to give you a </span>
154<span class="sd">        chance to add a menu item to the context menu.</span>
155<span class="sd">        </span>
156<span class="sd">        A ref to a Graph object is passed so that you can</span>
157<span class="sd">        investigate the plot content and decide whether you</span>
158<span class="sd">        need to add items to the context menu.  </span>
159<span class="sd">        </span>
160<span class="sd">        This method returns a list of menu items.</span>
161<span class="sd">        Each item is itself a list defining the text to </span>
162<span class="sd">        appear in the menu, a tool-tip help text, and a</span>
163<span class="sd">        call-back method.</span>
164<span class="sd">        </span>
165<span class="sd">        :param graph: the Graph object to which we attach the context menu</span>
166<span class="sd">        </span>
167<span class="sd">        :return: a list of menu items with call-back function</span>
168<span class="sd">        &quot;&quot;&quot;</span>
169        <span class="n">graph</span> <span class="o">=</span> <span class="n">plotpanel</span><span class="o">.</span><span class="n">graph</span>
170        <span class="n">invariant_option</span> <span class="o">=</span> <span class="s">&quot;Compute invariant&quot;</span>
171        <span class="n">invariant_hint</span> <span class="o">=</span> <span class="s">&quot;Will displays the invariant panel for&quot;</span>
172        <span class="n">invariant_hint</span> <span class="o">+=</span> <span class="s">&quot; further computation&quot;</span>
173       
174        <span class="k">if</span> <span class="n">graph</span><span class="o">.</span><span class="n">selected_plottable</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">plotpanel</span><span class="o">.</span><span class="n">plots</span><span class="p">:</span>
175            <span class="k">return</span> <span class="p">[]</span>
176        <span class="n">data</span> <span class="o">=</span> <span class="n">plotpanel</span><span class="o">.</span><span class="n">plots</span><span class="p">[</span><span class="n">graph</span><span class="o">.</span><span class="n">selected_plottable</span><span class="p">]</span>
177       
178        <span class="k">if</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="p">,</span> <span class="n">Data1D</span><span class="p">):</span>
179           <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="s">&quot;$I_{obs}(q)$&quot;</span> <span class="ow">and</span>  <span class="n">data</span><span class="o">.</span><span class="n">name</span> <span class="o">!=</span> <span class="s">&quot; $P_{fit}(r)$&quot;</span><span class="p">:</span>
180               <span class="k">return</span> <span class="p">[[</span><span class="n">invariant_option</span><span class="p">,</span> <span class="n">invariant_hint</span><span class="p">,</span> 
181                                        <span class="bp">self</span><span class="o">.</span><span class="n">_compute_invariant</span><span class="p">]]</span>
182        <span class="k">return</span> <span class="p">[]</span>
183
184    <span class="k">def</span> <span class="nf">_compute_invariant</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>   
185        <span class="sd">&quot;&quot;&quot;</span>
186<span class="sd">        Open the invariant panel to invariant computation</span></div>
187<span class="sd">        &quot;&quot;&quot;</span>
188        <span class="bp">self</span><span class="o">.</span><span class="n">panel</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">GetEventObject</span><span class="p">()</span>
189        <span class="n">Plugin</span><span class="o">.</span><span class="n">on_perspective</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="n">event</span><span class="p">)</span>
190        <span class="nb">id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">selected_plottable</span>
191        <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">plots</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">panel</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">selected_plottable</span><span class="p">]</span>
192        <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
193            <span class="k">return</span>
194        <span class="k">if</span> <span class="ow">not</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="p">,</span> <span class="n">Data1D</span><span class="p">):</span>
195            <span class="n">name</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span>
196            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Invariant use only Data1D got: [</span><span class="si">%s</span><span class="s">] &quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
197            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span> 
198        <span class="bp">self</span><span class="o">.</span><span class="n">compute_helper</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">)</span>
199               
200    <span class="k">def</span> <span class="nf">set_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_list</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
201        <span class="sd">&quot;&quot;&quot;</span>
202<span class="sd">        receive a list of data and compute invariant</span>
203<div class="viewcode-block" id="Plugin.set_data"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.set_data">[docs]</a><span class="sd">        &quot;&quot;&quot;</span>
204        <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
205        <span class="n">data</span> <span class="o">=</span> <span class="bp">None</span>
206        <span class="k">if</span> <span class="n">data_list</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
207            <span class="n">data_list</span> <span class="o">=</span> <span class="p">[]</span>
208        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data_list</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">:</span>
209            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data_list</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
210                <span class="n">data</span> <span class="o">=</span> <span class="n">data_list</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
211            <span class="k">else</span><span class="p">:</span>
212                <span class="n">data_1d_list</span> <span class="o">=</span> <span class="p">[]</span>
213                <span class="n">data_2d_list</span> <span class="o">=</span> <span class="p">[]</span>
214                <span class="n">error_msg</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
215                <span class="c"># separate data into data1d and data2d list</span>
216                <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">data_list</span><span class="p">:</span>
217                    <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
218                        <span class="k">if</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="p">,</span> <span class="n">Data1D</span><span class="p">):</span>
219                            <span class="n">data_1d_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
220                        <span class="k">else</span><span class="p">:</span>
221                            <span class="n">error_msg</span> <span class="o">+=</span> <span class="s">&quot; </span><span class="si">%s</span><span class="s">  type </span><span class="si">%s</span><span class="s"> </span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">name</span><span class="p">),</span>
222                                             <span class="nb">str</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">))</span>
223                            <span class="n">data_2d_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
224                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data_2d_list</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
225                    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Invariant does not support the following data types:</span><span class="se">\n</span><span class="s">&quot;</span>
226                    <span class="n">msg</span> <span class="o">+=</span> <span class="n">error_msg</span>
227                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data_1d_list</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
228                    <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> 
229                    <span class="n">StatusEvent</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="n">msg</span><span class="p">,</span> <span class="n">info</span><span class="o">=</span><span class="s">&#39;error&#39;</span><span class="p">))</span>
230                    <span class="k">return</span>
231                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;Invariant panel does not allow multiple data!</span><span class="se">\n</span><span class="s">&quot;</span>
232                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;Please select one.</span><span class="se">\n</span><span class="s">&quot;</span>
233                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data_list</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
234                    <span class="kn">from</span> <span class="nn">invariant_widgets</span> <span class="kn">import</span> <span class="n">DataDialog</span>
235                    <span class="n">dlg</span> <span class="o">=</span> <span class="n">DataDialog</span><span class="p">(</span><span class="n">data_list</span><span class="o">=</span><span class="n">data_1d_list</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="n">msg</span><span class="p">)</span>
236                    <span class="k">if</span> <span class="n">dlg</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">:</span>
237                        <span class="n">data</span> <span class="o">=</span> <span class="n">dlg</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span>
238                    <span class="k">else</span><span class="p">:</span>
239                        <span class="n">data</span> <span class="o">=</span> <span class="bp">None</span>
240                    <span class="n">dlg</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span>
241
242            <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
243                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;invariant receives no data. </span><span class="se">\n</span><span class="s">&quot;</span>
244                <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> 
245                     <span class="n">StatusEvent</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="n">msg</span><span class="p">,</span> <span class="n">info</span><span class="o">=</span><span class="s">&#39;error&#39;</span><span class="p">))</span>
246                <span class="k">return</span>
247            <span class="k">if</span> <span class="ow">not</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="p">,</span> <span class="n">Data1D</span><span class="p">):</span>
248                 <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;invariant cannot be computed for data of &quot;</span>
249                 <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;type </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">)</span>
250                 <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> 
251                     <span class="n">StatusEvent</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="n">msg</span><span class="p">,</span> <span class="n">info</span><span class="o">=</span><span class="s">&#39;error&#39;</span><span class="p">))</span>
252                 <span class="k">return</span>
253            <span class="k">else</span><span class="p">:</span>
254                <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">NewPlotEvent</span><span class="p">(</span><span class="n">plot</span><span class="o">=</span><span class="n">data</span><span class="p">,</span>
255                                           <span class="n">title</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">title</span><span class="p">))</span>
256                <span class="k">try</span><span class="p">:</span>
257                    <span class="bp">self</span><span class="o">.</span><span class="n">compute_helper</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
258                <span class="k">except</span><span class="p">:</span>
259                    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Invariant Set_data: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">exc_value</span><span class="p">)</span>
260                    <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">StatusEvent</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="n">msg</span><span class="p">,</span>
261                                                                <span class="n">info</span><span class="o">=</span><span class="s">&quot;error&quot;</span><span class="p">))</span>
262        <span class="k">else</span><span class="p">:</span>   
263            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;invariant cannot be computed for data of &quot;</span>
264            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;type </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">)</span>
265            <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> 
266                     <span class="n">StatusEvent</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="n">msg</span><span class="p">,</span> <span class="n">info</span><span class="o">=</span><span class="s">&#39;error&#39;</span><span class="p">))</span>
267    <span class="k">def</span> <span class="nf">delete_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_id</span><span class="p">):</span>
268        <span class="sd">&quot;&quot;&quot;</span>
269<span class="sd">        &quot;&quot;&quot;</span></div>
270<div class="viewcode-block" id="Plugin.delete_data"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.delete_data">[docs]</a>        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
271            <span class="k">return</span>
272        <span class="k">for</span> <span class="nb">id</span> <span class="ow">in</span> <span class="n">data_id</span><span class="p">:</span>
273            <span class="k">if</span> <span class="nb">id</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">id</span><span class="p">:</span>
274                <span class="bp">self</span><span class="o">.</span><span class="n">clear_panel</span><span class="p">()</span>
275               
276    <span class="k">def</span> <span class="nf">clear_panel</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
277        <span class="sd">&quot;&quot;&quot;</span>
278<span class="sd">        &quot;&quot;&quot;</span></div>
279<div class="viewcode-block" id="Plugin.clear_panel"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.clear_panel">[docs]</a>        <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">clear_panel</span><span class="p">()</span>
280       
281    <span class="k">def</span> <span class="nf">compute_helper</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
282        <span class="sd">&quot;&quot;&quot;</span>
283<span class="sd">        &quot;&quot;&quot;</span></div>
284<div class="viewcode-block" id="Plugin.compute_helper"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.compute_helper">[docs]</a>        <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
285            <span class="k">return</span> 
286        <span class="c"># set current data if not it&#39;s a state data</span>
287        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">is_state_data</span><span class="p">:</span>
288            <span class="c"># Store reference to data</span>
289            <span class="bp">self</span><span class="o">.</span><span class="n">__data</span> <span class="o">=</span> <span class="n">data</span>
290            <span class="c"># Set the data set to be user for invariant calculation</span>
291            <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">set_data</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">)</span>
292           
293    <span class="k">def</span> <span class="nf">save_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filepath</span><span class="p">,</span> <span class="n">state</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
294        <span class="sd">&quot;&quot;&quot;</span>
295<span class="sd">        Save data in provided state object.</span></div>
296<div class="viewcode-block" id="Plugin.save_file"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.save_file">[docs]</a><span class="sd">                </span>
297<span class="sd">        :param filepath: path of file to write to</span>
298<span class="sd">        :param state: invariant state </span>
299<span class="sd">        &quot;&quot;&quot;</span>     
300        <span class="c"># Write the state to file</span>
301        <span class="c"># First, check that the data is of the right type</span>
302        <span class="n">current_plottable</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span>
303
304        <span class="k">if</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">current_plottable</span><span class="o">.</span><span class="n">__class__</span><span class="p">,</span> <span class="n">Data1D</span><span class="p">):</span>
305            <span class="bp">self</span><span class="o">.</span><span class="n">state_reader</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="n">current_plottable</span><span class="p">,</span> <span class="n">state</span><span class="p">)</span>
306        <span class="k">else</span><span class="p">:</span>
307            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;invariant.save_file: the data being saved is&quot;</span>
308            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot; not a sas.dataloader.data_info.Data1D object&quot;</span> 
309            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="n">msg</span>
310
311    <span class="k">def</span> <span class="nf">set_state</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">datainfo</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>   
312        <span class="sd">&quot;&quot;&quot;</span>
313<span class="sd">        Call-back method for the state reader.</span></div>
314<div class="viewcode-block" id="Plugin.set_state"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.set_state">[docs]</a><span class="sd">        This method is called when a .inv/.svs file is loaded.</span>
315<span class="sd">        </span>
316<span class="sd">        :param state: State object</span>
317<span class="sd">        &quot;&quot;&quot;</span>
318        <span class="bp">self</span><span class="o">.</span><span class="n">temp_state</span> <span class="o">=</span> <span class="bp">None</span>
319        <span class="k">try</span><span class="p">:</span>
320            <span class="k">if</span> <span class="n">datainfo</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;list&#39;</span><span class="p">:</span>
321                <span class="n">data</span> <span class="o">=</span> <span class="n">datainfo</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
322            <span class="k">else</span><span class="p">:</span>
323                <span class="n">data</span> <span class="o">=</span> <span class="n">datainfo</span>
324            <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
325                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;invariant.set_state: datainfo parameter cannot&quot;</span>
326                <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot; be None in standalone mode&quot;</span>
327                <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="n">msg</span>
328            <span class="c"># Make sure the user sees the invariant panel after loading</span>
329            <span class="c">#self.parent.set_perspective(self.perspective)</span>
330            <span class="bp">self</span><span class="o">.</span><span class="n">on_perspective</span><span class="p">(</span><span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
331            <span class="n">name</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">meta_data</span><span class="p">[</span><span class="s">&#39;invstate&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">file</span>
332            <span class="n">data</span><span class="o">.</span><span class="n">meta_data</span><span class="p">[</span><span class="s">&#39;invstate&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">file</span> <span class="o">=</span> <span class="n">name</span>
333            <span class="n">data</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
334            <span class="n">data</span><span class="o">.</span><span class="n">filename</span> <span class="o">=</span> <span class="n">name</span>
335
336            <span class="n">data</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">create_gui_data</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="bp">None</span><span class="p">)</span>
337            <span class="bp">self</span><span class="o">.</span><span class="n">__data</span> <span class="o">=</span> <span class="n">data</span>
338            <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">NewPlotEvent</span><span class="p">(</span><span class="n">plot</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="p">,</span>
339                                        <span class="n">reset</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">title</span><span class="p">))</span>
340            <span class="n">data_dict</span> <span class="o">=</span> <span class="p">{</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">id</span><span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="p">}</span>
341            <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">add_data</span><span class="p">(</span><span class="n">data_list</span><span class="o">=</span><span class="n">data_dict</span><span class="p">)</span>
342            <span class="c"># set state</span>
343            <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">is_state_data</span> <span class="o">=</span> <span class="bp">True</span>
344           
345            <span class="c"># Load the invariant states</span>
346            <span class="bp">self</span><span class="o">.</span><span class="n">temp_state</span> <span class="o">=</span> <span class="n">state</span>
347            <span class="c"># Requires to have self.__data and self.temp_state  first.</span>
348            <span class="bp">self</span><span class="o">.</span><span class="n">on_set_state_helper</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span>
349
350        <span class="k">except</span><span class="p">:</span> 
351            <span class="n">logging</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">&quot;invariant.set_state: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_value</span><span class="p">)</span>
352           
353    <span class="k">def</span> <span class="nf">on_set_state_helper</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
354        <span class="sd">&quot;&quot;&quot;</span>
355<span class="sd">        Set the state when called by EVT_STATE_UPDATE event from guiframe</span></div>
356<div class="viewcode-block" id="Plugin.on_set_state_helper"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.on_set_state_helper">[docs]</a><span class="sd">        after a .inv/.svs file is loaded </span>
357<span class="sd">        &quot;&quot;&quot;</span>
358        <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">set_state</span><span class="p">(</span><span class="n">state</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">temp_state</span><span class="p">,</span>
359                                       <span class="n">data</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="p">)</span>
360        <span class="bp">self</span><span class="o">.</span><span class="n">temp_state</span> <span class="o">=</span> <span class="bp">None</span>
361       
362       
363    <span class="k">def</span> <span class="nf">plot_theory</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
364        <span class="sd">&quot;&quot;&quot;</span>
365<span class="sd">        Receive a data set and post a NewPlotEvent to parent.</span></div>
366<div class="viewcode-block" id="Plugin.plot_theory"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.plot_theory">[docs]</a><span class="sd">        </span>
367<span class="sd">        :param data: extrapolated data to be plotted</span>
368<span class="sd">        :param name: Data&#39;s name to use for the legend</span>
369<span class="sd">        &quot;&quot;&quot;</span>
370        <span class="c">#import copy</span>
371        <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
372            <span class="nb">id</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> <span class="o">+</span> <span class="n">name</span>
373            <span class="n">group_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">group_id</span>
374            <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">NewPlotEvent</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="nb">id</span><span class="p">,</span>
375                                               <span class="n">group_id</span><span class="o">=</span><span class="n">group_id</span><span class="p">,</span>
376                                               <span class="n">action</span><span class="o">=</span><span class="s">&#39;Remove&#39;</span><span class="p">))</span>
377            <span class="k">return</span>
378   
379        <span class="n">new_plot</span> <span class="o">=</span> <span class="n">Data1D</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="p">[],</span> <span class="n">y</span><span class="o">=</span><span class="p">[],</span> <span class="n">dy</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
380        <span class="n">new_plot</span><span class="o">.</span><span class="n">symbol</span> <span class="o">=</span> <span class="n">GUIFRAME_ID</span><span class="o">.</span><span class="n">CURVE_SYMBOL_NUM</span>
381        <span class="n">scale</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">get_scale</span><span class="p">()</span>
382        <span class="n">background</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">get_background</span><span class="p">()</span>
383       
384        <span class="k">if</span> <span class="n">scale</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
385            <span class="c"># Put back the sacle and bkg for plotting</span>
386            <span class="n">data</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">y</span> <span class="o">+</span> <span class="n">background</span><span class="p">)</span><span class="o">/</span><span class="n">scale</span>
387            <span class="n">new_plot</span> <span class="o">=</span> <span class="n">Data1D</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
388            <span class="n">new_plot</span><span class="o">.</span><span class="n">symbol</span> <span class="o">=</span> <span class="n">GUIFRAME_ID</span><span class="o">.</span><span class="n">CURVE_SYMBOL_NUM</span>
389        <span class="k">else</span><span class="p">:</span>
390            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Scale can not be zero.&quot;</span>
391            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
392        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">new_plot</span><span class="o">.</span><span class="n">x</span><span class="p">)</span><span class="o">==</span> <span class="mi">0</span> <span class="p">:</span>
393            <span class="k">return</span>
394       
395        <span class="n">new_plot</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
396        <span class="n">new_plot</span><span class="o">.</span><span class="n">xaxis</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">_xaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">_xunit</span><span class="p">)</span>
397        <span class="n">new_plot</span><span class="o">.</span><span class="n">yaxis</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">_yaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">_yunit</span><span class="p">)</span>
398        <span class="n">new_plot</span><span class="o">.</span><span class="n">group_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">group_id</span>
399        <span class="n">new_plot</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> <span class="o">+</span> <span class="n">name</span>
400        <span class="n">new_plot</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">title</span>
401        <span class="c"># Save theory_data in a state</span>
402        <span class="k">if</span> <span class="n">data</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
403            <span class="n">name_head</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;-&#39;</span><span class="p">)</span>
404            <span class="k">if</span> <span class="n">name_head</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;Low&#39;</span><span class="p">:</span>
405                <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">theory_lowQ</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">new_plot</span><span class="p">)</span>
406            <span class="k">elif</span> <span class="n">name_head</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;High&#39;</span><span class="p">:</span>
407                <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">theory_highQ</span> <span class="o">=</span><span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">new_plot</span><span class="p">)</span>
408           
409        <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">update_theory</span><span class="p">(</span><span class="n">data_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">theory</span><span class="o">=</span><span class="n">new_plot</span><span class="p">)</span>
410        <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">NewPlotEvent</span><span class="p">(</span><span class="n">plot</span><span class="o">=</span><span class="n">new_plot</span><span class="p">,</span>
411                                               <span class="n">title</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">title</span><span class="p">))</span>
412       
413    <span class="k">def</span> <span class="nf">plot_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">scale</span><span class="p">,</span> <span class="n">background</span><span class="p">):</span>
414        <span class="sd">&quot;&quot;&quot;</span>
415<span class="sd">        replot the current data if the user enters a new scale or background</span></div>
416<div class="viewcode-block" id="Plugin.plot_data"><a class="viewcode-back" href="../../../../dev/api/sas.perspectives.invariant.html#sas.perspectives.invariant.invariant.Plugin.plot_data">[docs]</a><span class="sd">        &quot;&quot;&quot;</span>
417        <span class="n">new_plot</span> <span class="o">=</span> <span class="n">scale</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span> <span class="o">-</span> <span class="n">background</span>
418        <span class="n">new_plot</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">name</span>
419        <span class="n">new_plot</span><span class="o">.</span><span class="n">group_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">group_id</span>
420        <span class="n">new_plot</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">id</span> 
421        <span class="n">new_plot</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span><span class="o">.</span><span class="n">title</span>
422       
423        <span class="c"># Save data in a state: but seems to never happen </span>
424        <span class="k">if</span> <span class="n">new_plot</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
425            <span class="bp">self</span><span class="o">.</span><span class="n">invariant_panel</span><span class="o">.</span><span class="n">state</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">new_plot</span><span class="p">)</span>
426        <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">NewPlotEvent</span><span class="p">(</span><span class="n">plot</span><span class="o">=</span><span class="n">new_plot</span><span class="p">,</span>
427                                               <span class="n">title</span><span class="o">=</span><span class="n">new_plot</span><span class="o">.</span><span class="n">title</span><span class="p">))</span>
428       
429</pre></div></div></div>
430
431          </div>
432        </div>
433      </div>
434      <div class="sphinxsidebar">
435        <div class="sphinxsidebarwrapper">
436<div id="searchbox" style="display: none">
437  <h3>Quick search</h3>
438    <form class="search" action="../../../../search.html" method="get">
439      <input type="text" name="q" />
440      <input type="submit" value="Go" />
441      <input type="hidden" name="check_keywords" value="yes" />
442      <input type="hidden" name="area" value="default" />
443    </form>
444    <p class="searchtip" style="font-size: 90%">
445    Enter search terms or a module, class or function name.
446    </p>
447</div>
448<script type="text/javascript">$('#searchbox').show(0);</script>
449        </div>
450      </div>
451      <div class="clearer"></div>
452    </div>
453    <div class="related">
454      <h3>Navigation</h3>
455      <ul>
456        <li class="right" style="margin-right: 10px">
457          <a href="../../../../genindex.html" title="General Index"
458             >index</a></li>
459        <li class="right" >
460          <a href="../../../../py-modindex.html" title="Python Module Index"
461             >modules</a> |</li>
462        <li><a href="../../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
463          <li><a href="../../../index.html" >Module code</a> &raquo;</li>
464          <li><a href="../invariant.html" >sas.perspectives.invariant</a> &raquo;</li> 
465      </ul>
466    </div>
467    <div class="footer">
468        &copy; Copyright 2013, The SasView Project.
469      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
470    </div>
471  </body>
472</html>
Note: See TracBrowser for help on using the repository browser.