source: sasview/_modules/sas/calculator/slit_length_calculator.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: 14.3 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>sas.calculator.slit_length_calculator &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.slit_length_calculator</h1><div class="highlight"><pre>
51<span class="sd">&quot;&quot;&quot;</span>
52<span class="sd">This module is a small tool to allow user to quickly</span>
53<span class="sd">determine the slit length value of data.</span>
54<span class="sd">&quot;&quot;&quot;</span>
55
56
57<div class="viewcode-block" id="SlitlengthCalculator"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.slit_length_calculator.SlitlengthCalculator">[docs]</a><span class="k">class</span> <span class="nc">SlitlengthCalculator</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
58    <span class="sd">&quot;&quot;&quot;</span>
59<span class="sd">    compute slit length from SAXSess beam profile (1st col. Q , 2nd col. I ,</span>
60<span class="sd">    and 3rd col. dI.: don&#39;t need the 3rd)</span>
61<span class="sd">    &quot;&quot;&quot;</span>
62    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
63       
64        <span class="c"># x data</span>
65        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="bp">None</span>
66        <span class="c"># y data</span>
67        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="bp">None</span>
68        <span class="c">#default slit length</span>
69        <span class="bp">self</span><span class="o">.</span><span class="n">slit_length</span> <span class="o">=</span> <span class="mf">0.0</span>
70       
71        <span class="c"># The unit is unknown from SAXSess profile:</span>
72        <span class="c"># It seems 1/nm but it could be not fixed,</span>
73        <span class="c"># so users should be notified to determine the unit by themselves.</span>
74        <span class="bp">self</span><span class="o">.</span><span class="n">slit_length_unit</span> <span class="o">=</span> <span class="s">&quot;unknown&quot;</span>
75   
76<div class="viewcode-block" id="SlitlengthCalculator.set_data"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.slit_length_calculator.SlitlengthCalculator.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">x</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
77        <span class="sd">&quot;&quot;&quot;</span>
78<span class="sd">         Receive two vector x, y and prepare the slit calculator for</span>
79<span class="sd">         computation.</span>
80<span class="sd">        </span>
81<span class="sd">        :param x: array</span>
82<span class="sd">        :param y: array</span>
83<span class="sd">        &quot;&quot;&quot;</span>
84        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
85        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
86        </div>
87<div class="viewcode-block" id="SlitlengthCalculator.calculate_slit_length"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.slit_length_calculator.SlitlengthCalculator.calculate_slit_length">[docs]</a>    <span class="k">def</span> <span class="nf">calculate_slit_length</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
88        <span class="sd">&quot;&quot;&quot;</span>
89<span class="sd">        Calculate slit length.</span>
90<span class="sd">        </span>
91<span class="sd">        :return: the slit length calculated value.</span>
92<span class="sd">        &quot;&quot;&quot;</span>
93        <span class="c"># None data do nothing</span>
94        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
95            <span class="k">return</span>
96        <span class="c"># set local variable</span>
97        <span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">y</span>
98        <span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span>
99
100        <span class="c"># find max y</span>
101        <span class="n">max_y</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">max</span><span class="p">()</span>
102       
103        <span class="c"># initial values</span>
104        <span class="n">y_sum</span> <span class="o">=</span> <span class="mf">0.0</span>
105        <span class="n">y_max</span> <span class="o">=</span> <span class="mf">0.0</span>
106        <span class="n">ind</span> <span class="o">=</span> <span class="mf">0.0</span>
107       
108        <span class="c"># sum 10 or more y values until getting max_y,</span>
109        <span class="k">while</span> <span class="p">(</span><span class="bp">True</span><span class="p">):</span>
110            <span class="k">if</span> <span class="n">ind</span> <span class="o">&gt;=</span> <span class="mi">10</span> <span class="ow">and</span> <span class="n">y_max</span> <span class="o">==</span> <span class="n">max_y</span><span class="p">:</span>
111                <span class="k">break</span>
112            <span class="n">y_sum</span> <span class="o">=</span> <span class="n">y_sum</span> <span class="o">+</span> <span class="n">y</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
113            <span class="k">if</span> <span class="n">y</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">y_max</span><span class="p">:</span>
114                <span class="n">y_max</span> <span class="o">=</span> <span class="n">y</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
115            <span class="n">ind</span> <span class="o">+=</span> <span class="mi">1</span>
116     
117        <span class="c"># find the average value/2 of the top values</span>
118        <span class="n">y_half</span> <span class="o">=</span> <span class="n">y_sum</span><span class="o">/</span><span class="p">(</span><span class="mf">2.0</span><span class="o">*</span><span class="n">ind</span><span class="p">)</span>
119       
120        <span class="c"># defaults</span>
121        <span class="n">y_half_d</span> <span class="o">=</span> <span class="mf">0.0</span>
122        <span class="n">ind</span> <span class="o">=</span> <span class="mf">0.0</span>
123        <span class="c"># find indices where it crosses y = y_half.</span>
124        <span class="k">while</span> <span class="p">(</span><span class="bp">True</span><span class="p">):</span>
125            <span class="c"># no need to check when ind == 0</span>
126            <span class="n">ind</span> <span class="o">+=</span> <span class="mi">1</span>
127            <span class="c"># y value and ind just after passed the spot of the half height</span>
128            <span class="n">y_half_d</span> <span class="o">=</span> <span class="n">y</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
129            <span class="k">if</span> <span class="n">y</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span> <span class="o">&lt;</span> <span class="n">y_half</span><span class="p">:</span>
130                <span class="k">break</span>
131       
132        <span class="c"># y value and ind just before passed the spot of the half height</span>
133        <span class="n">y_half_u</span> <span class="o">=</span> <span class="n">y</span><span class="p">[</span><span class="n">ind</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
134       
135        <span class="c"># get corresponding x values</span>
136        <span class="n">x_half_d</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
137        <span class="n">x_half_u</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">ind</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
138       
139        <span class="c"># calculate x at y = y_half using linear interpolation</span>
140        <span class="k">if</span> <span class="n">y_half_u</span> <span class="o">==</span> <span class="n">y_half_d</span><span class="p">:</span>
141            <span class="n">x_half</span> <span class="o">=</span> <span class="p">(</span><span class="n">x_half_d</span> <span class="o">+</span> <span class="n">x_half_u</span><span class="p">)</span><span class="o">/</span><span class="mf">2.0</span>
142        <span class="k">else</span><span class="p">:</span>
143            <span class="n">x_half</span> <span class="o">=</span> <span class="p">(</span><span class="n">x_half_u</span> <span class="o">*</span> <span class="p">(</span><span class="n">y_half</span> <span class="o">-</span> <span class="n">y_half_d</span><span class="p">)</span>  \
144                       <span class="o">+</span> <span class="n">x_half_d</span> <span class="o">*</span> <span class="p">(</span><span class="n">y_half_u</span> <span class="o">-</span> <span class="n">y_half</span><span class="p">))</span> \
145                        <span class="o">/</span> <span class="p">(</span><span class="n">y_half_u</span> <span class="o">-</span> <span class="n">y_half_d</span><span class="p">)</span>
146       
147        <span class="c"># Our slit length is half width, so just give half beam value</span>
148        <span class="n">slit_length</span> <span class="o">=</span> <span class="n">x_half</span>
149       
150        <span class="c"># set slit_length</span>
151        <span class="bp">self</span><span class="o">.</span><span class="n">slit_length</span> <span class="o">=</span> <span class="n">slit_length</span>
152        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">slit_length</span>
153  </div>
154<div class="viewcode-block" id="SlitlengthCalculator.get_slit_length_unit"><a class="viewcode-back" href="../../../dev/api/sas.calculator.html#sas.calculator.slit_length_calculator.SlitlengthCalculator.get_slit_length_unit">[docs]</a>    <span class="k">def</span> <span class="nf">get_slit_length_unit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
155        <span class="sd">&quot;&quot;&quot;</span>
156<span class="sd">        :return: the slit length unit.</span>
157<span class="sd">        &quot;&quot;&quot;</span>
158        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">slit_length_unit</span></div></div>
159</pre></div>
160
161          </div>
162        </div>
163      </div>
164      <div class="sphinxsidebar">
165        <div class="sphinxsidebarwrapper">
166<div id="searchbox" style="display: none">
167  <h3>Quick search</h3>
168    <form class="search" action="../../../search.html" method="get">
169      <input type="text" name="q" />
170      <input type="submit" value="Go" />
171      <input type="hidden" name="check_keywords" value="yes" />
172      <input type="hidden" name="area" value="default" />
173    </form>
174    <p class="searchtip" style="font-size: 90%">
175    Enter search terms or a module, class or function name.
176    </p>
177</div>
178<script type="text/javascript">$('#searchbox').show(0);</script>
179        </div>
180      </div>
181      <div class="clearer"></div>
182    </div>
183    <div class="related">
184      <h3>Navigation</h3>
185      <ul>
186        <li class="right" style="margin-right: 10px">
187          <a href="../../../genindex.html" title="General Index"
188             >index</a></li>
189        <li class="right" >
190          <a href="../../../py-modindex.html" title="Python Module Index"
191             >modules</a> |</li>
192        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
193          <li><a href="../../index.html" >Module code</a> &raquo;</li> 
194      </ul>
195    </div>
196    <div class="footer">
197        &copy; Copyright 2013, The SasView Project.
198      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
199    </div>
200  </body>
201</html>
Note: See TracBrowser for help on using the repository browser.