source: sasview/_modules/sas/dataloader/readers/ascii_reader.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: 51.7 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.readers.ascii_reader &mdash; SasView 3.0.0 documentation</title>
10   
11    <link rel="stylesheet" href="../../../../_static/default.css" type="text/css" />
12    <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
13   
14    <script type="text/javascript">
15      var DOCUMENTATION_OPTIONS = {
16        URL_ROOT:    '../../../../',
17        VERSION:     '3.0.0',
18        COLLAPSE_INDEX: false,
19        FILE_SUFFIX: '.html',
20        HAS_SOURCE:  true
21      };
22    </script>
23    <script type="text/javascript" src="../../../../_static/jquery.js"></script>
24    <script type="text/javascript" src="../../../../_static/underscore.js"></script>
25    <script type="text/javascript" src="../../../../_static/doctools.js"></script>
26    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
27    <link rel="top" title="SasView 3.0.0 documentation" href="../../../../index.html" />
28    <link rel="up" title="sas.dataloader.readers" href="../readers.html" /> 
29  </head>
30  <body>
31    <div class="related">
32      <h3>Navigation</h3>
33      <ul>
34        <li class="right" style="margin-right: 10px">
35          <a href="../../../../genindex.html" title="General Index"
36             accesskey="I">index</a></li>
37        <li class="right" >
38          <a href="../../../../py-modindex.html" title="Python Module Index"
39             >modules</a> |</li>
40        <li><a href="../../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
41          <li><a href="../../../index.html" >Module code</a> &raquo;</li>
42          <li><a href="../readers.html" accesskey="U">sas.dataloader.readers</a> &raquo;</li> 
43      </ul>
44    </div> 
45
46    <div class="document">
47      <div class="documentwrapper">
48        <div class="bodywrapper">
49          <div class="body">
50           
51  <h1>Source code for sas.dataloader.readers.ascii_reader</h1><div class="highlight"><pre>
52<span class="sd">&quot;&quot;&quot;</span>
53<span class="sd">    ASCII reader</span>
54<span class="sd">&quot;&quot;&quot;</span>
55<span class="c">############################################################################</span>
56<span class="c">#This software was developed by the University of Tennessee as part of the</span>
57<span class="c">#Distributed Data Analysis of Neutron Scattering Experiments (DANSE)</span>
58<span class="c">#project funded by the US National Science Foundation. </span>
59<span class="c">#If you use DANSE applications to do scientific research that leads to</span>
60<span class="c">#publication, we ask that you acknowledge the use of the software with the</span>
61<span class="c">#following sentence:</span>
62<span class="c">#This work benefited from DANSE software developed under NSF award DMR-0520547.</span>
63<span class="c">#copyright 2008, University of Tennessee</span>
64<span class="c">#############################################################################</span>
65
66
67<span class="kn">import</span> <span class="nn">numpy</span>
68<span class="kn">import</span> <span class="nn">os</span>
69<span class="kn">from</span> <span class="nn">sas.dataloader.data_info</span> <span class="kn">import</span> <span class="n">Data1D</span>
70
71<span class="c"># Check whether we have a converter available</span>
72<span class="n">has_converter</span> <span class="o">=</span> <span class="bp">True</span>
73<span class="k">try</span><span class="p">:</span>
74    <span class="kn">from</span> <span class="nn">sas.data_util.nxsunit</span> <span class="kn">import</span> <span class="n">Converter</span>
75<span class="k">except</span><span class="p">:</span>
76    <span class="n">has_converter</span> <span class="o">=</span> <span class="bp">False</span>
77<span class="n">_ZERO</span> <span class="o">=</span> <span class="mf">1e-16</span>
78
79
80<div class="viewcode-block" id="Reader"><a class="viewcode-back" href="../../../../dev/api/sas.dataloader.readers.html#sas.dataloader.readers.ascii_reader.Reader">[docs]</a><span class="k">class</span> <span class="nc">Reader</span><span class="p">:</span>
81    <span class="sd">&quot;&quot;&quot;</span>
82<span class="sd">    Class to load ascii files (2, 3 or 4 columns).</span>
83<span class="sd">    &quot;&quot;&quot;</span>
84    <span class="c">## File type</span>
85    <span class="n">type_name</span> <span class="o">=</span> <span class="s">&quot;ASCII&quot;</span>
86   
87    <span class="c">## Wildcards</span>
88    <span class="nb">type</span> <span class="o">=</span> <span class="p">[</span><span class="s">&quot;ASCII files (*.txt)|*.txt&quot;</span><span class="p">,</span>
89            <span class="s">&quot;ASCII files (*.dat)|*.dat&quot;</span><span class="p">,</span>
90            <span class="s">&quot;ASCII files (*.abs)|*.abs&quot;</span><span class="p">,</span>
91            <span class="s">&quot;CSV files (*.csv)|*.csv&quot;</span><span class="p">]</span>
92    <span class="c">## List of allowed extensions</span>
93    <span class="n">ext</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;.txt&#39;</span><span class="p">,</span> <span class="s">&#39;.TXT&#39;</span><span class="p">,</span> <span class="s">&#39;.dat&#39;</span><span class="p">,</span> <span class="s">&#39;.DAT&#39;</span><span class="p">,</span> <span class="s">&#39;.abs&#39;</span><span class="p">,</span> <span class="s">&#39;.ABS&#39;</span><span class="p">,</span> <span class="s">&#39;csv&#39;</span><span class="p">,</span> <span class="s">&#39;CSV&#39;</span><span class="p">]</span>
94   
95    <span class="c">## Flag to bypass extension check</span>
96    <span class="n">allow_all</span> <span class="o">=</span> <span class="bp">True</span>
97   
98<div class="viewcode-block" id="Reader.read"><a class="viewcode-back" href="../../../../dev/api/sas.dataloader.readers.html#sas.dataloader.readers.ascii_reader.Reader.read">[docs]</a>    <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
99        <span class="sd">&quot;&quot;&quot;</span>
100<span class="sd">        Load data file</span>
101<span class="sd">        </span>
102<span class="sd">        :param path: file path</span>
103<span class="sd">        </span>
104<span class="sd">        :return: Data1D object, or None</span>
105<span class="sd">        </span>
106<span class="sd">        :raise RuntimeError: when the file can&#39;t be opened</span>
107<span class="sd">        :raise ValueError: when the length of the data vectors are inconsistent</span>
108<span class="sd">        &quot;&quot;&quot;</span>
109        <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
110            <span class="n">basename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
111            <span class="n">_</span><span class="p">,</span> <span class="n">extension</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">basename</span><span class="p">)</span>
112            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">allow_all</span> <span class="ow">or</span> <span class="n">extension</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ext</span><span class="p">:</span>
113                <span class="k">try</span><span class="p">:</span>
114                    <span class="c"># Read in binary mode since GRASP frequently has no-ascii</span>
115                    <span class="c"># characters that brakes the open operation</span>
116                    <span class="n">input_f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="s">&#39;rb&#39;</span><span class="p">)</span>
117                <span class="k">except</span><span class="p">:</span>
118                    <span class="k">raise</span>  <span class="ne">RuntimeError</span><span class="p">,</span> <span class="s">&quot;ascii_reader: cannot open </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">path</span>
119                <span class="n">buff</span> <span class="o">=</span> <span class="n">input_f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
120                <span class="n">lines</span> <span class="o">=</span> <span class="n">buff</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
121               
122                <span class="c">#Jae could not find python universal line spliter:</span>
123                <span class="c">#keep the below for now</span>
124                <span class="c"># some ascii data has \r line separator,</span>
125                <span class="c"># try it when the data is on only one long line</span>
126                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span> <span class="p">:</span>
127                    <span class="n">lines</span> <span class="o">=</span> <span class="n">buff</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\r</span><span class="s">&#39;</span><span class="p">)</span>
128                 
129                <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="mi">0</span><span class="p">)</span>
130                <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="mi">0</span><span class="p">)</span>
131                <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="mi">0</span><span class="p">)</span>
132                <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="mi">0</span><span class="p">)</span>
133               
134               <span class="c">#temp. space to sort data</span>
135                <span class="n">tx</span>  <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
136                <span class="n">ty</span>  <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
137                <span class="n">tdy</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
138                <span class="n">tdx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
139               
140                <span class="n">output</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">dy</span><span class="o">=</span><span class="n">dy</span><span class="p">,</span> <span class="n">dx</span><span class="o">=</span><span class="n">dx</span><span class="p">)</span>
141                <span class="bp">self</span><span class="o">.</span><span class="n">filename</span> <span class="o">=</span> <span class="n">output</span><span class="o">.</span><span class="n">filename</span> <span class="o">=</span> <span class="n">basename</span>
142           
143                <span class="n">data_conv_q</span> <span class="o">=</span> <span class="bp">None</span>
144                <span class="n">data_conv_i</span> <span class="o">=</span> <span class="bp">None</span>
145               
146                <span class="k">if</span> <span class="n">has_converter</span> <span class="o">==</span> <span class="bp">True</span> <span class="ow">and</span> <span class="n">output</span><span class="o">.</span><span class="n">x_unit</span> <span class="o">!=</span> <span class="s">&#39;1/A&#39;</span><span class="p">:</span>
147                    <span class="n">data_conv_q</span> <span class="o">=</span> <span class="n">Converter</span><span class="p">(</span><span class="s">&#39;1/A&#39;</span><span class="p">)</span>
148                    <span class="c"># Test it</span>
149                    <span class="n">data_conv_q</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">output</span><span class="o">.</span><span class="n">x_unit</span><span class="p">)</span>
150                   
151                <span class="k">if</span> <span class="n">has_converter</span> <span class="o">==</span> <span class="bp">True</span> <span class="ow">and</span> <span class="n">output</span><span class="o">.</span><span class="n">y_unit</span> <span class="o">!=</span> <span class="s">&#39;1/cm&#39;</span><span class="p">:</span>
152                    <span class="n">data_conv_i</span> <span class="o">=</span> <span class="n">Converter</span><span class="p">(</span><span class="s">&#39;1/cm&#39;</span><span class="p">)</span>
153                    <span class="c"># Test it</span>
154                    <span class="n">data_conv_i</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">output</span><span class="o">.</span><span class="n">y_unit</span><span class="p">)</span>
155           
156                <span class="c"># The first good line of data will define whether</span>
157                <span class="c"># we have 2-column or 3-column ascii</span>
158                <span class="n">has_error_dx</span> <span class="o">=</span> <span class="bp">None</span>
159                <span class="n">has_error_dy</span> <span class="o">=</span> <span class="bp">None</span>
160               
161                <span class="c">#Initialize counters for data lines and header lines.</span>
162                <span class="n">is_data</span> <span class="o">=</span> <span class="bp">False</span>  <span class="c"># Has more than 5 lines</span>
163                <span class="c"># More than &quot;5&quot; lines of data is considered as actual</span>
164                <span class="c"># data unless that is the only data</span>
165                <span class="n">mum_data_lines</span> <span class="o">=</span> <span class="mi">5</span>
166                <span class="c"># To count # of current data candidate lines</span>
167                <span class="n">i</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
168                <span class="c"># To count total # of previous data candidate lines</span>
169                <span class="n">i1</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
170                <span class="c"># To count # of header lines</span>
171                <span class="n">j</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
172                <span class="c"># Helps to count # of header lines</span>
173                <span class="n">j1</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
174                <span class="c">#minimum required number of columns of data; ( &lt;= 4).</span>
175                <span class="n">lentoks</span> <span class="o">=</span> <span class="mi">2</span>
176                <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
177                    <span class="c"># Initial try for CSV (split on ,)</span>
178                    <span class="n">toks</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;,&#39;</span><span class="p">)</span>
179                    <span class="c"># Now try SCSV (split on ;)</span>
180                    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">:</span>
181                        <span class="n">toks</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;;&#39;</span><span class="p">)</span>
182                    <span class="c"># Now go for whitespace                    </span>
183                    <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">:</span>
184                        <span class="n">toks</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
185                    <span class="k">try</span><span class="p">:</span>
186                        <span class="c">#Make sure that all columns are numbers.</span>
187                        <span class="k">for</span> <span class="n">colnum</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">)):</span>
188                            <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="n">colnum</span><span class="p">])</span>
189                           
190                        <span class="n">_x</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
191                        <span class="n">_y</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
192                       
193                        <span class="c">#Reset the header line counters</span>
194                        <span class="k">if</span> <span class="n">j</span> <span class="o">==</span> <span class="n">j1</span><span class="p">:</span>
195                            <span class="n">j</span> <span class="o">=</span> <span class="mi">0</span>
196                            <span class="n">j1</span> <span class="o">=</span> <span class="mi">0</span>
197                           
198                        <span class="k">if</span> <span class="n">i</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
199                            <span class="n">is_data</span> <span class="o">=</span> <span class="bp">True</span>
200                       
201                        <span class="k">if</span> <span class="n">data_conv_q</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
202                            <span class="n">_x</span> <span class="o">=</span> <span class="n">data_conv_q</span><span class="p">(</span><span class="n">_x</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="n">output</span><span class="o">.</span><span class="n">x_unit</span><span class="p">)</span>
203                           
204                        <span class="k">if</span> <span class="n">data_conv_i</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
205                            <span class="n">_y</span> <span class="o">=</span> <span class="n">data_conv_i</span><span class="p">(</span><span class="n">_y</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="n">output</span><span class="o">.</span><span class="n">y_unit</span><span class="p">)</span>
206                       
207                        <span class="c"># If we have an extra token, check</span>
208                        <span class="c"># whether it can be interpreted as a</span>
209                        <span class="c"># third column.</span>
210                        <span class="n">_dy</span> <span class="o">=</span> <span class="bp">None</span>
211                        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
212                            <span class="k">try</span><span class="p">:</span>
213                                <span class="n">_dy</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
214                               
215                                <span class="k">if</span> <span class="n">data_conv_i</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
216                                    <span class="n">_dy</span> <span class="o">=</span> <span class="n">data_conv_i</span><span class="p">(</span><span class="n">_dy</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="n">output</span><span class="o">.</span><span class="n">y_unit</span><span class="p">)</span>
217                               
218                            <span class="k">except</span><span class="p">:</span>
219                                <span class="c"># The third column is not a float, skip it.</span>
220                                <span class="k">pass</span>
221                           
222                        <span class="c"># If we haven&#39;t set the 3rd column</span>
223                        <span class="c"># flag, set it now.</span>
224                        <span class="k">if</span> <span class="n">has_error_dy</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
225                            <span class="n">has_error_dy</span> <span class="o">=</span> <span class="bp">False</span> <span class="k">if</span> <span class="n">_dy</span> <span class="o">==</span> <span class="bp">None</span> <span class="k">else</span> <span class="bp">True</span>
226                           
227                        <span class="c">#Check for dx</span>
228                        <span class="n">_dx</span> <span class="o">=</span> <span class="bp">None</span>
229                        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">3</span><span class="p">:</span>
230                            <span class="k">try</span><span class="p">:</span>
231                                <span class="n">_dx</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">toks</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span>
232                               
233                                <span class="k">if</span> <span class="n">data_conv_i</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
234                                    <span class="n">_dx</span> <span class="o">=</span> <span class="n">data_conv_i</span><span class="p">(</span><span class="n">_dx</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="n">output</span><span class="o">.</span><span class="n">x_unit</span><span class="p">)</span>
235                               
236                            <span class="k">except</span><span class="p">:</span>
237                                <span class="c"># The 4th column is not a float, skip it.</span>
238                                <span class="k">pass</span>
239                           
240                        <span class="c"># If we haven&#39;t set the 3rd column</span>
241                        <span class="c"># flag, set it now.</span>
242                        <span class="k">if</span> <span class="n">has_error_dx</span> <span class="o">==</span> <span class="bp">None</span><span class="p">:</span>
243                            <span class="n">has_error_dx</span> <span class="o">=</span> <span class="bp">False</span> <span class="k">if</span> <span class="n">_dx</span> <span class="o">==</span> <span class="bp">None</span> <span class="k">else</span> <span class="bp">True</span>
244                       
245                        <span class="c">#After talked with PB, we decided to take care of only</span>
246                        <span class="c"># 4 columns of data for now.</span>
247                        <span class="c">#number of columns in the current line</span>
248                        <span class="c">#To remember the # of columns in the current</span>
249                        <span class="c">#line of data</span>
250                        <span class="n">new_lentoks</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">)</span>
251                       
252                        <span class="c">#If the previous columns not equal to the current,</span>
253                        <span class="c">#mark the previous as non-data and reset the dependents.</span>
254                        <span class="k">if</span> <span class="n">lentoks</span> <span class="o">!=</span> <span class="n">new_lentoks</span><span class="p">:</span>
255                            <span class="k">if</span> <span class="n">is_data</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
256                                <span class="k">break</span>
257                            <span class="k">else</span><span class="p">:</span>
258                                <span class="n">i</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
259                                <span class="n">i1</span> <span class="o">=</span> <span class="mi">0</span>
260                                <span class="n">j</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
261                                <span class="n">j1</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
262                           
263                        <span class="c">#Delete the previously stored lines of data candidates</span>
264                        <span class="c"># if is not data.</span>
265                        <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&lt;</span> <span class="n">i1</span> <span class="o">&lt;</span> <span class="n">mum_data_lines</span> <span class="ow">and</span> \
266                            <span class="n">is_data</span> <span class="o">==</span> <span class="bp">False</span><span class="p">:</span>
267                            <span class="k">try</span><span class="p">:</span>
268                                <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="mi">0</span><span class="p">)</span>
269                                <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="mi">0</span><span class="p">)</span>
270                            <span class="k">except</span><span class="p">:</span>
271                                <span class="k">pass</span>
272                           
273                        <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="n">x</span><span class="p">,</span> <span class="n">_x</span><span class="p">)</span> 
274                        <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="n">y</span><span class="p">,</span> <span class="n">_y</span><span class="p">)</span>
275                       
276                        <span class="k">if</span> <span class="n">has_error_dy</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
277                            <span class="c">#Delete the previously stored lines of</span>
278                            <span class="c"># data candidates if is not data.</span>
279                            <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&lt;</span> <span class="n">i1</span> <span class="o">&lt;</span> <span class="n">mum_data_lines</span> <span class="ow">and</span> \
280                                <span class="n">is_data</span> <span class="o">==</span> <span class="bp">False</span><span class="p">:</span>
281                                <span class="k">try</span><span class="p">:</span>
282                                    <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="mi">0</span><span class="p">)</span>
283                                <span class="k">except</span><span class="p">:</span>
284                                    <span class="k">pass</span>
285                            <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="n">dy</span><span class="p">,</span> <span class="n">_dy</span><span class="p">)</span>
286                           
287                        <span class="k">if</span> <span class="n">has_error_dx</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
288                            <span class="c">#Delete the previously stored lines of</span>
289                            <span class="c"># data candidates if is not data.</span>
290                            <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&lt;</span> <span class="n">i1</span> <span class="o">&lt;</span> <span class="n">mum_data_lines</span> <span class="ow">and</span> \
291                                <span class="n">is_data</span> <span class="o">==</span> <span class="bp">False</span><span class="p">:</span>
292                                <span class="k">try</span><span class="p">:</span>
293                                    <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="mi">0</span><span class="p">)</span>
294                                <span class="k">except</span><span class="p">:</span>
295                                    <span class="k">pass</span>
296                            <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="n">dx</span><span class="p">,</span> <span class="n">_dx</span><span class="p">)</span>
297                           
298                        <span class="c">#Same for temp.</span>
299                        <span class="c">#Delete the previously stored lines of data candidates</span>
300                        <span class="c"># if is not data.</span>
301                        <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&lt;</span> <span class="n">i1</span> <span class="o">&lt;</span> <span class="n">mum_data_lines</span> <span class="ow">and</span>\
302                            <span class="n">is_data</span> <span class="o">==</span> <span class="bp">False</span><span class="p">:</span>
303                            <span class="k">try</span><span class="p">:</span>
304                                <span class="n">tx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
305                                <span class="n">ty</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
306                            <span class="k">except</span><span class="p">:</span>
307                                <span class="k">pass</span>
308
309                        <span class="n">tx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tx</span><span class="p">,</span> <span class="n">_x</span><span class="p">)</span>
310                        <span class="n">ty</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ty</span><span class="p">,</span> <span class="n">_y</span><span class="p">)</span>
311                       
312                        <span class="k">if</span> <span class="n">has_error_dy</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
313                            <span class="c">#Delete the previously stored lines of</span>
314                            <span class="c"># data candidates if is not data.</span>
315                            <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&lt;</span> <span class="n">i1</span> <span class="o">&lt;</span> <span class="n">mum_data_lines</span> <span class="ow">and</span> \
316                                <span class="n">is_data</span> <span class="o">==</span> <span class="bp">False</span><span class="p">:</span>
317                                <span class="k">try</span><span class="p">:</span>
318                                    <span class="n">tdy</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
319                                <span class="k">except</span><span class="p">:</span>
320                                    <span class="k">pass</span>
321                            <span class="n">tdy</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tdy</span><span class="p">,</span> <span class="n">_dy</span><span class="p">)</span>
322                        <span class="k">if</span> <span class="n">has_error_dx</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
323                            <span class="c">#Delete the previously stored lines of</span>
324                            <span class="c"># data candidates if is not data.</span>
325                            <span class="k">if</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">and</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&lt;</span> <span class="n">i1</span> <span class="o">&lt;</span> <span class="n">mum_data_lines</span> <span class="ow">and</span> \
326                                <span class="n">is_data</span> <span class="o">==</span> <span class="bp">False</span><span class="p">:</span>
327                                <span class="k">try</span><span class="p">:</span>
328                                    <span class="n">tdx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
329                                <span class="k">except</span><span class="p">:</span>
330                                    <span class="k">pass</span>
331                            <span class="n">tdx</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tdx</span><span class="p">,</span> <span class="n">_dx</span><span class="p">)</span>
332
333                        <span class="c">#reset i1 and flag lentoks for the next</span>
334                        <span class="k">if</span> <span class="n">lentoks</span> <span class="o">&lt;</span> <span class="n">new_lentoks</span><span class="p">:</span>
335                            <span class="k">if</span> <span class="n">is_data</span> <span class="o">==</span> <span class="bp">False</span><span class="p">:</span>
336                                <span class="n">i1</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
337                        <span class="c">#To remember the # of columns on the current line</span>
338                        <span class="c"># for the next line of data</span>
339                        <span class="n">lentoks</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">toks</span><span class="p">)</span>
340                       
341                        <span class="c">#Reset # of header lines and counts #</span>
342                        <span class="c"># of data candidate lines</span>
343                        <span class="k">if</span> <span class="n">j</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">j1</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
344                            <span class="n">i1</span> <span class="o">=</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">1</span>
345                        <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
346                    <span class="k">except</span><span class="p">:</span>
347
348                        <span class="c"># It is data and meet non - number, then stop reading</span>
349                        <span class="k">if</span> <span class="n">is_data</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
350                            <span class="k">break</span>
351                        <span class="n">lentoks</span> <span class="o">=</span> <span class="mi">2</span>
352                        <span class="c">#Counting # of header lines</span>
353                        <span class="n">j</span> <span class="o">+=</span> <span class="mi">1</span>
354                        <span class="k">if</span> <span class="n">j</span> <span class="o">==</span> <span class="n">j1</span> <span class="o">+</span> <span class="mi">1</span><span class="p">:</span>
355                            <span class="n">j1</span> <span class="o">=</span> <span class="n">j</span>
356                        <span class="k">else</span><span class="p">:</span>
357                            <span class="n">j</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
358                        <span class="c">#Reset # of lines of data candidates</span>
359                        <span class="n">i</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
360                       
361                        <span class="c"># Couldn&#39;t parse this line, skip it</span>
362                        <span class="k">pass</span>
363                   
364                <span class="n">input_f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
365                <span class="c"># Sanity check</span>
366                <span class="k">if</span> <span class="n">has_error_dy</span> <span class="o">==</span> <span class="bp">True</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</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">dy</span><span class="p">):</span>
367                    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;ascii_reader: y and dy have different length&quot;</span>
368                    <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="n">msg</span>
369                <span class="k">if</span> <span class="n">has_error_dx</span> <span class="o">==</span> <span class="bp">True</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</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">dx</span><span class="p">):</span>
370                    <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;ascii_reader: y and dy have different length&quot;</span>
371                    <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="n">msg</span>
372                <span class="c"># If the data length is zero, consider this as</span>
373                <span class="c"># though we were not able to read the file.</span>
374                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
375                    <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="s">&quot;ascii_reader: could not load file&quot;</span>
376               
377                <span class="c">#Let&#39;s re-order the data to make cal.</span>
378                <span class="c"># curve look better some cases</span>
379                <span class="n">ind</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">lexsort</span><span class="p">((</span><span class="n">ty</span><span class="p">,</span> <span class="n">tx</span><span class="p">))</span>
380                <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">ind</span><span class="p">:</span>
381                    <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">tx</span><span class="p">[</span><span class="n">ind</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span>
382                    <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">ty</span><span class="p">[</span><span class="n">ind</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span>
383                    <span class="k">if</span> <span class="n">has_error_dy</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
384                        <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">tdy</span><span class="p">[</span><span class="n">ind</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span>
385                    <span class="k">if</span> <span class="n">has_error_dx</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
386                        <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">tdx</span><span class="p">[</span><span class="n">ind</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span>
387                <span class="c"># Zeros in dx, dy</span>
388                <span class="k">if</span> <span class="n">has_error_dx</span><span class="p">:</span>
389                    <span class="n">dx</span><span class="p">[</span><span class="n">dx</span> <span class="o">==</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">_ZERO</span>
390                <span class="k">if</span> <span class="n">has_error_dy</span><span class="p">:</span>
391                    <span class="n">dy</span><span class="p">[</span><span class="n">dy</span> <span class="o">==</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">_ZERO</span>
392                <span class="c">#Data</span>
393                <span class="n">output</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="n">x</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">]</span>
394                <span class="n">output</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="n">y</span><span class="p">[</span><span class="n">x</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">]</span>
395                <span class="n">output</span><span class="o">.</span><span class="n">dy</span> <span class="o">=</span> <span class="n">dy</span><span class="p">[</span><span class="n">x</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">has_error_dy</span> <span class="o">==</span> <span class="bp">True</span>\
396                    <span class="k">else</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">output</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
397                <span class="n">output</span><span class="o">.</span><span class="n">dx</span> <span class="o">=</span> <span class="n">dx</span><span class="p">[</span><span class="n">x</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">has_error_dx</span> <span class="o">==</span> <span class="bp">True</span>\
398                    <span class="k">else</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">output</span><span class="o">.</span><span class="n">x</span><span class="p">))</span>
399                               
400                <span class="k">if</span> <span class="n">data_conv_q</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
401                    <span class="n">output</span><span class="o">.</span><span class="n">xaxis</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">rm{Q}&quot;</span><span class="p">,</span> <span class="n">output</span><span class="o">.</span><span class="n">x_unit</span><span class="p">)</span>
402                <span class="k">else</span><span class="p">:</span>
403                    <span class="n">output</span><span class="o">.</span><span class="n">xaxis</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">rm{Q}&quot;</span><span class="p">,</span> <span class="s">&#39;A^{-1}&#39;</span><span class="p">)</span>
404                <span class="k">if</span> <span class="n">data_conv_i</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
405                    <span class="n">output</span><span class="o">.</span><span class="n">yaxis</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">rm{Intensity}&quot;</span><span class="p">,</span> <span class="n">output</span><span class="o">.</span><span class="n">y_unit</span><span class="p">)</span>
406                <span class="k">else</span><span class="p">:</span>
407                    <span class="n">output</span><span class="o">.</span><span class="n">yaxis</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">rm{Intensity}&quot;</span><span class="p">,</span> <span class="s">&quot;cm^{-1}&quot;</span><span class="p">)</span>
408                   
409                <span class="c"># Store loading process information</span>
410                <span class="n">output</span><span class="o">.</span><span class="n">meta_data</span><span class="p">[</span><span class="s">&#39;loader&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type_name</span>
411                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">x</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
412                    <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> is empty&quot;</span> <span class="o">%</span> <span class="n">path</span>
413                <span class="k">return</span> <span class="n">output</span>
414           
415        <span class="k">else</span><span class="p">:</span>
416            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">,</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> is not a file&quot;</span> <span class="o">%</span> <span class="n">path</span>
417        <span class="k">return</span> <span class="bp">None</span></div></div>
418</pre></div>
419
420          </div>
421        </div>
422      </div>
423      <div class="sphinxsidebar">
424        <div class="sphinxsidebarwrapper">
425<div id="searchbox" style="display: none">
426  <h3>Quick search</h3>
427    <form class="search" action="../../../../search.html" method="get">
428      <input type="text" name="q" />
429      <input type="submit" value="Go" />
430      <input type="hidden" name="check_keywords" value="yes" />
431      <input type="hidden" name="area" value="default" />
432    </form>
433    <p class="searchtip" style="font-size: 90%">
434    Enter search terms or a module, class or function name.
435    </p>
436</div>
437<script type="text/javascript">$('#searchbox').show(0);</script>
438        </div>
439      </div>
440      <div class="clearer"></div>
441    </div>
442    <div class="related">
443      <h3>Navigation</h3>
444      <ul>
445        <li class="right" style="margin-right: 10px">
446          <a href="../../../../genindex.html" title="General Index"
447             >index</a></li>
448        <li class="right" >
449          <a href="../../../../py-modindex.html" title="Python Module Index"
450             >modules</a> |</li>
451        <li><a href="../../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
452          <li><a href="../../../index.html" >Module code</a> &raquo;</li>
453          <li><a href="../readers.html" >sas.dataloader.readers</a> &raquo;</li> 
454      </ul>
455    </div>
456    <div class="footer">
457        &copy; Copyright 2013, The SasView Project.
458      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
459    </div>
460  </body>
461</html>
Note: See TracBrowser for help on using the repository browser.