source: flex_extract.git/for_developers/SphinxDoc/_build/html/_modules/Control.html @ 25b14be

ctbtodev
Last change on this file since 25b14be was 25b14be, checked in by Anne Philipp <anne.philipp@…>, 6 years ago

changed whole tree structure of flex_extract to have better overview

  • Property mode set to 100644
File size: 36.2 KB
Line 
1
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
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    <title>Control &#8212; flex_extract_test 7.1 documentation</title>
9    <link rel="stylesheet" href="../_static/classic.css" type="text/css" />
10    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
11    <script type="text/javascript">
12      var DOCUMENTATION_OPTIONS = {
13        URL_ROOT:    '../',
14        VERSION:     '7.1',
15        COLLAPSE_INDEX: false,
16        FILE_SUFFIX: '.html',
17        HAS_SOURCE:  true,
18        SOURCELINK_SUFFIX: '.txt'
19      };
20    </script>
21    <script type="text/javascript" src="../_static/jquery.js"></script>
22    <script type="text/javascript" src="../_static/underscore.js"></script>
23    <script type="text/javascript" src="../_static/doctools.js"></script>
24    <link rel="index" title="Index" href="../genindex.html" />
25    <link rel="search" title="Search" href="../search.html" /> 
26  </head>
27  <body>
28    <div class="related" role="navigation" aria-label="related navigation">
29      <h3>Navigation</h3>
30      <ul>
31        <li class="right" style="margin-right: 10px">
32          <a href="../genindex.html" title="General Index"
33             accesskey="I">index</a></li>
34        <li class="right" >
35          <a href="../py-modindex.html" title="Python Module Index"
36             >modules</a> |</li>
37        <li class="nav-item nav-item-0"><a href="../index.html">flex_extract_test 7.1 documentation</a> &#187;</li>
38          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Module code</a> &#187;</li> 
39      </ul>
40    </div> 
41
42    <div class="document">
43      <div class="documentwrapper">
44        <div class="bodywrapper">
45          <div class="body" role="main">
46           
47  <h1>Source code for Control</h1><div class="highlight"><pre>
48<span></span><span class="ch">#!/usr/bin/env python</span>
49<span class="c1"># -*- coding: utf-8 -*-</span>
50<span class="c1">#************************************************************************</span>
51<span class="c1"># TODO AP</span>
52<span class="c1"># - write a test class</span>
53<span class="c1"># - check documentation</span>
54<span class="c1">#************************************************************************</span>
55<span class="sd">&quot;&quot;&quot;</span>
56<span class="sd">@Author: Leopold Haimberger (University of Vienna)</span>
57
58<span class="sd">@Date: November 2015</span>
59
60<span class="sd">@ChangeHistory:</span>
61<span class="sd">   February 2018 - Anne Philipp (University of Vienna):</span>
62<span class="sd">        - applied PEP8 style guide</span>
63<span class="sd">        - added documentation</span>
64<span class="sd">        - applied some minor modifications in programming style/structure</span>
65<span class="sd">        - moved Control class in a file for its own</span>
66
67<span class="sd">@License:</span>
68<span class="sd">    (C) Copyright 2015-2018.</span>
69
70<span class="sd">    This software is licensed under the terms of the Apache Licence Version 2.0</span>
71<span class="sd">    which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span>
72
73<span class="sd">@Requirements:</span>
74<span class="sd">    A standard python 2.6 or 2.7 installation</span>
75
76<span class="sd">@Description:</span>
77<span class="sd">    The Control files are the steering part of the FLEXPART extraction</span>
78<span class="sd">    software. All necessary parameters needed to retrieve the data fields</span>
79<span class="sd">    from the MARS archive for driving FLEXPART are set in a Control file.</span>
80<span class="sd">    Some specific parameters like the start and end dates can be overwritten</span>
81<span class="sd">    by the command line parameters, but in generel all parameters needed</span>
82<span class="sd">    for a complete set of fields for FLEXPART can be set in the Control files.</span>
83
84<span class="sd">&quot;&quot;&quot;</span>
85<span class="c1"># ------------------------------------------------------------------------------</span>
86<span class="c1"># MODULES</span>
87<span class="c1"># ------------------------------------------------------------------------------</span>
88<span class="kn">import</span> <span class="nn">os</span>
89<span class="kn">import</span> <span class="nn">inspect</span>
90<span class="kn">import</span> <span class="nn">Tools</span>
91<span class="c1"># ------------------------------------------------------------------------------</span>
92<span class="c1"># CLASS</span>
93<span class="c1"># ------------------------------------------------------------------------------</span>
94<span class="k">class</span> <span class="nc">Control</span><span class="p">:</span>
95    <span class="sd">&#39;&#39;&#39;</span>
96<span class="sd">    Class containing the information of the ECMWFDATA control file.</span>
97
98<span class="sd">    Contains all the parameters of control files, which are e.g.:</span>
99<span class="sd">    DAY1(start_date), DAY2(end_date), DTIME, MAXSTEP, TYPE, TIME,</span>
100<span class="sd">    STEP, CLASS(marsclass), STREAM, NUMBER, EXPVER, GRID, LEFT,</span>
101<span class="sd">    LOWER, UPPER, RIGHT, LEVEL, LEVELIST, RESOL, GAUSS, ACCURACY,</span>
102<span class="sd">    OMEGA, OMEGADIFF, ETA, ETADIFF, DPDETA, SMOOTH, FORMAT,</span>
103<span class="sd">    ADDPAR, WRF, CWC, PREFIX, ECSTORAGE, ECTRANS, ECFSDIR,</span>
104<span class="sd">    MAILOPS, MAILFAIL, GRIB2FLEXPART, FLEXPARTDIR,</span>
105<span class="sd">    BASETIME, DATE_CHUNK, DEBUG, INPUTDIR, OUTPUTDIR, FLEXPART_ROOT_SCRIPTS</span>
106
107<span class="sd">    For more information about format and content of the parameter</span>
108<span class="sd">    see documentation.</span>
109
110<span class="sd">    &#39;&#39;&#39;</span>
111
112    <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">filename</span><span class="p">):</span>
113        <span class="sd">&#39;&#39;&#39;</span>
114<span class="sd">        @Description:</span>
115<span class="sd">            Initialises the instance of Control class and defines and</span>
116<span class="sd">            assign all controlfile variables. Set default values if</span>
117<span class="sd">            parameter was not in CONTROL file.</span>
118
119<span class="sd">        @Input:</span>
120<span class="sd">            self: instance of Control class</span>
121<span class="sd">                Description see class documentation.</span>
122
123<span class="sd">            filename: string</span>
124<span class="sd">                Name of control file.</span>
125
126<span class="sd">        @Return:</span>
127<span class="sd">            &lt;nothing&gt;</span>
128<span class="sd">        &#39;&#39;&#39;</span>
129
130        <span class="c1"># read whole CONTROL file</span>
131        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
132            <span class="n">fdata</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
133
134        <span class="c1"># go through every line and store parameter</span>
135        <span class="c1"># as class variable</span>
136        <span class="k">for</span> <span class="n">ldata</span> <span class="ow">in</span> <span class="n">fdata</span><span class="p">:</span>
137            <span class="n">data</span> <span class="o">=</span> <span class="n">ldata</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
138            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
139                <span class="k">if</span> <span class="s1">&#39;m_&#39;</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">():</span>
140                    <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">:]</span>
141                <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;class&#39;</span><span class="p">:</span>
142                    <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;marsclass&#39;</span>
143                <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;day1&#39;</span><span class="p">:</span>
144                    <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;start_date&#39;</span>
145                <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;day2&#39;</span><span class="p">:</span>
146                    <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;end_date&#39;</span>
147                <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">==</span> <span class="s1">&#39;addpar&#39;</span><span class="p">:</span>
148                    <span class="k">if</span> <span class="s1">&#39;/&#39;</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
149                        <span class="c1"># remove leading &#39;/&#39; sign from addpar content</span>
150                        <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">&#39;/&#39;</span><span class="p">:</span>
151                            <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">:]</span>
152                        <span class="n">dd</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span>
153                        <span class="n">data</span> <span class="o">=</span> <span class="p">[</span><span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span>
154                        <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">dd</span><span class="p">:</span>
155                            <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">d</span><span class="p">)</span>
156                    <span class="k">pass</span>
157                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
158                    <span class="k">if</span> <span class="s1">&#39;$&#39;</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
159                        <span class="nb">setattr</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="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
160                        <span class="k">while</span> <span class="s1">&#39;$&#39;</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
161                            <span class="n">i</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="s1">&#39;$&#39;</span><span class="p">)</span>
162                            <span class="n">j</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">&#39;{&#39;</span><span class="p">)</span>
163                            <span class="n">k</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s1">&#39;}&#39;</span><span class="p">)</span>
164                            <span class="n">var</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">])</span>
165                            <span class="k">if</span> <span class="n">var</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
166                                <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][:</span><span class="n">i</span><span class="p">]</span> <span class="o">+</span> <span class="n">var</span> <span class="o">+</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">k</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span>
167                            <span class="k">else</span><span class="p">:</span>
168                                <span class="n">Tools</span><span class="o">.</span><span class="n">myerror</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span>
169                                              <span class="s1">&#39;Could not find variable &#39;</span> <span class="o">+</span>
170                                              <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">]</span> <span class="o">+</span>
171                                              <span class="s1">&#39; while reading &#39;</span> <span class="o">+</span>
172                                              <span class="n">filename</span><span class="p">)</span>
173                        <span class="nb">setattr</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="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">+</span> <span class="s1">&#39;_expanded&#39;</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
174                    <span class="k">else</span><span class="p">:</span>
175                        <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s1">&#39;none&#39;</span><span class="p">:</span>
176                            <span class="nb">setattr</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="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
177                        <span class="k">else</span><span class="p">:</span>
178                            <span class="nb">setattr</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="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="kc">None</span><span class="p">)</span>
179                <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">2</span><span class="p">:</span>
180                    <span class="nb">setattr</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="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">(),</span> <span class="p">(</span><span class="n">data</span><span class="p">[</span><span class="mi">1</span><span class="p">:]))</span>
181            <span class="k">else</span><span class="p">:</span>
182                <span class="k">pass</span>
183
184        <span class="c1"># check a couple of necessary attributes if they contain values</span>
185        <span class="c1"># otherwise set default values</span>
186        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;start_date&#39;</span><span class="p">):</span>
187            <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="kc">None</span>
188        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;end_date&#39;</span><span class="p">):</span>
189            <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span>
190        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;accuracy&#39;</span><span class="p">):</span>
191            <span class="bp">self</span><span class="o">.</span><span class="n">accuracy</span> <span class="o">=</span> <span class="mi">24</span>
192        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;omega&#39;</span><span class="p">):</span>
193            <span class="bp">self</span><span class="o">.</span><span class="n">omega</span> <span class="o">=</span> <span class="s1">&#39;0&#39;</span>
194        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;cwc&#39;</span><span class="p">):</span>
195            <span class="bp">self</span><span class="o">.</span><span class="n">cwc</span> <span class="o">=</span> <span class="s1">&#39;0&#39;</span>
196        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;omegadiff&#39;</span><span class="p">):</span>
197            <span class="bp">self</span><span class="o">.</span><span class="n">omegadiff</span> <span class="o">=</span> <span class="s1">&#39;0&#39;</span>
198        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;etadiff&#39;</span><span class="p">):</span>
199            <span class="bp">self</span><span class="o">.</span><span class="n">etadiff</span> <span class="o">=</span> <span class="s1">&#39;0&#39;</span>
200        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;levelist&#39;</span><span class="p">):</span>
201            <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;level&#39;</span><span class="p">):</span>
202                <span class="nb">print</span> <span class="s1">&#39;Warning: neither levelist nor level </span><span class="se">\</span>
203<span class="s1">                       specified in CONTROL file&#39;</span>
204            <span class="k">else</span><span class="p">:</span>
205                <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span> <span class="o">=</span> <span class="s1">&#39;1/to/&#39;</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">level</span>
206        <span class="k">else</span><span class="p">:</span>
207            <span class="k">if</span> <span class="s1">&#39;to&#39;</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="p">:</span>
208                <span class="bp">self</span><span class="o">.</span><span class="n">level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)[</span><span class="mi">2</span><span class="p">]</span>
209            <span class="k">else</span><span class="p">:</span>
210                <span class="bp">self</span><span class="o">.</span><span class="n">level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">levelist</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
211
212        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;maxstep&#39;</span><span class="p">):</span>
213            <span class="c1"># find out maximum step</span>
214            <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="mi">0</span>
215            <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">step</span><span class="p">:</span>
216                <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">:</span>
217                    <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
218        <span class="k">else</span><span class="p">:</span>
219            <span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">maxstep</span><span class="p">)</span>
220
221        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;prefix&#39;</span><span class="p">):</span>
222            <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="s1">&#39;EN&#39;</span>
223        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;makefile&#39;</span><span class="p">):</span>
224            <span class="bp">self</span><span class="o">.</span><span class="n">makefile</span> <span class="o">=</span> <span class="kc">None</span>
225        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;basetime&#39;</span><span class="p">):</span>
226            <span class="bp">self</span><span class="o">.</span><span class="n">basetime</span> <span class="o">=</span> <span class="kc">None</span>
227        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;date_chunk&#39;</span><span class="p">):</span>
228            <span class="bp">self</span><span class="o">.</span><span class="n">date_chunk</span> <span class="o">=</span> <span class="s1">&#39;3&#39;</span>
229        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;grib2flexpart&#39;</span><span class="p">):</span>
230            <span class="bp">self</span><span class="o">.</span><span class="n">grib2flexpart</span> <span class="o">=</span> <span class="s1">&#39;0&#39;</span>
231
232        <span class="c1"># script directory</span>
233        <span class="bp">self</span><span class="o">.</span><span class="n">ecmwfdatadir</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">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">inspect</span><span class="o">.</span><span class="n">getfile</span><span class="p">(</span>
234            <span class="n">inspect</span><span class="o">.</span><span class="n">currentframe</span><span class="p">())))</span> <span class="o">+</span> <span class="s1">&#39;/../&#39;</span>
235        <span class="c1"># Fortran source directory</span>
236        <span class="bp">self</span><span class="o">.</span><span class="n">exedir</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecmwfdatadir</span> <span class="o">+</span> <span class="s1">&#39;src/&#39;</span>
237
238        <span class="c1"># FLEXPART directory</span>
239        <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">&#39;flexpart_root_scripts&#39;</span><span class="p">):</span>
240            <span class="bp">self</span><span class="o">.</span><span class="n">flexpart_root_scripts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ecmwfdatadir</span>
241
242        <span class="k">return</span>
243
244    <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
245        <span class="sd">&#39;&#39;&#39;</span>
246<span class="sd">        @Description:</span>
247<span class="sd">            Prepares a single string with all the comma seperated Control</span>
248<span class="sd">            class attributes including their values.</span>
249
250<span class="sd">            Example:</span>
251<span class="sd">            {&#39;kids&#39;: 0, &#39;name&#39;: &#39;Dog&#39;, &#39;color&#39;: &#39;Spotted&#39;,</span>
252<span class="sd">             &#39;age&#39;: 10, &#39;legs&#39;: 2, &#39;smell&#39;: &#39;Alot&#39;}</span>
253
254<span class="sd">        @Input:</span>
255<span class="sd">            self: instance of Control class</span>
256<span class="sd">                Description see class documentation.</span>
257
258<span class="sd">        @Return:</span>
259<span class="sd">            string of Control class attributes with their values</span>
260<span class="sd">        &#39;&#39;&#39;</span>
261
262        <span class="n">attrs</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
263
264        <span class="k">return</span> <span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2">: </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">item</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
265
266    <span class="k">def</span> <span class="nf">tolist</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
267        <span class="sd">&#39;&#39;&#39;</span>
268<span class="sd">        @Description:</span>
269<span class="sd">            Just generates a list of strings containing the attributes and</span>
270<span class="sd">            assigned values except the attributes &quot;_expanded&quot;, &quot;exedir&quot;,</span>
271<span class="sd">            &quot;ecmwfdatadir&quot; and &quot;flexpart_root_scripts&quot;.</span>
272
273<span class="sd">        @Input:</span>
274<span class="sd">            self: instance of Control class</span>
275<span class="sd">                Description see class documentation.</span>
276
277<span class="sd">        @Return:</span>
278<span class="sd">            l: list</span>
279<span class="sd">                A sorted list of the all Control class attributes with</span>
280<span class="sd">                their values except the attributes &quot;_expanded&quot;, &quot;exedir&quot;,</span>
281<span class="sd">                &quot;ecmwfdatadir&quot; and &quot;flexpart_root_scripts&quot;.</span>
282<span class="sd">        &#39;&#39;&#39;</span>
283        <span class="n">attrs</span> <span class="o">=</span> <span class="nb">vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
284        <span class="n">l</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
285        <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="n">attrs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
286            <span class="k">if</span> <span class="s1">&#39;_expanded&#39;</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
287                <span class="k">pass</span>
288            <span class="k">elif</span> <span class="s1">&#39;exedir&#39;</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
289                <span class="k">pass</span>
290            <span class="k">elif</span> <span class="s1">&#39;flexpart_root_scripts&#39;</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
291                <span class="k">pass</span>
292            <span class="k">elif</span> <span class="s1">&#39;ecmwfdatadir&#39;</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
293                <span class="k">pass</span>
294            <span class="k">else</span><span class="p">:</span>
295                <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="ow">is</span> <span class="nb">list</span><span class="p">:</span>
296                    <span class="n">stot</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
297                    <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">]:</span>
298                        <span class="n">stot</span> <span class="o">+=</span> <span class="n">s</span> <span class="o">+</span> <span class="s1">&#39; &#39;</span>
299
300                    <span class="n">l</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stot</span><span class="p">))</span>
301                <span class="k">else</span><span class="p">:</span>
302<span class="c1">#AP syntax error with doubled %s ???</span>
303                    <span class="n">l</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%s</span><span class="s2"> </span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">item</span><span class="p">)</span>
304        <span class="k">return</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">l</span><span class="p">)</span>
305</pre></div>
306
307          </div>
308        </div>
309      </div>
310      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
311        <div class="sphinxsidebarwrapper">
312<div id="searchbox" style="display: none" role="search">
313  <h3>Quick search</h3>
314    <form class="search" action="../search.html" method="get">
315      <div><input type="text" name="q" /></div>
316      <div><input type="submit" value="Go" /></div>
317      <input type="hidden" name="check_keywords" value="yes" />
318      <input type="hidden" name="area" value="default" />
319    </form>
320</div>
321<script type="text/javascript">$('#searchbox').show(0);</script>
322        </div>
323      </div>
324      <div class="clearer"></div>
325    </div>
326    <div class="related" role="navigation" aria-label="related navigation">
327      <h3>Navigation</h3>
328      <ul>
329        <li class="right" style="margin-right: 10px">
330          <a href="../genindex.html" title="General Index"
331             >index</a></li>
332        <li class="right" >
333          <a href="../py-modindex.html" title="Python Module Index"
334             >modules</a> |</li>
335        <li class="nav-item nav-item-0"><a href="../index.html">flex_extract_test 7.1 documentation</a> &#187;</li>
336          <li class="nav-item nav-item-1"><a href="index.html" >Module code</a> &#187;</li> 
337      </ul>
338    </div>
339    <div class="footer" role="contentinfo">
340        &#169; Copyright 2018, AP.
341      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6.
342    </div>
343  </body>
344</html>
Note: See TracBrowser for help on using the repository browser.
hosted by ZAMG