source: sasview/_modules/sas/models/BaseComponent.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: 37.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.models.BaseComponent &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.BaseComponent</h1><div class="highlight"><pre>
52<span class="c">#!/usr/bin/env python</span>
53
54<span class="sd">&quot;&quot;&quot; </span>
55<span class="sd">Provide base functionality for all model components</span>
56<span class="sd">&quot;&quot;&quot;</span>
57
58<span class="c"># imports   </span>
59<span class="kn">import</span> <span class="nn">copy</span>
60<span class="kn">import</span> <span class="nn">numpy</span>
61<span class="c">#TO DO: that about a way to make the parameter</span>
62<span class="c">#is self return if it is fittable or not  </span>
63
64<div class="viewcode-block" id="BaseComponent"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent">[docs]</a><span class="k">class</span> <span class="nc">BaseComponent</span><span class="p">:</span>
65    <span class="sd">&quot;&quot;&quot; </span>
66<span class="sd">    Basic model component</span>
67<span class="sd">    </span>
68<span class="sd">    Since version 0.5.0, basic operations are no longer supported.</span>
69<span class="sd">    &quot;&quot;&quot;</span>
70
71    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
72        <span class="sd">&quot;&quot;&quot; Initialization&quot;&quot;&quot;</span>
73       
74        <span class="c">## Name of the model</span>
75        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;BaseComponent&quot;</span>
76       
77        <span class="c">## Parameters to be accessed by client</span>
78        <span class="bp">self</span><span class="o">.</span><span class="n">params</span> <span class="o">=</span> <span class="p">{}</span>
79        <span class="bp">self</span><span class="o">.</span><span class="n">details</span> <span class="o">=</span> <span class="p">{}</span>
80        <span class="c">## Dictionary used to store the dispersity/averaging</span>
81        <span class="c">#  parameters of dispersed/averaged parameters.</span>
82        <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span> <span class="o">=</span> <span class="p">{}</span>
83        <span class="c"># string containing information about the model such as the equation</span>
84        <span class="c">#of the given model, exception or possible use</span>
85        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
86        <span class="c">#list of parameter that can be fitted</span>
87        <span class="bp">self</span><span class="o">.</span><span class="n">fixed</span> <span class="o">=</span> <span class="p">[]</span>
88        <span class="c">#list of non-fittable parameter</span>
89        <span class="bp">self</span><span class="o">.</span><span class="n">non_fittable</span> <span class="o">=</span> <span class="p">[]</span>
90        <span class="c">## parameters with orientation</span>
91        <span class="bp">self</span><span class="o">.</span><span class="n">orientation_params</span> <span class="o">=</span> <span class="p">[]</span>
92        <span class="c">## magnetic parameters</span>
93        <span class="bp">self</span><span class="o">.</span><span class="n">magnetic_params</span> <span class="o">=</span> <span class="p">[]</span>
94        <span class="c">## store dispersity reference</span>
95        <span class="bp">self</span><span class="o">.</span><span class="n">_persistency_dict</span> <span class="o">=</span> <span class="p">{}</span>
96        <span class="c">## independent parameter name and unit [string]</span>
97        <span class="bp">self</span><span class="o">.</span><span class="n">input_name</span> <span class="o">=</span> <span class="s">&quot;Q&quot;</span>
98        <span class="bp">self</span><span class="o">.</span><span class="n">input_unit</span> <span class="o">=</span> <span class="s">&quot;A^{-1}&quot;</span>
99        <span class="c">## output name and unit  [string]</span>
100        <span class="bp">self</span><span class="o">.</span><span class="n">output_name</span> <span class="o">=</span> <span class="s">&quot;Intensity&quot;</span>
101        <span class="bp">self</span><span class="o">.</span><span class="n">output_unit</span> <span class="o">=</span> <span class="s">&quot;cm^{-1}&quot;</span>
102       
103    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
104        <span class="sd">&quot;&quot;&quot; </span>
105<span class="sd">        :return: string representatio</span>
106
107<span class="sd">        &quot;&quot;&quot;</span>
108        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
109   
110<div class="viewcode-block" id="BaseComponent.is_fittable"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.is_fittable">[docs]</a>    <span class="k">def</span> <span class="nf">is_fittable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">par_name</span><span class="p">):</span>
111        <span class="sd">&quot;&quot;&quot;</span>
112<span class="sd">        Check if a given parameter is fittable or not</span>
113<span class="sd">        </span>
114<span class="sd">        :param par_name: the parameter name to check </span>
115<span class="sd">        </span>
116<span class="sd">        &quot;&quot;&quot;</span>
117        <span class="k">return</span> <span class="n">par_name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">fixed</span>
118        <span class="c">#For the future</span>
119        <span class="c">#return self.params[str(par_name)].is_fittable()</span>
120   </div>
121<div class="viewcode-block" id="BaseComponent.run"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.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="p">):</span> 
122        <span class="sd">&quot;&quot;&quot;</span>
123<span class="sd">        run 1d</span>
124<span class="sd">        &quot;&quot;&quot;</span>
125        <span class="k">return</span> <span class="bp">NotImplemented</span>
126    </div>
127<div class="viewcode-block" id="BaseComponent.runXY"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.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="p">):</span> 
128        <span class="sd">&quot;&quot;&quot;</span>
129<span class="sd">        run 2d</span>
130<span class="sd">        &quot;&quot;&quot;</span>
131        <span class="k">return</span> <span class="bp">NotImplemented</span> 
132    </div>
133<div class="viewcode-block" id="BaseComponent.calculate_ER"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.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> 
134        <span class="sd">&quot;&quot;&quot;</span>
135<span class="sd">        Calculate effective radius</span>
136<span class="sd">        &quot;&quot;&quot;</span>
137        <span class="k">return</span> <span class="bp">NotImplemented</span> 
138    </div>
139<div class="viewcode-block" id="BaseComponent.calculate_VR"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.calculate_VR">[docs]</a>    <span class="k">def</span> <span class="nf">calculate_VR</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> 
140        <span class="sd">&quot;&quot;&quot;</span>
141<span class="sd">        Calculate volume fraction ratio</span>
142<span class="sd">        &quot;&quot;&quot;</span>
143        <span class="k">return</span> <span class="bp">NotImplemented</span> 
144    </div>
145<div class="viewcode-block" id="BaseComponent.evalDistribution"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.evalDistribution">[docs]</a>    <span class="k">def</span> <span class="nf">evalDistribution</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">qdist</span><span class="p">):</span>
146        <span class="sd">&quot;&quot;&quot;</span>
147<span class="sd">        Evaluate a distribution of q-values.</span>
148<span class="sd">        </span>
149<span class="sd">        * For 1D, a numpy array is expected as input: ::</span>
150<span class="sd">        </span>
151<span class="sd">            evalDistribution(q)</span>
152<span class="sd">            </span>
153<span class="sd">          where q is a numpy array.</span>
154<span class="sd">        </span>
155<span class="sd">        </span>
156<span class="sd">        * For 2D, a list of numpy arrays are expected: [qx_prime,qy_prime],</span>
157<span class="sd">          where 1D arrays, ::</span>
158<span class="sd">        </span>
159<span class="sd">              qx_prime = [ qx[0], qx[1], qx[2], ....]</span>
160
161<span class="sd">          and ::</span>
162
163<span class="sd">              qy_prime = [ qy[0], qy[1], qy[2], ....] </span>
164<span class="sd">        </span>
165<span class="sd">        Then get ::</span>
166
167<span class="sd">            q = numpy.sqrt(qx_prime^2+qy_prime^2)</span>
168<span class="sd">        </span>
169<span class="sd">        that is a qr in 1D array; ::</span>
170
171<span class="sd">            q = [q[0], q[1], q[2], ....] </span>
172<span class="sd">        </span>
173<span class="sd">        ..note::</span>
174<span class="sd">          Due to 2D speed issue, no anisotropic scattering </span>
175<span class="sd">          is supported for python models, thus C-models should have</span>
176<span class="sd">          their own evalDistribution methods.</span>
177<span class="sd">        </span>
178<span class="sd">        The method is then called the following way: ::</span>
179<span class="sd">        </span>
180<span class="sd">            evalDistribution(q)</span>
181
182<span class="sd">        where q is a numpy array.</span>
183<span class="sd">        </span>
184<span class="sd">        :param qdist: ndarray of scalar q-values or list [qx,qy] where qx,qy are 1D ndarrays</span>
185<span class="sd">        &quot;&quot;&quot;</span>
186        <span class="k">if</span> <span class="n">qdist</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>
187            <span class="c"># Check whether we have a list of ndarrays [qx,qy]</span>
188            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">qdist</span><span class="p">)</span><span class="o">!=</span><span class="mi">2</span> <span class="ow">or</span> \
189                <span class="n">qdist</span><span class="p">[</span><span class="mi">0</span><span class="p">]</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;ndarray&#39;</span> <span class="ow">or</span> \
190                <span class="n">qdist</span><span class="p">[</span><span class="mi">1</span><span class="p">]</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;ndarray&#39;</span><span class="p">:</span>
191                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;evalDistribution expects a list of 2 ndarrays&quot;</span>
192                <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="n">msg</span>
193               
194            <span class="c"># Extract qx and qy for code clarity</span>
195            <span class="n">qx</span> <span class="o">=</span> <span class="n">qdist</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
196            <span class="n">qy</span> <span class="o">=</span> <span class="n">qdist</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
197           
198            <span class="c"># calculate q_r component for 2D isotropic</span>
199            <span class="n">q</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">qx</span><span class="o">**</span><span class="mi">2</span><span class="o">+</span><span class="n">qy</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
200            <span class="c"># vectorize the model function runXY</span>
201            <span class="n">v_model</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">runXY</span><span class="p">,</span> <span class="n">otypes</span><span class="o">=</span><span class="p">[</span><span class="nb">float</span><span class="p">])</span>
202            <span class="c"># calculate the scattering</span>
203            <span class="n">iq_array</span> <span class="o">=</span> <span class="n">v_model</span><span class="p">(</span><span class="n">q</span><span class="p">)</span>
204
205            <span class="k">return</span> <span class="n">iq_array</span>
206               
207        <span class="k">elif</span> <span class="n">qdist</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;ndarray&#39;</span><span class="p">:</span>
208            <span class="c"># We have a simple 1D distribution of q-values</span>
209            <span class="n">v_model</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">vectorize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">runXY</span><span class="p">,</span> <span class="n">otypes</span><span class="o">=</span><span class="p">[</span><span class="nb">float</span><span class="p">])</span>
210            <span class="n">iq_array</span> <span class="o">=</span> <span class="n">v_model</span><span class="p">(</span><span class="n">qdist</span><span class="p">)</span>
211            <span class="k">return</span> <span class="n">iq_array</span>
212           
213        <span class="k">else</span><span class="p">:</span>
214            <span class="n">mesg</span> <span class="o">=</span> <span class="s">&quot;evalDistribution is expecting an ndarray of scalar q-values&quot;</span>
215            <span class="n">mesg</span> <span class="o">+=</span> <span class="s">&quot; or a list [qx,qy] where qx,qy are 2D ndarrays.&quot;</span>
216            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="n">mesg</span>
217       
218   
219    </div>
220<div class="viewcode-block" id="BaseComponent.clone"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.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>
221        <span class="sd">&quot;&quot;&quot; Returns a new object identical to the current object &quot;&quot;&quot;</span>
222        <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>
223        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_clone</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
224    </div>
225    <span class="k">def</span> <span class="nf">_clone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
226        <span class="sd">&quot;&quot;&quot;</span>
227<span class="sd">        Internal utility function to copy the internal</span>
228<span class="sd">        data members to a fresh copy.</span>
229<span class="sd">        &quot;&quot;&quot;</span>
230        <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>
231        <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>
232        <span class="n">obj</span><span class="o">.</span><span class="n">dispersion</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">dispersion</span><span class="p">)</span>
233        <span class="n">obj</span><span class="o">.</span><span class="n">_persistency_dict</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">_persistency_dict</span><span class="p">)</span>
234        <span class="k">return</span> <span class="n">obj</span>
235   
236<div class="viewcode-block" id="BaseComponent.set_dispersion"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.set_dispersion">[docs]</a>    <span class="k">def</span> <span class="nf">set_dispersion</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parameter</span><span class="p">,</span> <span class="n">dispersion</span><span class="p">):</span>
237        <span class="sd">&quot;&quot;&quot;</span>
238<span class="sd">        model dispersions</span>
239<span class="sd">        &quot;&quot;&quot;</span> 
240        <span class="c">##Not Implemented</span>
241        <span class="k">return</span> <span class="bp">None</span>
242        </div>
243<div class="viewcode-block" id="BaseComponent.getProfile"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.getProfile">[docs]</a>    <span class="k">def</span> <span class="nf">getProfile</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
244        <span class="sd">&quot;&quot;&quot;</span>
245<span class="sd">        Get SLD profile </span>
246<span class="sd">        </span>
247<span class="sd">        : return: (z, beta) where z is a list of depth of the transition points</span>
248<span class="sd">                beta is a list of the corresponding SLD values </span>
249<span class="sd">        &quot;&quot;&quot;</span>
250        <span class="c">#Not Implemented</span>
251        <span class="k">return</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span>
252            </div>
253<div class="viewcode-block" id="BaseComponent.setParam"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.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>
254        <span class="sd">&quot;&quot;&quot; </span>
255<span class="sd">        Set the value of a model parameter</span>
256<span class="sd">    </span>
257<span class="sd">        :param name: name of the parameter</span>
258<span class="sd">        :param value: value of the parameter</span>
259<span class="sd">        </span>
260<span class="sd">        &quot;&quot;&quot;</span>
261        <span class="c"># Look for dispersion parameters</span>
262        <span class="n">toks</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>
263        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">)</span><span class="o">==</span><span class="mi">2</span><span class="p">:</span>
264            <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
265                <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">==</span><span class="n">toks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
266                    <span class="k">for</span> <span class="n">par</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="p">[</span><span class="n">item</span><span class="p">]:</span>
267                        <span class="k">if</span> <span class="n">par</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="n">toks</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
268                            <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="p">[</span><span class="n">item</span><span class="p">][</span><span class="n">par</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
269                            <span class="k">return</span>
270        <span class="k">else</span><span class="p">:</span>
271            <span class="c"># Look for standard parameter</span>
272            <span class="k">for</span> <span class="n">item</span> <span class="ow">in</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>
273                <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">==</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
274                    <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="n">item</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
275                    <span class="k">return</span>
276           
277        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Model does not contain parameter </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">name</span>
278        </div>
279<div class="viewcode-block" id="BaseComponent.getParam"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.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>
280        <span class="sd">&quot;&quot;&quot; </span>
281<span class="sd">        Set the value of a model parameter</span>
282
283<span class="sd">        :param name: name of the parameter</span>
284<span class="sd">        </span>
285<span class="sd">        &quot;&quot;&quot;</span>
286        <span class="c"># Look for dispersion parameters</span>
287        <span class="n">toks</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>
288        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">)</span><span class="o">==</span><span class="mi">2</span><span class="p">:</span>
289            <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
290                <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">==</span><span class="n">toks</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
291                    <span class="k">for</span> <span class="n">par</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="p">[</span><span class="n">item</span><span class="p">]:</span>
292                        <span class="k">if</span> <span class="n">par</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="n">toks</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
293                            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="p">[</span><span class="n">item</span><span class="p">][</span><span class="n">par</span><span class="p">]</span>
294        <span class="k">else</span><span class="p">:</span>
295            <span class="c"># Look for standard parameter</span>
296            <span class="k">for</span> <span class="n">item</span> <span class="ow">in</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>
297                <span class="k">if</span> <span class="n">item</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">==</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
298                    <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="n">item</span><span class="p">]</span>
299           
300        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Model does not contain parameter </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">name</span>
301     </div>
302<div class="viewcode-block" id="BaseComponent.getParamList"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.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>
303        <span class="sd">&quot;&quot;&quot; </span>
304<span class="sd">        Return a list of all available parameters for the model</span>
305<span class="sd">        &quot;&quot;&quot;</span> 
306        <span class="nb">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>
307        <span class="c"># WARNING: Extending the list with the dispersion parameters</span>
308        <span class="nb">list</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">getDispParamList</span><span class="p">())</span>
309        <span class="k">return</span> <span class="nb">list</span>
310    </div>
311<div class="viewcode-block" id="BaseComponent.getDispParamList"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.getDispParamList">[docs]</a>    <span class="k">def</span> <span class="nf">getDispParamList</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
312        <span class="sd">&quot;&quot;&quot; </span>
313<span class="sd">        Return a list of all available parameters for the model</span>
314<span class="sd">        &quot;&quot;&quot;</span> 
315        <span class="nb">list</span> <span class="o">=</span> <span class="p">[]</span>
316       
317        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
318            <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="p">[</span><span class="n">item</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
319                <span class="k">if</span> <span class="n">p</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;type&#39;</span><span class="p">]:</span>
320                    <span class="nb">list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">p</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span>
321                   
322        <span class="k">return</span> <span class="nb">list</span>
323   
324    <span class="c"># Old-style methods that are no longer used</span></div>
325<div class="viewcode-block" id="BaseComponent.setParamWithToken"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.setParamWithToken">[docs]</a>    <span class="k">def</span> <span class="nf">setParamWithToken</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> <span class="n">token</span><span class="p">,</span> <span class="n">member</span><span class="p">):</span> 
326        <span class="sd">&quot;&quot;&quot;</span>
327<span class="sd">        set Param With Token</span>
328<span class="sd">        &quot;&quot;&quot;</span>
329        <span class="k">return</span> <span class="bp">NotImplemented</span></div>
330<div class="viewcode-block" id="BaseComponent.getParamWithToken"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.getParamWithToken">[docs]</a>    <span class="k">def</span> <span class="nf">getParamWithToken</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">token</span><span class="p">,</span> <span class="n">member</span><span class="p">):</span> 
331        <span class="sd">&quot;&quot;&quot;</span>
332<span class="sd">        get Param With Token</span>
333<span class="sd">        &quot;&quot;&quot;</span>
334        <span class="k">return</span> <span class="bp">NotImplemented</span>
335    </div>
336<div class="viewcode-block" id="BaseComponent.getParamListWithToken"><a class="viewcode-back" href="../../../dev/api/sas.models.html#sas.models.BaseComponent.BaseComponent.getParamListWithToken">[docs]</a>    <span class="k">def</span> <span class="nf">getParamListWithToken</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">,</span> <span class="n">member</span><span class="p">):</span> 
337        <span class="sd">&quot;&quot;&quot;</span>
338<span class="sd">        get Param List With Token</span>
339<span class="sd">        &quot;&quot;&quot;</span>
340        <span class="k">return</span> <span class="bp">NotImplemented</span></div>
341    <span class="k">def</span> <span class="nf">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> 
342        <span class="sd">&quot;&quot;&quot;</span>
343<span class="sd">        add</span>
344<span class="sd">        &quot;&quot;&quot;</span>
345        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Model operation are no longer supported&quot;</span>
346    <span class="k">def</span> <span class="nf">__sub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> 
347        <span class="sd">&quot;&quot;&quot;</span>
348<span class="sd">        sub</span>
349<span class="sd">        &quot;&quot;&quot;</span>
350        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Model operation are no longer supported&quot;</span>
351    <span class="k">def</span> <span class="nf">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> 
352        <span class="sd">&quot;&quot;&quot;</span>
353<span class="sd">        mul</span>
354<span class="sd">        &quot;&quot;&quot;</span>
355        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Model operation are no longer supported&quot;</span>
356    <span class="k">def</span> <span class="nf">__div__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> 
357        <span class="sd">&quot;&quot;&quot;</span>
358<span class="sd">        div</span>
359<span class="sd">        &quot;&quot;&quot;</span>
360        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Model operation are no longer supported&quot;</span>
361        </div>
362</pre></div>
363
364          </div>
365        </div>
366      </div>
367      <div class="sphinxsidebar">
368        <div class="sphinxsidebarwrapper">
369<div id="searchbox" style="display: none">
370  <h3>Quick search</h3>
371    <form class="search" action="../../../search.html" method="get">
372      <input type="text" name="q" />
373      <input type="submit" value="Go" />
374      <input type="hidden" name="check_keywords" value="yes" />
375      <input type="hidden" name="area" value="default" />
376    </form>
377    <p class="searchtip" style="font-size: 90%">
378    Enter search terms or a module, class or function name.
379    </p>
380</div>
381<script type="text/javascript">$('#searchbox').show(0);</script>
382        </div>
383      </div>
384      <div class="clearer"></div>
385    </div>
386    <div class="related">
387      <h3>Navigation</h3>
388      <ul>
389        <li class="right" style="margin-right: 10px">
390          <a href="../../../genindex.html" title="General Index"
391             >index</a></li>
392        <li class="right" >
393          <a href="../../../py-modindex.html" title="Python Module Index"
394             >modules</a> |</li>
395        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
396          <li><a href="../../index.html" >Module code</a> &raquo;</li>
397          <li><a href="../models.html" >sas.models</a> &raquo;</li> 
398      </ul>
399    </div>
400    <div class="footer">
401        &copy; Copyright 2013, The SasView Project.
402      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
403    </div>
404  </body>
405</html>
Note: See TracBrowser for help on using the repository browser.