source: sasview/_modules/sas/calculator/sas_gen.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: 211.6 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>sas.calculator.sas_gen &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="Module code" href="../../index.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" accesskey="U">Module code</a> &raquo;</li> 
42      </ul>
43    </div> 
44
45    <div class="document">
46      <div class="documentwrapper">
47        <div class="bodywrapper">
48          <div class="body">
49           
50  <h1>Source code for sas.calculator.sas_gen</h1><div class="highlight"><pre>
51<span class="sd">&quot;&quot;&quot;</span>
52<span class="sd">SAS generic computation and sld file readers</span>
53<span class="sd">&quot;&quot;&quot;</span>
54<span class="kn">from</span> <span class="nn">sas.models.BaseComponent</span> <span class="kn">import</span> <span class="n">BaseComponent</span>
55<span class="kn">import</span> <span class="nn">sas.models.sas_extension.sld2i</span> <span class="kn">as</span> <span class="nn">mod</span>
56<span class="kn">from</span> <span class="nn">periodictable</span> <span class="kn">import</span> <span class="n">formula</span>
57<span class="kn">from</span> <span class="nn">periodictable</span> <span class="kn">import</span> <span class="n">nsf</span>
58<span class="kn">import</span> <span class="nn">numpy</span>
59<span class="kn">import</span> <span class="nn">os</span>
60<span class="kn">import</span> <span class="nn">copy</span>
61
62<span class="n">MFactor_AM</span> <span class="o">=</span> <span class="mf">2.853E-12</span>
63<span class="n">MFactor_mT</span> <span class="o">=</span> <span class="mf">2.3164E-9</span>
64<span class="n">METER2ANG</span> <span class="o">=</span> <span class="mf">1.0E+10</span>
65<span class="c">#Avogadro constant [1/mol]</span>
66<span class="n">NA</span> <span class="o">=</span> <span class="mf">6.02214129e+23</span>
67
68<div class="viewcode-block" id="mag2sld"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.mag2sld">[docs]</a><span class="k">def</span> <span class="nf">mag2sld</span><span class="p">(</span><span class="n">mag</span><span class="p">,</span> <span class="n">v_unit</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
69    <span class="sd">&quot;&quot;&quot;</span>
70<span class="sd">    Convert magnetization to magnatic SLD</span>
71<span class="sd">    sldm = Dm * mag where Dm = gamma * classical elec. radius/(2*Bohr magneton)</span>
72<span class="sd">    Dm ~ 2.853E-12 [A^(-2)] ==&gt; Shouldn&#39;t be 2.90636E-12 [A^(-2)]???</span>
73<span class="sd">    &quot;&quot;&quot;</span> 
74    <span class="k">if</span> <span class="n">v_unit</span> <span class="o">==</span> <span class="s">&quot;A/m&quot;</span><span class="p">:</span>
75        <span class="n">factor</span> <span class="o">=</span> <span class="n">MFactor_AM</span>
76    <span class="k">elif</span> <span class="n">v_unit</span> <span class="o">==</span> <span class="s">&quot;mT&quot;</span><span class="p">:</span>
77        <span class="n">factor</span> <span class="o">=</span> <span class="n">MFactor_mT</span>
78    <span class="k">else</span><span class="p">:</span>
79        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Invalid valueunit&quot;</span>
80    <span class="n">sld_m</span> <span class="o">=</span> <span class="n">factor</span> <span class="o">*</span> <span class="n">mag</span>
81    <span class="k">return</span> <span class="n">sld_m</span>
82</div>
83<div class="viewcode-block" id="transform_center"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.transform_center">[docs]</a><span class="k">def</span> <span class="nf">transform_center</span><span class="p">(</span><span class="n">pos_x</span><span class="p">,</span> <span class="n">pos_y</span><span class="p">,</span> <span class="n">pos_z</span><span class="p">):</span>
84    <span class="sd">&quot;&quot;&quot;</span>
85<span class="sd">    re-center </span>
86<span class="sd">    </span>
87<span class="sd">    :return: posx, posy, posz   [arrays]</span>
88<span class="sd">    &quot;&quot;&quot;</span> 
89    <span class="n">posx</span> <span class="o">=</span> <span class="n">pos_x</span> <span class="o">-</span> <span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">pos_x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">max</span><span class="p">(</span><span class="n">pos_x</span><span class="p">))</span> <span class="o">/</span> <span class="mf">2.0</span>
90    <span class="n">posy</span> <span class="o">=</span> <span class="n">pos_y</span> <span class="o">-</span> <span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">pos_y</span><span class="p">)</span> <span class="o">+</span> <span class="nb">max</span><span class="p">(</span><span class="n">pos_y</span><span class="p">))</span> <span class="o">/</span> <span class="mf">2.0</span>
91    <span class="n">posz</span> <span class="o">=</span> <span class="n">pos_z</span> <span class="o">-</span> <span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">pos_z</span><span class="p">)</span> <span class="o">+</span> <span class="nb">max</span><span class="p">(</span><span class="n">pos_z</span><span class="p">))</span> <span class="o">/</span> <span class="mf">2.0</span> 
92    <span class="k">return</span> <span class="n">posx</span><span class="p">,</span> <span class="n">posy</span><span class="p">,</span> <span class="n">posz</span>   
93</div>
94<div class="viewcode-block" id="GenSAS"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.GenSAS">[docs]</a><span class="k">class</span> <span class="nc">GenSAS</span><span class="p">(</span><span class="n">BaseComponent</span><span class="p">):</span>
95    <span class="sd">&quot;&quot;&quot;</span>
96<span class="sd">    Generic SAS computation Model based on sld (n &amp; m) arrays</span>
97<span class="sd">    &quot;&quot;&quot;</span>
98    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
99        <span class="sd">&quot;&quot;&quot;</span>
100<span class="sd">        Init</span>
101<span class="sd">        </span>
102<span class="sd">        :Params sld_data: MagSLD object</span>
103<span class="sd">        &quot;&quot;&quot;</span>
104        <span class="c"># Initialize BaseComponent</span>
105        <span class="n">BaseComponent</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
106        <span class="bp">self</span><span class="o">.</span><span class="n">sld_data</span> <span class="o">=</span> <span class="bp">None</span>
107        <span class="bp">self</span><span class="o">.</span><span class="n">data_pos_unit</span> <span class="o">=</span> <span class="bp">None</span>
108        <span class="bp">self</span><span class="o">.</span><span class="n">data_x</span> <span class="o">=</span> <span class="bp">None</span>
109        <span class="bp">self</span><span class="o">.</span><span class="n">data_y</span> <span class="o">=</span> <span class="bp">None</span>
110        <span class="bp">self</span><span class="o">.</span><span class="n">data_z</span> <span class="o">=</span> <span class="bp">None</span>
111        <span class="bp">self</span><span class="o">.</span><span class="n">data_sldn</span> <span class="o">=</span> <span class="bp">None</span>
112        <span class="bp">self</span><span class="o">.</span><span class="n">data_mx</span> <span class="o">=</span> <span class="bp">None</span>
113        <span class="bp">self</span><span class="o">.</span><span class="n">data_my</span> <span class="o">=</span> <span class="bp">None</span>
114        <span class="bp">self</span><span class="o">.</span><span class="n">data_mz</span> <span class="o">=</span> <span class="bp">None</span>
115        <span class="bp">self</span><span class="o">.</span><span class="n">data_vol</span> <span class="o">=</span> <span class="bp">None</span> <span class="c">#[A^3]</span>
116        <span class="bp">self</span><span class="o">.</span><span class="n">is_avg</span> <span class="o">=</span> <span class="bp">False</span>
117        <span class="c">## Name of the model</span>
118        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;GenSAS&quot;</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        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;scale&#39;</span><span class="p">]</span>       <span class="o">=</span> <span class="mf">1.0</span>
122        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;background&#39;</span><span class="p">]</span>  <span class="o">=</span> <span class="mf">0.0</span>
123        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;solvent_SLD&#39;</span><span class="p">]</span>     <span class="o">=</span> <span class="mf">0.0</span>
124        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;total_volume&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
125        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Up_frac_in&#39;</span><span class="p">]</span>     <span class="o">=</span> <span class="mf">1.0</span>
126        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Up_frac_out&#39;</span><span class="p">]</span>    <span class="o">=</span> <span class="mf">1.0</span>
127        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Up_theta&#39;</span><span class="p">]</span>  <span class="o">=</span> <span class="mf">0.0</span>
128        <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="s">&#39;GenSAS&#39;</span>
129        <span class="c">## Parameter details [units, min, max]</span>
130        <span class="bp">self</span><span class="o">.</span><span class="n">details</span> <span class="o">=</span> <span class="p">{}</span>
131        <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="s">&#39;scale&#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>
132        <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="s">&#39;background&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;[1/cm]&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">]</span>
133        <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="s">&#39;solvent_SLD&#39;</span><span class="p">]</span>    <span class="o">=</span> <span class="p">[</span><span class="s">&#39;1/A^(2)&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">]</span>
134        <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="s">&#39;total_volume&#39;</span><span class="p">]</span>    <span class="o">=</span> <span class="p">[</span><span class="s">&#39;A^(3)&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">]</span>
135        <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="s">&#39;Up_frac_in&#39;</span><span class="p">]</span>    <span class="o">=</span> <span class="p">[</span><span class="s">&#39;[u/(u+d)]&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">]</span>
136        <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="s">&#39;Up_frac_out&#39;</span><span class="p">]</span>   <span class="o">=</span> <span class="p">[</span><span class="s">&#39;[u/(u+d)]&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">]</span>
137        <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">[</span><span class="s">&#39;Up_theta&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;[deg]&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">,</span> <span class="bp">None</span><span class="p">]</span>
138        <span class="c"># fixed parameters</span>
139        <span class="bp">self</span><span class="o">.</span><span class="n">fixed</span> <span class="o">=</span> <span class="p">[]</span>
140       
141<div class="viewcode-block" id="GenSAS.set_pixel_volumes"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.GenSAS.set_pixel_volumes">[docs]</a>    <span class="k">def</span> <span class="nf">set_pixel_volumes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">volume</span><span class="p">):</span>     
142        <span class="sd">&quot;&quot;&quot;</span>
143<span class="sd">        Set the volume of a pixel in (A^3) unit</span>
144<span class="sd">        :Param volume: pixel volume [float]</span>
145<span class="sd">        &quot;&quot;&quot;</span>
146        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_vol</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
147            <span class="k">raise</span>
148        <span class="bp">self</span><span class="o">.</span><span class="n">data_vol</span> <span class="o">=</span> <span class="n">volume</span>
149    </div>
150<div class="viewcode-block" id="GenSAS.set_is_avg"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.GenSAS.set_is_avg">[docs]</a>    <span class="k">def</span> <span class="nf">set_is_avg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">is_avg</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> 
151        <span class="sd">&quot;&quot;&quot;</span>
152<span class="sd">        Sets is_avg: [bool]</span>
153<span class="sd">        &quot;&quot;&quot;</span>
154        <span class="bp">self</span><span class="o">.</span><span class="n">is_avg</span> <span class="o">=</span> <span class="n">is_avg</span>
155          </div>
156    <span class="k">def</span> <span class="nf">_gen</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
157        <span class="sd">&quot;&quot;&quot;</span>
158<span class="sd">        Evaluate the function</span>
159<span class="sd">        :Param x: array of x-values</span>
160<span class="sd">        :Param y: array of y-values</span>
161<span class="sd">        :Param i: array of initial i-value </span>
162<span class="sd">        :return: function value</span>
163<span class="sd">        &quot;&quot;&quot;</span>
164        <span class="n">pos_x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_x</span>
165        <span class="n">pos_y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_y</span>
166        <span class="n">pos_z</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_z</span>
167        <span class="n">len_x</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">pos_x</span><span class="p">)</span>
168        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_avg</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
169            <span class="n">len_x</span> <span class="o">*=</span> <span class="o">-</span><span class="mi">1</span>
170            <span class="n">pos_x</span><span class="p">,</span> <span class="n">pos_y</span><span class="p">,</span> <span class="n">pos_z</span> <span class="o">=</span> <span class="n">transform_center</span><span class="p">(</span><span class="n">pos_x</span><span class="p">,</span> <span class="n">pos_y</span><span class="p">,</span> <span class="n">pos_z</span><span class="p">)</span>
171        <span class="n">len_q</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
172        <span class="n">sldn</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">data_sldn</span><span class="p">)</span>
173        <span class="n">sldn</span> <span class="o">-=</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;solvent_SLD&#39;</span><span class="p">]</span>
174        <span class="n">model</span> <span class="o">=</span> <span class="n">mod</span><span class="o">.</span><span class="n">new_GenI</span><span class="p">(</span><span class="n">len_x</span><span class="p">,</span> <span class="n">pos_x</span><span class="p">,</span> <span class="n">pos_y</span><span class="p">,</span> <span class="n">pos_z</span><span class="p">,</span> 
175                             <span class="n">sldn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_mx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_my</span><span class="p">,</span> 
176                             <span class="bp">self</span><span class="o">.</span><span class="n">data_mz</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_vol</span><span class="p">,</span>
177                             <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Up_frac_in&#39;</span><span class="p">],</span> 
178                             <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Up_frac_out&#39;</span><span class="p">],</span> 
179                             <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;Up_theta&#39;</span><span class="p">])</span>
180        <span class="k">if</span> <span class="n">y</span> <span class="o">==</span> <span class="p">[]:</span>
181            <span class="n">mod</span><span class="o">.</span><span class="n">genicom</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">len_q</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
182        <span class="k">else</span><span class="p">:</span>
183            <span class="n">mod</span><span class="o">.</span><span class="n">genicomXY</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">len_q</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
184        <span class="n">vol_correction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_total_volume</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;total_volume&#39;</span><span class="p">]</span>
185        <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&#39;</span><span class="p">]</span> <span class="o">*</span> <span class="n">vol_correction</span> <span class="o">*</span> <span class="n">i</span> <span class="o">+</span> \
186                        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;background&#39;</span><span class="p">]</span>
187       
188<div class="viewcode-block" id="GenSAS.set_sld_data"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.GenSAS.set_sld_data">[docs]</a>    <span class="k">def</span> <span class="nf">set_sld_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sld_data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>   
189        <span class="sd">&quot;&quot;&quot;</span>
190<span class="sd">        Sets sld_data</span>
191<span class="sd">        &quot;&quot;&quot;</span>
192        <span class="bp">self</span><span class="o">.</span><span class="n">sld_data</span> <span class="o">=</span> <span class="n">sld_data</span>
193        <span class="bp">self</span><span class="o">.</span><span class="n">data_pos_unit</span> <span class="o">=</span> <span class="n">sld_data</span><span class="o">.</span><span class="n">pos_unit</span>
194        <span class="bp">self</span><span class="o">.</span><span class="n">data_x</span> <span class="o">=</span> <span class="n">sld_data</span><span class="o">.</span><span class="n">pos_x</span>
195        <span class="bp">self</span><span class="o">.</span><span class="n">data_y</span> <span class="o">=</span> <span class="n">sld_data</span><span class="o">.</span><span class="n">pos_y</span>
196        <span class="bp">self</span><span class="o">.</span><span class="n">data_z</span> <span class="o">=</span> <span class="n">sld_data</span><span class="o">.</span><span class="n">pos_z</span>
197        <span class="bp">self</span><span class="o">.</span><span class="n">data_sldn</span> <span class="o">=</span> <span class="n">sld_data</span><span class="o">.</span><span class="n">sld_n</span>
198        <span class="bp">self</span><span class="o">.</span><span class="n">data_mx</span> <span class="o">=</span> <span class="n">sld_data</span><span class="o">.</span><span class="n">sld_mx</span>
199        <span class="bp">self</span><span class="o">.</span><span class="n">data_my</span> <span class="o">=</span> <span class="n">sld_data</span><span class="o">.</span><span class="n">sld_my</span>
200        <span class="bp">self</span><span class="o">.</span><span class="n">data_mz</span> <span class="o">=</span> <span class="n">sld_data</span><span class="o">.</span><span class="n">sld_mz</span>
201        <span class="bp">self</span><span class="o">.</span><span class="n">data_vol</span> <span class="o">=</span> <span class="n">sld_data</span><span class="o">.</span><span class="n">vol_pix</span>
202        <span class="bp">self</span><span class="o">.</span><span class="n">data_total_volume</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">sld_data</span><span class="o">.</span><span class="n">vol_pix</span><span class="p">)</span>
203        <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s">&#39;total_volume&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">sld_data</span><span class="o">.</span><span class="n">vol_pix</span><span class="p">)</span>
204        </div>
205<div class="viewcode-block" id="GenSAS.getProfile"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.GenSAS.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>
206        <span class="sd">&quot;&quot;&quot;</span>
207<span class="sd">        Get SLD profile </span>
208<span class="sd">        </span>
209<span class="sd">        : return: sld_data</span>
210<span class="sd">        &quot;&quot;&quot;</span>
211        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_data</span>
212     </div>
213<div class="viewcode-block" id="GenSAS.run"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.GenSAS.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>
214        <span class="sd">&quot;&quot;&quot; </span>
215<span class="sd">        Evaluate the model</span>
216<span class="sd">        :param x: simple value</span>
217<span class="sd">        :return: (I value)</span>
218<span class="sd">        &quot;&quot;&quot;</span>
219        <span class="k">if</span> <span class="n">x</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>
220            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
221                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Not a 1D.&quot;</span>
222                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
223            <span class="n">i_out</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
224            <span class="c"># 1D I is found at y =0 in the 2D pattern</span>
225            <span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_gen</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[],</span> <span class="n">i_out</span> <span class="p">)</span>
226            <span class="k">return</span> <span class="n">out</span>
227        <span class="k">else</span><span class="p">:</span>
228            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Q must be given as list of qx&#39;s and qy&#39;s&quot;</span>
229            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
230   </div>
231<div class="viewcode-block" id="GenSAS.runXY"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.GenSAS.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>
232        <span class="sd">&quot;&quot;&quot; </span>
233<span class="sd">        Evaluate the model</span>
234<span class="sd">        :param x: simple value</span>
235<span class="sd">        :return: I value</span>
236<span class="sd">        :Use this runXY() for the computation</span>
237<span class="sd">        &quot;&quot;&quot;</span>
238        <span class="k">if</span> <span class="n">x</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>
239            <span class="n">i_out</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros_like</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
240            <span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_gen</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">i_out</span><span class="p">)</span>
241            <span class="k">return</span> <span class="n">out</span>
242        <span class="k">else</span><span class="p">:</span>
243            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Q must be given as list of qx&#39;s and qy&#39;s&quot;</span>
244            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
245        </div>
246<div class="viewcode-block" id="GenSAS.evalDistribution"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.GenSAS.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>
247        <span class="sd">&quot;&quot;&quot;</span>
248<span class="sd">        Evaluate a distribution of q-values.</span>
249<span class="sd">        * For 1D, a numpy array is expected as input: evalDistribution(q) where q is a numpy array.</span>
250<span class="sd">        * For 2D, a list of numpy arrays are expected: [qx_prime,qy_prime], where 1D arrays.</span>
251<span class="sd">        :param qdist: ndarray of scalar q-values or list [qx,qy] where qx,qy are 1D ndarrays </span>
252<span class="sd">        &quot;&quot;&quot;</span>
253        <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>
254            <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="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
255                <span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">qdist</span><span class="p">)</span>
256            <span class="k">else</span><span class="p">:</span>
257                <span class="n">out</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">runXY</span><span class="p">(</span><span class="n">qdist</span><span class="p">)</span>
258            <span class="k">return</span> <span class="n">out</span>
259        <span class="k">else</span><span class="p">:</span>
260            <span class="n">mesg</span> <span class="o">=</span> <span class="s">&quot;evalDistribution is expecting an ndarray of &quot;</span>
261            <span class="n">mesg</span> <span class="o">+=</span> <span class="s">&quot;a list [qx,qy] where qx,qy are arrays.&quot;</span>
262            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="n">mesg</span>
263      </div></div>
264<div class="viewcode-block" id="OMF2SLD"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMF2SLD">[docs]</a><span class="k">class</span> <span class="nc">OMF2SLD</span><span class="p">:</span>
265    <span class="sd">&quot;&quot;&quot;</span>
266<span class="sd">    Convert OMFData to MAgData</span>
267<span class="sd">    &quot;&quot;&quot;</span>
268    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> 
269        <span class="sd">&quot;&quot;&quot;</span>
270<span class="sd">        Init</span>
271<span class="sd">        &quot;&quot;&quot;</span>
272        <span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span> <span class="o">=</span> <span class="bp">None</span>
273        <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span> <span class="o">=</span> <span class="bp">None</span>
274        <span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span> <span class="o">=</span> <span class="bp">None</span>
275        <span class="bp">self</span><span class="o">.</span><span class="n">mx</span> <span class="o">=</span> <span class="bp">None</span>
276        <span class="bp">self</span><span class="o">.</span><span class="n">my</span> <span class="o">=</span> <span class="bp">None</span>
277        <span class="bp">self</span><span class="o">.</span><span class="n">mz</span> <span class="o">=</span> <span class="bp">None</span>
278        <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span> <span class="o">=</span> <span class="bp">None</span>
279        <span class="bp">self</span><span class="o">.</span><span class="n">vol_pix</span> <span class="o">=</span> <span class="bp">None</span>
280        <span class="bp">self</span><span class="o">.</span><span class="n">output</span> <span class="o">=</span> <span class="bp">None</span>
281        <span class="bp">self</span><span class="o">.</span><span class="n">omfdata</span> <span class="o">=</span> <span class="bp">None</span>
282   
283<div class="viewcode-block" id="OMF2SLD.set_data"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMF2SLD.set_data">[docs]</a>    <span class="k">def</span> <span class="nf">set_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">omfdata</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="s">&#39;rectangular&#39;</span><span class="p">):</span>
284        <span class="sd">&quot;&quot;&quot;</span>
285<span class="sd">        Set all data</span>
286<span class="sd">        &quot;&quot;&quot;</span>
287        <span class="bp">self</span><span class="o">.</span><span class="n">omfdata</span> <span class="o">=</span> <span class="n">omfdata</span>
288        <span class="n">length</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">omfdata</span><span class="o">.</span><span class="n">xnodes</span> <span class="o">*</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">ynodes</span> <span class="o">*</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">znodes</span><span class="p">)</span>
289        <span class="n">pos_x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">omfdata</span><span class="o">.</span><span class="n">xmin</span><span class="p">,</span> 
290                             <span class="n">omfdata</span><span class="o">.</span><span class="n">xnodes</span><span class="o">*</span><span class="n">omfdata</span><span class="o">.</span><span class="n">xstepsize</span> <span class="o">+</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">xmin</span><span class="p">,</span> 
291                             <span class="n">omfdata</span><span class="o">.</span><span class="n">xstepsize</span><span class="p">)</span>
292        <span class="n">pos_y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">omfdata</span><span class="o">.</span><span class="n">ymin</span><span class="p">,</span> 
293                             <span class="n">omfdata</span><span class="o">.</span><span class="n">ynodes</span><span class="o">*</span><span class="n">omfdata</span><span class="o">.</span><span class="n">ystepsize</span> <span class="o">+</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">ymin</span><span class="p">,</span> 
294                             <span class="n">omfdata</span><span class="o">.</span><span class="n">ystepsize</span><span class="p">)</span>
295        <span class="n">pos_z</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">omfdata</span><span class="o">.</span><span class="n">zmin</span><span class="p">,</span> 
296                             <span class="n">omfdata</span><span class="o">.</span><span class="n">znodes</span><span class="o">*</span><span class="n">omfdata</span><span class="o">.</span><span class="n">zstepsize</span> <span class="o">+</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">zmin</span><span class="p">,</span> 
297                             <span class="n">omfdata</span><span class="o">.</span><span class="n">zstepsize</span><span class="p">)</span>
298        <span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">tile</span><span class="p">(</span><span class="n">pos_x</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">omfdata</span><span class="o">.</span><span class="n">ynodes</span> <span class="o">*</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">znodes</span><span class="p">))</span>
299        <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span> <span class="o">=</span> <span class="n">pos_y</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">omfdata</span><span class="o">.</span><span class="n">xnodes</span><span class="p">))</span>
300        <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">tile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">omfdata</span><span class="o">.</span><span class="n">znodes</span><span class="p">))</span>
301        <span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span> <span class="o">=</span> <span class="n">pos_z</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">omfdata</span><span class="o">.</span><span class="n">xnodes</span> <span class="o">*</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">ynodes</span><span class="p">))</span>
302        <span class="bp">self</span><span class="o">.</span><span class="n">mx</span> <span class="o">=</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">mx</span>
303        <span class="bp">self</span><span class="o">.</span><span class="n">my</span> <span class="o">=</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">my</span>
304        <span class="bp">self</span><span class="o">.</span><span class="n">mz</span> <span class="o">=</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">mz</span>
305        <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
306           
307        <span class="k">if</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">mx</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
308            <span class="bp">self</span><span class="o">.</span><span class="n">mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
309        <span class="k">if</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">my</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
310            <span class="bp">self</span><span class="o">.</span><span class="n">my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
311        <span class="k">if</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">mz</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
312            <span class="bp">self</span><span class="o">.</span><span class="n">mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
313       
314        <span class="bp">self</span><span class="o">.</span><span class="n">_check_data_length</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
315        <span class="bp">self</span><span class="o">.</span><span class="n">remove_null_points</span><span class="p">(</span><span class="bp">False</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
316        <span class="n">mask</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span><span class="p">),</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">bool</span><span class="p">)</span>
317        <span class="k">if</span> <span class="n">shape</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s">&#39;ellipsoid&#39;</span><span class="p">:</span>
318            <span class="k">try</span><span class="p">:</span>
319                <span class="c"># Pixel (step) size included</span>
320                <span class="n">x_c</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">)</span>
321                <span class="n">y_c</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">)</span> <span class="o">+</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">)</span>
322                <span class="n">z_c</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">)</span> <span class="o">+</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">)</span>
323                <span class="n">x_d</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">)</span> <span class="o">-</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">)</span>
324                <span class="n">y_d</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">)</span> <span class="o">-</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">)</span>
325                <span class="n">z_d</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">)</span> <span class="o">-</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">)</span>
326                <span class="n">x_r</span> <span class="o">=</span> <span class="p">(</span><span class="n">x_d</span> <span class="o">+</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">xstepsize</span><span class="p">)</span> <span class="o">/</span> <span class="mf">2.0</span>
327                <span class="n">y_r</span> <span class="o">=</span> <span class="p">(</span><span class="n">y_d</span> <span class="o">+</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">ystepsize</span><span class="p">)</span> <span class="o">/</span> <span class="mf">2.0</span>
328                <span class="n">z_r</span> <span class="o">=</span> <span class="p">(</span><span class="n">z_d</span> <span class="o">+</span> <span class="n">omfdata</span><span class="o">.</span><span class="n">zstepsize</span><span class="p">)</span> <span class="o">/</span> <span class="mf">2.0</span>
329                <span class="n">x_dir2</span> <span class="o">=</span> <span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span> <span class="o">-</span> <span class="n">x_c</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">)</span> <span class="o">/</span> <span class="n">x_r</span><span class="p">)</span>
330                <span class="n">x_dir2</span> <span class="o">*=</span> <span class="n">x_dir2</span>
331                <span class="n">y_dir2</span> <span class="o">=</span> <span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span> <span class="o">-</span> <span class="n">y_c</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">)</span> <span class="o">/</span> <span class="n">y_r</span><span class="p">)</span>
332                <span class="n">y_dir2</span> <span class="o">*=</span> <span class="n">y_dir2</span>
333                <span class="n">z_dir2</span> <span class="o">=</span> <span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span> <span class="o">-</span> <span class="n">z_c</span> <span class="o">/</span> <span class="mf">2.0</span><span class="p">)</span> <span class="o">/</span> <span class="n">z_r</span><span class="p">)</span>
334                <span class="n">z_dir2</span> <span class="o">*=</span> <span class="n">z_dir2</span>
335                <span class="n">mask</span> <span class="o">=</span> <span class="p">(</span><span class="n">x_dir2</span> <span class="o">+</span> <span class="n">y_dir2</span> <span class="o">+</span> <span class="n">z_dir2</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="mf">1.0</span>
336            <span class="k">except</span><span class="p">:</span>
337                <span class="k">pass</span>
338        <span class="bp">self</span><span class="o">.</span><span class="n">output</span> <span class="o">=</span> <span class="n">MagSLD</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">[</span><span class="n">mask</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">[</span><span class="n">mask</span><span class="p">],</span> 
339                             <span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">[</span><span class="n">mask</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span><span class="p">[</span><span class="n">mask</span><span class="p">],</span> 
340                             <span class="bp">self</span><span class="o">.</span><span class="n">mx</span><span class="p">[</span><span class="n">mask</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">my</span><span class="p">[</span><span class="n">mask</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">mz</span><span class="p">[</span><span class="n">mask</span><span class="p">])</span>
341        <span class="bp">self</span><span class="o">.</span><span class="n">output</span><span class="o">.</span><span class="n">set_pix_type</span><span class="p">(</span><span class="s">&#39;pixel&#39;</span><span class="p">)</span>
342        <span class="bp">self</span><span class="o">.</span><span class="n">output</span><span class="o">.</span><span class="n">set_pixel_symbols</span><span class="p">(</span><span class="s">&#39;pixel&#39;</span><span class="p">)</span>
343        </div>
344<div class="viewcode-block" id="OMF2SLD.get_omfdata"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMF2SLD.get_omfdata">[docs]</a>    <span class="k">def</span> <span class="nf">get_omfdata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
345        <span class="sd">&quot;&quot;&quot;</span>
346<span class="sd">        Return all data</span>
347<span class="sd">        &quot;&quot;&quot;</span>
348        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">omfdata</span>
349    </div>
350<div class="viewcode-block" id="OMF2SLD.get_output"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMF2SLD.get_output">[docs]</a>    <span class="k">def</span> <span class="nf">get_output</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
351        <span class="sd">&quot;&quot;&quot;</span>
352<span class="sd">        Return output</span>
353<span class="sd">        &quot;&quot;&quot;</span>
354        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">output</span>
355    </div>
356    <span class="k">def</span> <span class="nf">_check_data_length</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
357        <span class="sd">&quot;&quot;&quot;</span>
358<span class="sd">        Check if the data lengths are consistent</span>
359<span class="sd">        :Params length: data length</span>
360<span class="sd">        &quot;&quot;&quot;</span>
361        <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Error: Inconsistent data length.&quot;</span>
362        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">)</span> <span class="o">!=</span> <span class="n">length</span><span class="p">:</span>
363            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
364        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">)</span> <span class="o">!=</span> <span class="n">length</span><span class="p">:</span>
365            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
366        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">)</span> <span class="o">!=</span> <span class="n">length</span><span class="p">:</span>
367            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
368        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mx</span><span class="p">)</span> <span class="o">!=</span> <span class="n">length</span><span class="p">:</span>
369            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
370        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">my</span><span class="p">)</span> <span class="o">!=</span> <span class="n">length</span><span class="p">:</span>
371            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
372        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mz</span><span class="p">)</span> <span class="o">!=</span> <span class="n">length</span><span class="p">:</span>
373            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
374       
375<div class="viewcode-block" id="OMF2SLD.remove_null_points"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMF2SLD.remove_null_points">[docs]</a>    <span class="k">def</span> <span class="nf">remove_null_points</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">remove</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">recenter</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
376        <span class="sd">&quot;&quot;&quot;</span>
377<span class="sd">        Removes any mx, my, and mz = 0 points</span>
378<span class="sd">        &quot;&quot;&quot;</span>
379        <span class="k">if</span> <span class="n">remove</span><span class="p">:</span>
380            <span class="n">is_nonzero</span> <span class="o">=</span> <span class="p">(</span><span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mx</span><span class="p">)</span> <span class="o">+</span> <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">my</span><span class="p">)</span> <span class="o">+</span> 
381                          <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mz</span><span class="p">))</span><span class="o">.</span><span class="n">nonzero</span><span class="p">()</span> 
382            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">is_nonzero</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> 
383                <span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">[</span><span class="n">is_nonzero</span><span class="p">]</span>
384                <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">[</span><span class="n">is_nonzero</span><span class="p">]</span>
385                <span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">[</span><span class="n">is_nonzero</span><span class="p">]</span>
386                <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span><span class="p">[</span><span class="n">is_nonzero</span><span class="p">]</span>
387                <span class="bp">self</span><span class="o">.</span><span class="n">mx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mx</span><span class="p">[</span><span class="n">is_nonzero</span><span class="p">]</span>
388                <span class="bp">self</span><span class="o">.</span><span class="n">my</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">my</span><span class="p">[</span><span class="n">is_nonzero</span><span class="p">]</span>
389                <span class="bp">self</span><span class="o">.</span><span class="n">mz</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mz</span><span class="p">[</span><span class="n">is_nonzero</span><span class="p">]</span>
390        <span class="k">if</span> <span class="n">recenter</span><span class="p">:</span>
391            <span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span> <span class="o">-=</span> <span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">))</span> <span class="o">/</span> <span class="mf">2.0</span>
392            <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span> <span class="o">-=</span> <span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">)</span> <span class="o">+</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">))</span> <span class="o">/</span> <span class="mf">2.0</span>
393            <span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span> <span class="o">-=</span> <span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">)</span> <span class="o">+</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">))</span> <span class="o">/</span> <span class="mf">2.0</span>
394 </div>
395<div class="viewcode-block" id="OMF2SLD.get_magsld"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMF2SLD.get_magsld">[docs]</a>    <span class="k">def</span> <span class="nf">get_magsld</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
396        <span class="sd">&quot;&quot;&quot;</span>
397<span class="sd">        return MagSLD</span>
398<span class="sd">        &quot;&quot;&quot;</span>
399        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">output</span>
400   
401        </div></div>
402<div class="viewcode-block" id="OMFReader"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMFReader">[docs]</a><span class="k">class</span> <span class="nc">OMFReader</span><span class="p">:</span>
403    <span class="sd">&quot;&quot;&quot;</span>
404<span class="sd">    Class to load omf/ascii files (3 columns w/header).</span>
405<span class="sd">    &quot;&quot;&quot;</span>
406    <span class="c">## File type</span>
407    <span class="n">type_name</span> <span class="o">=</span> <span class="s">&quot;OMF ASCII&quot;</span>
408   
409    <span class="c">## Wildcards</span>
410    <span class="nb">type</span> <span class="o">=</span> <span class="p">[</span><span class="s">&quot;OMF files (*.OMF, *.omf)|*.omf&quot;</span><span class="p">]</span>
411    <span class="c">## List of allowed extensions</span>
412    <span class="n">ext</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;.omf&#39;</span><span class="p">,</span> <span class="s">&#39;.OMF&#39;</span><span class="p">]</span>
413       
414<div class="viewcode-block" id="OMFReader.read"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMFReader.read">[docs]</a>    <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
415        <span class="sd">&quot;&quot;&quot;</span>
416<span class="sd">        Load data file</span>
417<span class="sd">        :param path: file path</span>
418<span class="sd">        :return: x, y, z, sld_n, sld_mx, sld_my, sld_mz</span>
419<span class="sd">        &quot;&quot;&quot;</span>
420        <span class="c">#data_conv_m = None</span>
421        <span class="n">desc</span> <span class="o">=</span> <span class="s">&quot;&quot;</span>
422        <span class="n">mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
423        <span class="n">my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
424        <span class="n">mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
425        <span class="k">try</span><span class="p">:</span>
426            <span class="n">data_conv_val</span> <span class="o">=</span> <span class="bp">None</span>
427            <span class="n">data_conv_mesh</span> <span class="o">=</span> <span class="bp">None</span>
428            <span class="n">input_f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s">&#39;rb&#39;</span><span class="p">)</span>
429            <span class="n">buff</span> <span class="o">=</span> <span class="n">input_f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
430            <span class="n">lines</span> <span class="o">=</span> <span class="n">buff</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
431            <span class="n">input_f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
432            <span class="n">output</span> <span class="o">=</span> <span class="n">OMFData</span><span class="p">()</span>
433            <span class="n">valueunit</span> <span class="o">=</span> <span class="bp">None</span>
434            <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
435                <span class="n">toks</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
436                <span class="c"># Read data</span>
437                <span class="k">try</span><span class="p">:</span>
438                    <span class="n">_mx</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
439                    <span class="n">_my</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
440                    <span class="n">_mz</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
441                    <span class="n">_mx</span> <span class="o">=</span> <span class="n">mag2sld</span><span class="p">(</span><span class="n">_mx</span><span class="p">,</span> <span class="n">valueunit</span><span class="p">)</span>
442                    <span class="n">_my</span> <span class="o">=</span> <span class="n">mag2sld</span><span class="p">(</span><span class="n">_my</span><span class="p">,</span> <span class="n">valueunit</span><span class="p">)</span>
443                    <span class="n">_mz</span> <span class="o">=</span> <span class="n">mag2sld</span><span class="p">(</span><span class="n">_mz</span><span class="p">,</span> <span class="n">valueunit</span><span class="p">)</span>
444                    <span class="n">mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">mx</span><span class="p">,</span> <span class="n">_mx</span><span class="p">)</span>
445                    <span class="n">my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">my</span><span class="p">,</span> <span class="n">_my</span><span class="p">)</span>
446                    <span class="n">mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">mz</span><span class="p">,</span> <span class="n">_mz</span><span class="p">)</span>
447                <span class="k">except</span><span class="p">:</span>
448                    <span class="c"># Skip non-data lines</span>
449                    <span class="k">pass</span>
450                <span class="c">#Reading Header; Segment count ignored</span>
451                <span class="n">s_line</span> <span class="o">=</span> <span class="n">line</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>
452                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;oommf&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
453                    <span class="n">oommf</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
454                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
455                    <span class="n">title</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
456                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;desc&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
457                    <span class="n">desc</span> <span class="o">+=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
458                    <span class="n">desc</span> <span class="o">+=</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span>
459                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;meshtype&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
460                    <span class="n">meshtype</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
461                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;meshunit&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
462                    <span class="n">meshunit</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
463                    <span class="k">if</span> <span class="n">meshunit</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;m&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
464                        <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Error: </span><span class="se">\n</span><span class="s">&quot;</span>
465                        <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;We accept only m as meshunit&quot;</span>
466                        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
467                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;xbase&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
468                    <span class="n">xbase</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
469                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;ybase&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
470                    <span class="n">ybase</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
471                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;zbase&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
472                    <span class="n">zbase</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
473                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;xstepsize&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
474                    <span class="n">xstepsize</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
475                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;ystepsize&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
476                    <span class="n">ystepsize</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
477                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;zstepsize&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
478                    <span class="n">zstepsize</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
479                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;xnodes&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
480                    <span class="n">xnodes</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
481                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;ynodes&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
482                    <span class="n">ynodes</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
483                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;znodes&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
484                    <span class="n">znodes</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
485                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;xmin&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
486                    <span class="n">xmin</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
487                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;ymin&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
488                    <span class="n">ymin</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
489                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;zmin&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
490                    <span class="n">zmin</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
491                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;xmax&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
492                    <span class="n">xmax</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
493                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;ymax&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
494                    <span class="n">ymax</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
495                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;zmax&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
496                    <span class="n">zmax</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
497                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;valueunit&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
498                    <span class="n">valueunit</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span><span class="o">.</span><span class="n">rstrip</span><span class="p">()</span>
499                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;valuemultiplier&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
500                    <span class="n">valuemultiplier</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
501                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;valuerangeminmag&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
502                    <span class="n">valuerangeminmag</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
503                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;valuerangemaxmag&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
504                    <span class="n">valuerangemaxmag</span> <span class="o">=</span> <span class="n">s_line</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lstrip</span><span class="p">()</span>
505                <span class="k">if</span> <span class="n">s_line</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="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&quot;end&quot;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
506                    <span class="c">#output.set_sldms(mx, my, mz)    </span>
507                    <span class="n">output</span><span class="o">.</span><span class="n">filename</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>
508                    <span class="n">output</span><span class="o">.</span><span class="n">oommf</span> <span class="o">=</span> <span class="n">oommf</span>
509                    <span class="n">output</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="n">title</span>
510                    <span class="n">output</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="n">desc</span>
511                    <span class="n">output</span><span class="o">.</span><span class="n">meshtype</span> <span class="o">=</span> <span class="n">meshtype</span>
512                    <span class="n">output</span><span class="o">.</span><span class="n">xbase</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">xbase</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
513                    <span class="n">output</span><span class="o">.</span><span class="n">ybase</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">ybase</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
514                    <span class="n">output</span><span class="o">.</span><span class="n">zbase</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">zbase</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
515                    <span class="n">output</span><span class="o">.</span><span class="n">xstepsize</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">xstepsize</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
516                    <span class="n">output</span><span class="o">.</span><span class="n">ystepsize</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">ystepsize</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
517                    <span class="n">output</span><span class="o">.</span><span class="n">zstepsize</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">zstepsize</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
518                    <span class="n">output</span><span class="o">.</span><span class="n">xnodes</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">xnodes</span><span class="p">)</span>
519                    <span class="n">output</span><span class="o">.</span><span class="n">ynodes</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">ynodes</span><span class="p">)</span>
520                    <span class="n">output</span><span class="o">.</span><span class="n">znodes</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">znodes</span><span class="p">)</span>
521                    <span class="n">output</span><span class="o">.</span><span class="n">xmin</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">xmin</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
522                    <span class="n">output</span><span class="o">.</span><span class="n">ymin</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">ymin</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
523                    <span class="n">output</span><span class="o">.</span><span class="n">zmin</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">zmin</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
524                    <span class="n">output</span><span class="o">.</span><span class="n">xmax</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">xmax</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
525                    <span class="n">output</span><span class="o">.</span><span class="n">ymax</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">ymax</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
526                    <span class="n">output</span><span class="o">.</span><span class="n">zmax</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">zmax</span><span class="p">)</span> <span class="o">*</span> <span class="n">METER2ANG</span>
527                    <span class="n">output</span><span class="o">.</span><span class="n">valuemultiplier</span> <span class="o">=</span> <span class="n">valuemultiplier</span>
528                    <span class="n">output</span><span class="o">.</span><span class="n">valuerangeminmag</span> <span class="o">=</span> <span class="n">mag2sld</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">valuerangeminmag</span><span class="p">),</span> \
529                                                      <span class="n">valueunit</span><span class="p">)</span>
530                    <span class="n">output</span><span class="o">.</span><span class="n">valuerangemaxmag</span> <span class="o">=</span> <span class="n">mag2sld</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">valuerangemaxmag</span><span class="p">),</span> \
531                                                      <span class="n">valueunit</span><span class="p">)</span>
532            <span class="n">output</span><span class="o">.</span><span class="n">set_m</span><span class="p">(</span><span class="n">mx</span><span class="p">,</span> <span class="n">my</span><span class="p">,</span> <span class="n">mz</span><span class="p">)</span>
533            <span class="k">return</span> <span class="n">output</span>
534        <span class="k">except</span><span class="p">:</span>
535            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> is not supported: </span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">path</span>
536            <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot;We accept only Text format OMF file.&quot;</span>
537            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="n">msg</span>
538</div></div>
539<div class="viewcode-block" id="PDBReader"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.PDBReader">[docs]</a><span class="k">class</span> <span class="nc">PDBReader</span><span class="p">:</span>
540    <span class="sd">&quot;&quot;&quot;</span>
541<span class="sd">    PDB reader class: limited for reading the lines starting with &#39;ATOM&#39;</span>
542<span class="sd">    &quot;&quot;&quot;</span>
543    <span class="n">type_name</span> <span class="o">=</span> <span class="s">&quot;PDB&quot;</span>
544    <span class="c">## Wildcards</span>
545    <span class="nb">type</span> <span class="o">=</span> <span class="p">[</span><span class="s">&quot;pdb files (*.PDB, *.pdb)|*.pdb&quot;</span><span class="p">]</span>
546    <span class="c">## List of allowed extensions</span>
547    <span class="n">ext</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;.pdb&#39;</span><span class="p">,</span> <span class="s">&#39;.PDB&#39;</span><span class="p">]</span>   
548   
549<div class="viewcode-block" id="PDBReader.read"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.PDBReader.read">[docs]</a>    <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
550        <span class="sd">&quot;&quot;&quot;</span>
551<span class="sd">        Load data file</span>
552<span class="sd">        </span>
553<span class="sd">        :param path: file path</span>
554<span class="sd">        </span>
555<span class="sd">        :return: MagSLD</span>
556<span class="sd">        </span>
557<span class="sd">        :raise RuntimeError: when the file can&#39;t be opened</span>
558<span class="sd">        &quot;&quot;&quot;</span>
559        <span class="n">pos_x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
560        <span class="n">pos_y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
561        <span class="n">pos_z</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
562        <span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
563        <span class="n">sld_mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
564        <span class="n">sld_my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
565        <span class="n">sld_mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
566        <span class="n">vol_pix</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
567        <span class="n">pix_symbol</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
568        <span class="n">x_line</span> <span class="o">=</span> <span class="p">[]</span>
569        <span class="n">y_line</span> <span class="o">=</span> <span class="p">[]</span>
570        <span class="n">z_line</span> <span class="o">=</span> <span class="p">[]</span>
571        <span class="n">x_lines</span> <span class="o">=</span> <span class="p">[]</span>
572        <span class="n">y_lines</span> <span class="o">=</span> <span class="p">[]</span>
573        <span class="n">z_lines</span> <span class="o">=</span> <span class="p">[]</span>       
574        <span class="k">try</span><span class="p">:</span>
575            <span class="n">input_f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s">&#39;rb&#39;</span><span class="p">)</span>
576            <span class="n">buff</span> <span class="o">=</span> <span class="n">input_f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
577            <span class="n">lines</span> <span class="o">=</span> <span class="n">buff</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
578            <span class="n">input_f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
579            <span class="n">pre_num</span> <span class="o">=</span> <span class="mi">0</span>
580            <span class="n">num</span> <span class="o">=</span> <span class="mi">0</span>
581            <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
582                <span class="k">try</span><span class="p">:</span>
583                    <span class="c"># check if line starts with &quot;ATOM&quot;</span>
584                    <span class="k">if</span> <span class="n">line</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">6</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&#39;ATM&#39;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">or</span> \
585                                <span class="n">line</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">6</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">==</span> <span class="s">&#39;ATOM&#39;</span><span class="p">:</span>
586                        <span class="c"># define fields of interest</span>
587                        <span class="n">atom_id</span> <span class="o">=</span> <span class="n">line</span><span class="p">[</span><span class="mi">6</span><span class="p">:</span><span class="mi">11</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
588                        <span class="n">atom_name</span> <span class="o">=</span> <span class="n">line</span><span class="p">[</span><span class="mi">12</span><span class="p">:</span><span class="mi">16</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
589                        <span class="k">try</span><span class="p">:</span>
590                            <span class="nb">float</span><span class="p">(</span><span class="n">line</span><span class="p">[</span><span class="mi">12</span><span class="p">])</span>
591                            <span class="n">atom_name</span> <span class="o">=</span> <span class="n">atom_name</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
592                        <span class="k">except</span><span class="p">:</span>
593                            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">atom_name</span><span class="p">)</span> <span class="o">==</span> <span class="mi">4</span><span class="p">:</span>
594                                <span class="n">atom_name</span> <span class="o">=</span> <span class="n">atom_name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
595                            <span class="k">elif</span> <span class="n">line</span><span class="p">[</span><span class="mi">12</span><span class="p">]</span> <span class="o">!=</span> <span class="s">&#39; &#39;</span><span class="p">:</span> 
596                                <span class="n">atom_name</span> <span class="o">=</span> <span class="n">atom_name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">+</span> \
597                                        <span class="n">atom_name</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> 
598                            <span class="k">else</span><span class="p">:</span>
599                                <span class="n">atom_name</span> <span class="o">=</span> <span class="n">atom_name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
600                        <span class="c">#res_name = line[17:20].strip()</span>
601                        <span class="c">#chain_name = line[21:22].strip()</span>
602                        <span class="n">_pos_x</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">line</span><span class="p">[</span><span class="mi">30</span><span class="p">:</span><span class="mi">38</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
603                        <span class="n">_pos_y</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">line</span><span class="p">[</span><span class="mi">38</span><span class="p">:</span><span class="mi">46</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
604                        <span class="n">_pos_z</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">line</span><span class="p">[</span><span class="mi">46</span><span class="p">:</span><span class="mi">54</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
605                       
606                        <span class="n">pos_x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pos_x</span><span class="p">,</span> <span class="n">_pos_x</span><span class="p">)</span>
607                        <span class="n">pos_y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pos_y</span><span class="p">,</span> <span class="n">_pos_y</span><span class="p">)</span>
608                        <span class="n">pos_z</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pos_z</span><span class="p">,</span> <span class="n">_pos_z</span><span class="p">)</span>
609                        <span class="k">try</span><span class="p">:</span>
610                            <span class="c"># sld in Ang unit (from fm)</span>
611                            <span class="c">#val = formula(atom_name).atoms.keys()[0].neutron.b_c</span>
612                            <span class="c">#val *= 1.0e-5</span>
613                            <span class="n">val</span> <span class="o">=</span> <span class="n">nsf</span><span class="o">.</span><span class="n">neutron_sld</span><span class="p">(</span><span class="n">atom_name</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
614                            <span class="c"># sld in Ang^-2 unit</span>
615                            <span class="n">val</span> <span class="o">*=</span> <span class="mf">1.0e-6</span>
616                            <span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sld_n</span><span class="p">,</span> <span class="n">val</span><span class="p">)</span>
617                            <span class="n">atom</span> <span class="o">=</span> <span class="n">formula</span><span class="p">(</span><span class="n">atom_name</span><span class="p">)</span>
618                            <span class="c"># cm to A units</span>
619                            <span class="n">vol</span> <span class="o">=</span> <span class="mf">1.0e+24</span> <span class="o">*</span> <span class="n">atom</span><span class="o">.</span><span class="n">mass</span> <span class="o">/</span> <span class="n">atom</span><span class="o">.</span><span class="n">density</span> <span class="o">/</span> <span class="n">NA</span>
620                            <span class="n">vol_pix</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">vol_pix</span><span class="p">,</span> <span class="n">vol</span><span class="p">)</span>
621                        <span class="k">except</span><span class="p">:</span>
622                            <span class="k">print</span> <span class="s">&quot;Error: set the sld of </span><span class="si">%s</span><span class="s"> to zero&quot;</span><span class="o">%</span> <span class="n">atom_name</span>
623                            <span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sld_n</span><span class="p">,</span>  <span class="mf">0.0</span><span class="p">)</span>                     
624                        <span class="n">sld_mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sld_mx</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
625                        <span class="n">sld_my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sld_my</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
626                        <span class="n">sld_mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sld_mz</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
627                        <span class="n">pix_symbol</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pix_symbol</span><span class="p">,</span> <span class="n">atom_name</span><span class="p">)</span>
628                    <span class="k">elif</span> <span class="n">line</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">6</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="s">&#39;CONECT&#39;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="p">:</span>
629                        <span class="n">toks</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
630                        <span class="n">num</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</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="mi">1</span> 
631                        <span class="n">val_list</span> <span class="o">=</span> <span class="p">[]</span> 
632                        <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">toks</span><span class="p">[</span><span class="mi">2</span><span class="p">:]:</span>
633                            <span class="k">try</span><span class="p">:</span>
634                                <span class="n">int_val</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">val</span><span class="p">)</span>
635                            <span class="k">except</span><span class="p">:</span>
636                                <span class="k">break</span>
637                            <span class="k">if</span> <span class="n">int_val</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
638                                <span class="k">break</span>
639                            <span class="n">val_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">int_val</span><span class="p">)</span>
640                        <span class="c">#need val_list ordered      </span>
641                        <span class="k">for</span> <span class="n">val</span> <span class="ow">in</span> <span class="n">val_list</span><span class="p">:</span>
642                            <span class="n">index</span> <span class="o">=</span> <span class="n">val</span> <span class="o">-</span> <span class="mi">1</span>
643                            <span class="k">if</span> <span class="p">(</span><span class="n">pos_x</span><span class="p">[</span><span class="n">index</span><span class="p">],</span> <span class="n">pos_x</span><span class="p">[</span><span class="n">num</span><span class="p">])</span> <span class="ow">in</span> <span class="n">x_line</span> <span class="ow">and</span> \
644                               <span class="p">(</span><span class="n">pos_y</span><span class="p">[</span><span class="n">index</span><span class="p">],</span> <span class="n">pos_y</span><span class="p">[</span><span class="n">num</span><span class="p">])</span> <span class="ow">in</span> <span class="n">y_line</span> <span class="ow">and</span> \
645                               <span class="p">(</span><span class="n">pos_z</span><span class="p">[</span><span class="n">index</span><span class="p">],</span> <span class="n">pos_z</span><span class="p">[</span><span class="n">num</span><span class="p">])</span> <span class="ow">in</span> <span class="n">z_line</span><span class="p">:</span>
646                                <span class="k">continue</span>
647                            <span class="n">x_line</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">pos_x</span><span class="p">[</span><span class="n">num</span><span class="p">],</span> <span class="n">pos_x</span><span class="p">[</span><span class="n">index</span><span class="p">]))</span>
648                            <span class="n">y_line</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">pos_y</span><span class="p">[</span><span class="n">num</span><span class="p">],</span> <span class="n">pos_y</span><span class="p">[</span><span class="n">index</span><span class="p">]))</span>
649                            <span class="n">z_line</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">pos_z</span><span class="p">[</span><span class="n">num</span><span class="p">],</span> <span class="n">pos_z</span><span class="p">[</span><span class="n">index</span><span class="p">]))</span>
650                    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x_line</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
651                        <span class="n">x_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">x_line</span><span class="p">)</span> 
652                        <span class="n">y_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">y_line</span><span class="p">)</span>
653                        <span class="n">z_lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">z_line</span><span class="p">)</span>           
654                <span class="k">except</span><span class="p">:</span>
655                    <span class="k">pass</span>
656            <span class="c">#re-centering</span>
657            <span class="c">#pos_x -= (min(pos_x) + max(pos_x)) / 2.0</span>
658            <span class="c">#pos_y -= (min(pos_y) + max(pos_y)) / 2.0</span>
659            <span class="c">#pos_z -= (min(pos_z) + max(pos_z)) / 2.0</span>
660           
661            <span class="n">output</span> <span class="o">=</span> <span class="n">MagSLD</span><span class="p">(</span><span class="n">pos_x</span><span class="p">,</span> <span class="n">pos_y</span><span class="p">,</span> <span class="n">pos_z</span><span class="p">,</span> <span class="n">sld_n</span><span class="p">,</span> <span class="n">sld_mx</span><span class="p">,</span> <span class="n">sld_my</span><span class="p">,</span> <span class="n">sld_mz</span><span class="p">)</span>
662            <span class="n">output</span><span class="o">.</span><span class="n">set_conect_lines</span><span class="p">(</span><span class="n">x_line</span><span class="p">,</span> <span class="n">y_line</span><span class="p">,</span> <span class="n">z_line</span><span class="p">)</span>
663            <span class="n">output</span><span class="o">.</span><span class="n">filename</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>
664            <span class="n">output</span><span class="o">.</span><span class="n">set_pix_type</span><span class="p">(</span><span class="s">&#39;atom&#39;</span><span class="p">)</span>
665            <span class="n">output</span><span class="o">.</span><span class="n">set_pixel_symbols</span><span class="p">(</span><span class="n">pix_symbol</span><span class="p">)</span>
666            <span class="n">output</span><span class="o">.</span><span class="n">set_nodes</span><span class="p">()</span>
667            <span class="n">output</span><span class="o">.</span><span class="n">set_pixel_volumes</span><span class="p">(</span><span class="n">vol_pix</span><span class="p">)</span>
668            <span class="n">output</span><span class="o">.</span><span class="n">sld_unit</span> <span class="o">=</span> <span class="s">&#39;1/A^(2)&#39;</span>
669            <span class="k">return</span> <span class="n">output</span>
670        <span class="k">except</span><span class="p">:</span>
671            <span class="ne">RuntimeError</span><span class="p">,</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> is not a sld file&quot;</span> <span class="o">%</span> <span class="n">path</span>
672</div>
673<div class="viewcode-block" id="PDBReader.write"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.PDBReader.write">[docs]</a>    <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
674        <span class="sd">&quot;&quot;&quot;</span>
675<span class="sd">        Write</span>
676<span class="sd">        &quot;&quot;&quot;</span>
677        <span class="c">#Not implemented </span>
678        <span class="k">print</span> <span class="s">&quot;Not implemented... &quot;</span>
679</div></div>
680<div class="viewcode-block" id="SLDReader"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.SLDReader">[docs]</a><span class="k">class</span> <span class="nc">SLDReader</span><span class="p">:</span>
681    <span class="sd">&quot;&quot;&quot;</span>
682<span class="sd">    Class to load ascii files (7 columns).</span>
683<span class="sd">    &quot;&quot;&quot;</span>
684    <span class="c">## File type</span>
685    <span class="n">type_name</span> <span class="o">=</span> <span class="s">&quot;SLD ASCII&quot;</span>
686   
687    <span class="c">## Wildcards</span>
688    <span class="nb">type</span> <span class="o">=</span> <span class="p">[</span><span class="s">&quot;sld files (*.SLD, *.sld)|*.sld&quot;</span><span class="p">,</span>
689            <span class="s">&quot;txt files (*.TXT, *.txt)|*.txt&quot;</span><span class="p">,</span>
690            <span class="s">&quot;all files (*.*)|*.*&quot;</span><span class="p">]</span>
691    <span class="c">## List of allowed extensions</span>
692    <span class="n">ext</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;.sld&#39;</span><span class="p">,</span> <span class="s">&#39;.SLD&#39;</span><span class="p">,</span> <span class="s">&#39;.txt&#39;</span><span class="p">,</span> <span class="s">&#39;.TXT&#39;</span><span class="p">,</span> <span class="s">&#39;.*&#39;</span><span class="p">]</span>
693   
694<div class="viewcode-block" id="SLDReader.read"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.SLDReader.read">[docs]</a>    <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
695        <span class="sd">&quot;&quot;&quot;</span>
696<span class="sd">        Load data file</span>
697<span class="sd">        </span>
698<span class="sd">        :param path: file path</span>
699<span class="sd">        </span>
700<span class="sd">        :return MagSLD: x, y, z, sld_n, sld_mx, sld_my, sld_mz</span>
701<span class="sd">        </span>
702<span class="sd">        :raise RuntimeError: when the file can&#39;t be opened</span>
703<span class="sd">        :raise ValueError: when the length of the data vectors are inconsistent</span>
704<span class="sd">        &quot;&quot;&quot;</span>
705        <span class="k">try</span><span class="p">:</span>
706            <span class="n">pos_x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
707            <span class="n">pos_y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
708            <span class="n">pos_z</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
709            <span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
710            <span class="n">sld_mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
711            <span class="n">sld_my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
712            <span class="n">sld_mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
713            <span class="k">try</span><span class="p">:</span>
714                <span class="c"># Use numpy to speed up loading</span>
715                <span class="n">input_f</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">loadtxt</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="s">&#39;float&#39;</span><span class="p">,</span> <span class="n">skiprows</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> 
716                                        <span class="n">ndmin</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">unpack</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
717                <span class="n">pos_x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">input_f</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
718                <span class="n">pos_y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">input_f</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
719                <span class="n">pos_z</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">input_f</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
720                <span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">input_f</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
721                <span class="n">sld_mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">input_f</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
722                <span class="n">sld_my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">input_f</span><span class="p">[</span><span class="mi">5</span><span class="p">])</span>
723                <span class="n">sld_mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">input_f</span><span class="p">[</span><span class="mi">6</span><span class="p">])</span>
724                <span class="n">ncols</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">input_f</span><span class="p">)</span>
725                <span class="k">if</span> <span class="n">ncols</span> <span class="o">==</span> <span class="mi">8</span><span class="p">:</span>
726                    <span class="n">vol_pix</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">input_f</span><span class="p">[</span><span class="mi">7</span><span class="p">])</span>
727                <span class="k">elif</span> <span class="n">ncols</span> <span class="o">==</span> <span class="mi">7</span><span class="p">:</span>
728                     <span class="n">vol_pix</span> <span class="o">=</span> <span class="bp">None</span>
729            <span class="k">except</span><span class="p">:</span>
730                <span class="c"># For older version of numpy</span>
731                <span class="n">input_f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s">&#39;rb&#39;</span><span class="p">)</span>
732                <span class="n">buff</span> <span class="o">=</span> <span class="n">input_f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
733                <span class="n">lines</span> <span class="o">=</span> <span class="n">buff</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
734                <span class="n">input_f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
735                <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
736                    <span class="n">toks</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
737                    <span class="k">try</span><span class="p">:</span>
738                        <span class="n">_pos_x</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
739                        <span class="n">_pos_y</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
740                        <span class="n">_pos_z</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
741                        <span class="n">_sld_n</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
742                        <span class="n">_sld_mx</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
743                        <span class="n">_sld_my</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">5</span><span class="p">])</span>
744                        <span class="n">_sld_mz</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">6</span><span class="p">])</span>
745   
746                        <span class="n">pos_x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pos_x</span><span class="p">,</span> <span class="n">_pos_x</span><span class="p">)</span>
747                        <span class="n">pos_y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pos_y</span><span class="p">,</span> <span class="n">_pos_y</span><span class="p">)</span>
748                        <span class="n">pos_z</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pos_z</span><span class="p">,</span> <span class="n">_pos_z</span><span class="p">)</span>
749                        <span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sld_n</span><span class="p">,</span> <span class="n">_sld_n</span><span class="p">)</span>
750                        <span class="n">sld_mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sld_mx</span><span class="p">,</span> <span class="n">_sld_mx</span><span class="p">)</span>
751                        <span class="n">sld_my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sld_my</span><span class="p">,</span> <span class="n">_sld_my</span><span class="p">)</span>
752                        <span class="n">sld_mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sld_mz</span><span class="p">,</span> <span class="n">_sld_mz</span><span class="p">)</span>
753                        <span class="k">try</span><span class="p">:</span>
754                            <span class="n">_vol_pix</span> <span class="o">=</span>  <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">7</span><span class="p">])</span>
755                            <span class="n">vol_pix</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">vol_pix</span><span class="p">,</span> <span class="n">_vol_pix</span><span class="p">)</span>
756                        <span class="k">except</span><span class="p">:</span>
757                            <span class="n">vol_pix</span> <span class="o">=</span> <span class="bp">None</span>
758                    <span class="k">except</span><span class="p">:</span>
759                        <span class="c"># Skip non-data lines</span>
760                        <span class="k">pass</span>
761           
762            <span class="c"># re-center     </span>
763            <span class="c">#pos_x -= (min(pos_x) + max(pos_x)) / 2.0</span>
764            <span class="c">#pos_y -= (min(pos_y) + max(pos_y)) / 2.0</span>
765            <span class="c">#pos_z -= (min(pos_z) + max(pos_z)) / 2.0</span>
766
767            <span class="n">output</span> <span class="o">=</span> <span class="n">MagSLD</span><span class="p">(</span><span class="n">pos_x</span><span class="p">,</span> <span class="n">pos_y</span><span class="p">,</span> <span class="n">pos_z</span><span class="p">,</span> <span class="n">sld_n</span><span class="p">,</span> 
768                            <span class="n">sld_mx</span><span class="p">,</span> <span class="n">sld_my</span><span class="p">,</span> <span class="n">sld_mz</span><span class="p">)</span>
769
770            <span class="n">output</span><span class="o">.</span><span class="n">filename</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>
771            <span class="n">output</span><span class="o">.</span><span class="n">set_pix_type</span><span class="p">(</span><span class="s">&#39;pixel&#39;</span><span class="p">)</span>
772            <span class="n">output</span><span class="o">.</span><span class="n">set_pixel_symbols</span><span class="p">(</span><span class="s">&#39;pixel&#39;</span><span class="p">)</span>
773            <span class="k">if</span> <span class="n">vol_pix</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
774                <span class="n">output</span><span class="o">.</span><span class="n">set_pixel_volumes</span><span class="p">(</span><span class="n">vol_pix</span><span class="p">)</span>
775            <span class="k">return</span> <span class="n">output</span>
776        <span class="k">except</span><span class="p">:</span>
777            <span class="ne">RuntimeError</span><span class="p">,</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> is not a sld file&quot;</span> <span class="o">%</span> <span class="n">path</span>
778        </div>
779<div class="viewcode-block" id="SLDReader.write"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.SLDReader.write">[docs]</a>    <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
780        <span class="sd">&quot;&quot;&quot;</span>
781<span class="sd">        Write sld file</span>
782<span class="sd">        </span>
783<span class="sd">        :Param path: file path </span>
784<span class="sd">        :Param data: MagSLD data object</span>
785<span class="sd">        &quot;&quot;&quot;</span>
786        <span class="k">if</span> <span class="n">path</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
787            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Missing the file path.&quot;</span>
788        <span class="k">if</span> <span class="n">data</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
789            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="s">&quot;Missing the data to save.&quot;</span>
790       
791        <span class="n">x_val</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">pos_x</span>
792        <span class="n">y_val</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">pos_y</span>
793        <span class="n">z_val</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">pos_z</span>
794        <span class="n">vol_pix</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">vol_pix</span>
795       
796        <span class="n">length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">x_val</span><span class="p">)</span>
797       
798        <span class="n">sld_n</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">sld_n</span>
799        <span class="k">if</span> <span class="n">sld_n</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
800            <span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zerros</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
801           
802        <span class="n">sld_mx</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">sld_mx</span>
803        <span class="k">if</span> <span class="n">sld_mx</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
804            <span class="n">sld_mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zerros</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
805            <span class="n">sld_my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zerros</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
806            <span class="n">sld_mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zerros</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
807        <span class="k">else</span><span class="p">:</span>
808            <span class="n">sld_my</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">sld_my</span>
809            <span class="n">sld_mz</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">sld_mz</span>
810           
811        <span class="n">out</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s">&#39;w&#39;</span><span class="p">)</span>
812        <span class="c"># First Line: Column names</span>
813        <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;X  Y  Z  SLDN SLDMx  SLDMy  SLDMz VOLUMEpix&quot;</span><span class="p">)</span>
814        <span class="k">for</span> <span class="n">ind</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
815            <span class="n">out</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="si">%g</span><span class="s">  </span><span class="si">%g</span><span class="s">  </span><span class="si">%g</span><span class="s">  </span><span class="si">%g</span><span class="s">  </span><span class="si">%g</span><span class="s">  </span><span class="si">%g</span><span class="s">  </span><span class="si">%g</span><span class="s"> </span><span class="si">%g</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">x_val</span><span class="p">[</span><span class="n">ind</span><span class="p">],</span> <span class="n">y_val</span><span class="p">[</span><span class="n">ind</span><span class="p">],</span> 
816                                                    <span class="n">z_val</span><span class="p">[</span><span class="n">ind</span><span class="p">],</span> <span class="n">sld_n</span><span class="p">[</span><span class="n">ind</span><span class="p">],</span> 
817                                                    <span class="n">sld_mx</span><span class="p">[</span><span class="n">ind</span><span class="p">],</span> <span class="n">sld_my</span><span class="p">[</span><span class="n">ind</span><span class="p">],</span> 
818                                                    <span class="n">sld_mz</span><span class="p">[</span><span class="n">ind</span><span class="p">],</span> <span class="n">vol_pix</span><span class="p">[</span><span class="n">ind</span><span class="p">]))</span> 
819        <span class="n">out</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>       
820           
821            </div></div>
822<div class="viewcode-block" id="OMFData"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMFData">[docs]</a><span class="k">class</span> <span class="nc">OMFData</span><span class="p">:</span>
823    <span class="sd">&quot;&quot;&quot;</span>
824<span class="sd">    OMF Data.</span>
825<span class="sd">    &quot;&quot;&quot;</span>
826    <span class="n">_meshunit</span> <span class="o">=</span> <span class="s">&quot;A&quot;</span>
827    <span class="n">_valueunit</span> <span class="o">=</span> <span class="s">&quot;A^(-2)&quot;</span>
828    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
829        <span class="sd">&quot;&quot;&quot;</span>
830<span class="sd">        Init for mag SLD</span>
831<span class="sd">        &quot;&quot;&quot;</span>
832        <span class="bp">self</span><span class="o">.</span><span class="n">filename</span> <span class="o">=</span> <span class="s">&#39;default&#39;</span>
833        <span class="bp">self</span><span class="o">.</span><span class="n">oommf</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
834        <span class="bp">self</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
835        <span class="bp">self</span><span class="o">.</span><span class="n">desc</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
836        <span class="bp">self</span><span class="o">.</span><span class="n">meshtype</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
837        <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meshunit</span>
838        <span class="bp">self</span><span class="o">.</span><span class="n">valueunit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_valueunit</span>
839        <span class="bp">self</span><span class="o">.</span><span class="n">xbase</span> <span class="o">=</span> <span class="mf">0.0</span>
840        <span class="bp">self</span><span class="o">.</span><span class="n">ybase</span> <span class="o">=</span> <span class="mf">0.0</span>
841        <span class="bp">self</span><span class="o">.</span><span class="n">zbase</span> <span class="o">=</span> <span class="mf">0.0</span>
842        <span class="bp">self</span><span class="o">.</span><span class="n">xstepsize</span> <span class="o">=</span> <span class="mf">6.0</span>
843        <span class="bp">self</span><span class="o">.</span><span class="n">ystepsize</span> <span class="o">=</span> <span class="mf">6.0</span>
844        <span class="bp">self</span><span class="o">.</span><span class="n">zstepsize</span> <span class="o">=</span> <span class="mf">6.0</span>
845        <span class="bp">self</span><span class="o">.</span><span class="n">xnodes</span> <span class="o">=</span> <span class="mf">10.0</span>
846        <span class="bp">self</span><span class="o">.</span><span class="n">ynodes</span> <span class="o">=</span> <span class="mf">10.0</span>
847        <span class="bp">self</span><span class="o">.</span><span class="n">znodes</span> <span class="o">=</span> <span class="mf">10.0</span>
848        <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span> <span class="o">=</span> <span class="mf">0.0</span>
849        <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span> <span class="o">=</span> <span class="mf">0.0</span>
850        <span class="bp">self</span><span class="o">.</span><span class="n">zmin</span> <span class="o">=</span> <span class="mf">0.0</span>
851        <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span> <span class="o">=</span> <span class="mf">60.0</span>
852        <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span> <span class="o">=</span> <span class="mf">60.0</span>
853        <span class="bp">self</span><span class="o">.</span><span class="n">zmax</span> <span class="o">=</span> <span class="mf">60.0</span>
854        <span class="bp">self</span><span class="o">.</span><span class="n">mx</span> <span class="o">=</span> <span class="bp">None</span>
855        <span class="bp">self</span><span class="o">.</span><span class="n">my</span> <span class="o">=</span> <span class="bp">None</span>
856        <span class="bp">self</span><span class="o">.</span><span class="n">mz</span> <span class="o">=</span> <span class="bp">None</span>
857        <span class="bp">self</span><span class="o">.</span><span class="n">valuemultiplier</span> <span class="o">=</span> <span class="mf">1.</span>
858        <span class="bp">self</span><span class="o">.</span><span class="n">valuerangeminmag</span> <span class="o">=</span> <span class="mi">0</span>
859        <span class="bp">self</span><span class="o">.</span><span class="n">valuerangemaxmag</span> <span class="o">=</span> <span class="mi">0</span>
860       
861    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
862        <span class="sd">&quot;&quot;&quot;</span>
863<span class="sd">        doc strings</span>
864<span class="sd">        &quot;&quot;&quot;</span>
865        <span class="n">_str</span> <span class="o">=</span>  <span class="s">&quot;Type:            </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span>
866        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;File:            </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">filename</span>
867        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;OOMMF:           </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">oommf</span>
868        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;Title:           </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span>
869        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;Desc:            </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">desc</span>
870        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;meshtype:        </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshtype</span>
871        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;meshunit:        </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
872        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;xbase:           </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xbase</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
873        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;ybase:           </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ybase</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
874        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;zbase:           </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">zbase</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
875        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;xstepsize:       </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xstepsize</span><span class="p">),</span> 
876                                                <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
877        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;ystepsize:       </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ystepsize</span><span class="p">),</span> 
878                                                <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
879        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;zstepsize:       </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">zstepsize</span><span class="p">),</span> 
880                                                <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
881        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;xnodes:          </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xnodes</span><span class="p">)</span>
882        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;ynodes:          </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ynodes</span><span class="p">)</span>
883        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;znodes:          </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">znodes</span><span class="p">)</span>
884        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;xmin:            </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xmin</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
885        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;ymin:            </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ymin</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
886        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;zmin:            </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">zmin</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
887        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;xmax:            </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">xmax</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
888        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;ymax:            </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ymax</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
889        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;zmax:            </span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">zmax</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">meshunit</span><span class="p">)</span>
890        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;valueunit:       </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">valueunit</span>
891        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;valuemultiplier: </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">valuemultiplier</span><span class="p">)</span>
892        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;ValueRangeMinMag:</span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">valuerangeminmag</span><span class="p">),</span> 
893                                                 <span class="bp">self</span><span class="o">.</span><span class="n">valueunit</span><span class="p">)</span>
894        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;ValueRangeMaxMag:</span><span class="si">%s</span><span class="s"> [</span><span class="si">%s</span><span class="s">]</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">valuerangemaxmag</span><span class="p">),</span> 
895                                                 <span class="bp">self</span><span class="o">.</span><span class="n">valueunit</span><span class="p">)</span>
896        <span class="k">return</span> <span class="n">_str</span>
897   
898<div class="viewcode-block" id="OMFData.set_m"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.OMFData.set_m">[docs]</a>    <span class="k">def</span> <span class="nf">set_m</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mx</span><span class="p">,</span> <span class="n">my</span><span class="p">,</span> <span class="n">mz</span><span class="p">):</span>
899        <span class="sd">&quot;&quot;&quot;</span>
900<span class="sd">        Set the Mx, My, Mz values</span>
901<span class="sd">        &quot;&quot;&quot;</span>
902        <span class="bp">self</span><span class="o">.</span><span class="n">mx</span> <span class="o">=</span> <span class="n">mx</span>
903        <span class="bp">self</span><span class="o">.</span><span class="n">my</span> <span class="o">=</span> <span class="n">my</span>
904        <span class="bp">self</span><span class="o">.</span><span class="n">mz</span> <span class="o">=</span> <span class="n">mz</span>
905               </div></div>
906<div class="viewcode-block" id="MagSLD"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD">[docs]</a><span class="k">class</span> <span class="nc">MagSLD</span><span class="p">:</span>
907    <span class="sd">&quot;&quot;&quot;</span>
908<span class="sd">    Magnetic SLD.</span>
909<span class="sd">    &quot;&quot;&quot;</span>
910    <span class="n">pos_x</span> <span class="o">=</span> <span class="bp">None</span>
911    <span class="n">pos_y</span> <span class="o">=</span> <span class="bp">None</span>
912    <span class="n">pos_z</span> <span class="o">=</span> <span class="bp">None</span>
913    <span class="n">sld_n</span> <span class="o">=</span> <span class="bp">None</span>
914    <span class="n">sld_mx</span> <span class="o">=</span> <span class="bp">None</span>
915    <span class="n">sld_my</span> <span class="o">=</span> <span class="bp">None</span>
916    <span class="n">sld_mz</span> <span class="o">=</span> <span class="bp">None</span>
917    <span class="c"># Units</span>
918    <span class="n">_pos_unit</span> <span class="o">=</span> <span class="s">&#39;A&#39;</span>
919    <span class="n">_sld_unit</span> <span class="o">=</span> <span class="s">&#39;1/A^(2)&#39;</span>
920    <span class="n">_pix_type</span> <span class="o">=</span> <span class="s">&#39;pixel&#39;</span>
921   
922    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pos_x</span><span class="p">,</span> <span class="n">pos_y</span><span class="p">,</span> <span class="n">pos_z</span><span class="p">,</span> <span class="n">sld_n</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> 
923                 <span class="n">sld_mx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">sld_my</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">sld_mz</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">vol_pix</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
924        <span class="sd">&quot;&quot;&quot;</span>
925<span class="sd">        Init for mag SLD</span>
926<span class="sd">        :params : All should be numpy 1D array</span>
927<span class="sd">        &quot;&quot;&quot;</span>
928        <span class="bp">self</span><span class="o">.</span><span class="n">is_data</span> <span class="o">=</span> <span class="bp">True</span>
929        <span class="bp">self</span><span class="o">.</span><span class="n">filename</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
930        <span class="bp">self</span><span class="o">.</span><span class="n">xstepsize</span> <span class="o">=</span> <span class="mf">6.0</span>
931        <span class="bp">self</span><span class="o">.</span><span class="n">ystepsize</span> <span class="o">=</span> <span class="mf">6.0</span>
932        <span class="bp">self</span><span class="o">.</span><span class="n">zstepsize</span> <span class="o">=</span> <span class="mf">6.0</span>
933        <span class="bp">self</span><span class="o">.</span><span class="n">xnodes</span> <span class="o">=</span> <span class="mf">10.0</span>
934        <span class="bp">self</span><span class="o">.</span><span class="n">ynodes</span> <span class="o">=</span> <span class="mf">10.0</span>
935        <span class="bp">self</span><span class="o">.</span><span class="n">znodes</span> <span class="o">=</span> <span class="mf">10.0</span>
936        <span class="bp">self</span><span class="o">.</span><span class="n">has_stepsize</span> <span class="o">=</span> <span class="bp">False</span>
937        <span class="bp">self</span><span class="o">.</span><span class="n">has_conect</span> <span class="o">=</span> <span class="bp">False</span>
938        <span class="bp">self</span><span class="o">.</span><span class="n">pos_unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_pos_unit</span>
939        <span class="bp">self</span><span class="o">.</span><span class="n">sld_unit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sld_unit</span>
940        <span class="bp">self</span><span class="o">.</span><span class="n">pix_type</span> <span class="o">=</span> <span class="s">&#39;pixel&#39;</span>
941        <span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span> <span class="o">=</span> <span class="n">pos_x</span>
942        <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span> <span class="o">=</span> <span class="n">pos_y</span>
943        <span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span> <span class="o">=</span> <span class="n">pos_z</span>
944        <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span> <span class="o">=</span> <span class="n">sld_n</span>
945        <span class="bp">self</span><span class="o">.</span><span class="n">line_x</span> <span class="o">=</span> <span class="bp">None</span>
946        <span class="bp">self</span><span class="o">.</span><span class="n">line_y</span> <span class="o">=</span> <span class="bp">None</span>
947        <span class="bp">self</span><span class="o">.</span><span class="n">line_z</span> <span class="o">=</span> <span class="bp">None</span>
948        <span class="bp">self</span><span class="o">.</span><span class="n">sld_mx</span> <span class="o">=</span> <span class="n">sld_mx</span>
949        <span class="bp">self</span><span class="o">.</span><span class="n">sld_my</span> <span class="o">=</span> <span class="n">sld_my</span>
950        <span class="bp">self</span><span class="o">.</span><span class="n">sld_mz</span> <span class="o">=</span> <span class="n">sld_mz</span>
951        <span class="bp">self</span><span class="o">.</span><span class="n">vol_pix</span> <span class="o">=</span> <span class="n">vol_pix</span>
952        <span class="bp">self</span><span class="o">.</span><span class="n">sld_m</span> <span class="o">=</span> <span class="bp">None</span>
953        <span class="bp">self</span><span class="o">.</span><span class="n">sld_phi</span> <span class="o">=</span> <span class="bp">None</span>
954        <span class="bp">self</span><span class="o">.</span><span class="n">sld_theta</span> <span class="o">=</span> <span class="bp">None</span>
955        <span class="bp">self</span><span class="o">.</span><span class="n">pix_symbol</span> <span class="o">=</span> <span class="bp">None</span>
956        <span class="k">if</span> <span class="n">sld_mx</span> <span class="o">!=</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">sld_my</span> <span class="o">!=</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">sld_mz</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
957            <span class="bp">self</span><span class="o">.</span><span class="n">set_sldms</span><span class="p">(</span><span class="n">sld_mx</span><span class="p">,</span> <span class="n">sld_my</span><span class="p">,</span> <span class="n">sld_mz</span><span class="p">)</span>
958        <span class="bp">self</span><span class="o">.</span><span class="n">set_nodes</span><span class="p">()</span>
959                   
960    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
961        <span class="sd">&quot;&quot;&quot;</span>
962<span class="sd">        doc strings</span>
963<span class="sd">        &quot;&quot;&quot;</span>
964        <span class="n">_str</span> <span class="o">=</span>  <span class="s">&quot;Type:       </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span>
965        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;File:       </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">filename</span>
966        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;Axis_unit:  </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_unit</span>
967        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;SLD_unit:   </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_unit</span>
968        <span class="k">return</span> <span class="n">_str</span>
969   
970<div class="viewcode-block" id="MagSLD.set_pix_type"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.set_pix_type">[docs]</a>    <span class="k">def</span> <span class="nf">set_pix_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pix_type</span><span class="p">):</span>
971        <span class="sd">&quot;&quot;&quot;</span>
972<span class="sd">        Set pixel type</span>
973<span class="sd">        :Param pix_type: string, &#39;pixel&#39; or &#39;atom&#39;</span>
974<span class="sd">        &quot;&quot;&quot;</span>
975        <span class="bp">self</span><span class="o">.</span><span class="n">pix_type</span> <span class="o">=</span> <span class="n">pix_type</span>
976        </div>
977<div class="viewcode-block" id="MagSLD.set_sldn"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.set_sldn">[docs]</a>    <span class="k">def</span> <span class="nf">set_sldn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sld_n</span><span class="p">):</span>
978        <span class="sd">&quot;&quot;&quot;</span>
979<span class="sd">        Sets neutron SLD</span>
980<span class="sd">        &quot;&quot;&quot;</span>
981        <span class="k">if</span> <span class="n">sld_n</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;float&#39;</span><span class="p">:</span>
982            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_data</span><span class="p">:</span>
983                <span class="c"># For data, put the value to only the pixels w non-zero M </span>
984                <span class="n">is_nonzero</span> <span class="o">=</span> <span class="p">(</span><span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sld_mx</span><span class="p">)</span> <span class="o">+</span> 
985                                  <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sld_my</span><span class="p">)</span> <span class="o">+</span> 
986                                  <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sld_mz</span><span class="p">))</span><span class="o">.</span><span class="n">nonzero</span><span class="p">()</span> 
987                <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">))</span>
988                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span><span class="p">[</span><span class="n">is_nonzero</span><span class="p">])</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
989                    <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span><span class="p">[</span><span class="n">is_nonzero</span><span class="p">]</span> <span class="o">=</span> <span class="n">sld_n</span>
990                <span class="k">else</span><span class="p">:</span>
991                    <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">sld_n</span><span class="p">)</span>
992            <span class="k">else</span><span class="p">:</span>
993                <span class="c"># For non-data, put the value to all the pixels</span>
994                <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">))</span> <span class="o">*</span> <span class="n">sld_n</span>
995        <span class="k">else</span><span class="p">:</span>
996            <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span> <span class="o">=</span> <span class="n">sld_n</span>
997           </div>
998<div class="viewcode-block" id="MagSLD.set_sldms"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.set_sldms">[docs]</a>    <span class="k">def</span> <span class="nf">set_sldms</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sld_mx</span><span class="p">,</span> <span class="n">sld_my</span><span class="p">,</span> <span class="n">sld_mz</span><span class="p">):</span>
999        <span class="sd">&quot;&quot;&quot;</span>
1000<span class="sd">        Sets (\|m\|, m_theta, m_phi)</span>
1001<span class="sd">        &quot;&quot;&quot;</span>
1002        <span class="k">if</span> <span class="n">sld_mx</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;float&#39;</span><span class="p">:</span>
1003            <span class="bp">self</span><span class="o">.</span><span class="n">sld_mx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">))</span> <span class="o">*</span> <span class="n">sld_mx</span>
1004        <span class="k">else</span><span class="p">:</span>
1005            <span class="bp">self</span><span class="o">.</span><span class="n">sld_mx</span> <span class="o">=</span> <span class="n">sld_mx</span>
1006        <span class="k">if</span> <span class="n">sld_my</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;float&#39;</span><span class="p">:</span>
1007            <span class="bp">self</span><span class="o">.</span><span class="n">sld_my</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">))</span> <span class="o">*</span> <span class="n">sld_my</span>
1008        <span class="k">else</span><span class="p">:</span>
1009            <span class="bp">self</span><span class="o">.</span><span class="n">sld_my</span> <span class="o">=</span> <span class="n">sld_my</span>
1010        <span class="k">if</span> <span class="n">sld_mz</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;float&#39;</span><span class="p">:</span>
1011            <span class="bp">self</span><span class="o">.</span><span class="n">sld_mz</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">))</span> <span class="o">*</span> <span class="n">sld_mz</span>
1012        <span class="k">else</span><span class="p">:</span>
1013            <span class="bp">self</span><span class="o">.</span><span class="n">sld_mz</span> <span class="o">=</span> <span class="n">sld_mz</span>
1014
1015        <span class="n">sld_m</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">sld_mx</span> <span class="o">*</span> <span class="n">sld_mx</span> <span class="o">+</span> <span class="n">sld_my</span> <span class="o">*</span> <span class="n">sld_my</span> <span class="o">+</span> \
1016                                <span class="n">sld_mz</span> <span class="o">*</span> <span class="n">sld_mz</span><span class="p">)</span> 
1017        <span class="bp">self</span><span class="o">.</span><span class="n">sld_m</span> <span class="o">=</span> <span class="n">sld_m</span>
1018    </div>
1019<div class="viewcode-block" id="MagSLD.set_pixel_symbols"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.set_pixel_symbols">[docs]</a>    <span class="k">def</span> <span class="nf">set_pixel_symbols</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="s">&#39;pixel&#39;</span><span class="p">):</span> 
1020        <span class="sd">&quot;&quot;&quot;</span>
1021<span class="sd">        Set pixel</span>
1022<span class="sd">        :Params pixel: str; pixel or atomic symbol, or array of strings</span>
1023<span class="sd">        &quot;&quot;&quot;</span>
1024        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
1025            <span class="k">return</span>
1026        <span class="k">if</span> <span class="n">symbol</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;str&#39;</span><span class="p">:</span>
1027            <span class="bp">self</span><span class="o">.</span><span class="n">pix_symbol</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">symbol</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span><span class="p">))</span>
1028        <span class="k">else</span><span class="p">:</span>
1029            <span class="bp">self</span><span class="o">.</span><span class="n">pix_symbol</span> <span class="o">=</span> <span class="n">symbol</span>
1030            </div>
1031<div class="viewcode-block" id="MagSLD.set_pixel_volumes"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.set_pixel_volumes">[docs]</a>    <span class="k">def</span> <span class="nf">set_pixel_volumes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">vol</span><span class="p">):</span> 
1032        <span class="sd">&quot;&quot;&quot;</span>
1033<span class="sd">        Set pixel volumes</span>
1034<span class="sd">        :Params pixel: str; pixel or atomic symbol, or array of strings</span>
1035<span class="sd">        &quot;&quot;&quot;</span>
1036        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
1037            <span class="k">return</span>
1038        <span class="k">if</span> <span class="n">vol</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>
1039            <span class="bp">self</span><span class="o">.</span><span class="n">vol_pix</span> <span class="o">=</span> <span class="n">vol</span>
1040        <span class="k">elif</span> <span class="n">vol</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="n">count</span><span class="p">(</span><span class="s">&#39;float&#39;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
1041            <span class="bp">self</span><span class="o">.</span><span class="n">vol_pix</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">repeat</span><span class="p">(</span><span class="n">vol</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span><span class="p">))</span>
1042        <span class="k">else</span><span class="p">:</span>
1043            <span class="bp">self</span><span class="o">.</span><span class="n">vol_pix</span> <span class="o">=</span> <span class="bp">None</span>
1044</div>
1045<div class="viewcode-block" id="MagSLD.get_sldn"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.get_sldn">[docs]</a>    <span class="k">def</span> <span class="nf">get_sldn</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1046        <span class="sd">&quot;&quot;&quot;</span>
1047<span class="sd">        Returns nuclear sld</span>
1048<span class="sd">        &quot;&quot;&quot;</span>
1049        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_n</span>
1050    </div>
1051<div class="viewcode-block" id="MagSLD.get_sld_mxyz"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.get_sld_mxyz">[docs]</a>    <span class="k">def</span> <span class="nf">get_sld_mxyz</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1052        <span class="sd">&quot;&quot;&quot;</span>
1053<span class="sd">        Returns (sld_mx, sldmy, sld_mz)</span>
1054<span class="sd">        &quot;&quot;&quot;</span>
1055        <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sld_mx</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sldmy</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_mz</span><span class="p">)</span>
1056    </div>
1057<div class="viewcode-block" id="MagSLD.get_sld_m"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.get_sld_m">[docs]</a>    <span class="k">def</span> <span class="nf">get_sld_m</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1058        <span class="sd">&quot;&quot;&quot;</span>
1059<span class="sd">        Returns (sldm, sld_theta, sld_phi)</span>
1060<span class="sd">        &quot;&quot;&quot;</span>
1061        <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sldm</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_theta</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sld_phi</span><span class="p">)</span>
1062    </div>
1063<div class="viewcode-block" id="MagSLD.set_nodes"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.set_nodes">[docs]</a>    <span class="k">def</span> <span class="nf">set_nodes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1064        <span class="sd">&quot;&quot;&quot;</span>
1065<span class="sd">        Set xnodes, ynodes, and znodes</span>
1066<span class="sd">        &quot;&quot;&quot;</span>
1067        <span class="bp">self</span><span class="o">.</span><span class="n">set_stepsize</span><span class="p">()</span>
1068        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pix_type</span> <span class="o">==</span> <span class="s">&#39;pixel&#39;</span><span class="p">:</span>
1069            <span class="k">try</span><span class="p">:</span>
1070                <span class="n">xdist</span> <span class="o">=</span> <span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">)</span> <span class="o">-</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">))</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">xstepsize</span>
1071                <span class="n">ydist</span> <span class="o">=</span> <span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">)</span> <span class="o">-</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">))</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">ystepsize</span>
1072                <span class="n">zdist</span> <span class="o">=</span> <span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">)</span> <span class="o">-</span> <span class="nb">min</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">))</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">zstepsize</span>
1073                <span class="bp">self</span><span class="o">.</span><span class="n">xnodes</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">xdist</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
1074                <span class="bp">self</span><span class="o">.</span><span class="n">ynodes</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">ydist</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
1075                <span class="bp">self</span><span class="o">.</span><span class="n">znodes</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">zdist</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
1076            <span class="k">except</span><span class="p">:</span>
1077                <span class="bp">self</span><span class="o">.</span><span class="n">xnodes</span> <span class="o">=</span> <span class="bp">None</span>
1078                <span class="bp">self</span><span class="o">.</span><span class="n">ynodes</span> <span class="o">=</span> <span class="bp">None</span>
1079                <span class="bp">self</span><span class="o">.</span><span class="n">znodes</span> <span class="o">=</span> <span class="bp">None</span>
1080        <span class="k">else</span><span class="p">:</span>
1081            <span class="bp">self</span><span class="o">.</span><span class="n">xnodes</span> <span class="o">=</span> <span class="bp">None</span>
1082            <span class="bp">self</span><span class="o">.</span><span class="n">ynodes</span> <span class="o">=</span> <span class="bp">None</span>
1083            <span class="bp">self</span><span class="o">.</span><span class="n">znodes</span> <span class="o">=</span> <span class="bp">None</span>
1084      </div>
1085<div class="viewcode-block" id="MagSLD.set_stepsize"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.set_stepsize">[docs]</a>    <span class="k">def</span> <span class="nf">set_stepsize</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1086        <span class="sd">&quot;&quot;&quot;</span>
1087<span class="sd">        Set xtepsize, ystepsize, and zstepsize</span>
1088<span class="sd">        &quot;&quot;&quot;</span>
1089        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pix_type</span> <span class="o">==</span> <span class="s">&#39;pixel&#39;</span><span class="p">:</span>
1090            <span class="k">try</span><span class="p">:</span>
1091                <span class="n">xpos_pre</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
1092                <span class="n">ypos_pre</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
1093                <span class="n">zpos_pre</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
1094                <span class="k">for</span> <span class="n">x_pos</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">:</span>
1095                    <span class="k">if</span> <span class="n">xpos_pre</span> <span class="o">!=</span> <span class="n">x_pos</span><span class="p">:</span>
1096                        <span class="bp">self</span><span class="o">.</span><span class="n">xstepsize</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">x_pos</span> <span class="o">-</span> <span class="n">xpos_pre</span><span class="p">)</span>
1097                        <span class="k">break</span>
1098                <span class="k">for</span> <span class="n">y_pos</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_y</span><span class="p">:</span>
1099                    <span class="k">if</span> <span class="n">ypos_pre</span> <span class="o">!=</span> <span class="n">y_pos</span><span class="p">:</span>
1100                        <span class="bp">self</span><span class="o">.</span><span class="n">ystepsize</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">y_pos</span> <span class="o">-</span> <span class="n">ypos_pre</span><span class="p">)</span>
1101                        <span class="k">break</span>
1102                <span class="k">for</span> <span class="n">z_pos</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pos_z</span><span class="p">:</span>
1103                    <span class="k">if</span> <span class="n">zpos_pre</span> <span class="o">!=</span> <span class="n">z_pos</span><span class="p">:</span>
1104                        <span class="bp">self</span><span class="o">.</span><span class="n">zstepsize</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">z_pos</span> <span class="o">-</span> <span class="n">zpos_pre</span><span class="p">)</span>
1105                        <span class="k">break</span>
1106                <span class="c">#default pix volume</span>
1107                <span class="bp">self</span><span class="o">.</span><span class="n">vol_pix</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos_x</span><span class="p">))</span>
1108                <span class="n">vol</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xstepsize</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">ystepsize</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">zstepsize</span>
1109                <span class="bp">self</span><span class="o">.</span><span class="n">set_pixel_volumes</span><span class="p">(</span><span class="n">vol</span><span class="p">)</span>
1110                <span class="bp">self</span><span class="o">.</span><span class="n">has_stepsize</span> <span class="o">=</span> <span class="bp">True</span>
1111            <span class="k">except</span><span class="p">:</span>
1112                <span class="bp">self</span><span class="o">.</span><span class="n">xstepsize</span> <span class="o">=</span> <span class="bp">None</span>
1113                <span class="bp">self</span><span class="o">.</span><span class="n">ystepsize</span> <span class="o">=</span> <span class="bp">None</span>
1114                <span class="bp">self</span><span class="o">.</span><span class="n">zstepsize</span> <span class="o">=</span> <span class="bp">None</span>
1115                <span class="bp">self</span><span class="o">.</span><span class="n">vol_pix</span> <span class="o">=</span> <span class="bp">None</span>
1116                <span class="bp">self</span><span class="o">.</span><span class="n">has_stepsize</span> <span class="o">=</span> <span class="bp">False</span>
1117        <span class="k">else</span><span class="p">:</span>
1118            <span class="bp">self</span><span class="o">.</span><span class="n">xstepsize</span> <span class="o">=</span> <span class="bp">None</span>
1119            <span class="bp">self</span><span class="o">.</span><span class="n">ystepsize</span> <span class="o">=</span> <span class="bp">None</span>
1120            <span class="bp">self</span><span class="o">.</span><span class="n">zstepsize</span> <span class="o">=</span> <span class="bp">None</span>
1121            <span class="bp">self</span><span class="o">.</span><span class="n">has_stepsize</span> <span class="o">=</span> <span class="bp">True</span>
1122        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">xstepsize</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ystepsize</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">zstepsize</span>
1123</div>
1124<div class="viewcode-block" id="MagSLD.set_conect_lines"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.MagSLD.set_conect_lines">[docs]</a>    <span class="k">def</span> <span class="nf">set_conect_lines</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">line_x</span><span class="p">,</span> <span class="n">line_y</span><span class="p">,</span> <span class="n">line_z</span><span class="p">):</span>
1125        <span class="sd">&quot;&quot;&quot;</span>
1126<span class="sd">        Set bonding line data if taken from pdb</span>
1127<span class="sd">        &quot;&quot;&quot;</span>
1128        <span class="k">if</span> <span class="n">line_x</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="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">line_x</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
1129            <span class="k">return</span>
1130        <span class="k">if</span> <span class="n">line_y</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="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">line_y</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
1131            <span class="k">return</span>
1132        <span class="k">if</span> <span class="n">line_z</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="ow">or</span> <span class="nb">len</span><span class="p">(</span><span class="n">line_z</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
1133            <span class="k">return</span>
1134        <span class="bp">self</span><span class="o">.</span><span class="n">has_conect</span> <span class="o">=</span> <span class="bp">True</span>
1135        <span class="bp">self</span><span class="o">.</span><span class="n">line_x</span> <span class="o">=</span> <span class="n">line_x</span> 
1136        <span class="bp">self</span><span class="o">.</span><span class="n">line_y</span> <span class="o">=</span> <span class="n">line_y</span> 
1137        <span class="bp">self</span><span class="o">.</span><span class="n">line_z</span> <span class="o">=</span> <span class="n">line_z</span>
1138       
1139</div></div>
1140<div class="viewcode-block" id="test_load"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.test_load">[docs]</a><span class="k">def</span> <span class="nf">test_load</span><span class="p">():</span>
1141    <span class="kn">from</span> <span class="nn">sas.plottools.arrow3d</span> <span class="kn">import</span> <span class="n">Arrow3D</span>
1142    <span class="kn">import</span> <span class="nn">os</span>
1143    <span class="nb">dir</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">abspath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">curdir</span><span class="p">)</span>
1144    <span class="k">print</span> <span class="nb">dir</span>
1145    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">):</span>
1146        <span class="nb">dir</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">split</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span>
1147        <span class="n">tfile</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">join</span><span class="p">(</span><span class="nb">dir</span><span class="p">,</span> <span class="s">&quot;test&quot;</span><span class="p">,</span> <span class="s">&quot;CoreXY_ShellZ.txt&quot;</span><span class="p">)</span>
1148        <span class="n">ofile</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">join</span><span class="p">(</span><span class="nb">dir</span><span class="p">,</span> <span class="s">&quot;test&quot;</span><span class="p">,</span> <span class="s">&quot;A_Raw_Example-1.omf&quot;</span><span class="p">)</span>
1149        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">tfile</span><span class="p">):</span>
1150            <span class="n">tfpath</span> <span class="o">=</span> <span class="n">tfile</span>
1151            <span class="n">ofpath</span> <span class="o">=</span> <span class="n">ofile</span>
1152            <span class="k">break</span>
1153    <span class="n">reader</span> <span class="o">=</span> <span class="n">SLDReader</span><span class="p">()</span>
1154    <span class="n">oreader</span> <span class="o">=</span> <span class="n">OMFReader</span><span class="p">()</span>
1155    <span class="n">output</span> <span class="o">=</span> <span class="n">reader</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">tfpath</span><span class="p">)</span>
1156    <span class="n">ooutput</span> <span class="o">=</span> <span class="n">oreader</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">ofpath</span><span class="p">)</span>
1157    <span class="n">foutput</span> <span class="o">=</span> <span class="n">OMF2SLD</span><span class="p">()</span>
1158    <span class="n">foutput</span><span class="o">.</span><span class="n">set_data</span><span class="p">(</span><span class="n">ooutput</span><span class="p">)</span>
1159
1160    <span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
1161    <span class="kn">from</span> <span class="nn">mpl_toolkits.mplot3d</span> <span class="kn">import</span> <span class="n">Axes3D</span>
1162    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
1163    <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">gca</span><span class="p">(</span><span class="n">projection</span><span class="o">=</span><span class="s">&#39;3d&#39;</span><span class="p">)</span>
1164    <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">pos_x</span><span class="p">,</span> <span class="n">output</span><span class="o">.</span><span class="n">pos_y</span><span class="p">,</span> <span class="n">output</span><span class="o">.</span><span class="n">pos_z</span><span class="p">,</span> <span class="s">&#39;.&#39;</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="s">&quot;g&quot;</span><span class="p">,</span> 
1165            <span class="n">alpha</span> <span class="o">=</span> <span class="mf">0.7</span><span class="p">,</span> <span class="n">markeredgecolor</span><span class="o">=</span><span class="s">&#39;gray&#39;</span><span class="p">,</span><span class="n">rasterized</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
1166    <span class="n">gap</span> <span class="o">=</span> <span class="mi">7</span>
1167    <span class="n">max_mx</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">sld_mx</span><span class="p">)</span>
1168    <span class="n">max_my</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">sld_my</span><span class="p">)</span>
1169    <span class="n">max_mz</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">sld_mz</span><span class="p">)</span>
1170    <span class="n">max_m</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">max_mx</span><span class="p">,</span><span class="n">max_my</span><span class="p">,</span><span class="n">max_mz</span><span class="p">)</span>
1171    <span class="n">x2</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">pos_x</span><span class="o">+</span><span class="n">output</span><span class="o">.</span><span class="n">sld_mx</span><span class="o">/</span><span class="n">max_m</span> <span class="o">*</span> <span class="n">gap</span>
1172    <span class="n">y2</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">pos_y</span><span class="o">+</span><span class="n">output</span><span class="o">.</span><span class="n">sld_my</span><span class="o">/</span><span class="n">max_m</span> <span class="o">*</span> <span class="n">gap</span>
1173    <span class="n">z2</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">pos_z</span><span class="o">+</span><span class="n">output</span><span class="o">.</span><span class="n">sld_mz</span><span class="o">/</span><span class="n">max_m</span> <span class="o">*</span> <span class="n">gap</span>
1174    <span class="n">x_arrow</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">column_stack</span><span class="p">((</span><span class="n">output</span><span class="o">.</span><span class="n">pos_x</span><span class="p">,</span><span class="n">x2</span><span class="p">))</span>
1175    <span class="n">y_arrow</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">column_stack</span><span class="p">((</span><span class="n">output</span><span class="o">.</span><span class="n">pos_y</span><span class="p">,</span><span class="n">y2</span><span class="p">))</span>
1176    <span class="n">z_arrow</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">column_stack</span><span class="p">((</span><span class="n">output</span><span class="o">.</span><span class="n">pos_z</span><span class="p">,</span><span class="n">z2</span><span class="p">))</span>
1177    <span class="n">unit_x2</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">sld_mx</span> <span class="o">/</span> <span class="n">max_m</span>
1178    <span class="n">unit_y2</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">sld_my</span> <span class="o">/</span> <span class="n">max_m</span>
1179    <span class="n">unit_z2</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">sld_mz</span> <span class="o">/</span> <span class="n">max_m</span>
1180    <span class="n">color_x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">unit_x2</span> <span class="o">*</span> <span class="mf">0.8</span><span class="p">)</span>
1181    <span class="n">color_y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">unit_y2</span> <span class="o">*</span> <span class="mf">0.8</span><span class="p">)</span>
1182    <span class="n">color_z</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">unit_z2</span> <span class="o">*</span> <span class="mf">0.8</span><span class="p">)</span>
1183    <span class="n">colors</span> <span class="o">=</span>  <span class="n">numpy</span><span class="o">.</span><span class="n">column_stack</span><span class="p">((</span><span class="n">color_x</span><span class="p">,</span> <span class="n">color_y</span><span class="p">,</span> <span class="n">color_z</span><span class="p">))</span>
1184    <span class="n">a</span> <span class="o">=</span> <span class="n">Arrow3D</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="n">x_arrow</span><span class="p">,</span><span class="n">y_arrow</span><span class="p">,</span><span class="n">z_arrow</span><span class="p">,</span> <span class="n">colors</span><span class="p">,</span> <span class="n">mutation_scale</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> 
1185                <span class="n">arrowstyle</span><span class="o">=</span><span class="s">&quot;-&gt;&quot;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s">&quot;y&quot;</span><span class="p">,</span> <span class="n">alpha</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">)</span>
1186
1187    <span class="n">ax</span><span class="o">.</span><span class="n">add_artist</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
1188    <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
1189    </div>
1190<div class="viewcode-block" id="test"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.sas_gen.test">[docs]</a><span class="k">def</span> <span class="nf">test</span><span class="p">():</span>
1191    <span class="kn">import</span> <span class="nn">os</span>
1192    <span class="nb">dir</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">abspath</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">curdir</span><span class="p">)</span>
1193    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
1194        <span class="nb">dir</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">split</span><span class="p">(</span><span class="nb">dir</span><span class="p">)</span>
1195        <span class="c">#tfile = os.path.join(dir, &quot;test&quot;, &quot;C_Example_Converted.txt&quot;)</span>
1196        <span class="n">ofile</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">join</span><span class="p">(</span><span class="nb">dir</span><span class="p">,</span> <span class="s">&quot;test&quot;</span><span class="p">,</span> <span class="s">&quot;A_Raw_Example-1.omf&quot;</span><span class="p">)</span>
1197        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">ofile</span><span class="p">):</span>
1198            <span class="c">#tfpath = tfile</span>
1199            <span class="n">ofpath</span> <span class="o">=</span> <span class="n">ofile</span>
1200            <span class="k">break</span>
1201    <span class="c">#reader = SLDReader()</span>
1202    <span class="n">oreader</span> <span class="o">=</span> <span class="n">OMFReader</span><span class="p">()</span>
1203    <span class="c">#output = reader.read(tfpath)</span>
1204    <span class="n">ooutput</span> <span class="o">=</span> <span class="n">oreader</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">ofpath</span><span class="p">)</span>
1205    <span class="n">foutput</span> <span class="o">=</span> <span class="n">OMF2SLD</span><span class="p">()</span> 
1206    <span class="n">foutput</span><span class="o">.</span><span class="n">set_data</span><span class="p">(</span><span class="n">ooutput</span><span class="p">)</span> 
1207    <span class="n">writer</span> <span class="o">=</span>  <span class="n">SLDReader</span><span class="p">()</span> 
1208    <span class="n">writer</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">ofpath</span><span class="p">),</span> <span class="s">&quot;out.txt&quot;</span><span class="p">),</span> 
1209                 <span class="n">foutput</span><span class="o">.</span><span class="n">output</span><span class="p">)</span>
1210    <span class="n">model</span> <span class="o">=</span> <span class="n">GenSAS</span><span class="p">()</span>
1211    <span class="n">model</span><span class="o">.</span><span class="n">set_sld_data</span><span class="p">(</span><span class="n">foutput</span><span class="o">.</span><span class="n">output</span><span class="p">)</span> 
1212    <span class="n">x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span><span class="o">/</span><span class="mf">10000.</span> <span class="o">+</span> <span class="mf">1e-5</span>
1213    <span class="n">y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span><span class="o">/</span><span class="mf">10000.</span> <span class="o">+</span> <span class="mf">1e-5</span>
1214    <span class="c">#z = numpy.arange(1000)/10000. + 1e-5</span>
1215    <span class="n">i</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
1216    <span class="n">out</span> <span class="o">=</span> <span class="n">model</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="n">y</span><span class="p">,</span><span class="n">i</span><span class="p">])</span>
1217        </div>
1218<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> 
1219    <span class="n">test</span><span class="p">()</span>
1220    <span class="n">test_load</span><span class="p">()</span>
1221</pre></div>
1222
1223          </div>
1224        </div>
1225      </div>
1226      <div class="sphinxsidebar">
1227        <div class="sphinxsidebarwrapper">
1228<div id="searchbox" style="display: none">
1229  <h3>Quick search</h3>
1230    <form class="search" action="../../../search.html" method="get">
1231      <input type="text" name="q" />
1232      <input type="submit" value="Go" />
1233      <input type="hidden" name="check_keywords" value="yes" />
1234      <input type="hidden" name="area" value="default" />
1235    </form>
1236    <p class="searchtip" style="font-size: 90%">
1237    Enter search terms or a module, class or function name.
1238    </p>
1239</div>
1240<script type="text/javascript">$('#searchbox').show(0);</script>
1241        </div>
1242      </div>
1243      <div class="clearer"></div>
1244    </div>
1245    <div class="related">
1246      <h3>Navigation</h3>
1247      <ul>
1248        <li class="right" style="margin-right: 10px">
1249          <a href="../../../genindex.html" title="General Index"
1250             >index</a></li>
1251        <li class="right" >
1252          <a href="../../../py-modindex.html" title="Python Module Index"
1253             >modules</a> |</li>
1254        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
1255          <li><a href="../../index.html" >Module code</a> &raquo;</li> 
1256      </ul>
1257    </div>
1258    <div class="footer">
1259        &copy; Copyright 2013, The SasView Project.
1260      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
1261    </div>
1262  </body>
1263</html>
Note: See TracBrowser for help on using the repository browser.