Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
HTML
<span class="target" id="index-0"></span><div class="section" id="data-acquisition-solution">
<span id="data-acquisition-soln"></span>
<p>Here is the one possible answer:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="c">#!/usr/bin/env python2.5</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">ecflow</span>  
   
<span class="n">defs</span> <span class="o">=</span> <span class="n">ecflow</span><span class="o">.</span><span class="n">Defs</span><span class="p">(</span><span class="s">&quot;data_aquisition.def&quot;</span><span class="p">)</span>
<span class="n">suite</span> <span class="o">=</span> <span class="n">defs</span><span class="o">.</span><span class="n">add_suite</span><span class="p">(</span><span class="s">&quot;data_aquisition&quot;</span><span class="p">)</span>
<span class="n">suite</span><span class="o">.</span><span class="n">add_repeat</span><span class="p">(</span> <span class="n">ecflow</span><span class="o">.</span><span class="n">RepeatDay</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">)</span>
<span class="n">suite</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;ECF_HOME&quot;</span><span class="p">,</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">&quot;HOME&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;/course&quot;</span><span class="p">)</span>
<span class="n">suite</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;ECF_INCLUDE&quot;</span><span class="p">,</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">&quot;HOME&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;/course&quot;</span><span class="p">)</span>
<span class="n">suite</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;ECF_FILES&quot;</span><span class="p">,</span><span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">&quot;HOME&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;/course/data&quot;</span><span class="p">)</span>
<span class="n">suite</span><span class="o">.</span><span class="n">add_variable</span><span class="p">(</span><span class="s">&quot;SLEEP&quot;</span><span class="p">,</span><span class="s">&quot;2&quot;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">city</span> <span class="ow">in</span> <span class="p">(</span> <span class="s">&quot;exeter&quot;</span><span class="p">,</span> <span class="s">&quot;toulouse&quot;</span><span class="p">,</span> <span class="s">&quot;offenbach&quot;</span><span class="p">,</span> <span class="s">&quot;washington&quot;</span><span class="p">,</span> <span class="s">&quot;tokyo&quot;</span><span class="p">,</span> <span class="s">&quot;melbourne&quot;</span><span class="p">,</span> <span class="s">&quot;montreal&quot;</span> <span class="p">)</span> <span class="p">:</span>
    <span class="n">fcity</span> <span class="o">=</span> <span class="n">suite</span><span class="o">.</span><span class="n">add_family</span><span class="p">(</span><span class="n">city</span><span class="p">)</span>
    <span class="n">archive_task</span> <span class="o">=</span> <span class="n">fcity</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;archive&quot;</span><span class="p">)</span>
    <span class="k">for</span> <span class="nb">type</span> <span class="ow">in</span> <span class="p">(</span> <span class="s">&quot;observations&quot;</span><span class="p">,</span> <span class="s">&quot;fields&quot;</span><span class="p">,</span> <span class="s">&quot;images&quot;</span> <span class="p">):</span>
        <span class="n">type_fam</span> <span class="o">=</span> <span class="n">fcity</span><span class="o">.</span><span class="n">add_family</span><span class="p">(</span><span class="nb">type</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">city</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;exeter&quot;</span><span class="p">,</span> <span class="s">&quot;toulouse&quot;</span><span class="p">,</span> <span class="s">&quot;offenbach&quot;</span><span class="p">):</span> <span class="n">type_fam</span><span class="o">.</span><span class="n">add_time</span><span class="p">(</span><span class="s">&quot;00:00 23:00 01:00&quot;</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">city</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;washington&quot;</span><span class="p">)</span> <span class="p">:</span>                     <span class="n">type_fam</span><span class="o">.</span><span class="n">add_time</span><span class="p">(</span><span class="s">&quot;00:00 23:00 03:00&quot;</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">city</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;tokyo&quot;</span><span class="p">)</span> <span class="p">:</span>                          <span class="n">type_fam</span><span class="o">.</span><span class="n">add_time</span><span class="p">(</span><span class="s">&quot;12:00&quot;</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">city</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;melbourne&quot;</span><span class="p">)</span> <span class="p">:</span>                      <span class="n">type_fam</span><span class="o">.</span><span class="n">add_day</span><span class="p">(</span> <span class="s">&quot;monday&quot;</span> <span class="p">)</span>
        <span class="k">if</span> <span class="n">city</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;montreal&quot;</span><span class="p">)</span> <span class="p">:</span>                       <span class="n">type_fam</span><span class="o">.</span><span class="n">add_date</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="mi">0</span><span class="p">)</span>
         
        <span class="n">type_fam</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;get&quot;</span><span class="p">)</span>
        <span class="n">type_fam</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;process&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">add_trigger</span><span class="p">(</span><span class="s">&quot;get eq complete&quot;</span><span class="p">)</span>
        <span class="n">type_fam</span><span class="o">.</span><span class="n">add_task</span><span class="p">(</span><span class="s">&quot;store&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">add_trigger</span><span class="p">(</span><span class="s">&quot;get eq complete&quot;</span><span class="p">)</span>
        
</pre></div>
</div>
<p>It is also possible to automatically generate the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-script"><em class="xref std std-term">ecf script</em></a> using the python api:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">defs</span><span class="o">.</span><span class="n">generate_scripts</span><span class="p">()</span>
</pre></div>
</div>
<p>This enables testing of the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a>, with worrying about the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-ecf-script"><em class="xref std std-term">ecf script</em></a>&#8216;s.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">When there are no <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-event"><em class="xref std std-term">event</em></a>&#8216;s, <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-meter"><em class="xref std std-term">meter</em></a>&#8216;s or <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-label"><em class="xref std std-term">label</em></a>&#8216;s in the <a class="reference internal" href="/wiki/display/ECFLOW/Glossary#term-suite-definition"><em class="xref std std-term">suite definition</em></a>,
the content of the  generated scripts are identical. Hence this functionality should only be used
as debug aid for the definition</p>
</div>
</div>