source: sasview/_modules/sas/perspectives/fitting/plugin_models/sum_p1_p2.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.3 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.fitting.plugin_models.sum_p1_p2 &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.fitting" href="../../fitting.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="../../fitting.html" accesskey="U">sas.perspectives.fitting</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.fitting.plugin_models.sum_p1_p2</h1><div class="highlight"><pre>
52<span class="c"># A sample of an experimental model function for Sum(Pmodel1,Pmodel2)</span>
53<span class="kn">import</span> <span class="nn">copy</span>
54<span class="kn">from</span> <span class="nn">sas.models.pluginmodel</span> <span class="kn">import</span> <span class="n">Model1DPlugin</span>
55<span class="kn">import</span> <span class="nn">os</span>
56<span class="kn">import</span> <span class="nn">sys</span>
57<span class="sd">&quot;&quot;&quot;</span>
58<span class="sd">## *****************************************************************************</span>
59<span class="sd">Please select the &#39;Compile&#39; from the menubar after the modification and saving.</span>
60<span class="sd">Note that we recommend to save the file as a different file name.</span>
61<span class="sd">Otherwise, it could be removed in the future on re-installation of the SasView.</span>
62<span class="sd">## *****************************************************************************</span>
63<span class="sd">&quot;&quot;&quot;</span>
64
65<span class="c"># Available model names for this sum model</span>
66<span class="sd">&quot;&quot;&quot;</span>
67<span class="sd">BCCrystalModel, BEPolyelectrolyte, BarBellModel, BinaryHSModel, BroadPeakModel,</span>
68<span class="sd">CSParallelepipedModel, CappedCylinderModel, CoreShellCylinderModel,</span>
69<span class="sd">CoreShellEllipsoidModel, CoreShellModel, CorrLengthModel, CylinderModel, </span>
70<span class="sd">DABModel, DebyeModel, EllipsoidModel, EllipticalCylinderModel, FCCrystalModel,</span>
71<span class="sd">FlexCylEllipXModel, FlexibleCylinderModel, FractalCoreShellModel, FractalModel,</span>
72<span class="sd">FuzzySphereModel, GaussLorentzGelModel, GuinierModel, GuinierPorodModel,</span>
73<span class="sd">HardsphereStructure, HayterMSAStructure, HollowCylinderModel, LamellarFFHGModel,</span>
74<span class="sd">LamellarModel, LamellarPCrystalModel, LamellarPSHGModel, LamellarPSModel,</span>
75<span class="sd">LineModel, LorentzModel, MultiShellModel, ParallelepipedModel, PeakGaussModel,</span>
76<span class="sd">PeakLorentzModel, PearlNecklaceModel, Poly_GaussCoil, PolymerExclVolume,</span>
77<span class="sd">PorodModel, PowerLawAbsModel, SCCrystalModel, SphereModel, SquareWellStructure,</span>
78<span class="sd">StackedDisksModel, StickyHSStructure, TeubnerStreyModel, TriaxialEllipsoidModel,</span>
79<span class="sd">TwoLorentzianModel, TwoPowerLawModel, VesicleModel</span>
80<span class="sd">&quot;&quot;&quot;</span>
81<span class="c">## This is same as the Easy Custom Sum(p1 + p2) </span>
82<span class="c">#</span>
83<span class="c">#     Custom model = scale_factor * (P1 + P2)</span>
84<span class="c">#</span>
85<span class="c">## User can REPLACE model names below two arrowed lines (two names per line)</span>
86<span class="kn">from</span> <span class="nn">sas.models.CylinderModel</span> <span class="kn">import</span> <span class="n">CylinderModel</span> <span class="k">as</span> <span class="n">P1</span>          <span class="c">#&lt;========</span>
87<span class="kn">from</span> <span class="nn">sas.models.PolymerExclVolume</span> <span class="kn">import</span> <span class="n">PolymerExclVolume</span> <span class="k">as</span> <span class="n">P2</span>  <span class="c">#&lt;========</span>
88
89<span class="c"># If you want to add your custom model, change the filename to your custom model</span>
90<span class="c"># FILE NAME without the extension(.py). And un-comment the line(ie., remove &#39;#&#39;)</span>
91
92<span class="c"># from filename import Model as P2      #&lt;========</span>
93
94
95<span class="c">#####DO NOT CHANGE ANYTHING BELOW THIS LINE </span>
96<span class="c">#####---------------------------------------------------------------------------</span>
97<div class="viewcode-block" id="Model"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model">[docs]</a><span class="k">class</span> <span class="nc">Model</span><span class="p">(</span><span class="n">Model1DPlugin</span><span class="p">):</span>
98    <span class="sd">&quot;&quot;&quot;</span>
99<span class="sd">    Use for p1(Q)+p2(Q); </span>
100<span class="sd">    Note: P(Q) refers to &#39;form factor&#39; model.</span>
101<span class="sd">    &quot;&quot;&quot;</span>
102    <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;&quot;</span> 
103    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
104        <span class="n">Model1DPlugin</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="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
105        <span class="sd">&quot;&quot;&quot;</span>
106<span class="sd">        :param p_model1: a form factor, P(Q)</span>
107<span class="sd">        :param p_model2: another form factor, P(Q)</span>
108<span class="sd">        &quot;&quot;&quot;</span>
109        <span class="n">p_model1</span> <span class="o">=</span> <span class="n">P1</span><span class="p">()</span>
110        <span class="n">p_model2</span> <span class="o">=</span> <span class="n">P2</span><span class="p">()</span>
111        <span class="c">## Setting  model name model description</span>
112        <span class="bp">self</span><span class="o">.</span><span class="n">description</span><span class="o">=</span><span class="s">&quot;&quot;</span>
113       
114        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">p_model1</span><span class="o">.</span><span class="n">name</span><span class="o">+</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
115        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">+=</span> <span class="n">p_model2</span><span class="o">.</span><span class="n">name</span><span class="o">+</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
116        <span class="bp">self</span><span class="o">.</span><span class="n">fill_description</span><span class="p">(</span><span class="n">p_model1</span><span class="p">,</span> <span class="n">p_model2</span><span class="p">)</span>
117        <span class="c"># Set the name same as the file name</span>
118        <span class="bp">self</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">get_fname</span><span class="p">()</span>     <span class="c">##DO NOT CHANGE THIS LINE!!!</span>
119        <span class="c">## Define parameters</span>
120        <span class="bp">self</span><span class="o">.</span><span class="n">params</span> <span class="o">=</span> <span class="p">{}</span>
121
122        <span class="c">## Parameter details [units, min, max]</span>
123        <span class="bp">self</span><span class="o">.</span><span class="n">details</span> <span class="o">=</span> <span class="p">{}</span>
124       
125        <span class="c"># non-fittable parameters</span>
126        <span class="bp">self</span><span class="o">.</span><span class="n">non_fittable</span> <span class="o">=</span> <span class="n">p_model1</span><span class="o">.</span><span class="n">non_fittable</span> 
127        <span class="bp">self</span><span class="o">.</span><span class="n">non_fittable</span> <span class="o">+=</span> <span class="n">p_model2</span><span class="o">.</span><span class="n">non_fittable</span> 
128           
129        <span class="c">##models </span>
130        <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">=</span> <span class="n">p_model1</span>
131        <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">=</span> <span class="n">p_model2</span>
132       
133       
134        <span class="c">## dispersion</span>
135        <span class="bp">self</span><span class="o">.</span><span class="n">_set_dispersion</span><span class="p">()</span>
136        <span class="c">## Define parameters</span>
137        <span class="bp">self</span><span class="o">.</span><span class="n">_set_params</span><span class="p">()</span>
138        <span class="c">## New parameter:Scaling factor</span>
139        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;scale_factor&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
140       
141        <span class="c">## Parameter details [units, min, max]</span>
142        <span class="bp">self</span><span class="o">.</span><span class="n">_set_details</span><span class="p">()</span>
143        <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="s">&#39;scale_factor&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;&#39;</span><span class="p">,</span>  <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">]</span>
144        <span class="c">## Magnetic Panrameters</span>
145        <span class="bp">self</span><span class="o">.</span><span class="n">magnetic_params</span> <span class="o">=</span> <span class="p">[]</span>
146       
147        <span class="c">#list of parameter that can be fitted</span>
148        <span class="bp">self</span><span class="o">.</span><span class="n">_set_fixed_params</span><span class="p">()</span> 
149        <span class="c">## parameters with orientation</span>
150        <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">p_model1</span><span class="o">.</span><span class="n">orientation_params</span><span class="p">:</span>
151            <span class="n">new_item</span> <span class="o">=</span> <span class="s">&quot;p1_&quot;</span> <span class="o">+</span> <span class="n">item</span>
152            <span class="k">if</span> <span class="ow">not</span> <span class="n">new_item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">orientation_params</span><span class="p">:</span>
153                <span class="bp">self</span><span class="o">.</span><span class="n">orientation_params</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_item</span><span class="p">)</span>
154           
155        <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">p_model2</span><span class="o">.</span><span class="n">orientation_params</span><span class="p">:</span>
156            <span class="n">new_item</span> <span class="o">=</span> <span class="s">&quot;p2_&quot;</span> <span class="o">+</span> <span class="n">item</span>
157            <span class="k">if</span> <span class="ow">not</span> <span class="n">new_item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">orientation_params</span><span class="p">:</span>
158                <span class="bp">self</span><span class="o">.</span><span class="n">orientation_params</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_item</span><span class="p">)</span>
159        <span class="c">## magnetic params</span>
160        <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">p_model1</span><span class="o">.</span><span class="n">magnetic_params</span><span class="p">:</span>
161            <span class="n">new_item</span> <span class="o">=</span> <span class="s">&quot;p1_&quot;</span> <span class="o">+</span> <span class="n">item</span>
162            <span class="k">if</span> <span class="ow">not</span> <span class="n">new_item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">magnetic_params</span><span class="p">:</span>
163                <span class="bp">self</span><span class="o">.</span><span class="n">magnetic_params</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_item</span><span class="p">)</span>
164           
165        <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">p_model2</span><span class="o">.</span><span class="n">magnetic_params</span><span class="p">:</span>
166            <span class="n">new_item</span> <span class="o">=</span> <span class="s">&quot;p2_&quot;</span> <span class="o">+</span> <span class="n">item</span>
167            <span class="k">if</span> <span class="ow">not</span> <span class="n">new_item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">magnetic_params</span><span class="p">:</span>
168                <span class="bp">self</span><span class="o">.</span><span class="n">magnetic_params</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_item</span><span class="p">)</span>
169        <span class="c"># set multiplicity 1: muti_func Not supported.</span>
170        <span class="n">multiplicity1</span> <span class="o">=</span> <span class="mi">1</span>
171        <span class="n">multiplicity2</span> <span class="o">=</span> <span class="mi">1</span>
172        <span class="c">## functional multiplicity of the model</span>
173        <span class="bp">self</span><span class="o">.</span><span class="n">multiplicity1</span> <span class="o">=</span> <span class="n">multiplicity1</span> 
174        <span class="bp">self</span><span class="o">.</span><span class="n">multiplicity2</span> <span class="o">=</span> <span class="n">multiplicity2</span>   
175        <span class="bp">self</span><span class="o">.</span><span class="n">multiplicity_info</span> <span class="o">=</span> <span class="p">[]</span>   
176       
177    <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>
178        <span class="sd">&quot;&quot;&quot;</span>
179<span class="sd">            Internal utility function to copy the internal</span>
180<span class="sd">            data members to a fresh copy.</span>
181<span class="sd">        &quot;&quot;&quot;</span>
182        <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>
183        <span class="n">obj</span><span class="o">.</span><span class="n">description</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">description</span><span class="p">)</span>
184        <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>
185        <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>
186        <span class="n">obj</span><span class="o">.</span><span class="n">p_model1</span>  <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span>
187        <span class="n">obj</span><span class="o">.</span><span class="n">p_model2</span>  <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">clone</span><span class="p">()</span>
188        <span class="c">#obj = copy.deepcopy(self)</span>
189        <span class="k">return</span> <span class="n">obj</span>
190   
191    <span class="k">def</span> <span class="nf">_get_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name1</span><span class="p">,</span> <span class="n">name2</span><span class="p">):</span>
192        <span class="sd">&quot;&quot;&quot;</span>
193<span class="sd">        Get combined name from two model names</span>
194<span class="sd">        &quot;&quot;&quot;</span>
195        <span class="n">p1_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_upper_name</span><span class="p">(</span><span class="n">name1</span><span class="p">)</span>
196        <span class="k">if</span> <span class="ow">not</span> <span class="n">p1_name</span><span class="p">:</span>
197            <span class="n">p1_name</span> <span class="o">=</span> <span class="n">name1</span>
198        <span class="n">name</span> <span class="o">=</span> <span class="n">p1_name</span>
199        <span class="n">name</span> <span class="o">+=</span> <span class="s">&quot;+&quot;</span>
200        <span class="n">p2_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_upper_name</span><span class="p">(</span><span class="n">name2</span><span class="p">)</span>
201        <span class="k">if</span> <span class="ow">not</span> <span class="n">p2_name</span><span class="p">:</span>
202            <span class="n">p2_name</span> <span class="o">=</span> <span class="n">name2</span>
203        <span class="n">name</span> <span class="o">+=</span> <span class="n">p2_name</span>
204        <span class="k">return</span> <span class="n">name</span>
205   
206    <span class="k">def</span> <span class="nf">_get_upper_name</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="bp">None</span><span class="p">):</span>
207        <span class="sd">&quot;&quot;&quot;</span>
208<span class="sd">        Get uppercase string from model name</span>
209<span class="sd">        &quot;&quot;&quot;</span>
210        <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
211            <span class="k">return</span> <span class="s">&quot;&quot;</span>
212        <span class="n">upper_name</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
213        <span class="n">str_name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
214        <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">str_name</span><span class="p">)):</span>
215            <span class="k">if</span> <span class="n">str_name</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="o">.</span><span class="n">isupper</span><span class="p">():</span>
216                <span class="n">upper_name</span> <span class="o">+=</span> <span class="n">str_name</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
217        <span class="k">return</span> <span class="n">upper_name</span>
218       
219    <span class="k">def</span> <span class="nf">_set_dispersion</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
220        <span class="sd">&quot;&quot;&quot;</span>
221<span class="sd">           combined the two models dispersions</span>
222<span class="sd">           Polydispersion should not be applied to s_model</span>
223<span class="sd">        &quot;&quot;&quot;</span>
224        <span class="c">##set dispersion only from p_model </span>
225        <span class="k">for</span> <span class="n">name</span> <span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">dispersion</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
226            <span class="c">#if name.lower() not in self.p_model1.orientation_params:</span>
227            <span class="n">new_name</span> <span class="o">=</span> <span class="s">&quot;p1_&quot;</span> <span class="o">+</span> <span class="n">name</span>
228            <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span><span class="o">=</span> <span class="n">value</span> 
229        <span class="k">for</span> <span class="n">name</span> <span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">dispersion</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
230            <span class="c">#if name.lower() not in self.p_model2.orientation_params:</span>
231            <span class="n">new_name</span> <span class="o">=</span> <span class="s">&quot;p2_&quot;</span> <span class="o">+</span> <span class="n">name</span>
232            <span class="bp">self</span><span class="o">.</span><span class="n">dispersion</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span><span class="o">=</span> <span class="n">value</span> 
233           
234<div class="viewcode-block" id="Model.function"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.function">[docs]</a>    <span class="k">def</span> <span class="nf">function</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="mf">0.0</span><span class="p">):</span> 
235        <span class="sd">&quot;&quot;&quot;</span>
236<span class="sd">        &quot;&quot;&quot;</span>
237        <span class="k">return</span> <span class="mi">0</span>
238                               </div>
239<div class="viewcode-block" id="Model.getProfile"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.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>
240        <span class="sd">&quot;&quot;&quot;</span>
241<span class="sd">        Get SLD profile of p_model if exists</span>
242<span class="sd">        </span>
243<span class="sd">        : return: (r, beta) where r is a list of radius of the transition points</span>
244<span class="sd">                beta is a list of the corresponding SLD values </span>
245<span class="sd">        : Note: This works only for func_shell# = 2 (exp function)</span>
246<span class="sd">                and is not supporting for p2</span>
247<span class="sd">        &quot;&quot;&quot;</span>
248        <span class="k">try</span><span class="p">:</span>
249            <span class="n">x</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">getProfile</span><span class="p">()</span>
250        <span class="k">except</span><span class="p">:</span>
251            <span class="n">x</span> <span class="o">=</span> <span class="bp">None</span>
252            <span class="n">y</span> <span class="o">=</span> <span class="bp">None</span>
253           
254        <span class="k">return</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span>
255    </div>
256    <span class="k">def</span> <span class="nf">_set_params</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
257        <span class="sd">&quot;&quot;&quot;</span>
258<span class="sd">            Concatenate the parameters of the two models to create</span>
259<span class="sd">            this model parameters </span>
260<span class="sd">        &quot;&quot;&quot;</span>
261
262        <span class="k">for</span> <span class="n">name</span> <span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">params</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
263            <span class="c"># No 2D-supported</span>
264            <span class="c">#if name not in self.p_model1.orientation_params:</span>
265            <span class="n">new_name</span> <span class="o">=</span> <span class="s">&quot;p1_&quot;</span> <span class="o">+</span> <span class="n">name</span>
266            <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span><span class="o">=</span> <span class="n">value</span>
267           
268        <span class="k">for</span> <span class="n">name</span> <span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">params</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
269            <span class="c"># No 2D-supported</span>
270            <span class="c">#if name not in self.p_model2.orientation_params:</span>
271            <span class="n">new_name</span> <span class="o">=</span> <span class="s">&quot;p2_&quot;</span> <span class="o">+</span> <span class="n">name</span>
272            <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span><span class="o">=</span> <span class="n">value</span>
273               
274        <span class="c"># Set &quot;scale&quot; as initializing</span>
275        <span class="bp">self</span><span class="o">.</span><span class="n">_set_scale_factor</span><span class="p">()</span>
276     
277           
278    <span class="k">def</span> <span class="nf">_set_details</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
279        <span class="sd">&quot;&quot;&quot;</span>
280<span class="sd">            Concatenate details of the two models to create</span>
281<span class="sd">            this model details </span>
282<span class="sd">        &quot;&quot;&quot;</span>
283        <span class="k">for</span> <span class="n">name</span> <span class="p">,</span><span class="n">detail</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">details</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
284            <span class="n">new_name</span> <span class="o">=</span> <span class="s">&quot;p1_&quot;</span> <span class="o">+</span> <span class="n">name</span>
285            <span class="c">#if new_name not in self.orientation_params:</span>
286            <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span><span class="o">=</span> <span class="n">detail</span>
287           
288        <span class="k">for</span> <span class="n">name</span> <span class="p">,</span><span class="n">detail</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">details</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span>
289            <span class="n">new_name</span> <span class="o">=</span> <span class="s">&quot;p2_&quot;</span> <span class="o">+</span> <span class="n">name</span>
290            <span class="c">#if new_name not in self.orientation_params:</span>
291            <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="n">new_name</span><span class="p">]</span><span class="o">=</span> <span class="n">detail</span>
292   
293    <span class="k">def</span> <span class="nf">_set_scale_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
294        <span class="sd">&quot;&quot;&quot;</span>
295<span class="sd">        Not implemented</span>
296<span class="sd">        &quot;&quot;&quot;</span>
297        <span class="k">pass</span>
298       
299               
300<div class="viewcode-block" id="Model.setParam"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.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>
301        <span class="sd">&quot;&quot;&quot; </span>
302<span class="sd">        Set the value of a model parameter</span>
303<span class="sd">    </span>
304<span class="sd">        :param name: name of the parameter</span>
305<span class="sd">        :param value: value of the parameter</span>
306<span class="sd">        &quot;&quot;&quot;</span>
307        <span class="c"># set param to p1+p2 model</span>
308        <span class="bp">self</span><span class="o">.</span><span class="n">_setParamHelper</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
309       
310        <span class="c">## setParam to p model </span>
311        <span class="n">model_pre</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> <span class="mi">1</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
312        <span class="n">new_name</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> <span class="mi">1</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
313        <span class="k">if</span> <span class="n">model_pre</span> <span class="o">==</span> <span class="s">&quot;p1&quot;</span><span class="p">:</span>
314            <span class="k">if</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">getParamList</span><span class="p">():</span>
315                <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">setParam</span><span class="p">(</span><span class="n">new_name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
316        <span class="k">elif</span> <span class="n">model_pre</span> <span class="o">==</span> <span class="s">&quot;p2&quot;</span><span class="p">:</span>
317             <span class="k">if</span> <span class="n">new_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">getParamList</span><span class="p">():</span>
318                <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">setParam</span><span class="p">(</span><span class="n">new_name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
319        <span class="k">elif</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s">&#39;scale_factor&#39;</span><span class="p">:</span>
320            <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;scale_factor&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
321        <span class="k">else</span><span class="p">:</span>
322            <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>
323            </div>
324<div class="viewcode-block" id="Model.getParam"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.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>
325        <span class="sd">&quot;&quot;&quot; </span>
326<span class="sd">        Set the value of a model parameter</span>
327
328<span class="sd">        :param name: name of the parameter</span>
329<span class="sd">        </span>
330<span class="sd">        &quot;&quot;&quot;</span>
331        <span class="c"># Look for dispersion parameters</span>
332        <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>
333        <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>
334            <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>
335                <span class="c"># 2D not supported</span>
336                <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><span class="c"># and \</span>
337                            <span class="c">#item.lower() not in self.orientation_params \</span>
338                            <span class="c">#and toks[0].lower() not in self.orientation_params:</span>
339                    <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>
340                        <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>
341                            <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>
342        <span class="k">else</span><span class="p">:</span>
343            <span class="c"># Look for standard parameter</span>
344            <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>
345                <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><span class="c">#and \</span>
346                            <span class="c">#item.lower() not in self.orientation_params \</span>
347                            <span class="c">#and toks[0].lower() not in self.orientation_params:</span>
348                    <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>
349        <span class="k">return</span> 
350        <span class="c">#raise ValueError, &quot;Model does not contain parameter %s&quot; % name</span>
351       </div>
352    <span class="k">def</span> <span class="nf">_setParamHelper</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>
353        <span class="sd">&quot;&quot;&quot;</span>
354<span class="sd">        Helper function to setparam</span>
355<span class="sd">        &quot;&quot;&quot;</span>
356        <span class="c"># Look for dispersion parameters</span>
357        <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>
358        <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>
359            <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>
360                <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><span class="c"># and \</span>
361                            <span class="c">#item.lower() not in self.orientation_params:</span>
362                    <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>
363                        <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><span class="c">#and \</span>
364                                <span class="c">#item.lower() not in self.orientation_params:</span>
365                            <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>
366                            <span class="k">return</span>
367        <span class="k">else</span><span class="p">:</span>
368            <span class="c"># Look for standard parameter</span>
369            <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>
370                <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><span class="c">#and \</span>
371                            <span class="c">#item.lower() not in self.orientation_params:</span>
372                    <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>
373                    <span class="k">return</span>
374           
375        <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>
376             
377   
378    <span class="k">def</span> <span class="nf">_set_fixed_params</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
379        <span class="sd">&quot;&quot;&quot;</span>
380<span class="sd">             fill the self.fixed list with the p_model fixed list</span>
381<span class="sd">        &quot;&quot;&quot;</span>
382        <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">p_model1</span><span class="o">.</span><span class="n">fixed</span><span class="p">:</span>
383            <span class="n">new_item</span> <span class="o">=</span> <span class="s">&quot;p1&quot;</span> <span class="o">+</span> <span class="n">item</span>
384            <span class="bp">self</span><span class="o">.</span><span class="n">fixed</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_item</span><span class="p">)</span>
385        <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">p_model2</span><span class="o">.</span><span class="n">fixed</span><span class="p">:</span>
386            <span class="n">new_item</span> <span class="o">=</span> <span class="s">&quot;p2&quot;</span> <span class="o">+</span> <span class="n">item</span>
387            <span class="bp">self</span><span class="o">.</span><span class="n">fixed</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_item</span><span class="p">)</span>
388
389        <span class="bp">self</span><span class="o">.</span><span class="n">fixed</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
390               
391                   
392<div class="viewcode-block" id="Model.run"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.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="mf">0.0</span><span class="p">):</span>
393        <span class="sd">&quot;&quot;&quot; </span>
394<span class="sd">        Evaluate the model</span>
395<span class="sd">        </span>
396<span class="sd">        :param x: input q-value (float or [float, float] as [r, theta])</span>
397<span class="sd">        :return: (scattering function value)</span>
398<span class="sd">        &quot;&quot;&quot;</span>
399        <span class="bp">self</span><span class="o">.</span><span class="n">_set_scale_factor</span><span class="p">()</span>
400        <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="s">&#39;scale_factor&#39;</span><span class="p">]</span> <span class="o">*</span> \
401                <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
402    </div>
403<div class="viewcode-block" id="Model.runXY"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.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="mf">0.0</span><span class="p">):</span>
404        <span class="sd">&quot;&quot;&quot; </span>
405<span class="sd">        Evaluate the model</span>
406<span class="sd">        </span>
407<span class="sd">        :param x: input q-value (float or [float, float] as [qx, qy])</span>
408<span class="sd">        :return: scattering function value</span>
409<span class="sd">        &quot;&quot;&quot;</span> 
410        <span class="bp">self</span><span class="o">.</span><span class="n">_set_scale_factor</span><span class="p">()</span>
411        <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="s">&#39;scale_factor&#39;</span><span class="p">]</span> <span class="o">*</span> \
412                <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">runXY</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">runXY</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
413   
414    <span class="c">## Now (May27,10) directly uses the model eval function </span>
415    <span class="c">## instead of the for-loop in Base Component.</span></div>
416<div class="viewcode-block" id="Model.evalDistribution"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.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">x</span> <span class="o">=</span> <span class="p">[]):</span>
417        <span class="sd">&quot;&quot;&quot; </span>
418<span class="sd">        Evaluate the model in cartesian coordinates</span>
419<span class="sd">        </span>
420<span class="sd">        :param x: input q[], or [qx[], qy[]]</span>
421<span class="sd">        :return: scattering function P(q[])</span>
422<span class="sd">        &quot;&quot;&quot;</span>
423        <span class="bp">self</span><span class="o">.</span><span class="n">_set_scale_factor</span><span class="p">()</span>
424        <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="s">&#39;scale_factor&#39;</span><span class="p">]</span> <span class="o">*</span> \
425                    <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">evalDistribution</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">+</span> \
426                                 <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">evalDistribution</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
427</div>
428<div class="viewcode-block" id="Model.set_dispersion"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.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>
429        <span class="sd">&quot;&quot;&quot;</span>
430<span class="sd">        Set the dispersion object for a model parameter</span>
431<span class="sd">        </span>
432<span class="sd">        :param parameter: name of the parameter [string]</span>
433<span class="sd">        :dispersion: dispersion object of type DispersionModel</span>
434<span class="sd">        &quot;&quot;&quot;</span>
435        <span class="n">value</span><span class="o">=</span> <span class="bp">None</span>
436        <span class="n">new_pre</span> <span class="o">=</span> <span class="n">parameter</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&quot;_&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
437        <span class="n">new_parameter</span> <span class="o">=</span> <span class="n">parameter</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&quot;_&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
438        <span class="k">try</span><span class="p">:</span>
439            <span class="k">if</span> <span class="n">new_pre</span> <span class="o">==</span> <span class="s">&#39;p1&#39;</span> <span class="ow">and</span> \
440                            <span class="n">new_parameter</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">dispersion</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
441                <span class="n">value</span><span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">set_dispersion</span><span class="p">(</span><span class="n">new_parameter</span><span class="p">,</span> <span class="n">dispersion</span><span class="p">)</span>
442            <span class="k">if</span> <span class="n">new_pre</span> <span class="o">==</span> <span class="s">&#39;p2&#39;</span> <span class="ow">and</span> \
443                             <span class="n">new_parameter</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">dispersion</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
444                <span class="n">value</span><span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">set_dispersion</span><span class="p">(</span><span class="n">new_parameter</span><span class="p">,</span> <span class="n">dispersion</span><span class="p">)</span>
445            <span class="bp">self</span><span class="o">.</span><span class="n">_set_dispersion</span><span class="p">()</span>
446            <span class="k">return</span> <span class="n">value</span>
447        <span class="k">except</span><span class="p">:</span>
448            <span class="k">raise</span> 
449</div>
450<div class="viewcode-block" id="Model.fill_description"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.fill_description">[docs]</a>    <span class="k">def</span> <span class="nf">fill_description</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">p_model1</span><span class="p">,</span> <span class="n">p_model2</span><span class="p">):</span>
451        <span class="sd">&quot;&quot;&quot;</span>
452<span class="sd">        Fill the description for P(Q)+P(Q)</span>
453<span class="sd">        &quot;&quot;&quot;</span>
454        <span class="n">description</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
455        <span class="n">description</span> <span class="o">+=</span><span class="s">&quot;This model gives the summation of  </span><span class="si">%s</span><span class="s"> and </span><span class="si">%s</span><span class="s">.</span><span class="se">\n</span><span class="s">&quot;</span><span class="o">%</span> \
456                                        <span class="p">(</span> <span class="n">p_model1</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">p_model2</span><span class="o">.</span><span class="n">name</span> <span class="p">)</span>
457        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">+=</span> <span class="n">description</span>
458   
459    <span class="c">## DO NOT MODIFY THE FOLLOWING LINES!!!!!!!!!!!!!!!!       </span></div>
460<div class="viewcode-block" id="Model.get_fname"><a class="viewcode-back" href="../../../../../dev/api/sas.perspectives.fitting.plugin_models.html#sas.perspectives.fitting.plugin_models.sum_p1_p2.Model.get_fname">[docs]</a>    <span class="k">def</span> <span class="nf">get_fname</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
461        <span class="sd">&quot;&quot;&quot;</span>
462<span class="sd">        Get the model name same as the file name</span>
463<span class="sd">        &quot;&quot;&quot;</span>
464        <span class="n">path</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">_getframe</span><span class="p">()</span><span class="o">.</span><span class="n">f_code</span><span class="o">.</span><span class="n">co_filename</span>
465        <span class="n">basename</span>  <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
466        <span class="n">name</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">basename</span><span class="p">)</span>
467        <span class="k">return</span> <span class="n">name</span>
468            </div></div>
469<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> 
470    <span class="n">m1</span><span class="o">=</span> <span class="n">Model</span><span class="p">()</span> 
471    <span class="c">#m1.setParam(&quot;p1_scale&quot;, 25)  </span>
472    <span class="c">#m1.setParam(&quot;p1_length&quot;, 1000)</span>
473    <span class="c">#m1.setParam(&quot;p2_scale&quot;, 100) </span>
474    <span class="c">#m1.setParam(&quot;p2_rg&quot;, 100) </span>
475    <span class="n">out1</span> <span class="o">=</span> <span class="n">m1</span><span class="o">.</span><span class="n">runXY</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span>
476
477    <span class="n">m2</span><span class="o">=</span> <span class="n">Model</span><span class="p">()</span>
478    <span class="c">#m2.p_model1.setParam(&quot;scale&quot;, 25) </span>
479    <span class="c">#m2.p_model1.setParam(&quot;length&quot;, 1000) </span>
480    <span class="c">#m2.p_model2.setParam(&quot;scale&quot;, 100)</span>
481    <span class="c">#m2.p_model2.setParam(&quot;rg&quot;, 100)</span>
482    <span class="n">out2</span> <span class="o">=</span> <span class="n">m2</span><span class="o">.</span><span class="n">p_model1</span><span class="o">.</span><span class="n">runXY</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span> <span class="o">+</span> <span class="n">m2</span><span class="o">.</span><span class="n">p_model2</span><span class="o">.</span><span class="n">runXY</span><span class="p">(</span><span class="mf">0.01</span><span class="p">)</span>
483    <span class="k">print</span> <span class="s">&quot;Testing at Q = 0.01:&quot;</span>
484    <span class="k">print</span> <span class="n">out1</span><span class="p">,</span> <span class="s">&quot; = &quot;</span><span class="p">,</span> <span class="n">out2</span>
485    <span class="k">if</span> <span class="n">out1</span> <span class="o">==</span> <span class="n">out2</span><span class="p">:</span>
486        <span class="k">print</span> <span class="s">&quot;===&gt; Simple Test: Passed!&quot;</span>
487    <span class="k">else</span><span class="p">:</span>
488        <span class="k">print</span> <span class="s">&quot;===&gt; Simple Test: Failed!&quot;</span>
489</pre></div>
490
491          </div>
492        </div>
493      </div>
494      <div class="sphinxsidebar">
495        <div class="sphinxsidebarwrapper">
496<div id="searchbox" style="display: none">
497  <h3>Quick search</h3>
498    <form class="search" action="../../../../../search.html" method="get">
499      <input type="text" name="q" />
500      <input type="submit" value="Go" />
501      <input type="hidden" name="check_keywords" value="yes" />
502      <input type="hidden" name="area" value="default" />
503    </form>
504    <p class="searchtip" style="font-size: 90%">
505    Enter search terms or a module, class or function name.
506    </p>
507</div>
508<script type="text/javascript">$('#searchbox').show(0);</script>
509        </div>
510      </div>
511      <div class="clearer"></div>
512    </div>
513    <div class="related">
514      <h3>Navigation</h3>
515      <ul>
516        <li class="right" style="margin-right: 10px">
517          <a href="../../../../../genindex.html" title="General Index"
518             >index</a></li>
519        <li class="right" >
520          <a href="../../../../../py-modindex.html" title="Python Module Index"
521             >modules</a> |</li>
522        <li><a href="../../../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
523          <li><a href="../../../../index.html" >Module code</a> &raquo;</li>
524          <li><a href="../../fitting.html" >sas.perspectives.fitting</a> &raquo;</li> 
525      </ul>
526    </div>
527    <div class="footer">
528        &copy; Copyright 2013, The SasView Project.
529      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
530    </div>
531  </body>
532</html>
Note: See TracBrowser for help on using the repository browser.