source: sasview/_modules/sas/models/BaseModel.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: 17.6 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.models.BaseModel &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.models" href="../models.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="../models.html" accesskey="U">sas.models</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.models.BaseModel</h1><div class="highlight"><pre>
52<span class="c">#!/usr/bin/env python</span>
53
54<span class="c">############################################################################</span>
55<span class="c">#This software was developed by the University of Tennessee as part of the</span>
56<span class="c">#Distributed Data Analysis of Neutron Scattering Experiments (DANSE)</span>
57<span class="c">#project funded by the US National Science Foundation.</span>
58<span class="c">#</span>
59<span class="c">#If you use DANSE applications to do scientific research that leads to</span>
60<span class="c">#publication, we ask that you acknowledge the use of the software with the</span>
61<span class="c">#following sentence:</span>
62<span class="c">#</span>
63<span class="c">#&quot;This work benefited from DANSE software developed</span>
64<span class="c"># under NSF award DMR-0520547.&quot;</span>
65<span class="c">#</span>
66<span class="c">#copyright 2008, University of Tennessee</span>
67<span class="c">#############################################################################</span>
68
69<span class="sd">&quot;&quot;&quot; </span>
70<span class="sd">Provide base functionality for all model components</span>
71
72<span class="sd">The following has changed since going from BaseComponent to BaseModel:</span>
73
74<span class="sd">    - Arithmetic operation between models is no longer supported.</span>
75<span class="sd">      It was found to be of little use and not very flexible.</span>
76<span class="sd">    </span>
77<span class="sd">    - Parameters are now stored as Parameter object to provide </span>
78<span class="sd">      the necessary extra information like limits, units, etc... </span>
79<span class="sd">&quot;&quot;&quot;</span>
80
81<span class="c"># imports   </span>
82<span class="kn">import</span> <span class="nn">copy</span>
83   
84<div class="viewcode-block" id="Parameter"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.Parameter">[docs]</a><span class="k">class</span> <span class="nc">Parameter</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
85    <span class="sd">&quot;&quot;&quot;</span>
86<span class="sd">    Parameter class</span>
87<span class="sd">    &quot;&quot;&quot;</span>
88    <span class="n">name</span>  <span class="o">=</span> <span class="s">&#39;&#39;</span>
89    <span class="n">value</span> <span class="o">=</span> <span class="mf">0.0</span>
90    <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">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
91        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
92        <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">value</span>
93       
94    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
95        <span class="k">return</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%g</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
96</div>
97<div class="viewcode-block" id="ParameterProperty"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.ParameterProperty">[docs]</a><span class="k">class</span> <span class="nc">ParameterProperty</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
98    <span class="sd">&quot;&quot;&quot;</span>
99<span class="sd">    Parameter property allow direct access to</span>
100<span class="sd">    the parameter values</span>
101<span class="sd">    &quot;&quot;&quot;</span>
102    <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">name</span><span class="p">,</span><span class="o">**</span><span class="n">kw</span><span class="p">):</span>
103        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
104       
105    <span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">instance</span><span class="p">,</span><span class="n">cls</span><span class="p">):</span>
106        <span class="k">return</span> <span class="n">instance</span><span class="o">.</span><span class="n">parameters</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
107
108    <span class="k">def</span> <span class="nf">__set__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">instance</span><span class="p">,</span><span class="n">value</span><span class="p">):</span>
109        <span class="n">instance</span><span class="o">.</span><span class="n">parameters</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">value</span>
110
111
112   </div>
113<span class="kn">from</span> <span class="nn">ModelAdaptor</span> <span class="kn">import</span> <span class="n">ModelAdaptor</span>
114
115<div class="viewcode-block" id="BaseModel"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.BaseModel">[docs]</a><span class="k">class</span> <span class="nc">BaseModel</span><span class="p">(</span><span class="n">ModelAdaptor</span><span class="p">):</span>
116    <span class="sd">&quot;&quot;&quot; </span>
117<span class="sd">    Basic model component</span>
118<span class="sd">    &quot;&quot;&quot;</span>
119    <span class="c">## Name of the model</span>
120    <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;BaseModel&quot;</span>
121   
122    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
123        <span class="c">## Dictionary of Parameter objects</span>
124        <span class="bp">self</span><span class="o">.</span><span class="n">parameters</span> <span class="o">=</span> <span class="p">{}</span>
125
126    <span class="c"># Evaluation methods to be implemented by the models</span>
127<div class="viewcode-block" id="BaseModel.run"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.BaseModel.run">[docs]</a>    <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>  <span class="k">return</span> <span class="bp">NotImplemented</span></div>
128<div class="viewcode-block" id="BaseModel.runXY"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.BaseModel.runXY">[docs]</a>    <span class="k">def</span> <span class="nf">runXY</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>  <span class="k">return</span> <span class="bp">NotImplemented</span></div>
129<div class="viewcode-block" id="BaseModel.calculate_ER"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.BaseModel.calculate_ER">[docs]</a>    <span class="k">def</span> <span class="nf">calculate_ER</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>  <span class="k">return</span> <span class="bp">NotImplemented</span></div>
130    <span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
131        <span class="sd">&quot;&quot;&quot;     </span>
132<span class="sd">        Evaluate the model. Equivalent to runXY(x)</span>
133<span class="sd">        </span>
134<span class="sd">        :param x: input value</span>
135<span class="sd">        </span>
136<span class="sd">        :return: value of the model</span>
137<span class="sd">        </span>
138<span class="sd">        &quot;&quot;&quot;</span>
139        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">runXY</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
140   
141<div class="viewcode-block" id="BaseModel.clone"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.BaseModel.clone">[docs]</a>    <span class="k">def</span> <span class="nf">clone</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
142        <span class="sd">&quot;&quot;&quot; Returns a new object identical to the current object &quot;&quot;&quot;</span>
143       
144        <span class="n">obj</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="bp">self</span><span class="p">)</span>
145        <span class="n">obj</span><span class="o">.</span><span class="n">params</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="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">)</span>
146        <span class="n">obj</span><span class="o">.</span><span class="n">details</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="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">)</span>
147        <span class="k">return</span> <span class="n">obj</span>
148    </div>
149<div class="viewcode-block" id="BaseModel.setParam"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.BaseModel.setParam">[docs]</a>    <span class="k">def</span> <span class="nf">setParam</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
150        <span class="sd">&quot;&quot;&quot; </span>
151<span class="sd">        Set the value of a model parameter</span>
152<span class="sd">    </span>
153<span class="sd">        :param name: name of the parameter</span>
154<span class="sd">        :param value: value of the parameter</span>
155<span class="sd">        </span>
156<span class="sd">        &quot;&quot;&quot;</span>
157        <span class="c"># Lowercase for case insensitivity</span>
158        <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
159        <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="p">:</span>
160            <span class="k">print</span> <span class="s">&quot;found&quot;</span>
161            <span class="c">#self.parameters[name].value = value</span>
162        <span class="k">return</span> <span class="nb">object</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
163        </div>
164<div class="viewcode-block" id="BaseModel.getParam"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.BaseModel.getParam">[docs]</a>    <span class="k">def</span> <span class="nf">getParam</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
165        <span class="sd">&quot;&quot;&quot; </span>
166<span class="sd">        Set the value of a model parameter</span>
167
168<span class="sd">        :param name: name of the parameter</span>
169<span class="sd">        :param value: value of the parameter</span>
170<span class="sd">        </span>
171<span class="sd">        &quot;&quot;&quot;</span>
172        <span class="c"># Lowercase for case insensitivity</span>
173        <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
174        <span class="k">return</span> <span class="nb">object</span><span class="o">.</span><span class="n">__getattribute__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
175        </div>
176<div class="viewcode-block" id="BaseModel.getParamList"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseModel.BaseModel.getParamList">[docs]</a>    <span class="k">def</span> <span class="nf">getParamList</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
177        <span class="sd">&quot;&quot;&quot; </span>
178<span class="sd">        Return a list of all available parameters for the model </span>
179<span class="sd">        &quot;&quot;&quot;</span>
180        <span class="n">param_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span>
181        <span class="k">return</span> <span class="n">param_list</span>
182       
183    </div></div>
184<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span>
185    <span class="n">b</span> <span class="o">=</span> <span class="n">BaseModel</span><span class="p">()</span> 
186    <span class="c">#print b.operateOn</span>
187   
188</pre></div>
189
190          </div>
191        </div>
192      </div>
193      <div class="sphinxsidebar">
194        <div class="sphinxsidebarwrapper">
195<div id="searchbox" style="display: none">
196  <h3>Quick search</h3>
197    <form class="search" action="../../../search.html" method="get">
198      <input type="text" name="q" />
199      <input type="submit" value="Go" />
200      <input type="hidden" name="check_keywords" value="yes" />
201      <input type="hidden" name="area" value="default" />
202    </form>
203    <p class="searchtip" style="font-size: 90%">
204    Enter search terms or a module, class or function name.
205    </p>
206</div>
207<script type="text/javascript">$('#searchbox').show(0);</script>
208        </div>
209      </div>
210      <div class="clearer"></div>
211    </div>
212    <div class="related">
213      <h3>Navigation</h3>
214      <ul>
215        <li class="right" style="margin-right: 10px">
216          <a href="../../../genindex.html" title="General Index"
217             >index</a></li>
218        <li class="right" >
219          <a href="../../../py-modindex.html" title="Python Module Index"
220             >modules</a> |</li>
221        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
222          <li><a href="../../index.html" >Module code</a> &raquo;</li>
223          <li><a href="../models.html" >sas.models</a> &raquo;</li> 
224      </ul>
225    </div>
226    <div class="footer">
227        &copy; Copyright 2013, The SasView Project.
228      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
229    </div>
230  </body>
231</html>
Note: See TracBrowser for help on using the repository browser.