Changeset f66f990 in flex_extract.git for documentation/Sphinx/build/html/_modules/get_mars_data.html
- Timestamp:
- Mar 8, 2019, 10:00:34 AM (5 years ago)
- Branches:
- master, ctbto, dev
- Children:
- b4a4777
- Parents:
- 8778c5a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
documentation/Sphinx/build/html/_modules/get_mars_data.html
r2625ca8 rf66f990 220 220 <span class="n">inspect</span><span class="o">.</span><span class="n">getfile</span><span class="p">(</span><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">'/../'</span><span class="p">)</span> 221 221 <span class="kn">import</span> <span class="nn">_config</span> 222 <span class="kn">from</span> <span class="nn">tools</span> <span class="k">import</span> <span class="p">(</span><span class="n"> my_error</span><span class="p">,</span> <span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span>222 <span class="kn">from</span> <span class="nn">tools</span> <span class="k">import</span> <span class="p">(</span><span class="n">setup_controldata</span><span class="p">,</span> <span class="n">my_error</span><span class="p">,</span> <span class="n">normal_exit</span><span class="p">,</span> <span class="n">get_cmdline_args</span><span class="p">,</span> 223 223 <span class="n">read_ecenv</span><span class="p">,</span> <span class="n">make_dir</span><span class="p">)</span> 224 224 <span class="kn">from</span> <span class="nn">classes.EcFlexpart</span> <span class="k">import</span> <span class="n">EcFlexpart</span> … … 227 227 228 228 <span class="k">try</span><span class="p">:</span> 229 <span class="n">ec api</span> <span class="o">=</span> <span class="kc">True</span>229 <span class="n">ec_api</span> <span class="o">=</span> <span class="kc">True</span> 230 230 <span class="kn">import</span> <span class="nn">ecmwfapi</span> 231 231 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 232 <span class="n">ecapi</span> <span class="o">=</span> <span class="kc">False</span> 232 <span class="n">ec_api</span> <span class="o">=</span> <span class="kc">False</span> 233 234 <span class="k">try</span><span class="p">:</span> 235 <span class="n">cds_api</span> <span class="o">=</span> <span class="kc">True</span> 236 <span class="kn">import</span> <span class="nn">cdsapi</span> 237 <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> 238 <span class="n">cds_api</span> <span class="o">=</span> <span class="kc">False</span> 233 239 <span class="c1"># ------------------------------------------------------------------------------</span> 234 240 <span class="c1"># FUNCTION</span> … … 248 254 <span class="sd"> '''</span> 249 255 250 <span class="n">args</span> <span class="o">=</span> <span class="n">get_cmdline_args</span><span class="p">()</span> 251 <span class="n">c</span> <span class="o">=</span> <span class="n">ControlFile</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">controlfile</span><span class="p">)</span> 252 253 <span class="n">env_parameter</span> <span class="o">=</span> <span class="n">read_ecenv</span><span class="p">(</span><span class="n">_config</span><span class="o">.</span><span class="n">PATH_ECMWF_ENV</span><span class="p">)</span> 254 <span class="n">c</span><span class="o">.</span><span class="n">assign_args_to_control</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> 255 <span class="n">c</span><span class="o">.</span><span class="n">assign_envs_to_control</span><span class="p">(</span><span class="n">env_parameter</span><span class="p">)</span> 256 <span class="n">c</span><span class="o">.</span><span class="n">check_conditions</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">queue</span><span class="p">)</span> 257 256 <span class="n">c</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">setup_controldata</span><span class="p">()</span> 258 257 <span class="n">get_mars_data</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> 259 <span class="n">normal_exit</span><span class="p">(</span><span class=" n">c</span><span class="o">.</span><span class="n">mailops</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">queue</span><span class="p">,</span> <span class="s1">'Done!'</span><span class="p">)</span>258 <span class="n">normal_exit</span><span class="p">(</span><span class="s1">'Retrieving MARS data: Done!'</span><span class="p">)</span> 260 259 261 260 <span class="k">return</span></div> … … 278 277 279 278 <span class="sd"> '''</span> 280 <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span> <span class="o">=</span> <span class="n">ecapi</span> 279 <span class="n">c</span><span class="o">.</span><span class="n">ec_api</span> <span class="o">=</span> <span class="n">ec_api</span> 280 <span class="n">c</span><span class="o">.</span><span class="n">cds_api</span> <span class="o">=</span> <span class="n">cds_api</span> 281 281 282 282 <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">):</span> … … 335 335 336 336 <div class="viewcode-block" id="mk_server"><a class="viewcode-back" href="../api.html#get_mars_data.mk_server">[docs]</a><span class="k">def</span> <span class="nf">mk_server</span><span class="p">(</span><span class="n">c</span><span class="p">):</span> 337 <span class="sd">'''Creates server connection if ECMWF WebAPI is available.</span> 337 <span class="sd">'''Creates a server connection with available python API.</span> 338 339 <span class="sd"> Which API is used depends on availability and the dataset to be retrieved.</span> 340 <span class="sd"> The CDS API is used for ERA5 dataset no matter if the user is a member or</span> 341 <span class="sd"> a public user. ECMWF WebAPI is used for all other available datasets.</span> 338 342 339 343 <span class="sd"> Parameters</span> … … 345 349 <span class="sd"> Return</span> 346 350 <span class="sd"> ------</span> 347 <span class="sd"> server : ECMWFDataServer or ECMWFService</span> 348 <span class="sd"> Connection to ECMWF server via python interface ECMWF WebAPI.</span> 349 350 <span class="sd"> '''</span> 351 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">:</span> 351 <span class="sd"> server : ECMWFDataServer, ECMWFService or Client</span> 352 <span class="sd"> Connection to ECMWF server via python interface ECMWF WebAPI or CDS API.</span> 353 354 <span class="sd"> '''</span> 355 <span class="k">if</span> <span class="n">cds_api</span> <span class="ow">and</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">marsclass</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'EA'</span><span class="p">):</span> 356 <span class="n">server</span> <span class="o">=</span> <span class="n">cdsapi</span><span class="o">.</span><span class="n">Client</span><span class="p">()</span> 357 <span class="n">c</span><span class="o">.</span><span class="n">ec_api</span> <span class="o">=</span> <span class="kc">False</span> 358 <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">ec_api</span><span class="p">:</span> 352 359 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">public</span><span class="p">:</span> 353 360 <span class="n">server</span> <span class="o">=</span> <span class="n">ecmwfapi</span><span class="o">.</span><span class="n">ECMWFDataServer</span><span class="p">()</span> 354 361 <span class="k">else</span><span class="p">:</span> 355 362 <span class="n">server</span> <span class="o">=</span> <span class="n">ecmwfapi</span><span class="o">.</span><span class="n">ECMWFService</span><span class="p">(</span><span class="s2">"mars"</span><span class="p">)</span> 363 <span class="n">c</span><span class="o">.</span><span class="n">cds_api</span> <span class="o">=</span> <span class="kc">False</span> 356 364 <span class="k">else</span><span class="p">:</span> 357 365 <span class="n">server</span> <span class="o">=</span> <span class="kc">False</span> 358 366 359 <span class="nb">print</span><span class="p">(</span><span class="s1">'Using ECMWF WebAPI: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ecapi</span><span class="p">))</span> 367 <span class="nb">print</span><span class="p">(</span><span class="s1">'Using ECMWF WebAPI: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">ec_api</span><span class="p">))</span> 368 <span class="nb">print</span><span class="p">(</span><span class="s1">'Using CDS API: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">cds_api</span><span class="p">))</span> 360 369 361 370 <span class="k">return</span> <span class="n">server</span></div> 371 372 373 <div class="viewcode-block" id="check_dates_for_nonflux_fc_times"><a class="viewcode-back" href="../api.html#get_mars_data.check_dates_for_nonflux_fc_times">[docs]</a><span class="k">def</span> <span class="nf">check_dates_for_nonflux_fc_times</span><span class="p">(</span><span class="n">types</span><span class="p">,</span> <span class="n">times</span><span class="p">):</span> 374 <span class="sd">'''</span> 375 <span class="sd"> '''</span> 376 <span class="k">for</span> <span class="n">ty</span><span class="p">,</span> <span class="n">ti</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">types</span><span class="p">,</span><span class="n">times</span><span class="p">):</span> 377 <span class="k">if</span> <span class="n">ty</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s1">'FC'</span> <span class="ow">and</span> <span class="nb">int</span><span class="p">(</span><span class="n">ti</span><span class="p">)</span> <span class="o">==</span> <span class="mi">18</span><span class="p">:</span> 378 <span class="k">return</span> <span class="kc">True</span> 379 <span class="k">return</span> <span class="kc">False</span></div> 362 380 363 381 … … 405 423 <span class="n">chunk</span> <span class="o">=</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">date_chunk</span><span class="p">))</span> 406 424 407 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span><span class="p">:</span> 408 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="s1">'00'</span><span class="p">:</span> 409 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 410 411 <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span> <span class="ow">and</span> <span class="n">fluxes</span><span class="p">:</span> 425 <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 426 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 427 428 <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">purefc</span> <span class="ow">and</span> <span class="n">fluxes</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">basetime</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> 412 429 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 413 430 <span class="n">end</span> <span class="o">=</span> <span class="n">end</span> <span class="o">+</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 431 432 <span class="c1"># if we have non-flux forecast data starting at 18 UTC</span> 433 <span class="c1"># we need to start retrieving data one day in advance</span> 434 <span class="k">if</span> <span class="ow">not</span> <span class="n">fluxes</span> <span class="ow">and</span> <span class="n">check_dates_for_nonflux_fc_times</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">time</span><span class="p">):</span> 435 <span class="n">start</span> <span class="o">=</span> <span class="n">start</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> 414 436 415 437 <span class="k">return</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">chunk</span></div> … … 493 515 <span class="n">flexpart</span><span class="o">.</span><span class="n">retrieve</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">dates</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">public</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">request</span><span class="p">,</span> <span class="n">c</span><span class="o">.</span><span class="n">inputdir</span><span class="p">)</span> 494 516 <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> 495 <span class="n">my_error</span><span class="p">(</span><span class=" n">c</span><span class="o">.</span><span class="n">mailfail</span><span class="p">,</span> <span class="s1">'MARS request failed'</span><span class="p">)</span>517 <span class="n">my_error</span><span class="p">(</span><span class="s1">'MARS request failed'</span><span class="p">)</span> 496 518 497 519 <span class="n">day</span> <span class="o">+=</span> <span class="n">delta_t</span> … … 513 535 <div role="contentinfo"> 514 536 <p> 515 © Copyright 2018, Anne Philipp and Leopold Haimberger 537 © Copyright 2018, Anne Philipp and Leopold Haimberger. 516 538 517 539 </p> … … 532 554 533 555 534 535 536 <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> 537 <script type="text/javascript" src="../_static/jquery.js"></script> 538 <script type="text/javascript" src="../_static/underscore.js"></script> 539 <script type="text/javascript" src="../_static/doctools.js"></script> 540 556 <script type="text/javascript"> 557 var DOCUMENTATION_OPTIONS = { 558 URL_ROOT:'../', 559 VERSION:'7.1 alpha', 560 LANGUAGE:'None', 561 COLLAPSE_INDEX:false, 562 FILE_SUFFIX:'.html', 563 HAS_SOURCE: true, 564 SOURCELINK_SUFFIX: '.txt' 565 }; 566 </script> 567 <script type="text/javascript" src="../_static/jquery.js"></script> 568 <script type="text/javascript" src="../_static/underscore.js"></script> 569 <script type="text/javascript" src="../_static/doctools.js"></script> 570 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 541 571 542 572
Note: See TracChangeset
for help on using the changeset viewer.