Difference between revisions of "Team:EPF Lausanne/Project/Modelling/Code"
Line 192: | Line 192: | ||
</div> | </div> | ||
</div> | </div> | ||
+ | |||
+ | <div class="second-section"> | ||
+ | <div class="container"> | ||
+ | <div class="row"> | ||
+ | <div class="col-md-12 col-centered"> | ||
+ | <h3>code2html</h3> | ||
+ | <div class="highlight"><pre><span class="k">class</span> <span class="nc">Reaction</span><span class="p">:</span> | ||
+ | <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">reaction_</span><span class="p">,</span> <span class="n">cst_name_</span><span class="p">,</span> <span class="n">cst_value_</span><span class="p">,</span> <span class="n">description_</span><span class="p">):</span> | ||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">reaction</span> <span class="o">=</span> <span class="n">reaction_</span> | ||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">cst_name</span> <span class="o">=</span> <span class="n">cst_name_</span> | ||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">cst_value</span> <span class="o">=</span> <span class="n">cst_value_</span> | ||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description_</span> | ||
+ | |||
+ | <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
+ | <span class="k">return</span> <span class="s">"{}</span><span class="se">\n</span><span class="s">{} = {}</span><span class="se">\n</span><span class="s">{}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">reaction</span><span class="p">,</span> | ||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">cst_name</span><span class="p">,</span> | ||
+ | <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cst_value</span><span class="p">),</span> | ||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">description</span><span class="p">)</span> | ||
+ | |||
+ | <span class="k">class</span> <span class="nc">ReactionParser</span><span class="p">:</span> | ||
+ | |||
+ | <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">input_</span><span class="p">,</span> <span class="n">sep_</span><span class="o">=</span><span class="s">":"</span><span class="p">,</span> <span class="n">comment_</span><span class="o">=</span><span class="s">"#"</span><span class="p">):</span> | ||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">sep</span> <span class="o">=</span> <span class="n">sep_</span> | ||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">comment</span> <span class="o">=</span> <span class="n">comment_</span> | ||
+ | |||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">input_</span><span class="p">,</span> <span class="s">'r'</span><span class="p">)</span> <span class="c"># TODO: OPEN SAFELY</span> | ||
+ | |||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">reactions</span> <span class="o">=</span> <span class="p">[]</span> | ||
+ | |||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">_load</span><span class="p">()</span> | ||
+ | |||
+ | <span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | ||
+ | |||
+ | <span class="k">def</span> <span class="nf">_load</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
+ | <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="p">:</span> | ||
+ | <span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">==</span> <span class="s">"</span><span class="se">\n</span><span class="s">"</span> <span class="ow">or</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">==</span> <span class="s">""</span><span class="p">:</span> <span class="c"># Check for empty lines</span> | ||
+ | <span class="k">continue</span> | ||
+ | |||
+ | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> <span class="o">!=</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">comment</span><span class="p">:</span> <span class="c"># Check for comments</span> | ||
+ | <span class="k">continue</span> | ||
+ | |||
+ | <span class="n">splitted</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">":"</span><span class="p">)</span> | ||
+ | |||
+ | <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">splitted</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">4</span><span class="p">:</span> | ||
+ | <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">'ReactionParser: problem with the input file (not enough arguments)'</span><span class="p">)</span> | ||
+ | |||
+ | <span class="n">reaction</span> <span class="o">=</span> <span class="n">Reaction</span><span class="p">(</span><span class="n">splitted</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span> | ||
+ | <span class="n">splitted</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">(),</span> | ||
+ | <span class="nb">float</span><span class="p">(</span><span class="n">splitted</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()),</span> | ||
+ | <span class="n">splitted</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> | ||
+ | |||
+ | <span class="bp">self</span><span class="o">.</span><span class="n">reactions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">reaction</span><span class="p">)</span> | ||
+ | |||
+ | <span class="k">def</span> <span class="nf">print_reactions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
+ | <span class="k">for</span> <span class="n">reaction</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">reactions</span><span class="p">:</span> | ||
+ | <span class="k">print</span><span class="p">(</span><span class="n">reaction</span><span class="p">)</span> | ||
+ | <span class="k">print</span><span class="p">()</span> | ||
+ | |||
+ | <span class="k">def</span> <span class="nf">reaction_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
+ | <span class="n">kin</span> <span class="o">=</span> <span class="p">[]</span> | ||
+ | |||
+ | <span class="k">for</span> <span class="n">reaction</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">reactions</span><span class="p">:</span> | ||
+ | <span class="n">splitted</span> <span class="o">=</span> <span class="n">reaction</span><span class="o">.</span><span class="n">reaction</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">"->"</span><span class="p">)</span> | ||
+ | |||
+ | <span class="n">left</span> <span class="o">=</span> <span class="n">splitted</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> | ||
+ | <span class="n">right</span> <span class="o">=</span> <span class="n">splitted</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> | ||
+ | |||
+ | <span class="n">kin</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="p">([</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">],</span> <span class="p">(</span><span class="n">reaction</span><span class="o">.</span><span class="n">cst_name</span><span class="p">,</span> <span class="n">reaction</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> <span class="n">reaction</span><span class="o">.</span><span class="n">cst_value</span><span class="p">)</span> <span class="p">)</span> <span class="p">)</span> | ||
+ | |||
+ | <span class="k">return</span> <span class="n">kin</span> | ||
+ | |||
+ | |||
+ | |||
+ | <span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span> | ||
+ | <span class="n">myParser</span> <span class="o">=</span> <span class="n">ReactionParser</span><span class="p">(</span><span class="s">"reactions.dat"</span><span class="p">)</span> | ||
+ | |||
+ | <span class="c">#myParser.load()</span> | ||
+ | <span class="n">myParser</span><span class="o">.</span><span class="n">print_reactions</span><span class="p">()</span> | ||
+ | |||
+ | <span class="n">kin</span> <span class="o">=</span> <span class="n">myParser</span><span class="o">.</span><span class="n">reaction_table</span><span class="p">()</span> | ||
+ | |||
+ | <span class="k">print</span><span class="p">(</span><span class="n">kin</span><span class="p">)</span> | ||
+ | </pre></div> | ||
+ | </div></div></div></div> | ||
<div class="second-section"> | <div class="second-section"> |
Revision as of 15:35, 30 July 2015
Code
code2html
class Reaction:
def __init__(self, reaction_, cst_name_, cst_value_, description_):
self.reaction = reaction_
self.cst_name = cst_name_
self.cst_value = cst_value_
self.description = description_
def __str__(self):
return "{}\n{} = {}\n{}".format(self.reaction,
self.cst_name,
str(self.cst_value),
self.description)
class ReactionParser:
def __init__(self, input_, sep_=":", comment_="#"):
self.sep = sep_
self.comment = comment_
self.file = open(input_, 'r') # TODO: OPEN SAFELY
self.reactions = []
self._load()
def __del__(self):
self.file.close()
def _load(self):
for line in self.file:
if line.strip() == "\n" or line.strip() == "": # Check for empty lines
continue
if len(line.strip()) != 0 and line.strip()[0] == self.comment: # Check for comments
continue
splitted = line.split(":")
if len(splitted) != 4:
raise ValueError('ReactionParser: problem with the input file (not enough arguments)')
reaction = Reaction(splitted[0].strip(),
splitted[1].strip(),
float(splitted[2].strip()),
splitted[3].strip())
self.reactions.append(reaction)
def print_reactions(self):
for reaction in self.reactions:
print(reaction)
print()
def reaction_table(self):
kin = []
for reaction in self.reactions:
splitted = reaction.reaction.split("->")
left = splitted[0].strip()
right = splitted[-1].strip()
kin.append( ([left, right], (reaction.cst_name, reaction.description, reaction.cst_value) ) )
return kin
if __name__ == "__main__":
myParser = ReactionParser("reactions.dat")
#myParser.load()
myParser.print_reactions()
kin = myParser.reaction_table()
print(kin)
ODE Generator
class Reaction:
def __init__(self, reaction_, cst_name_, cst_value_, description_):
self.reaction = reaction_
self.cst_name = cst_name_
self.cst_value = cst_value_
self.description = description_
def __str__(self):
return "{}\n{} = {}\n{}".format(self.reaction,
self.cst_name,
str(self.cst_value),
self.description)
class ReactionParser:
def __init__(self, input_, sep_=":", comment_="#"):
self.sep = sep_
self.comment = comment_
self.file = open(input_, 'r') # TODO: OPEN SAFELY
self.reactions = []
self._load()
def __del__(self):
self.file.close()
def _load(self):
for line in self.file:
if line.strip() == "\n" or line.strip() == "": # Check for empty lines
continue
if len(line.strip()) != 0 and line.strip()[0] == self.comment: # Check for comments
continue
splitted = line.split(":")
if len(splitted) != 4:
raise ValueError('ReactionParser: problem with the input file (not enough arguments)')
reaction = Reaction(splitted[0].strip(),
splitted[1].strip(),
float(splitted[2].strip()),
splitted[3].strip())
self.reactions.append(reaction)
def print_reactions(self):
for reaction in self.reactions:
print(reaction)
print()
def reaction_table(self):
kin = []
for reaction in self.reactions:
splitted = reaction.reaction.split("->")
left = splitted[0].strip()
right = splitted[-1].strip()
kin.append( ([left, right], (reaction.cst_name, reaction.description, reaction.cst_value) ) )
return kin
if __name__ == "__main__":
myParser = ReactionParser("reactions.dat")
#myParser.load()
myParser.print_reactions()
kin = myParser.reaction_table()
print(kin)