Changeset eca358d in flex_extract.git for Documentation/html/_modules/checks.html
- Timestamp:
- Feb 1, 2020, 9:32:17 PM (4 years ago)
- Branches:
- master, ctbto, dev
- Children:
- 072cbea
- Parents:
- 53d3b2a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Documentation/html/_modules/checks.html
r30f7911 reca358d 191 191 <span class="kn">import</span> <span class="nn">os</span> 192 192 <span class="kn">import</span> <span class="nn">sys</span> 193 194 <span class=" kn">import</span> <span class="nn">_config</span>193 <span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span> 194 <span class="c1"># pylint: disable=unused-import</span> 195 195 <span class="k">try</span><span class="p">:</span> 196 196 <span class="kn">import</span> <span class="nn">exceptions</span> 197 197 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 198 198 <span class="kn">import</span> <span class="nn">builtins</span> <span class="k">as</span> <span class="nn">exceptions</span> 199 <span class="kn">from</span> <span class="nn">datetime</span> <span class="k">import</span> <span class="n">datetime</span> 199 <span class="c1"># pylint: enable=unused-import</span> 200 201 <span class="c1"># software specific classes and modules from flex_extract</span> 202 <span class="kn">import</span> <span class="nn">_config</span> 200 203 <span class="kn">from</span> <span class="nn">Mods.tools</span> <span class="k">import</span> <span class="n">my_error</span><span class="p">,</span> <span class="n">silent_remove</span> 201 204 <span class="c1"># ------------------------------------------------------------------------------</span> … … 275 278 <span class="k">return</span> <span class="n">grid</span></div> 276 279 277 <div class="viewcode-block" id="check_area"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_area">[docs]</a><span class="k">def</span> <span class="nf">check_area</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">area</span><span class="p">,</span> <span class="n">upper</span><span class="p">,</span> <span class="n">lower</span><span class="p">,</span> <span class="n">left</span> 280 <div class="viewcode-block" id="check_area"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_area">[docs]</a><span class="k">def</span> <span class="nf">check_area</span><span class="p">(</span><span class="n">grid</span><span class="p">,</span> <span class="n">area</span><span class="p">,</span> <span class="n">upper</span><span class="p">,</span> <span class="n">lower</span><span class="p">,</span> <span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">):</span> 278 281 <span class="sd">'''Defines the correct area string.</span> 279 282 … … 320 323 321 324 <span class="c1"># determine area format</span> 322 <span class="k">if</span> <span class=" p">((</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span> <span class="p">)</span> <span class="ow">and</span>323 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span> <span class="p">)</span> <span class="ow">and</span>324 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span> <span class="p">)</span> <span class="ow">and</span>325 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">)):</span>325 <span class="k">if</span> <span class="nb">all</span><span class="p">([(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">),</span> 326 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">),</span> 327 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">),</span> 328 <span class="p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o">>=</span> <span class="mf">0.01</span> <span class="ow">or</span> <span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span> <span class="o">==</span> <span class="mf">0.</span><span class="p">)]):</span> 326 329 <span class="c1"># area is defined in 1/1000 degrees; old format</span> 327 330 <span class="n">area</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">,</span> … … 329 332 <span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">,</span> 330 333 <span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1000.</span><span class="p">)</span> 331 <span class="k">elif</span> <span class=" p">(</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span> <span class="ow">and</span>332 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span> <span class="ow">and</span>333 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span> <span class="ow">and</span>334 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">):</span>334 <span class="k">elif</span> <span class="nb">all</span><span class="p">([</span><span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">,</span> 335 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">lower</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">,</span> 336 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">left</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">,</span> 337 <span class="nb">abs</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">right</span><span class="p">)</span> <span class="o">/</span> <span class="mf">10000.</span><span class="p">)</span> <span class="o"><</span> <span class="mf">0.05</span><span class="p">]):</span> 335 338 <span class="c1"># area is already in new format</span> 336 339 <span class="n">area</span> <span class="o">=</span> <span class="s1">'</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">upper</span><span class="p">),</span> … … 342 345 <span class="s1">'formats (upper, lower, left, right): '</span> 343 346 <span class="s1">'</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">/</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">upper</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">lower</span><span class="p">),</span> 344 <span class="nb">str</span><span class="p">(</span><span class="n">left</span><span class="p">) </span> <span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">right</span><span class="p">)))</span>347 <span class="nb">str</span><span class="p">(</span><span class="n">left</span><span class="p">),</span> <span class="nb">str</span><span class="p">(</span><span class="n">right</span><span class="p">)))</span> 345 348 346 349 <span class="k">return</span> <span class="n">area</span></div> … … 443 446 444 447 445 <div class="viewcode-block" id="check_step"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_step">[docs]</a><span class="k">def</span> <span class="nf">check_step</span><span class="p">(</span><span class="n">step</span><span class="p"> ,</span> <span class="n">mailfail</span><span class="p">):</span>448 <div class="viewcode-block" id="check_step"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_step">[docs]</a><span class="k">def</span> <span class="nf">check_step</span><span class="p">(</span><span class="n">step</span><span class="p">):</span> 446 449 <span class="sd">'''Checks on step format and convert into a list of steps.</span> 447 450 … … 455 458 <span class="sd"> Specifies the forecast time step from forecast base time.</span> 456 459 <span class="sd"> Valid values are hours (HH) from forecast base time.</span> 457 458 <span class="sd"> mailfail : list of str</span>459 <span class="sd"> Contains all email addresses which should be notified.</span>460 <span class="sd"> It might also contain just the ecmwf user name which will trigger</span>461 <span class="sd"> mailing to the associated email address for this user.</span>462 460 463 461 <span class="sd"> Return</span> … … 567 565 <span class="sd"> Valid values are hours (HH) from forecast base time.</span> 568 566 <span class="sd"> '''</span> 569 <span class="k">if</span> <span class="ow">not</span> <span class=" p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">ftype</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">ftime</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">steps</span><span class="p">)):</span>567 <span class="k">if</span> <span class="ow">not</span> <span class="nb">len</span><span class="p">(</span><span class="n">ftype</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">ftime</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">steps</span><span class="p">):</span> 570 568 <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'ERROR: The number of field types, times and steps '</span> 571 569 <span class="s1">'are not the same! Please check the setting in the '</span> … … 715 713 <span class="s1">'in CONTROL file.</span><span class="se">\n</span><span class="s1">'</span> 716 714 <span class="s1">'Try "</span><span class="si">{}</span><span class="s1"> -h" to print usage information'</span> 717 <span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]) </span> <span class="p">)</span>715 <span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span> 718 716 719 717 <span class="c1"># retrieve just one day if end_date isn't set</span> … … 952 950 <span class="n">accmaxstep</span> <span class="o">=</span> <span class="n">maxstep</span> 953 951 <span class="nb">print</span><span class="p">(</span><span class="s1">'... For pure forecast mode, the accumulated forecast must '</span> 954 955 952 <span class="s1">'have the same maxstep as the normal forecast fields!</span><span class="se">\n</span><span class="s1">'</span> 953 <span class="s1">'</span><span class="se">\t\t</span><span class="s1"> Accmaxstep was set to maxstep!'</span><span class="p">)</span> 956 954 <span class="k">return</span> <span class="n">accmaxstep</span></div> 957 955 … … 1013 1011 1014 1012 1015 <div class="viewcode-block" id="check_number"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_number">[docs]</a><span class="k">def</span> <span class="nf">check_number</span><span class="p">(</span><span class="n">number</span><span class="p"> ,</span> <span class="n">mailfail</span><span class="p">):</span>1013 <div class="viewcode-block" id="check_number"><a class="viewcode-back" href="../Documentation/Api/api_python.html#checks.check_number">[docs]</a><span class="k">def</span> <span class="nf">check_number</span><span class="p">(</span><span class="n">number</span><span class="p">):</span> 1016 1014 <span class="sd">'''Check for correct string format of ensemble member numbers.</span> 1017 1015 … … 1020 1018 <span class="sd"> number : str</span> 1021 1019 <span class="sd"> List of ensemble member forecast runs.</span> 1022 1023 <span class="sd"> mailfail : list of str</span>1024 <span class="sd"> Contains all email addresses which should be notified.</span>1025 <span class="sd"> It might also contain just the ecmwf user name which will trigger</span>1026 <span class="sd"> mailing to the associated email address for this user.</span>1027 1020 1028 1021 <span class="sd"> Return</span>
Note: See TracChangeset
for help on using the changeset viewer.