source: sasview/_modules/sas/dataloader/data_info.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: 171.2 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.dataloader.data_info &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.dataloader.data_info</h1><div class="highlight"><pre>
51<span class="sd">&quot;&quot;&quot;</span>
52<span class="sd">    Module that contains classes to hold information read from</span>
53<span class="sd">    reduced data files.</span>
54<span class="sd">    </span>
55<span class="sd">    A good description of the data members can be found in</span>
56<span class="sd">    the CanSAS 1D XML data format:</span>
57<span class="sd">    </span>
58<span class="sd">    http://www.smallangles.net/wgwiki/index.php/cansas1d_documentation</span>
59<span class="sd">&quot;&quot;&quot;</span>
60<span class="c">#####################################################################</span>
61<span class="c">#This software was developed by the University of Tennessee as part of the</span>
62<span class="c">#Distributed Data Analysis of Neutron Scattering Experiments (DANSE)</span>
63<span class="c">#project funded by the US National Science Foundation.</span>
64<span class="c">#See the license text in license.txt</span>
65<span class="c">#copyright 2008, University of Tennessee</span>
66<span class="c">######################################################################</span>
67
68
69<span class="c">#TODO: Keep track of data manipulation in the &#39;process&#39; data structure.</span>
70<span class="c">#TODO: This module should be independent of plottables. We should write</span>
71<span class="c">#        an adapter class for plottables when needed.</span>
72
73<span class="c">#from sas.guitools.plottables import Data1D as plottable_1D</span>
74<span class="kn">from</span> <span class="nn">sas.data_util.uncertainty</span> <span class="kn">import</span> <span class="n">Uncertainty</span>
75<span class="kn">import</span> <span class="nn">numpy</span>
76<span class="kn">import</span> <span class="nn">math</span>
77
78
79<div class="viewcode-block" id="plottable_1D"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.plottable_1D">[docs]</a><span class="k">class</span> <span class="nc">plottable_1D</span><span class="p">:</span>
80    <span class="sd">&quot;&quot;&quot;</span>
81<span class="sd">    Data1D is a place holder for 1D plottables.</span>
82<span class="sd">    &quot;&quot;&quot;</span>
83    <span class="c"># The presence of these should be mutually</span>
84    <span class="c"># exclusive with the presence of Qdev (dx)</span>
85    <span class="n">x</span> <span class="o">=</span> <span class="bp">None</span>
86    <span class="n">y</span> <span class="o">=</span> <span class="bp">None</span>
87    <span class="n">dx</span> <span class="o">=</span> <span class="bp">None</span>
88    <span class="n">dy</span> <span class="o">=</span> <span class="bp">None</span>
89    <span class="c">## Slit smearing length</span>
90    <span class="n">dxl</span> <span class="o">=</span> <span class="bp">None</span>
91    <span class="c">## Slit smearing width</span>
92    <span class="n">dxw</span> <span class="o">=</span> <span class="bp">None</span>
93   
94    <span class="c"># Units</span>
95    <span class="n">_xaxis</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
96    <span class="n">_xunit</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
97    <span class="n">_yaxis</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
98    <span class="n">_yunit</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
99   
100    <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">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">dx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dxl</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dxw</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
101        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
102        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
103        <span class="k">if</span> <span class="n">dx</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
104            <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">dx</span><span class="p">)</span>
105        <span class="k">if</span> <span class="n">dy</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
106            <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">dy</span><span class="p">)</span>
107        <span class="k">if</span> <span class="n">dxl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
108            <span class="bp">self</span><span class="o">.</span><span class="n">dxl</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">dxl</span><span class="p">)</span>
109        <span class="k">if</span> <span class="n">dxw</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> 
110            <span class="bp">self</span><span class="o">.</span><span class="n">dxw</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">dxw</span><span class="p">)</span>
111
112<div class="viewcode-block" id="plottable_1D.xaxis"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.plottable_1D.xaxis">[docs]</a>    <span class="k">def</span> <span class="nf">xaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">unit</span><span class="p">):</span>
113        <span class="sd">&quot;&quot;&quot;</span>
114<span class="sd">        set the x axis label and unit</span>
115<span class="sd">        &quot;&quot;&quot;</span>
116        <span class="bp">self</span><span class="o">.</span><span class="n">_xaxis</span> <span class="o">=</span> <span class="n">label</span>
117        <span class="bp">self</span><span class="o">.</span><span class="n">_xunit</span> <span class="o">=</span> <span class="n">unit</span>
118        </div>
119<div class="viewcode-block" id="plottable_1D.yaxis"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.plottable_1D.yaxis">[docs]</a>    <span class="k">def</span> <span class="nf">yaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">unit</span><span class="p">):</span>
120        <span class="sd">&quot;&quot;&quot;</span>
121<span class="sd">        set the y axis label and unit</span>
122<span class="sd">        &quot;&quot;&quot;</span>
123        <span class="bp">self</span><span class="o">.</span><span class="n">_yaxis</span> <span class="o">=</span> <span class="n">label</span>
124        <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span> <span class="o">=</span> <span class="n">unit</span>
125
126</div></div>
127<div class="viewcode-block" id="plottable_2D"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.plottable_2D">[docs]</a><span class="k">class</span> <span class="nc">plottable_2D</span><span class="p">:</span>
128    <span class="sd">&quot;&quot;&quot;</span>
129<span class="sd">    Data2D is a place holder for 2D plottables.</span>
130<span class="sd">    &quot;&quot;&quot;</span>
131    <span class="n">xmin</span> <span class="o">=</span> <span class="bp">None</span>
132    <span class="n">xmax</span> <span class="o">=</span> <span class="bp">None</span>
133    <span class="n">ymin</span> <span class="o">=</span> <span class="bp">None</span>
134    <span class="n">ymax</span> <span class="o">=</span> <span class="bp">None</span>
135    <span class="n">data</span> <span class="o">=</span> <span class="bp">None</span>
136    <span class="n">qx_data</span> <span class="o">=</span> <span class="bp">None</span>
137    <span class="n">qy_data</span> <span class="o">=</span> <span class="bp">None</span>
138    <span class="n">q_data</span> <span class="o">=</span> <span class="bp">None</span>
139    <span class="n">err_data</span> <span class="o">=</span> <span class="bp">None</span>
140    <span class="n">dqx_data</span> <span class="o">=</span> <span class="bp">None</span>
141    <span class="n">dqy_data</span> <span class="o">=</span> <span class="bp">None</span>
142    <span class="n">mask</span> <span class="o">=</span> <span class="bp">None</span>
143   
144    <span class="c"># Units</span>
145    <span class="n">_xaxis</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
146    <span class="n">_xunit</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
147    <span class="n">_yaxis</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
148    <span class="n">_yunit</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
149    <span class="n">_zaxis</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
150    <span class="n">_zunit</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
151   
152    <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">data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">err_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">qx_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
153                 <span class="n">qy_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">q_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
154                 <span class="n">dqx_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dqy_data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
155        <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
156        <span class="bp">self</span><span class="o">.</span><span class="n">qx_data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">qx_data</span><span class="p">)</span>
157        <span class="bp">self</span><span class="o">.</span><span class="n">qy_data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">qy_data</span><span class="p">)</span>
158        <span class="bp">self</span><span class="o">.</span><span class="n">q_data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">q_data</span><span class="p">)</span>
159        <span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">mask</span><span class="p">)</span>
160        <span class="bp">self</span><span class="o">.</span><span class="n">err_data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">err_data</span><span class="p">)</span>
161        <span class="k">if</span> <span class="n">dqx_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
162            <span class="bp">self</span><span class="o">.</span><span class="n">dqx_data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">dqx_data</span><span class="p">)</span> 
163        <span class="k">if</span> <span class="n">dqy_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
164            <span class="bp">self</span><span class="o">.</span><span class="n">dqy_data</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">dqy_data</span><span class="p">)</span> 
165               
166<div class="viewcode-block" id="plottable_2D.xaxis"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.plottable_2D.xaxis">[docs]</a>    <span class="k">def</span> <span class="nf">xaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">unit</span><span class="p">):</span>
167        <span class="sd">&quot;&quot;&quot;</span>
168<span class="sd">        set the x axis label and unit</span>
169<span class="sd">        &quot;&quot;&quot;</span>
170        <span class="bp">self</span><span class="o">.</span><span class="n">_xaxis</span> <span class="o">=</span> <span class="n">label</span>
171        <span class="bp">self</span><span class="o">.</span><span class="n">_xunit</span> <span class="o">=</span> <span class="n">unit</span>
172        </div>
173<div class="viewcode-block" id="plottable_2D.yaxis"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.plottable_2D.yaxis">[docs]</a>    <span class="k">def</span> <span class="nf">yaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">unit</span><span class="p">):</span>
174        <span class="sd">&quot;&quot;&quot;</span>
175<span class="sd">        set the y axis label and unit</span>
176<span class="sd">        &quot;&quot;&quot;</span>
177        <span class="bp">self</span><span class="o">.</span><span class="n">_yaxis</span> <span class="o">=</span> <span class="n">label</span>
178        <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span> <span class="o">=</span> <span class="n">unit</span>
179            </div>
180<div class="viewcode-block" id="plottable_2D.zaxis"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.plottable_2D.zaxis">[docs]</a>    <span class="k">def</span> <span class="nf">zaxis</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">unit</span><span class="p">):</span>
181        <span class="sd">&quot;&quot;&quot;</span>
182<span class="sd">        set the z axis label and unit</span>
183<span class="sd">        &quot;&quot;&quot;</span>
184        <span class="bp">self</span><span class="o">.</span><span class="n">_zaxis</span> <span class="o">=</span> <span class="n">label</span>
185        <span class="bp">self</span><span class="o">.</span><span class="n">_zunit</span> <span class="o">=</span> <span class="n">unit</span>
186
187            </div></div>
188<div class="viewcode-block" id="Vector"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Vector">[docs]</a><span class="k">class</span> <span class="nc">Vector</span><span class="p">:</span>
189    <span class="sd">&quot;&quot;&quot;</span>
190<span class="sd">    Vector class to hold multi-dimensional objects</span>
191<span class="sd">    &quot;&quot;&quot;</span>
192    <span class="c">## x component</span>
193    <span class="n">x</span> <span class="o">=</span> <span class="bp">None</span>
194    <span class="c">## y component</span>
195    <span class="n">y</span> <span class="o">=</span> <span class="bp">None</span>
196    <span class="c">## z component</span>
197    <span class="n">z</span> <span class="o">=</span> <span class="bp">None</span>
198   
199    <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">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> <span class="n">z</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
200        <span class="sd">&quot;&quot;&quot;</span>
201<span class="sd">        Initialization. Components that are not</span>
202<span class="sd">        set a set to None by default.</span>
203<span class="sd">        </span>
204<span class="sd">        :param x: x component</span>
205<span class="sd">        :param y: y component</span>
206<span class="sd">        :param z: z component</span>
207<span class="sd">        </span>
208<span class="sd">        &quot;&quot;&quot;</span>
209        <span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
210        <span class="bp">self</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span>
211        <span class="bp">self</span><span class="o">.</span><span class="n">z</span> <span class="o">=</span> <span class="n">z</span>
212       
213    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
214        <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;x = </span><span class="si">%s</span><span class="se">\t</span><span class="s">y = </span><span class="si">%s</span><span class="se">\t</span><span class="s">z = </span><span class="si">%s</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">x</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">y</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">z</span><span class="p">))</span>
215        <span class="k">return</span> <span class="n">msg</span>
216       
217</div>
218<div class="viewcode-block" id="Detector"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Detector">[docs]</a><span class="k">class</span> <span class="nc">Detector</span><span class="p">:</span>
219    <span class="sd">&quot;&quot;&quot;</span>
220<span class="sd">    Class to hold detector information</span>
221<span class="sd">    &quot;&quot;&quot;</span>
222    <span class="c">## Name of the instrument [string]</span>
223    <span class="n">name</span> <span class="o">=</span> <span class="bp">None</span>
224    <span class="c">## Sample to detector distance [float] [mm]</span>
225    <span class="n">distance</span> <span class="o">=</span> <span class="bp">None</span>
226    <span class="n">distance_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
227    <span class="c">## Offset of this detector position in X, Y,</span>
228    <span class="c">#(and Z if necessary) [Vector] [mm]</span>
229    <span class="n">offset</span> <span class="o">=</span> <span class="bp">None</span>
230    <span class="n">offset_unit</span> <span class="o">=</span> <span class="s">&#39;m&#39;</span>
231    <span class="c">## Orientation (rotation) of this detector in roll,</span>
232    <span class="c"># pitch, and yaw [Vector] [degrees]</span>
233    <span class="n">orientation</span> <span class="o">=</span> <span class="bp">None</span>
234    <span class="n">orientation_unit</span> <span class="o">=</span> <span class="s">&#39;degree&#39;</span>
235    <span class="c">## Center of the beam on the detector in X and Y</span>
236    <span class="c">#(and Z if necessary) [Vector] [mm]</span>
237    <span class="n">beam_center</span> <span class="o">=</span> <span class="bp">None</span>
238    <span class="n">beam_center_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
239    <span class="c">## Pixel size in X, Y, (and Z if necessary) [Vector] [mm]</span>
240    <span class="n">pixel_size</span> <span class="o">=</span> <span class="bp">None</span>
241    <span class="n">pixel_size_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
242    <span class="c">## Slit length of the instrument for this detector.[float] [mm]</span>
243    <span class="n">slit_length</span> <span class="o">=</span> <span class="bp">None</span>
244    <span class="n">slit_length_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
245   
246    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
247        <span class="sd">&quot;&quot;&quot;</span>
248<span class="sd">        </span>
249<span class="sd">        Initialize class attribute that are objects...</span>
250<span class="sd">        </span>
251<span class="sd">        &quot;&quot;&quot;</span>
252        <span class="bp">self</span><span class="o">.</span><span class="n">offset</span>      <span class="o">=</span> <span class="n">Vector</span><span class="p">()</span>
253        <span class="bp">self</span><span class="o">.</span><span class="n">orientation</span> <span class="o">=</span> <span class="n">Vector</span><span class="p">()</span>
254        <span class="bp">self</span><span class="o">.</span><span class="n">beam_center</span> <span class="o">=</span> <span class="n">Vector</span><span class="p">()</span>
255        <span class="bp">self</span><span class="o">.</span><span class="n">pixel_size</span>  <span class="o">=</span> <span class="n">Vector</span><span class="p">()</span>
256       
257    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
258        <span class="n">_str</span>  <span class="o">=</span> <span class="s">&quot;Detector:</span><span class="se">\n</span><span class="s">&quot;</span>
259        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Name:         </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">name</span>
260        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Distance:     </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> \
261            <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">distance</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">distance_unit</span><span class="p">))</span>
262        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Offset:       </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> \
263            <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">offset</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">offset_unit</span><span class="p">))</span>
264        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Orientation:  </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> \
265            <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">orientation</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">orientation_unit</span><span class="p">))</span>
266        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Beam center:  </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> \
267            <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">beam_center</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">beam_center_unit</span><span class="p">))</span>
268        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Pixel size:   </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> \
269            <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">pixel_size</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">pixel_size_unit</span><span class="p">))</span>
270        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Slit length:  </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> \
271            <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">slit_length</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">slit_length_unit</span><span class="p">))</span>
272        <span class="k">return</span> <span class="n">_str</span>
273
274</div>
275<div class="viewcode-block" id="Aperture"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Aperture">[docs]</a><span class="k">class</span> <span class="nc">Aperture</span><span class="p">:</span>
276    <span class="c">## Name</span>
277    <span class="n">name</span> <span class="o">=</span> <span class="bp">None</span>
278    <span class="c">## Type</span>
279    <span class="nb">type</span> <span class="o">=</span> <span class="bp">None</span>
280    <span class="c">## Size name</span>
281    <span class="n">size_name</span> <span class="o">=</span> <span class="bp">None</span>
282    <span class="c">## Aperture size [Vector]</span>
283    <span class="n">size</span> <span class="o">=</span> <span class="bp">None</span>
284    <span class="n">size_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
285    <span class="c">## Aperture distance [float]</span>
286    <span class="n">distance</span> <span class="o">=</span> <span class="bp">None</span>
287    <span class="n">distance_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
288   
289    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
290        <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">Vector</span><span class="p">()</span>
291   
292    </div>
293<div class="viewcode-block" id="Collimation"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Collimation">[docs]</a><span class="k">class</span> <span class="nc">Collimation</span><span class="p">:</span>
294    <span class="sd">&quot;&quot;&quot;</span>
295<span class="sd">    Class to hold collimation information</span>
296<span class="sd">    &quot;&quot;&quot;</span>
297    <span class="c">## Name</span>
298    <span class="n">name</span> <span class="o">=</span> <span class="bp">None</span>
299    <span class="c">## Length [float] [mm]</span>
300    <span class="n">length</span> <span class="o">=</span> <span class="bp">None</span>
301    <span class="n">length_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
302    <span class="c">## Aperture</span>
303    <span class="n">aperture</span> <span class="o">=</span> <span class="bp">None</span>
304   
305    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
306        <span class="bp">self</span><span class="o">.</span><span class="n">aperture</span> <span class="o">=</span> <span class="p">[]</span>
307   
308    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
309        <span class="n">_str</span> <span class="o">=</span> <span class="s">&quot;Collimation:</span><span class="se">\n</span><span class="s">&quot;</span>
310        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Length:       </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> \
311            <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">length</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">length_unit</span><span class="p">))</span>
312        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">aperture</span><span class="p">:</span>
313            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Aperture size:</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> \
314                <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">size</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">size_unit</span><span class="p">))</span>
315            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Aperture_dist:</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> \
316                <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">distance</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">item</span><span class="o">.</span><span class="n">distance_unit</span><span class="p">))</span>
317        <span class="k">return</span> <span class="n">_str</span>
318
319</div>
320<div class="viewcode-block" id="Source"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Source">[docs]</a><span class="k">class</span> <span class="nc">Source</span><span class="p">:</span>
321    <span class="sd">&quot;&quot;&quot;</span>
322<span class="sd">    Class to hold source information</span>
323<span class="sd">    &quot;&quot;&quot;</span>
324    <span class="c">## Name</span>
325    <span class="n">name</span> <span class="o">=</span> <span class="bp">None</span>
326    <span class="c">## Radiation type [string]</span>
327    <span class="n">radiation</span> <span class="o">=</span> <span class="bp">None</span>
328    <span class="c">## Beam size name</span>
329    <span class="n">beam_size_name</span> <span class="o">=</span> <span class="bp">None</span>
330    <span class="c">## Beam size [Vector] [mm]</span>
331    <span class="n">beam_size</span> <span class="o">=</span> <span class="bp">None</span>
332    <span class="n">beam_size_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
333    <span class="c">## Beam shape [string]</span>
334    <span class="n">beam_shape</span> <span class="o">=</span> <span class="bp">None</span>
335    <span class="c">## Wavelength [float] [Angstrom]</span>
336    <span class="n">wavelength</span> <span class="o">=</span> <span class="bp">None</span>
337    <span class="n">wavelength_unit</span> <span class="o">=</span> <span class="s">&#39;A&#39;</span>
338    <span class="c">## Minimum wavelength [float] [Angstrom]</span>
339    <span class="n">wavelength_min</span> <span class="o">=</span> <span class="bp">None</span>
340    <span class="n">wavelength_min_unit</span> <span class="o">=</span> <span class="s">&#39;nm&#39;</span>
341    <span class="c">## Maximum wavelength [float] [Angstrom]</span>
342    <span class="n">wavelength_max</span> <span class="o">=</span> <span class="bp">None</span>
343    <span class="n">wavelength_max_unit</span> <span class="o">=</span> <span class="s">&#39;nm&#39;</span>
344    <span class="c">## Wavelength spread [float] [Angstrom]</span>
345    <span class="n">wavelength_spread</span> <span class="o">=</span> <span class="bp">None</span>
346    <span class="n">wavelength_spread_unit</span> <span class="o">=</span> <span class="s">&#39;percent&#39;</span>
347   
348    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
349        <span class="bp">self</span><span class="o">.</span><span class="n">beam_size</span> <span class="o">=</span> <span class="n">Vector</span><span class="p">()</span>
350       
351    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
352        <span class="n">_str</span>  <span class="o">=</span> <span class="s">&quot;Source:</span><span class="se">\n</span><span class="s">&quot;</span>
353        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Radiation:    </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">radiation</span><span class="p">)</span>
354        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Shape:        </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">beam_shape</span><span class="p">)</span>
355        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Wavelength:   </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> \
356            <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">wavelength</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">wavelength_unit</span><span class="p">))</span>
357        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Waveln_min:   </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> \
358            <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">wavelength_min</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">wavelength_min_unit</span><span class="p">))</span>
359        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Waveln_max:   </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> \
360            <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">wavelength_max</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">wavelength_max_unit</span><span class="p">))</span>
361        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Waveln_spread:</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> \
362            <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">wavelength_spread</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">wavelength_spread_unit</span><span class="p">))</span>
363        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Beam_size:    </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> \
364            <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">beam_size</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">beam_size_unit</span><span class="p">))</span>
365        <span class="k">return</span> <span class="n">_str</span>
366   
367    </div>
368<span class="sd">&quot;&quot;&quot;</span>
369<span class="sd">Definitions of radiation types</span>
370<span class="sd">&quot;&quot;&quot;</span>
371<span class="n">NEUTRON</span>  <span class="o">=</span> <span class="s">&#39;neutron&#39;</span>
372<span class="n">XRAY</span>     <span class="o">=</span> <span class="s">&#39;x-ray&#39;</span>
373<span class="n">MUON</span>     <span class="o">=</span> <span class="s">&#39;muon&#39;</span>
374<span class="n">ELECTRON</span> <span class="o">=</span> <span class="s">&#39;electron&#39;</span>
375   
376   
377<div class="viewcode-block" id="Sample"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Sample">[docs]</a><span class="k">class</span> <span class="nc">Sample</span><span class="p">:</span>
378    <span class="sd">&quot;&quot;&quot;</span>
379<span class="sd">    Class to hold the sample description</span>
380<span class="sd">    &quot;&quot;&quot;</span>
381    <span class="c">## Short name for sample</span>
382    <span class="n">name</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
383    <span class="c">## ID</span>
384    <span class="n">ID</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
385    <span class="c">## Thickness [float] [mm]</span>
386    <span class="n">thickness</span> <span class="o">=</span> <span class="bp">None</span>
387    <span class="n">thickness_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
388    <span class="c">## Transmission [float] [fraction]</span>
389    <span class="n">transmission</span> <span class="o">=</span> <span class="bp">None</span>
390    <span class="c">## Temperature [float] [C]</span>
391    <span class="n">temperature</span> <span class="o">=</span> <span class="bp">None</span>
392    <span class="n">temperature_unit</span> <span class="o">=</span> <span class="s">&#39;C&#39;</span>
393    <span class="c">## Position [Vector] [mm]</span>
394    <span class="n">position</span> <span class="o">=</span> <span class="bp">None</span>
395    <span class="n">position_unit</span> <span class="o">=</span> <span class="s">&#39;mm&#39;</span>
396    <span class="c">## Orientation [Vector] [degrees]</span>
397    <span class="n">orientation</span> <span class="o">=</span> <span class="bp">None</span>
398    <span class="n">orientation_unit</span> <span class="o">=</span> <span class="s">&#39;degree&#39;</span>
399    <span class="c">## Details</span>
400    <span class="n">details</span> <span class="o">=</span> <span class="bp">None</span>
401   
402    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
403        <span class="bp">self</span><span class="o">.</span><span class="n">position</span>    <span class="o">=</span> <span class="n">Vector</span><span class="p">()</span>
404        <span class="bp">self</span><span class="o">.</span><span class="n">orientation</span> <span class="o">=</span> <span class="n">Vector</span><span class="p">()</span>
405        <span class="bp">self</span><span class="o">.</span><span class="n">details</span>     <span class="o">=</span> <span class="p">[]</span>
406   
407    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
408        <span class="n">_str</span>  <span class="o">=</span> <span class="s">&quot;Sample:</span><span class="se">\n</span><span class="s">&quot;</span>
409        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   ID:           </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">ID</span><span class="p">)</span>
410        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Transmission: </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">transmission</span><span class="p">)</span>
411        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Thickness:    </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> \
412            <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">thickness</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">thickness_unit</span><span class="p">))</span>
413        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Temperature:  </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> \
414            <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">temperature</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">temperature_unit</span><span class="p">))</span>
415        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Position:     </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> \
416            <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">position</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">position_unit</span><span class="p">))</span>
417        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Orientation:  </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> \
418            <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">orientation</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">orientation_unit</span><span class="p">))</span>
419       
420        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Details:</span><span class="se">\n</span><span class="s">&quot;</span>
421        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">details</span><span class="p">:</span>
422            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;      </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">item</span>
423           
424        <span class="k">return</span> <span class="n">_str</span>
425 
426  </div>
427<div class="viewcode-block" id="Process"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Process">[docs]</a><span class="k">class</span> <span class="nc">Process</span><span class="p">:</span>
428    <span class="sd">&quot;&quot;&quot;</span>
429<span class="sd">    Class that holds information about the processes</span>
430<span class="sd">    performed on the data.</span>
431<span class="sd">    &quot;&quot;&quot;</span>
432    <span class="n">name</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
433    <span class="n">date</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
434    <span class="n">description</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
435    <span class="n">term</span> <span class="o">=</span> <span class="bp">None</span>
436    <span class="n">notes</span> <span class="o">=</span> <span class="bp">None</span>
437   
438    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
439        <span class="bp">self</span><span class="o">.</span><span class="n">term</span> <span class="o">=</span> <span class="p">[]</span>
440        <span class="bp">self</span><span class="o">.</span><span class="n">notes</span> <span class="o">=</span> <span class="p">[]</span>
441   
442    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
443        <span class="n">_str</span>  <span class="o">=</span> <span class="s">&quot;Process:</span><span class="se">\n</span><span class="s">&quot;</span>
444        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Name:         </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">name</span>
445        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Date:         </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">date</span>
446        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Description:  </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">description</span>
447        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">term</span><span class="p">:</span>
448            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Term:         </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">item</span>
449        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">notes</span><span class="p">:</span>
450            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Note:         </span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">item</span>
451        <span class="k">return</span> <span class="n">_str</span>
452    </div>
453<div class="viewcode-block" id="TransmissionSpectrum"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.TransmissionSpectrum">[docs]</a><span class="k">class</span> <span class="nc">TransmissionSpectrum</span><span class="p">:</span>
454    <span class="sd">&quot;&quot;&quot;</span>
455<span class="sd">    Class that holds information about transmission spectrum</span>
456<span class="sd">    for white beams and spallation sources.</span>
457<span class="sd">    &quot;&quot;&quot;</span>
458    <span class="n">name</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
459    <span class="n">timestamp</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
460    <span class="c">## Wavelength (float) [A]</span>
461    <span class="n">wavelength</span> <span class="o">=</span> <span class="bp">None</span>
462    <span class="n">wavelength_unit</span> <span class="o">=</span> <span class="s">&#39;A&#39;</span>
463    <span class="c">## Transmission (float) [unit less]</span>
464    <span class="n">transmission</span> <span class="o">=</span> <span class="bp">None</span>
465    <span class="n">transmission_unit</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
466    <span class="c">## Transmission Deviation (float) [unit less]</span>
467    <span class="n">transmission_deviation</span> <span class="o">=</span> <span class="bp">None</span>
468    <span class="n">transmission_deviation_unit</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
469   
470    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
471        <span class="bp">self</span><span class="o">.</span><span class="n">wavelength</span> <span class="o">=</span> <span class="p">[]</span>
472        <span class="bp">self</span><span class="o">.</span><span class="n">transmission</span> <span class="o">=</span> <span class="p">[]</span>
473        <span class="bp">self</span><span class="o">.</span><span class="n">transmission_deviation</span> <span class="o">=</span> <span class="p">[]</span>
474   
475    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
476        <span class="n">_str</span>  <span class="o">=</span> <span class="s">&quot;Transmission Spectrum:</span><span class="se">\n</span><span class="s">&quot;</span>
477        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Name:             </span><span class="se">\t</span><span class="s">{0}</span><span class="se">\n</span><span class="s">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
478        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Timestamp:        </span><span class="se">\t</span><span class="s">{0}</span><span class="se">\n</span><span class="s">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">)</span>
479        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Wavelength unit:  </span><span class="se">\t</span><span class="s">{0}</span><span class="se">\n</span><span class="s">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">wavelength_unit</span><span class="p">)</span>
480        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Transmission unit:</span><span class="se">\t</span><span class="s">{0}</span><span class="se">\n</span><span class="s">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">transmission_unit</span><span class="p">)</span>
481        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Trans. Dev. unit:  </span><span class="se">\t</span><span class="s">{0}</span><span class="se">\n</span><span class="s">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>\
482                                            <span class="bp">self</span><span class="o">.</span><span class="n">transmission_deviation_unit</span><span class="p">)</span>
483        <span class="n">length_list</span> <span class="o">=</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">wavelength</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">transmission</span><span class="p">),</span> \
484                <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">transmission_deviation</span><span class="p">)]</span>
485        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Number of Pts:    </span><span class="se">\t</span><span class="s">{0}</span><span class="se">\n</span><span class="s">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">length_list</span><span class="p">))</span>
486        <span class="k">return</span> <span class="n">_str</span>
487   
488  </div>
489<div class="viewcode-block" id="DataInfo"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.DataInfo">[docs]</a><span class="k">class</span> <span class="nc">DataInfo</span><span class="p">:</span>
490    <span class="sd">&quot;&quot;&quot;</span>
491<span class="sd">    Class to hold the data read from a file.</span>
492<span class="sd">    It includes four blocks of data for the</span>
493<span class="sd">    instrument description, the sample description,</span>
494<span class="sd">    the data itself and any other meta data.</span>
495<span class="sd">    &quot;&quot;&quot;</span>
496    <span class="c">## Title</span>
497    <span class="n">title</span>      <span class="o">=</span> <span class="s">&#39;&#39;</span>
498    <span class="c">## Run number</span>
499    <span class="n">run</span>        <span class="o">=</span> <span class="bp">None</span>
500    <span class="c">## Run name</span>
501    <span class="n">run_name</span>   <span class="o">=</span> <span class="bp">None</span>
502    <span class="c">## File name</span>
503    <span class="n">filename</span>   <span class="o">=</span> <span class="s">&#39;&#39;</span>
504    <span class="c">## Notes</span>
505    <span class="n">notes</span>      <span class="o">=</span> <span class="bp">None</span>
506    <span class="c">## Processes (Action on the data)</span>
507    <span class="n">process</span>    <span class="o">=</span> <span class="bp">None</span>
508    <span class="c">## Instrument name</span>
509    <span class="n">instrument</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
510    <span class="c">## Detector information</span>
511    <span class="n">detector</span>   <span class="o">=</span> <span class="bp">None</span>
512    <span class="c">## Sample information</span>
513    <span class="n">sample</span>     <span class="o">=</span> <span class="bp">None</span>
514    <span class="c">## Source information</span>
515    <span class="n">source</span>     <span class="o">=</span> <span class="bp">None</span>
516    <span class="c">## Collimation information</span>
517    <span class="n">collimation</span> <span class="o">=</span> <span class="bp">None</span>
518    <span class="c">## Transmission Spectrum INfo</span>
519    <span class="n">trans_spectrum</span> <span class="o">=</span> <span class="bp">None</span>
520    <span class="c">## Additional meta-data</span>
521    <span class="n">meta_data</span>  <span class="o">=</span> <span class="bp">None</span>
522    <span class="c">## Loading errors</span>
523    <span class="n">errors</span> <span class="o">=</span> <span class="bp">None</span>
524           
525    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
526        <span class="sd">&quot;&quot;&quot;</span>
527<span class="sd">        Initialization</span>
528<span class="sd">        &quot;&quot;&quot;</span>
529        <span class="c">## Title </span>
530        <span class="bp">self</span><span class="o">.</span><span class="n">title</span>      <span class="o">=</span> <span class="s">&#39;&#39;</span>
531        <span class="c">## Run number</span>
532        <span class="bp">self</span><span class="o">.</span><span class="n">run</span>        <span class="o">=</span> <span class="p">[]</span>
533        <span class="bp">self</span><span class="o">.</span><span class="n">run_name</span>   <span class="o">=</span> <span class="p">{}</span>
534        <span class="c">## File name</span>
535        <span class="bp">self</span><span class="o">.</span><span class="n">filename</span>   <span class="o">=</span> <span class="s">&#39;&#39;</span>
536        <span class="c">## Notes</span>
537        <span class="bp">self</span><span class="o">.</span><span class="n">notes</span>      <span class="o">=</span> <span class="p">[]</span>
538        <span class="c">## Processes (Action on the data)</span>
539        <span class="bp">self</span><span class="o">.</span><span class="n">process</span>    <span class="o">=</span> <span class="p">[]</span>
540        <span class="c">## Instrument name</span>
541        <span class="bp">self</span><span class="o">.</span><span class="n">instrument</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
542        <span class="c">## Detector information</span>
543        <span class="bp">self</span><span class="o">.</span><span class="n">detector</span>   <span class="o">=</span> <span class="p">[]</span>
544        <span class="c">## Sample information</span>
545        <span class="bp">self</span><span class="o">.</span><span class="n">sample</span>     <span class="o">=</span> <span class="n">Sample</span><span class="p">()</span>
546        <span class="c">## Source information</span>
547        <span class="bp">self</span><span class="o">.</span><span class="n">source</span>     <span class="o">=</span> <span class="n">Source</span><span class="p">()</span>
548        <span class="c">## Collimation information</span>
549        <span class="bp">self</span><span class="o">.</span><span class="n">collimation</span> <span class="o">=</span> <span class="p">[]</span>
550        <span class="c">## Transmission Spectrum</span>
551        <span class="bp">self</span><span class="o">.</span><span class="n">trans_spectrum</span> <span class="o">=</span> <span class="p">[]</span>
552        <span class="c">## Additional meta-data</span>
553        <span class="bp">self</span><span class="o">.</span><span class="n">meta_data</span>  <span class="o">=</span> <span class="p">{}</span>
554        <span class="c">## Loading errors</span>
555        <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span>
556       
557<div class="viewcode-block" id="DataInfo.append_empty_process"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.DataInfo.append_empty_process">[docs]</a>    <span class="k">def</span> <span class="nf">append_empty_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
558        <span class="sd">&quot;&quot;&quot;</span>
559<span class="sd">        &quot;&quot;&quot;</span>
560        <span class="bp">self</span><span class="o">.</span><span class="n">process</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Process</span><span class="p">())</span>
561        </div>
562<div class="viewcode-block" id="DataInfo.add_notes"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.DataInfo.add_notes">[docs]</a>    <span class="k">def</span> <span class="nf">add_notes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="o">=</span><span class="s">&quot;&quot;</span><span class="p">):</span>
563        <span class="sd">&quot;&quot;&quot;</span>
564<span class="sd">        Add notes to datainfo</span>
565<span class="sd">        &quot;&quot;&quot;</span>
566        <span class="bp">self</span><span class="o">.</span><span class="n">notes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
567        </div>
568    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
569        <span class="sd">&quot;&quot;&quot;</span>
570<span class="sd">        Nice printout</span>
571<span class="sd">        &quot;&quot;&quot;</span>
572        <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>
573        <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>
574        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;Run:             </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">run</span><span class="p">)</span>
575        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;Instrument:      </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">instrument</span><span class="p">)</span>
576        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;</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">sample</span><span class="p">)</span>
577        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;</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">source</span><span class="p">)</span>
578        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">detector</span><span class="p">:</span>
579            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;</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="n">item</span><span class="p">)</span>
580        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">collimation</span><span class="p">:</span>
581            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;</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="n">item</span><span class="p">)</span>
582        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">process</span><span class="p">:</span>
583            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;</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="n">item</span><span class="p">)</span>
584        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">notes</span><span class="p">:</span>
585            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;</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="n">item</span><span class="p">)</span>
586        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">trans_spectrum</span><span class="p">:</span>
587            <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;</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="n">item</span><span class="p">)</span>
588        <span class="k">return</span> <span class="n">_str</span>
589           
590    <span class="c"># Private method to perform operation. Not implemented for DataInfo,</span>
591    <span class="c"># but should be implemented for each data class inherited from DataInfo</span>
592    <span class="c"># that holds actual data (ex.: Data1D)</span>
593    <span class="k">def</span> <span class="nf">_perform_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">):</span>
594        <span class="sd">&quot;&quot;&quot;</span>
595<span class="sd">        Private method to perform operation. Not implemented for DataInfo,</span>
596<span class="sd">        but should be implemented for each data class inherited from DataInfo</span>
597<span class="sd">        that holds actual data (ex.: Data1D)</span>
598<span class="sd">        &quot;&quot;&quot;</span>
599        <span class="k">return</span> <span class="bp">NotImplemented</span>
600   
601    <span class="k">def</span> <span class="nf">_perform_union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
602        <span class="sd">&quot;&quot;&quot;</span>
603<span class="sd">        Private method to perform union operation. Not implemented for DataInfo,</span>
604<span class="sd">        but should be implemented for each data class inherited from DataInfo</span>
605<span class="sd">        that holds actual data (ex.: Data1D)</span>
606<span class="sd">        &quot;&quot;&quot;</span>
607        <span class="k">return</span> <span class="bp">NotImplemented</span>
608
609    <span class="k">def</span> <span class="nf">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
610        <span class="sd">&quot;&quot;&quot;</span>
611<span class="sd">        Add two data sets</span>
612<span class="sd">        </span>
613<span class="sd">        :param other: data set to add to the current one</span>
614<span class="sd">        :return: new data set</span>
615<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
616<span class="sd">        &quot;&quot;&quot;</span>
617        <span class="k">def</span> <span class="nf">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
618            <span class="k">return</span> <span class="n">a</span> <span class="o">+</span> <span class="n">b</span>
619        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_operation</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">)</span>
620       
621    <span class="k">def</span> <span class="nf">__radd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
622        <span class="sd">&quot;&quot;&quot;</span>
623<span class="sd">        Add two data sets</span>
624<span class="sd">        </span>
625<span class="sd">        :param other: data set to add to the current one</span>
626<span class="sd">        </span>
627<span class="sd">        :return: new data set</span>
628<span class="sd">        </span>
629<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
630<span class="sd">        </span>
631<span class="sd">        &quot;&quot;&quot;</span>
632        <span class="k">def</span> <span class="nf">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
633            <span class="k">return</span> <span class="n">b</span> <span class="o">+</span> <span class="n">a</span>
634        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_operation</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">)</span>
635       
636    <span class="k">def</span> <span class="nf">__sub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
637        <span class="sd">&quot;&quot;&quot;</span>
638<span class="sd">        Subtract two data sets</span>
639<span class="sd">        </span>
640<span class="sd">        :param other: data set to subtract from the current one</span>
641<span class="sd">        </span>
642<span class="sd">        :return: new data set</span>
643<span class="sd">        </span>
644<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
645<span class="sd">        </span>
646<span class="sd">        &quot;&quot;&quot;</span>
647        <span class="k">def</span> <span class="nf">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
648            <span class="k">return</span> <span class="n">a</span> <span class="o">-</span> <span class="n">b</span>
649        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_operation</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">)</span>
650       
651    <span class="k">def</span> <span class="nf">__rsub__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
652        <span class="sd">&quot;&quot;&quot;</span>
653<span class="sd">        Subtract two data sets</span>
654<span class="sd">        </span>
655<span class="sd">        :param other: data set to subtract from the current one</span>
656<span class="sd">        </span>
657<span class="sd">        :return: new data set</span>
658<span class="sd">        </span>
659<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
660<span class="sd">        </span>
661<span class="sd">        &quot;&quot;&quot;</span>
662        <span class="k">def</span> <span class="nf">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
663            <span class="k">return</span> <span class="n">b</span> <span class="o">-</span> <span class="n">a</span>
664        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_operation</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">)</span>
665       
666    <span class="k">def</span> <span class="nf">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
667        <span class="sd">&quot;&quot;&quot;</span>
668<span class="sd">        Multiply two data sets</span>
669<span class="sd">        </span>
670<span class="sd">        :param other: data set to subtract from the current one</span>
671<span class="sd">        </span>
672<span class="sd">        :return: new data set</span>
673<span class="sd">        </span>
674<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
675<span class="sd">        </span>
676<span class="sd">        &quot;&quot;&quot;</span>
677        <span class="k">def</span> <span class="nf">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
678            <span class="k">return</span> <span class="n">a</span> <span class="o">*</span> <span class="n">b</span>
679        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_operation</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">)</span>
680       
681    <span class="k">def</span> <span class="nf">__rmul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
682        <span class="sd">&quot;&quot;&quot;</span>
683<span class="sd">        Multiply two data sets</span>
684<span class="sd">        </span>
685<span class="sd">        :param other: data set to subtract from the current one</span>
686<span class="sd">        </span>
687<span class="sd">        :return: new data set</span>
688<span class="sd">        </span>
689<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
690<span class="sd">        &quot;&quot;&quot;</span>
691        <span class="k">def</span> <span class="nf">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
692            <span class="k">return</span> <span class="n">b</span> <span class="o">*</span> <span class="n">a</span>
693        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_operation</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">)</span>
694       
695    <span class="k">def</span> <span class="nf">__div__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
696        <span class="sd">&quot;&quot;&quot;</span>
697<span class="sd">        Divided a data set by another</span>
698<span class="sd">        </span>
699<span class="sd">        :param other: data set that the current one is divided by</span>
700<span class="sd">        </span>
701<span class="sd">        :return: new data set</span>
702<span class="sd">        </span>
703<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
704<span class="sd">        </span>
705<span class="sd">        &quot;&quot;&quot;</span>
706        <span class="k">def</span> <span class="nf">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
707            <span class="k">return</span> <span class="n">a</span><span class="o">/</span><span class="n">b</span>
708        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_operation</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">)</span>
709       
710    <span class="k">def</span> <span class="nf">__rdiv__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
711        <span class="sd">&quot;&quot;&quot;</span>
712<span class="sd">        Divided a data set by another</span>
713<span class="sd">        </span>
714<span class="sd">        :param other: data set that the current one is divided by</span>
715<span class="sd">        </span>
716<span class="sd">        :return: new data set</span>
717<span class="sd">        </span>
718<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
719<span class="sd">        </span>
720<span class="sd">        &quot;&quot;&quot;</span>
721        <span class="k">def</span> <span class="nf">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
722            <span class="k">return</span> <span class="n">b</span><span class="o">/</span><span class="n">a</span>
723        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_operation</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">)</span>
724           
725       
726    <span class="k">def</span> <span class="nf">__or__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
727        <span class="sd">&quot;&quot;&quot;</span>
728<span class="sd">        Union a data set with another</span>
729<span class="sd">        </span>
730<span class="sd">        :param other: data set to be unified</span>
731<span class="sd">        </span>
732<span class="sd">        :return: new data set</span>
733<span class="sd">        </span>
734<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
735<span class="sd">        </span>
736<span class="sd">        &quot;&quot;&quot;</span>
737        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_union</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
738       
739    <span class="k">def</span> <span class="nf">__ror__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
740        <span class="sd">&quot;&quot;&quot;</span>
741<span class="sd">        Union a data set with another</span>
742<span class="sd">        </span>
743<span class="sd">        :param other: data set to be unified</span>
744<span class="sd">        </span>
745<span class="sd">        :return: new data set</span>
746<span class="sd">        </span>
747<span class="sd">        :raise ValueError: raised when two data sets are incompatible</span>
748<span class="sd">        </span>
749<span class="sd">        &quot;&quot;&quot;</span>
750        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_perform_union</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
751                </div>
752<div class="viewcode-block" id="Data1D"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Data1D">[docs]</a><span class="k">class</span> <span class="nc">Data1D</span><span class="p">(</span><span class="n">plottable_1D</span><span class="p">,</span> <span class="n">DataInfo</span><span class="p">):</span>
753    <span class="sd">&quot;&quot;&quot;</span>
754<span class="sd">    1D data class</span>
755<span class="sd">    &quot;&quot;&quot;</span>
756    <span class="n">x_unit</span> <span class="o">=</span> <span class="s">&#39;1/A&#39;</span>
757    <span class="n">y_unit</span> <span class="o">=</span> <span class="s">&#39;1/cm&#39;</span>
758   
759    <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">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">dx</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
760        <span class="n">DataInfo</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
761        <span class="n">plottable_1D</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">)</span>
762       
763    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
764        <span class="sd">&quot;&quot;&quot;</span>
765<span class="sd">        Nice printout</span>
766<span class="sd">        &quot;&quot;&quot;</span>
767        <span class="n">_str</span> <span class="o">=</span>  <span class="s">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">DataInfo</span><span class="o">.</span><span class="n">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
768   
769        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;Data:</span><span class="se">\n</span><span class="s">&quot;</span>
770        <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>
771        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   X-axis:       </span><span class="si">%s</span><span class="se">\t</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="bp">self</span><span class="o">.</span><span class="n">_xaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xunit</span><span class="p">)</span>
772        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Y-axis:       </span><span class="si">%s</span><span class="se">\t</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="bp">self</span><span class="o">.</span><span class="n">_yaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span><span class="p">)</span>
773        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Length:       </span><span class="si">%g</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
774
775        <span class="k">return</span> <span class="n">_str</span>
776
777<div class="viewcode-block" id="Data1D.is_slit_smeared"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Data1D.is_slit_smeared">[docs]</a>    <span class="k">def</span> <span class="nf">is_slit_smeared</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
778        <span class="sd">&quot;&quot;&quot;</span>
779<span class="sd">        Check whether the data has slit smearing information</span>
780<span class="sd">        </span>
781<span class="sd">        :return: True is slit smearing info is present, False otherwise</span>
782<span class="sd">        </span>
783<span class="sd">        &quot;&quot;&quot;</span>
784        <span class="k">def</span> <span class="nf">_check</span><span class="p">(</span><span class="n">v</span><span class="p">):</span>
785            <span class="k">if</span> <span class="p">(</span><span class="n">v</span><span class="o">.</span><span class="n">__class__</span> <span class="o">==</span> <span class="nb">list</span> <span class="ow">or</span> <span class="n">v</span><span class="o">.</span><span class="n">__class__</span> <span class="o">==</span> <span class="n">numpy</span><span class="o">.</span><span class="n">ndarray</span><span class="p">)</span> \
786                <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">min</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
787                <span class="k">return</span> <span class="bp">True</span>
788           
789            <span class="k">return</span> <span class="bp">False</span>
790       
791        <span class="k">return</span> <span class="n">_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dxl</span><span class="p">)</span> <span class="ow">or</span> <span class="n">_check</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dxw</span><span class="p">)</span>
792        </div>
793<div class="viewcode-block" id="Data1D.clone_without_data"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Data1D.clone_without_data">[docs]</a>    <span class="k">def</span> <span class="nf">clone_without_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">length</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">clone</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
794        <span class="sd">&quot;&quot;&quot;</span>
795<span class="sd">        Clone the current object, without copying the data (which</span>
796<span class="sd">        will be filled out by a subsequent operation).</span>
797<span class="sd">        The data arrays will be initialized to zero.</span>
798<span class="sd">        </span>
799<span class="sd">        :param length: length of the data array to be initialized</span>
800<span class="sd">        :param clone: if provided, the data will be copied to clone</span>
801<span class="sd">        &quot;&quot;&quot;</span>
802        <span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">deepcopy</span>
803       
804        <span class="k">if</span> <span class="n">clone</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">clone</span><span class="o">.</span><span class="n">__class__</span><span class="p">,</span> <span class="n">Data1D</span><span class="p">):</span>
805            <span class="n">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="n">length</span><span class="p">)</span>
806            <span class="n">dx</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>
807            <span class="n">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="n">length</span><span class="p">)</span>
808            <span class="n">dy</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>
809            <span class="n">clone</span> <span class="o">=</span> <span class="n">Data1D</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">dx</span><span class="o">=</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="o">=</span><span class="n">dy</span><span class="p">)</span>
810       
811        <span class="n">clone</span><span class="o">.</span><span class="n">title</span>          <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span>
812        <span class="n">clone</span><span class="o">.</span><span class="n">run</span>            <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">run</span>
813        <span class="n">clone</span><span class="o">.</span><span class="n">filename</span>       <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filename</span>
814        <span class="n">clone</span><span class="o">.</span><span class="n">instrument</span>     <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">instrument</span>
815        <span class="n">clone</span><span class="o">.</span><span class="n">notes</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">notes</span><span class="p">)</span>
816        <span class="n">clone</span><span class="o">.</span><span class="n">process</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">process</span><span class="p">)</span>
817        <span class="n">clone</span><span class="o">.</span><span class="n">detector</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">detector</span><span class="p">)</span>
818        <span class="n">clone</span><span class="o">.</span><span class="n">sample</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">sample</span><span class="p">)</span>
819        <span class="n">clone</span><span class="o">.</span><span class="n">source</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">source</span><span class="p">)</span>
820        <span class="n">clone</span><span class="o">.</span><span class="n">collimation</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">collimation</span><span class="p">)</span>
821        <span class="n">clone</span><span class="o">.</span><span class="n">trans_spectrum</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">trans_spectrum</span><span class="p">)</span>
822        <span class="n">clone</span><span class="o">.</span><span class="n">meta_data</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">meta_data</span><span class="p">)</span>
823        <span class="n">clone</span><span class="o">.</span><span class="n">errors</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">errors</span><span class="p">)</span>
824       
825        <span class="k">return</span> <span class="n">clone</span>
826</div>
827    <span class="k">def</span> <span class="nf">_validity_check</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
828        <span class="sd">&quot;&quot;&quot;</span>
829<span class="sd">        Checks that the data lengths are compatible.</span>
830<span class="sd">        Checks that the x vectors are compatible.</span>
831<span class="sd">        Returns errors vectors equal to original</span>
832<span class="sd">        errors vectors if they were present or vectors</span>
833<span class="sd">        of zeros when none was found.</span>
834<span class="sd">        </span>
835<span class="sd">        :param other: other data set for operation</span>
836<span class="sd">        </span>
837<span class="sd">        :return: dy for self, dy for other [numpy arrays]</span>
838<span class="sd">        </span>
839<span class="sd">        :raise ValueError: when lengths are not compatible</span>
840<span class="sd">        </span>
841<span class="sd">        &quot;&quot;&quot;</span>
842        <span class="n">dy_other</span> <span class="o">=</span> <span class="bp">None</span>
843        <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Data1D</span><span class="p">):</span>
844            <span class="c"># Check that data lengths are the same</span>
845            <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">x</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="ow">or</span> \
846                <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">y</span><span class="p">):</span>
847                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Unable to perform operation: data length are not equal&quot;</span>
848                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
849           
850            <span class="c"># Here we could also extrapolate between data points</span>
851            <span class="n">ZERO</span> <span class="o">=</span> <span class="mf">1.0e-12</span>
852            <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="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)):</span>
853                <span class="k">if</span> <span class="n">math</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">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">-</span> <span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">&gt;</span> <span class="n">ZERO</span><span class="p">:</span>
854                    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Incompatible data sets: x-values do not match&quot;</span>
855                    <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
856                <span class="sd">&quot;&quot;&quot;</span>
857<span class="sd">                if self.dxl != None and other.dxl == None:</span>
858<span class="sd">                    msg = &quot;Incompatible data sets: dxl-values do not match&quot;</span>
859<span class="sd">                    raise ValueError, msg</span>
860<span class="sd">                if self.dxl == None and other.dxl != None:</span>
861<span class="sd">                    msg = &quot;Incompatible data sets: dxl-values do not match&quot;</span>
862<span class="sd">                    raise ValueError, msg</span>
863<span class="sd">                if self.dxw != None and other.dxw == None:</span>
864<span class="sd">                    msg = &quot;Incompatible data sets: dxw-values do not match&quot;</span>
865<span class="sd">                    raise ValueError, msg</span>
866<span class="sd">                if self.dxw == None and other.dxw != None:</span>
867<span class="sd">                    msg = &quot;Incompatible data sets: dxw-values do not match&quot;</span>
868<span class="sd">                    raise ValueError, msg</span>
869<span class="sd">                &quot;&quot;&quot;</span>
870            <span class="c"># Check that the other data set has errors, otherwise</span>
871            <span class="c"># create zero vector</span>
872            <span class="n">dy_other</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">dy</span>
873            <span class="k">if</span> <span class="n">other</span><span class="o">.</span><span class="n">dy</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">dy</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">y</span><span class="p">)):</span>
874                <span class="n">dy_other</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="n">other</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
875           
876        <span class="c"># Check that we have errors, otherwise create zero vector</span>
877        <span class="n">dy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span>
878        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</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">dy</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">)):</span>
879            <span class="n">dy</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">y</span><span class="p">))</span>
880           
881        <span class="k">return</span> <span class="n">dy</span><span class="p">,</span> <span class="n">dy_other</span>
882
883    <span class="k">def</span> <span class="nf">_perform_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">):</span>
884        <span class="sd">&quot;&quot;&quot;</span>
885<span class="sd">        &quot;&quot;&quot;</span>
886        <span class="c"># First, check the data compatibility</span>
887        <span class="n">dy</span><span class="p">,</span> <span class="n">dy_other</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_validity_check</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
888        <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">clone_without_data</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">x</span><span class="p">))</span>
889        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dxw</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
890            <span class="n">result</span><span class="o">.</span><span class="n">dxw</span> <span class="o">=</span> <span class="bp">None</span>
891        <span class="k">else</span><span class="p">:</span>
892            <span class="n">result</span><span class="o">.</span><span class="n">dxw</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">x</span><span class="p">))</span>
893        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dxl</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
894            <span class="n">result</span><span class="o">.</span><span class="n">dxl</span> <span class="o">=</span> <span class="bp">None</span>
895        <span class="k">else</span><span class="p">:</span>
896            <span class="n">result</span><span class="o">.</span><span class="n">dxl</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">x</span><span class="p">))</span>
897
898        <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="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)):</span>
899            <span class="n">result</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
900            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">):</span>
901                <span class="n">result</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
902            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dxw</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dxw</span><span class="p">):</span>
903                <span class="n">result</span><span class="o">.</span><span class="n">dxw</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dxw</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
904            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dxl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">dxl</span><span class="p">):</span>
905                <span class="n">result</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
906           
907            <span class="n">a</span> <span class="o">=</span> <span class="n">Uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">dy</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
908            <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Data1D</span><span class="p">):</span>
909                <span class="n">b</span> <span class="o">=</span> <span class="n">Uncertainty</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">dy_other</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
910                <span class="k">if</span> <span class="n">other</span><span class="o">.</span><span class="n">dx</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
911                    <span class="n">result</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">*=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
912                    <span class="n">result</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
913                    <span class="n">result</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">/=</span> <span class="mi">2</span>
914                    <span class="n">result</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
915                <span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">dxl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="n">other</span><span class="o">.</span><span class="n">dxl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
916                    <span class="n">result</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">*=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
917                    <span class="n">result</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
918                    <span class="n">result</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">/=</span> <span class="mi">2</span>
919                    <span class="n">result</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
920            <span class="k">else</span><span class="p">:</span>
921                <span class="n">b</span> <span class="o">=</span> <span class="n">other</span>
922           
923            <span class="n">output</span> <span class="o">=</span> <span class="n">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
924            <span class="n">result</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">x</span>
925            <span class="n">result</span><span class="o">.</span><span class="n">dy</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">variance</span><span class="p">))</span>
926        <span class="k">return</span> <span class="n">result</span>
927   
928    <span class="k">def</span> <span class="nf">_validity_check_union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
929        <span class="sd">&quot;&quot;&quot;</span>
930<span class="sd">        Checks that the data lengths are compatible.</span>
931<span class="sd">        Checks that the x vectors are compatible.</span>
932<span class="sd">        Returns errors vectors equal to original</span>
933<span class="sd">        errors vectors if they were present or vectors</span>
934<span class="sd">        of zeros when none was found.</span>
935<span class="sd">        </span>
936<span class="sd">        :param other: other data set for operation</span>
937<span class="sd">        </span>
938<span class="sd">        :return: bool</span>
939<span class="sd">        </span>
940<span class="sd">        :raise ValueError: when data types are not compatible</span>
941<span class="sd">        </span>
942<span class="sd">        &quot;&quot;&quot;</span>
943        <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Data1D</span><span class="p">):</span>
944            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Unable to perform operation: different types of data set&quot;</span>
945            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>   
946        <span class="k">return</span> <span class="bp">True</span>
947
948    <span class="k">def</span> <span class="nf">_perform_union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
949        <span class="sd">&quot;&quot;&quot;</span>
950<span class="sd">        &quot;&quot;&quot;</span>
951        <span class="c"># First, check the data compatibility</span>
952        <span class="bp">self</span><span class="o">.</span><span class="n">_validity_check_union</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
953        <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">clone_without_data</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">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">))</span>
954        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dy</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">dy</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
955            <span class="n">result</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="bp">None</span>
956        <span class="k">else</span><span class="p">:</span>
957            <span class="n">result</span><span class="o">.</span><span class="n">dy</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">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">))</span>
958        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dx</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">dx</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
959            <span class="n">result</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="bp">None</span>
960        <span class="k">else</span><span class="p">:</span>
961            <span class="n">result</span><span class="o">.</span><span class="n">dx</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">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">))</span>
962        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dxw</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">dxw</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
963            <span class="n">result</span><span class="o">.</span><span class="n">dxw</span> <span class="o">=</span> <span class="bp">None</span>
964        <span class="k">else</span><span class="p">:</span>
965            <span class="n">result</span><span class="o">.</span><span class="n">dxw</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">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">))</span>
966        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dxl</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">dxl</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
967            <span class="n">result</span><span class="o">.</span><span class="n">dxl</span> <span class="o">=</span> <span class="bp">None</span>
968        <span class="k">else</span><span class="p">:</span>
969            <span class="n">result</span><span class="o">.</span><span class="n">dxl</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">x</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">))</span>
970
971        <span class="n">result</span><span class="o">.</span><span class="n">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="bp">self</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
972        <span class="c">#argsorting</span>
973        <span class="n">ind</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">x</span><span class="p">)</span>
974        <span class="n">result</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
975        <span class="n">result</span><span class="o">.</span><span class="n">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="bp">self</span><span class="o">.</span><span class="n">y</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">y</span><span class="p">)</span>
976        <span class="n">result</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">y</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
977        <span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">dy</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span>
978            <span class="n">result</span><span class="o">.</span><span class="n">dy</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="bp">self</span><span class="o">.</span><span class="n">dy</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">dy</span><span class="p">)</span>
979            <span class="n">result</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">dy</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
980        <span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">dx</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
981            <span class="n">result</span><span class="o">.</span><span class="n">dx</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="bp">self</span><span class="o">.</span><span class="n">dx</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">dx</span><span class="p">)</span>
982            <span class="n">result</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">dx</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
983        <span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">dxw</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
984            <span class="n">result</span><span class="o">.</span><span class="n">dxw</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="bp">self</span><span class="o">.</span><span class="n">dxw</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">dxw</span><span class="p">)</span>
985            <span class="n">result</span><span class="o">.</span><span class="n">dxw</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">dxw</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
986        <span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">dxl</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
987            <span class="n">result</span><span class="o">.</span><span class="n">dxl</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="bp">self</span><span class="o">.</span><span class="n">dxl</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">dxl</span><span class="p">)</span>
988            <span class="n">result</span><span class="o">.</span><span class="n">dxl</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">dxl</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
989        <span class="k">return</span> <span class="n">result</span>
990       
991        </div>
992<div class="viewcode-block" id="Data2D"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Data2D">[docs]</a><span class="k">class</span> <span class="nc">Data2D</span><span class="p">(</span><span class="n">plottable_2D</span><span class="p">,</span> <span class="n">DataInfo</span><span class="p">):</span>
993    <span class="sd">&quot;&quot;&quot;</span>
994<span class="sd">    2D data class</span>
995<span class="sd">    &quot;&quot;&quot;</span>
996    <span class="c">## Units for Q-values</span>
997    <span class="n">Q_unit</span> <span class="o">=</span> <span class="s">&#39;1/A&#39;</span>
998   
999    <span class="c">## Units for I(Q) values</span>
1000    <span class="n">I_unit</span> <span class="o">=</span> <span class="s">&#39;1/cm&#39;</span>
1001   
1002    <span class="c">## Vector of Q-values at the center of each bin in x</span>
1003    <span class="n">x_bins</span> <span class="o">=</span> <span class="bp">None</span>
1004   
1005    <span class="c">## Vector of Q-values at the center of each bin in y</span>
1006    <span class="n">y_bins</span> <span class="o">=</span> <span class="bp">None</span>
1007   
1008    <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">data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">err_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">qx_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
1009                 <span class="n">qy_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">q_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
1010                 <span class="n">dqx_data</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">dqy_data</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
1011        <span class="bp">self</span><span class="o">.</span><span class="n">y_bins</span> <span class="o">=</span> <span class="p">[]</span>
1012        <span class="bp">self</span><span class="o">.</span><span class="n">x_bins</span> <span class="o">=</span> <span class="p">[]</span>
1013        <span class="n">DataInfo</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
1014        <span class="n">plottable_2D</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">err_data</span><span class="p">,</span> <span class="n">qx_data</span><span class="p">,</span>
1015                              <span class="n">qy_data</span><span class="p">,</span> <span class="n">q_data</span><span class="p">,</span> <span class="n">mask</span><span class="p">,</span> <span class="n">dqx_data</span><span class="p">,</span> <span class="n">dqy_data</span><span class="p">)</span>
1016        <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">detector</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
1017            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="s">&quot;Data2D: Detector bank already filled at init&quot;</span>
1018
1019    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1020        <span class="n">_str</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="se">\n</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">DataInfo</span><span class="o">.</span><span class="n">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
1021       
1022        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;Data:</span><span class="se">\n</span><span class="s">&quot;</span>
1023        <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>
1024        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   X- &amp; Y-axis:  </span><span class="si">%s</span><span class="se">\t</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="bp">self</span><span class="o">.</span><span class="n">_yaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_yunit</span><span class="p">)</span>
1025        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Z-axis:       </span><span class="si">%s</span><span class="se">\t</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="bp">self</span><span class="o">.</span><span class="n">_zaxis</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_zunit</span><span class="p">)</span>
1026        <span class="c">#leny = 0</span>
1027        <span class="c">#if len(self.data) &gt; 0:</span>
1028        <span class="c">#    leny = len(self.data)</span>
1029        <span class="n">_str</span> <span class="o">+=</span> <span class="s">&quot;   Length:       </span><span class="si">%g</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">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">))</span>
1030       
1031        <span class="k">return</span> <span class="n">_str</span>
1032 
1033<div class="viewcode-block" id="Data2D.clone_without_data"><a class="viewcode-back" href="../../../dev/api/sas.dataloader.html#sas.dataloader.data_info.Data2D.clone_without_data">[docs]</a>    <span class="k">def</span> <span class="nf">clone_without_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">length</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">clone</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
1034        <span class="sd">&quot;&quot;&quot;</span>
1035<span class="sd">        Clone the current object, without copying the data (which</span>
1036<span class="sd">        will be filled out by a subsequent operation).</span>
1037<span class="sd">        The data arrays will be initialized to zero.</span>
1038<span class="sd">        </span>
1039<span class="sd">        :param length: length of the data array to be initialized</span>
1040<span class="sd">        :param clone: if provided, the data will be copied to clone</span>
1041<span class="sd">        &quot;&quot;&quot;</span>
1042        <span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">deepcopy</span>
1043       
1044        <span class="k">if</span> <span class="n">clone</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">clone</span><span class="o">.</span><span class="n">__class__</span><span class="p">,</span> <span class="n">Data2D</span><span class="p">):</span>
1045            <span class="n">data</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>
1046            <span class="n">err_data</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>
1047            <span class="n">qx_data</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>
1048            <span class="n">qy_data</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>
1049            <span class="n">q_data</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>
1050            <span class="n">mask</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>
1051            <span class="n">dqx_data</span> <span class="o">=</span> <span class="bp">None</span>
1052            <span class="n">dqy_data</span> <span class="o">=</span> <span class="bp">None</span>
1053            <span class="n">clone</span> <span class="o">=</span> <span class="n">Data2D</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> <span class="n">err_data</span><span class="o">=</span><span class="n">err_data</span><span class="p">,</span> 
1054                           <span class="n">qx_data</span><span class="o">=</span><span class="n">qx_data</span><span class="p">,</span> <span class="n">qy_data</span><span class="o">=</span><span class="n">qy_data</span><span class="p">,</span> 
1055                           <span class="n">q_data</span><span class="o">=</span><span class="n">q_data</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">mask</span><span class="p">)</span>
1056
1057        <span class="n">clone</span><span class="o">.</span><span class="n">title</span>       <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span>
1058        <span class="n">clone</span><span class="o">.</span><span class="n">run</span>         <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">run</span>
1059        <span class="n">clone</span><span class="o">.</span><span class="n">filename</span>    <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">filename</span>
1060        <span class="n">clone</span><span class="o">.</span><span class="n">instrument</span>  <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">instrument</span>
1061        <span class="n">clone</span><span class="o">.</span><span class="n">notes</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">notes</span><span class="p">)</span>
1062        <span class="n">clone</span><span class="o">.</span><span class="n">process</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">process</span><span class="p">)</span>
1063        <span class="n">clone</span><span class="o">.</span><span class="n">detector</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">detector</span><span class="p">)</span>
1064        <span class="n">clone</span><span class="o">.</span><span class="n">sample</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">sample</span><span class="p">)</span>
1065        <span class="n">clone</span><span class="o">.</span><span class="n">source</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">source</span><span class="p">)</span>
1066        <span class="n">clone</span><span class="o">.</span><span class="n">collimation</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">collimation</span><span class="p">)</span>
1067        <span class="n">clone</span><span class="o">.</span><span class="n">meta_data</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">meta_data</span><span class="p">)</span>
1068        <span class="n">clone</span><span class="o">.</span><span class="n">errors</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">errors</span><span class="p">)</span>
1069       
1070        <span class="k">return</span> <span class="n">clone</span>
1071  </div>
1072    <span class="k">def</span> <span class="nf">_validity_check</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
1073        <span class="sd">&quot;&quot;&quot;</span>
1074<span class="sd">        Checks that the data lengths are compatible.</span>
1075<span class="sd">        Checks that the x vectors are compatible.</span>
1076<span class="sd">        Returns errors vectors equal to original</span>
1077<span class="sd">        errors vectors if they were present or vectors</span>
1078<span class="sd">        of zeros when none was found.</span>
1079<span class="sd">        </span>
1080<span class="sd">        :param other: other data set for operation</span>
1081<span class="sd">        </span>
1082<span class="sd">        :return: dy for self, dy for other [numpy arrays]</span>
1083<span class="sd">        </span>
1084<span class="sd">        :raise ValueError: when lengths are not compatible</span>
1085<span class="sd">        </span>
1086<span class="sd">        &quot;&quot;&quot;</span>
1087        <span class="n">err_other</span> <span class="o">=</span> <span class="bp">None</span>
1088        <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Data2D</span><span class="p">):</span>
1089            <span class="c"># Check that data lengths are the same</span>
1090            <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">data</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> <span class="ow">or</span> \
1091                <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">qx_data</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">qx_data</span><span class="p">)</span> <span class="ow">or</span> \
1092                <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">qy_data</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">qy_data</span><span class="p">):</span>
1093                <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Unable to perform operation: data length are not equal&quot;</span>
1094                <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
1095            <span class="c">#if len(self.data) &lt; 1:</span>
1096            <span class="c">#    msg = &quot;Incompatible data sets: I-values do not match&quot;</span>
1097            <span class="c">#    raise ValueError, msg </span>
1098            <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="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)):</span>
1099                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">qx_data</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span> <span class="o">!=</span> <span class="n">other</span><span class="o">.</span><span class="n">qx_data</span><span class="p">[</span><span class="n">ind</span><span class="p">]:</span>
1100                    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Incompatible data sets: qx-values do not match&quot;</span>
1101                    <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
1102                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">qy_data</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span> <span class="o">!=</span> <span class="n">other</span><span class="o">.</span><span class="n">qy_data</span><span class="p">[</span><span class="n">ind</span><span class="p">]:</span>
1103                    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Incompatible data sets: qy-values do not match&quot;</span>
1104                    <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>
1105                   
1106            <span class="c"># Check that the scales match</span>
1107            <span class="n">err_other</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">err_data</span>
1108            <span class="k">if</span> <span class="n">other</span><span class="o">.</span><span class="n">err_data</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> \
1109                <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">err_data</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">data</span><span class="p">)):</span>
1110                <span class="n">err_other</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="n">other</span><span class="o">.</span><span class="n">data</span><span class="p">))</span>
1111           
1112        <span class="c"># Check that we have errors, otherwise create zero vector</span>
1113        <span class="n">err</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">err_data</span>
1114        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">err_data</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> \
1115            <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">err_data</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)):</span>
1116            <span class="n">err</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="n">other</span><span class="o">.</span><span class="n">data</span><span class="p">))</span>
1117           
1118        <span class="k">return</span> <span class="n">err</span><span class="p">,</span> <span class="n">err_other</span>
1119 
1120    <span class="k">def</span> <span class="nf">_perform_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="n">operation</span><span class="p">):</span>
1121        <span class="sd">&quot;&quot;&quot;</span>
1122<span class="sd">        Perform 2D operations between data sets</span>
1123<span class="sd">        </span>
1124<span class="sd">        :param other: other data set</span>
1125<span class="sd">        :param operation: function defining the operation</span>
1126<span class="sd">        </span>
1127<span class="sd">        &quot;&quot;&quot;</span>
1128        <span class="c"># First, check the data compatibility</span>
1129        <span class="n">dy</span><span class="p">,</span> <span class="n">dy_other</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_validity_check</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
1130        <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">clone_without_data</span><span class="p">(</span><span class="n">numpy</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">))</span>
1131        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqx_data</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">dqy_data</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
1132            <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</span> <span class="o">=</span> <span class="bp">None</span>
1133            <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</span> <span class="o">=</span> <span class="bp">None</span>
1134        <span class="k">else</span><span class="p">:</span>
1135            <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</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">data</span><span class="p">))</span>
1136            <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</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">data</span><span class="p">))</span>
1137        <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="n">numpy</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)):</span>
1138            <span class="n">result</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
1139            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">err_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> \
1140                <span class="n">numpy</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="n">numpy</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">err_data</span><span class="p">):</span>
1141                <span class="n">result</span><span class="o">.</span><span class="n">err_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">err_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>   
1142            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqx_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
1143                <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
1144            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqy_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
1145                <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
1146            <span class="n">result</span><span class="o">.</span><span class="n">qx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">qx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
1147            <span class="n">result</span><span class="o">.</span><span class="n">qy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">qy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
1148            <span class="n">result</span><span class="o">.</span><span class="n">q_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">q_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
1149            <span class="n">result</span><span class="o">.</span><span class="n">mask</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">mask</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
1150           
1151            <span class="n">a</span> <span class="o">=</span> <span class="n">Uncertainty</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">dy</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
1152            <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Data2D</span><span class="p">):</span>
1153                <span class="n">b</span> <span class="o">=</span> <span class="n">Uncertainty</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">dy_other</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
1154                <span class="k">if</span> <span class="n">other</span><span class="o">.</span><span class="n">dqx_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> \
1155                        <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
1156                    <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">*=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
1157                    <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
1158                    <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">/=</span> <span class="mi">2</span>
1159                    <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>     
1160                <span class="k">if</span> <span class="n">other</span><span class="o">.</span><span class="n">dqy_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> \
1161                        <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
1162                    <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">*=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
1163                    <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span>
1164                    <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">/=</span> <span class="mi">2</span>
1165                    <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
1166            <span class="k">else</span><span class="p">:</span>
1167                <span class="n">b</span> <span class="o">=</span> <span class="n">other</span>
1168           
1169            <span class="n">output</span> <span class="o">=</span> <span class="n">operation</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
1170            <span class="n">result</span><span class="o">.</span><span class="n">data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">x</span>
1171            <span class="n">result</span><span class="o">.</span><span class="n">err_data</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">variance</span><span class="p">))</span>
1172        <span class="k">return</span> <span class="n">result</span>
1173   
1174    <span class="k">def</span> <span class="nf">_validity_check_union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
1175        <span class="sd">&quot;&quot;&quot;</span>
1176<span class="sd">        Checks that the data lengths are compatible.</span>
1177<span class="sd">        Checks that the x vectors are compatible.</span>
1178<span class="sd">        Returns errors vectors equal to original</span>
1179<span class="sd">        errors vectors if they were present or vectors</span>
1180<span class="sd">        of zeros when none was found.</span>
1181<span class="sd">        </span>
1182<span class="sd">        :param other: other data set for operation</span>
1183<span class="sd">        </span>
1184<span class="sd">        :return: bool</span>
1185<span class="sd">        </span>
1186<span class="sd">        :raise ValueError: when data types are not compatible</span>
1187<span class="sd">        </span>
1188<span class="sd">        &quot;&quot;&quot;</span>
1189        <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Data2D</span><span class="p">):</span>
1190            <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Unable to perform operation: different types of data set&quot;</span>
1191            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">,</span> <span class="n">msg</span>   
1192        <span class="k">return</span> <span class="bp">True</span>
1193   
1194    <span class="k">def</span> <span class="nf">_perform_union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
1195        <span class="sd">&quot;&quot;&quot;</span>
1196<span class="sd">        Perform 2D operations between data sets</span>
1197<span class="sd">        </span>
1198<span class="sd">        :param other: other data set</span>
1199<span class="sd">        :param operation: function defining the operation</span>
1200<span class="sd">        </span>
1201<span class="sd">        &quot;&quot;&quot;</span>
1202        <span class="c"># First, check the data compatibility</span>
1203        <span class="bp">self</span><span class="o">.</span><span class="n">_validity_check_union</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
1204        <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">clone_without_data</span><span class="p">(</span><span class="n">numpy</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span> <span class="o">+</span> \
1205                                         <span class="n">numpy</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">data</span><span class="p">))</span>
1206        <span class="n">result</span><span class="o">.</span><span class="n">xmin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmin</span>
1207        <span class="n">result</span><span class="o">.</span><span class="n">xmax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">xmax</span>
1208        <span class="n">result</span><span class="o">.</span><span class="n">ymin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymin</span>
1209        <span class="n">result</span><span class="o">.</span><span class="n">ymax</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ymax</span>
1210        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqx_data</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">dqy_data</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> \
1211                <span class="n">other</span><span class="o">.</span><span class="n">dqx_data</span> <span class="o">==</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">other</span><span class="o">.</span><span class="n">dqy_data</span> <span class="o">==</span> <span class="bp">None</span> <span class="p">:</span>
1212            <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</span> <span class="o">=</span> <span class="bp">None</span>
1213            <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</span> <span class="o">=</span> <span class="bp">None</span>
1214        <span class="k">else</span><span class="p">:</span>
1215            <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</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">data</span><span class="p">)</span> <span class="o">+</span> \
1216                                         <span class="n">numpy</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">data</span><span class="p">))</span>
1217            <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</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">data</span><span class="p">)</span> <span class="o">+</span> \
1218                                         <span class="n">numpy</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">data</span><span class="p">))</span>
1219       
1220        <span class="n">result</span><span class="o">.</span><span class="n">data</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="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
1221        <span class="n">result</span><span class="o">.</span><span class="n">qx_data</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="bp">self</span><span class="o">.</span><span class="n">qx_data</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">qx_data</span><span class="p">)</span>
1222        <span class="n">result</span><span class="o">.</span><span class="n">qy_data</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="bp">self</span><span class="o">.</span><span class="n">qy_data</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">qy_data</span><span class="p">)</span>
1223        <span class="n">result</span><span class="o">.</span><span class="n">q_data</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="bp">self</span><span class="o">.</span><span class="n">q_data</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">q_data</span><span class="p">)</span>
1224        <span class="n">result</span><span class="o">.</span><span class="n">mask</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="bp">self</span><span class="o">.</span><span class="n">mask</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">mask</span><span class="p">)</span>
1225        <span class="k">if</span> <span class="n">result</span><span class="o">.</span><span class="n">err_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
1226            <span class="n">result</span><span class="o">.</span><span class="n">err_data</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="bp">self</span><span class="o">.</span><span class="n">err_data</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">err_data</span><span class="p">)</span> 
1227        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqx_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
1228            <span class="n">result</span><span class="o">.</span><span class="n">dqx_data</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="bp">self</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">dqx_data</span><span class="p">)</span>
1229        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dqy_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
1230            <span class="n">result</span><span class="o">.</span><span class="n">dqy_data</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="bp">self</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">dqy_data</span><span class="p">)</span>
1231
1232        <span class="k">return</span> <span class="n">result</span></div>
1233</pre></div>
1234
1235          </div>
1236        </div>
1237      </div>
1238      <div class="sphinxsidebar">
1239        <div class="sphinxsidebarwrapper">
1240<div id="searchbox" style="display: none">
1241  <h3>Quick search</h3>
1242    <form class="search" action="../../../search.html" method="get">
1243      <input type="text" name="q" />
1244      <input type="submit" value="Go" />
1245      <input type="hidden" name="check_keywords" value="yes" />
1246      <input type="hidden" name="area" value="default" />
1247    </form>
1248    <p class="searchtip" style="font-size: 90%">
1249    Enter search terms or a module, class or function name.
1250    </p>
1251</div>
1252<script type="text/javascript">$('#searchbox').show(0);</script>
1253        </div>
1254      </div>
1255      <div class="clearer"></div>
1256    </div>
1257    <div class="related">
1258      <h3>Navigation</h3>
1259      <ul>
1260        <li class="right" style="margin-right: 10px">
1261          <a href="../../../genindex.html" title="General Index"
1262             >index</a></li>
1263        <li class="right" >
1264          <a href="../../../py-modindex.html" title="Python Module Index"
1265             >modules</a> |</li>
1266        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
1267          <li><a href="../../index.html" >Module code</a> &raquo;</li> 
1268      </ul>
1269    </div>
1270    <div class="footer">
1271        &copy; Copyright 2013, The SasView Project.
1272      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
1273    </div>
1274  </body>
1275</html>
Note: See TracBrowser for help on using the repository browser.