Updated documentation

This commit is contained in:
titusquah
2020-07-27 14:57:22 -06:00
parent 90b086b6fe
commit af71a2c208
26 changed files with 499 additions and 203 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -159,7 +159,6 @@
<span class="kn">from</span> <span class="nn">scipy.optimize</span> <span class="kn">import</span> <span class="n">minimize</span>
<span class="c1"># noinspection PyPep8Naming</span>
<span class="kn">import</span> <span class="nn">xml.etree.ElementTree</span> <span class="k">as</span> <span class="nn">ET</span>
<span class="kn">import</span> <span class="nn">seaborn</span> <span class="k">as</span> <span class="nn">sns</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">shutil</span>
<span class="kn">import</span> <span class="nn">copy</span>
@@ -169,9 +168,6 @@
<span class="kn">import</span> <span class="nn">pkg_resources</span>
<span class="kn">from</span> <span class="nn">.utils</span> <span class="kn">import</span> <span class="n">set_size</span>
<span class="n">sns</span><span class="o">.</span><span class="n">set</span><span class="p">()</span>
<span class="n">sns</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">font_scale</span><span class="o">=</span><span class="mf">1.6</span><span class="p">)</span>
<div class="viewcode-block" id="LLEPE"><a class="viewcode-back" href="../../modules/reeps.html#llepe.LLEPE">[docs]</a><span class="k">class</span> <span class="nc">LLEPE</span><span class="p">:</span>
<span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span>
@@ -285,7 +281,8 @@
<span class="sd"> :param extracted_species_list: (list) names of extracted species elements.</span>
<span class="sd"> If ``None``, extracted_species_list will be extracted_species_ion_names</span>
<span class="sd"> without &#39;+&#39; i.e. &#39;Nd+++&#39;-&gt;&#39;Nd&#39;</span>
<span class="sd"> without &#39;+&#39; i.e. &#39;Nd+++&#39;-&gt;&#39;Nd&#39;</span>
<span class="sd"> :param aq_solvent_rho: (float) density of solvent (g/L)</span>
<span class="sd"> If ``None``, molar volume/molecular weight is used from xml</span>
@@ -413,12 +410,22 @@
<span class="sd"> &#39;function&#39;, &#39;kwargs&#39;, and &#39;independent_params.</span>
<span class="sd"> &#39;function&#39; is a function of the form</span>
<span class="sd"> ``function(independent_param__value_list, **kwargs)``</span>
<span class="sd"> ``function(independent_param__value_list, custom_objects_dict,</span>
<span class="sd"> **kwargs)``</span>
<span class="sd"> &#39;kwargs&#39; are the extra arguments to pass to function</span>
<span class="sd"> &#39;independent_params&#39; is a list of parameter names in opt_dict that the</span>
<span class="sd"> dependent_param is a function of.</span>
<span class="sd"> &#39;custom_objects_dict&#39; is for accessing the estimator&#39;s internal</span>
<span class="sd"> custom_objects_dict and must be included in the arguments, even if the</span>
<span class="sd"> custom_objects_dict is not set and is None.</span>
<span class="sd"> See example code for usage.</span>
<span class="sd"> :param custom_objects_dict: (dict) dictionary containing custom objects</span>
<span class="sd"> format: {&lt;object_name_string&gt;: &lt;object&gt;,...}</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
@@ -436,12 +443,13 @@
<span class="n">diluant_rho</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">opt_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">objective_function</span><span class="o">=</span><span class="s1">&#39;Log-MSE&#39;</span><span class="p">,</span>
<span class="n">optimizer</span><span class="o">=</span><span class="s1">&#39;SLSQP&#39;</span><span class="p">,</span>
<span class="n">optimizer</span><span class="o">=</span><span class="s1">&#39;scipy_minimize&#39;</span><span class="p">,</span>
<span class="n">temp_xml_file_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">dependant_params_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">custom_objects_dict</span><span class="o">=</span><span class="kc">None</span>
<span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_built_in_obj_list</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Log-MSE&#39;</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_built_in_opt_list</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;SLSQP&#39;</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_built_in_opt_list</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;scipy_minimize&#39;</span><span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span> <span class="o">=</span> <span class="n">exp_data</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_phases_xml_filename</span> <span class="o">=</span> <span class="n">phases_xml_filename</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_opt_dict</span> <span class="o">=</span> <span class="n">opt_dict</span>
@@ -463,6 +471,7 @@
<span class="n">temp_xml_file_path</span> <span class="o">=</span> <span class="sa">r</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">/temp.xml&#39;</span><span class="o">.</span><span class="n">format</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="s1">&#39;TEMP&#39;</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_temp_xml_file_path</span> <span class="o">=</span> <span class="n">temp_xml_file_path</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_dependant_params_dict</span> <span class="o">=</span> <span class="n">dependant_params_dict</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_custom_objects_dict</span> <span class="o">=</span> <span class="n">custom_objects_dict</span>
<span class="c1"># Try and except for adding package data to path.</span>
<span class="c1"># This only works for sdist, not bdist</span>
<span class="c1"># If bdist is needed, research &quot;manifest.in&quot; python setup files</span>
@@ -474,7 +483,7 @@
<span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_phases_xml_filename</span> <span class="o">=</span> \
<span class="n">pkg_resources</span><span class="o">.</span><span class="n">resource_filename</span><span class="p">(</span><span class="s1">&#39;llepe&#39;</span><span class="p">,</span>
<span class="sa">r</span><span class="s1">&#39;..\data\xmls\</span><span class="si">{0}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="s1">&#39;../data/xmls/</span><span class="si">{0}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">phases_xml_filename</span><span class="p">))</span>
<span class="n">shutil</span><span class="o">.</span><span class="n">copyfile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_phases_xml_filename</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_temp_xml_file_path</span><span class="p">)</span>
@@ -485,7 +494,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span> <span class="o">=</span> <span class="n">pkg_resources</span><span class="o">.</span><span class="n">resource_filename</span><span class="p">(</span>
<span class="s1">&#39;llepe&#39;</span><span class="p">,</span> <span class="sa">r</span><span class="s1">&#39;..\data\csvs\</span><span class="si">{0}</span><span class="s1">&#39;</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">_exp_data</span><span class="p">))</span>
<span class="s1">&#39;llepe&#39;</span><span class="p">,</span> <span class="s1">&#39;../data/csvs/</span><span class="si">{0}</span><span class="s1">&#39;</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">_exp_data</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
@@ -600,7 +609,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span> <span class="o">=</span> <span class="n">pkg_resources</span><span class="o">.</span><span class="n">resource_filename</span><span class="p">(</span>
<span class="s1">&#39;llepe&#39;</span><span class="p">,</span> <span class="sa">r</span><span class="s1">&#39;..\data\csvs\</span><span class="si">{0}</span><span class="s1">&#39;</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">_exp_data</span><span class="p">))</span>
<span class="s1">&#39;llepe&#39;</span><span class="p">,</span> <span class="s1">&#39;../data/csvs/</span><span class="si">{0}</span><span class="s1">&#39;</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">_exp_data</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="n">exp_data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
@@ -654,7 +663,7 @@
<span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_phases_xml_filename</span> <span class="o">=</span> \
<span class="n">pkg_resources</span><span class="o">.</span><span class="n">resource_filename</span><span class="p">(</span><span class="s1">&#39;llepe&#39;</span><span class="p">,</span>
<span class="sa">r</span><span class="s1">&#39;..\data\xmls\</span><span class="si">{0}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="s1">&#39;../data/xmls/</span><span class="si">{0}</span><span class="s1">&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">phases_xml_filename</span><span class="p">))</span>
<span class="n">shutil</span><span class="o">.</span><span class="n">copyfile</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_phases_xml_filename</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_temp_xml_file_path</span><span class="p">)</span>
@@ -998,7 +1007,7 @@
<span class="s2">&quot;optimizer must be a function &quot;</span>
<span class="s2">&quot;with at least 2 arguments: &quot;</span>
<span class="s2">&quot;f(objective_func,x_guess, kwargs)&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">optimizer</span> <span class="o">==</span> <span class="s1">&#39;SLSQP&#39;</span><span class="p">:</span>
<span class="k">if</span> <span class="n">optimizer</span> <span class="o">==</span> <span class="s1">&#39;scipy_minimize&#39;</span><span class="p">:</span>
<span class="n">optimizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scipy_minimize</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_optimizer</span> <span class="o">=</span> <span class="n">optimizer</span>
<span class="k">return</span> <span class="kc">None</span></div>
@@ -1037,6 +1046,7 @@
<div class="viewcode-block" id="LLEPE.get_dependant_params_dict"><a class="viewcode-back" href="../../modules/reeps.html#llepe.LLEPE.get_dependant_params_dict">[docs]</a> <span class="k">def</span> <span class="nf">get_dependant_params_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the dependant_params_dict</span>
<span class="sd"> :return: dependant_params_dict: (dict) dictionary containing</span>
<span class="sd"> information about parameters dependant on opt_dict</span>
<span class="sd"> &quot;&quot;&quot;</span>
@@ -1045,12 +1055,32 @@
<div class="viewcode-block" id="LLEPE.set_dependant_params_dict"><a class="viewcode-back" href="../../modules/reeps.html#llepe.LLEPE.set_dependant_params_dict">[docs]</a> <span class="k">def</span> <span class="nf">set_dependant_params_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dependant_params_dict</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Sets the dependant_params_dict</span>
<span class="sd"> :param dependant_params_dict: (dict) dictionary containing information</span>
<span class="sd"> about parameters dependant on opt_dict</span>
<span class="sd"> about parameters dependant on opt_dict</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_dependant_params_dict</span> <span class="o">=</span> <span class="n">dependant_params_dict</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="LLEPE.get_custom_objects_dict"><a class="viewcode-back" href="../../modules/reeps.html#llepe.LLEPE.get_custom_objects_dict">[docs]</a> <span class="k">def</span> <span class="nf">get_custom_objects_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the custom_objects_dict</span>
<span class="sd"> :return: custom_objects_dict: (dict) dictionary containing</span>
<span class="sd"> information about custom objects from user</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_custom_objects_dict</span></div>
<div class="viewcode-block" id="LLEPE.set_custom_objects_dict"><a class="viewcode-back" href="../../modules/reeps.html#llepe.LLEPE.set_custom_objects_dict">[docs]</a> <span class="k">def</span> <span class="nf">set_custom_objects_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">custom_objects_dict</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Sets the custom_objects_dict</span>
<span class="sd"> :param custom_objects_dict: (dict) dictionary containing information</span>
<span class="sd"> about about custom objects from user</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_custom_objects_dict</span> <span class="o">=</span> <span class="n">custom_objects_dict</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="LLEPE.update_predicted_dict"><a class="viewcode-back" href="../../modules/reeps.html#llepe.LLEPE.update_predicted_dict">[docs]</a> <span class="k">def</span> <span class="nf">update_predicted_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
<span class="n">phases_xml_filename</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">phase_names</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
@@ -1143,6 +1173,7 @@
<span class="n">objective_function</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_objective_function</span>
<span class="n">opt_dict</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_opt_dict</span><span class="p">)</span>
<span class="n">dep_dict</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_dependant_params_dict</span><span class="p">)</span>
<span class="n">custom_objects_dict</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_custom_objects_dict</span><span class="p">)</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
@@ -1158,6 +1189,8 @@
<span class="n">x</span><span class="p">[</span><span class="n">ind</span><span class="p">]):</span> <span class="c1"># if nan, do not update xml with nan</span>
<span class="n">opt_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;input_value&#39;</span><span class="p">]</span> <span class="o">*=</span> <span class="n">x</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
<span class="k">if</span> <span class="n">custom_objects_dict</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_custom_objects_dict</span><span class="p">(</span><span class="n">opt_dict</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_xml</span><span class="p">(</span><span class="n">opt_dict</span><span class="p">,</span>
<span class="n">temp_xml_file_path</span><span class="p">,</span>
<span class="n">dependant_params_dict</span><span class="o">=</span><span class="n">dep_dict</span><span class="p">)</span>
@@ -1228,8 +1261,8 @@
<span class="n">dependant_params_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;updates xml file with info_dict</span>
<span class="sd"> :param info_dict: (dict) info in {species_names:{thermo_prop:val}}</span>
<span class="sd"> Requires an identical structure to opt_dict</span>
<span class="sd"> :param info_dict: (dict) Requires an identical structure to opt_dict</span>
<span class="sd"> Ignores items with keys containing &quot;custom_object_name&quot;</span>
<span class="sd"> :param phases_xml_filename: (str) xml filename if editing other xml</span>
<span class="sd"> If ``None``, the current xml will be modified and the internal</span>
<span class="sd"> Cantera phases will be refreshed to the new values.</span>
@@ -1239,7 +1272,8 @@
<span class="k">if</span> <span class="n">phases_xml_filename</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">phases_xml_filename</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_phases_xml_filename</span>
<span class="n">new_dict</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">info_dict</span><span class="p">)</span>
<span class="n">dep_dict</span> <span class="o">=</span> <span class="n">dependant_params_dict</span>
<span class="n">dep_dict</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="n">dependant_params_dict</span><span class="p">)</span>
<span class="n">custom_objects_dict</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_custom_objects_dict</span><span class="p">)</span>
<span class="k">if</span> <span class="n">dep_dict</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">new_dict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">dep_dict</span><span class="p">)</span>
@@ -1257,10 +1291,12 @@
<span class="n">ind_vals</span> <span class="o">=</span> <span class="p">[</span><span class="n">new_dict</span><span class="p">[</span><span class="n">ind_param_name</span><span class="p">][</span><span class="s1">&#39;input_value&#39;</span><span class="p">]</span>
<span class="k">for</span> <span class="n">ind_param_name</span> <span class="ow">in</span> <span class="n">ind_param_names</span><span class="p">]</span>
<span class="k">if</span> <span class="n">mod_kwargs</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">new_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;input_value&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">mod_func</span><span class="p">(</span><span class="n">ind_vals</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">new_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;input_value&#39;</span><span class="p">]</span> <span class="o">=</span> \
<span class="n">mod_func</span><span class="p">(</span><span class="n">ind_vals</span><span class="p">,</span>
<span class="n">custom_objects_dict</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">new_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;input_value&#39;</span><span class="p">]</span> <span class="o">=</span> \
<span class="n">mod_func</span><span class="p">(</span><span class="n">ind_vals</span><span class="p">,</span> <span class="n">custom_objects_dict</span><span class="p">,</span>
<span class="o">**</span><span class="n">mod_kwargs</span><span class="p">)</span>
<span class="n">tree</span> <span class="o">=</span> <span class="n">ET</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">phases_xml_filename</span><span class="p">)</span>
<span class="n">root</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
@@ -1268,6 +1304,8 @@
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">new_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
<span class="n">d</span> <span class="o">=</span> <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
<span class="n">now</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
<span class="k">if</span> <span class="s1">&#39;custom_object_name&#39;</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
<span class="k">continue</span>
<span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="s1">&#39;upper_attrib_name&#39;</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
<span class="ow">and</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;lower_attrib_name&#39;</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">for</span> <span class="n">child1</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="s1">&#39;upper_element_name&#39;</span><span class="p">]):</span>
@@ -1324,6 +1362,31 @@
<span class="bp">self</span><span class="o">.</span><span class="n">set_phases</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_phases_xml_filename</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_phase_names</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="LLEPE.update_custom_objects_dict"><a class="viewcode-back" href="../../modules/reeps.html#llepe.LLEPE.update_custom_objects_dict">[docs]</a> <span class="k">def</span> <span class="nf">update_custom_objects_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">info_dict</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> updates internal custom_objects_dict with info_dict</span>
<span class="sd"> :param info_dict: Requires an identical structure to opt_dict</span>
<span class="sd"> Ignores items with keys containing &quot;custom_object_name&quot;</span>
<span class="sd"> :return: None</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">custom_objects_dict</span> <span class="o">=</span> <span class="n">copy</span><span class="o">.</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_custom_objects_dict</span><span class="p">)</span>
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">info_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
<span class="n">d</span> <span class="o">=</span> <span class="n">info_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
<span class="k">if</span> <span class="s1">&#39;upper_element_name&#39;</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
<span class="k">continue</span>
<span class="n">func</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;function&#39;</span><span class="p">]</span>
<span class="n">value</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;input_value&#39;</span><span class="p">]</span>
<span class="n">kwargs</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;kwargs&#39;</span><span class="p">]</span>
<span class="n">object_name</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;custom_object_name&#39;</span><span class="p">]</span>
<span class="n">new_object</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="n">custom_objects_dict</span><span class="p">[</span><span class="n">object_name</span><span class="p">],</span>
<span class="n">value</span><span class="p">,</span>
<span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">custom_objects_dict</span><span class="p">[</span><span class="n">object_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_object</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_custom_objects_dict</span> <span class="o">=</span> <span class="n">custom_objects_dict</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="LLEPE.parity_plot"><a class="viewcode-back" href="../../modules/reeps.html#llepe.LLEPE.parity_plot">[docs]</a> <span class="k">def</span> <span class="nf">parity_plot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
<span class="n">compared_value</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">c_data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
@@ -1388,6 +1451,11 @@
<span class="s1">&#39;meas&#39;</span><span class="p">:</span> <span class="n">meas</span><span class="p">,</span>
<span class="n">c_data</span><span class="p">:</span> <span class="n">exp_df</span><span class="p">[</span><span class="n">c_data</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">,</span>
<span class="s1">&#39;feed_molarity&#39;</span><span class="p">:</span> <span class="n">feed_molarity</span><span class="p">})</span>
<span class="k">elif</span> <span class="n">c_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">combined_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">({</span><span class="s1">&#39;pred&#39;</span><span class="p">:</span> <span class="n">pred</span><span class="p">,</span>
<span class="s1">&#39;meas&#39;</span><span class="p">:</span> <span class="n">meas</span><span class="p">,</span>
<span class="s1">&#39;c_data&#39;</span><span class="p">:</span> <span class="n">c_data</span><span class="p">,</span>
<span class="s1">&#39;feed_molarity&#39;</span><span class="p">:</span> <span class="n">feed_molarity</span><span class="p">})</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">combined_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">({</span><span class="s1">&#39;pred&#39;</span><span class="p">:</span> <span class="n">pred</span><span class="p">,</span>
<span class="s1">&#39;meas&#39;</span><span class="p">:</span> <span class="n">meas</span><span class="p">,</span>
@@ -1420,35 +1488,36 @@
<span class="n">default_title</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">{0}</span><span class="s1"> complex eq. conc. (mol/L)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">compared_species</span><span class="p">)</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_labels</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
<span class="n">unique_labels</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">data_labels</span><span class="p">))</span>
<span class="k">for</span> <span class="n">label</span> <span class="ow">in</span> <span class="n">unique_labels</span><span class="p">:</span>
<span class="n">filtered_data</span> <span class="o">=</span> <span class="n">combined_df</span><span class="p">[</span><span class="n">combined_df</span><span class="p">[</span><span class="s1">&#39;label&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">label</span><span class="p">]</span>
<span class="n">filtered_meas</span> <span class="o">=</span> <span class="n">filtered_data</span><span class="p">[</span><span class="s1">&#39;meas&#39;</span><span class="p">]</span>
<span class="n">filtered_pred</span> <span class="o">=</span> <span class="n">filtered_data</span><span class="p">[</span><span class="s1">&#39;pred&#39;</span><span class="p">]</span>
<span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">filtered_meas</span><span class="p">,</span> <span class="n">filtered_pred</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">filtered_pred</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">filtered_meas</span><span class="p">,</span> <span class="n">filtered_pred</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span>
<span class="k">if</span> <span class="n">legend</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s1">&#39;best&#39;</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">c_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">c_data</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">c_data</span> <span class="o">=</span> <span class="n">combined_df</span><span class="p">[</span><span class="n">c_data</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">c_data</span> <span class="o">=</span> <span class="n">combined_df</span><span class="p">[</span><span class="s1">&#39;c_data&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
<span class="n">p1</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">meas</span><span class="p">,</span> <span class="n">pred</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="n">c_data</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">&#39;viridis&#39;</span><span class="p">)</span>
<span class="n">c_bar</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">%.2f</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">c_label</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">c_bar</span><span class="o">.</span><span class="n">set_label</span><span class="p">(</span><span class="n">c_label</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">270</span><span class="p">,</span> <span class="n">labelpad</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">sns</span><span class="o">.</span><span class="n">scatterplot</span><span class="p">(</span><span class="n">meas</span><span class="p">,</span> <span class="n">pred</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;r&quot;</span><span class="p">,</span>
<span class="n">legend</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">meas</span><span class="p">,</span> <span class="n">pred</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="s2">&quot;r&quot;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">min_max_data</span><span class="p">,</span> <span class="n">min_max_data</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;b&quot;</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">print_r_squared</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">min_max_data</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span>
<span class="n">min_max_data</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="mf">0.9</span><span class="p">,</span>
<span class="s1">&#39;$R^2$=</span><span class="si">{0:.2f}</span><span class="s1">&#39;</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">r_squared</span><span class="p">(</span><span class="n">compared_value</span><span class="p">)))</span>
<span class="c1"># plt.legend(loc=&#39;lower right&#39;)</span>
<span class="c1"># else:</span>
<span class="c1"># plt.legend()</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">xlabel</span><span class="o">=</span><span class="s1">&#39;Measured&#39;</span><span class="p">,</span> <span class="n">ylabel</span><span class="o">=</span><span class="s1">&#39;Predicted&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">plot_title</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>

View File

@@ -8,7 +8,7 @@ Installation
Prerequisites
=============
REEPS requires python3 (>=3.5) with the development headers.
LLEPE requires python3 (>=3.5) with the development headers.
Stable Release

View File

@@ -9,28 +9,41 @@ Here is a quick example of how to fit an xml thermodynamic model to experimental
This code fits Nd standard enthalpy in the "twophase.xml" cantera file to the
experimental data in "Nd_exp_data.csv".
This code requires that you copy and paste the "elementz.xml" file in the llepe's data folder into
the Cantera's data folder located in your environments site-packages folder.
The code then produces a parity plot of the measured and predicted concentrations of Nd 3+ in the
aqueous phase.
.. code-block:: python
from reeps import REEPS
from llepe import LLEPE
opt_dict = {'Nd(H(A)2)3(org)_h0': {'upper_element_name': 'species',
'upper_attrib_name': 'name',
'upper_attrib_value': 'Nd(H(A)2)3(org)',
'lower_element_name': 'h0',
'lower_attrib_name': None,
'lower_attrib_value': None,
'input_format': '{0}',
'input_value': -4.7e6}}
searcher_parameters = {'exp_csv_filename': 'Nd_exp_data.csv',
searcher_parameters = {'exp_data': 'Nd_exp_data.csv',
'phases_xml_filename': 'twophase.xml',
'opt_dict': {'Nd(H(A)2)3(org)': {'h0': -4.7e6}},
'opt_dict': opt_dict,
'phase_names': ['HCl_electrolyte', 'PC88A_liquid'],
'aq_solvent_name': 'H2O(L)',
'extractant_name': '(HA)2(org)',
'diluant_name': 'dodecane',
'complex_names': ['Nd(H(A)2)3(org)'],
'rare_earth_ion_names': ['Nd+++'],
'extracted_species_ion_names': ['Nd+++'],
'aq_solvent_rho': 1000.0,
'extractant_rho': 960.0,
'diluant_rho': 750.0}
searcher = REEPS(**searcher_parameters)
searcher = LLEPE(**searcher_parameters)
est_enthalpy = searcher.fit()
searcher.update_xml(est_enthalpy)
searcher.parity_plot(print_r_squared=True)
The code should return something like this
.. figure:: ../_static/img/quick_start_output.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -182,6 +182,8 @@
<li><a href="modules/reeps.html#llepe.LLEPE.get_aq_solvent_rho">get_aq_solvent_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_complex_names">get_complex_names() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_custom_objects_dict">get_custom_objects_dict() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_dependant_params_dict">get_dependant_params_dict() (llepe.LLEPE method)</a>
</li>
@@ -192,11 +194,11 @@
<li><a href="modules/reeps.html#llepe.LLEPE.get_exp_df">get_exp_df() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_extractant_name">get_extractant_name() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_extractant_rho">get_extractant_rho() (llepe.LLEPE method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#llepe.LLEPE.get_extractant_rho">get_extractant_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_extracted_species_ion_names">get_extracted_species_ion_names() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_extracted_species_list">get_extracted_species_list() (llepe.LLEPE method)</a>
@@ -280,6 +282,8 @@
<li><a href="modules/reeps.html#llepe.LLEPE.set_aq_solvent_rho">set_aq_solvent_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_complex_names">set_complex_names() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_custom_objects_dict">set_custom_objects_dict() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_dependant_params_dict">set_dependant_params_dict() (llepe.LLEPE method)</a>
</li>
@@ -288,11 +292,11 @@
<li><a href="modules/reeps.html#llepe.LLEPE.set_diluant_rho">set_diluant_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_exp_df">set_exp_df() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_extractant_name">set_extractant_name() (llepe.LLEPE method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#llepe.LLEPE.set_extractant_name">set_extractant_name() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_extractant_rho">set_extractant_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_extracted_species_ion_names">set_extracted_species_ion_names() (llepe.LLEPE method)</a>
@@ -317,10 +321,12 @@
<h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#llepe.LLEPE.update_predicted_dict">update_predicted_dict() (llepe.LLEPE method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.update_custom_objects_dict">update_custom_objects_dict() (llepe.LLEPE method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#llepe.LLEPE.update_predicted_dict">update_predicted_dict() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.update_xml">update_xml() (llepe.LLEPE method)</a>
</li>
</ul></td>

View File

@@ -166,7 +166,7 @@
<span id="install"></span><h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1>
<div class="section" id="prerequisites">
<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline"></a></h2>
<p>REEPS requires python3 (&gt;=3.5) with the development headers.</p>
<p>LLEPE requires python3 (&gt;=3.5) with the development headers.</p>
</div>
<div class="section" id="stable-release">
<h2>Stable Release<a class="headerlink" href="#stable-release" title="Permalink to this headline"></a></h2>

View File

@@ -160,29 +160,42 @@
<p>Here is a quick example of how to fit an xml thermodynamic model to experimental data.</p>
<p>This code fits Nd standard enthalpy in the &quot;twophase.xml&quot; cantera file to the
experimental data in &quot;Nd_exp_data.csv&quot;.</p>
<p>This code requires that you copy and paste the &quot;elementz.xml&quot; file in the llepe's data folder into
the Cantera's data folder located in your environments site-packages folder.</p>
<p>The code then produces a parity plot of the measured and predicted concentrations of Nd 3+ in the
aqueous phase.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">reeps</span> <span class="kn">import</span> <span class="n">REEPS</span>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">llepe</span> <span class="kn">import</span> <span class="n">LLEPE</span>
<span class="n">opt_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;Nd(H(A)2)3(org)_h0&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;upper_element_name&#39;</span><span class="p">:</span> <span class="s1">&#39;species&#39;</span><span class="p">,</span>
<span class="s1">&#39;upper_attrib_name&#39;</span><span class="p">:</span> <span class="s1">&#39;name&#39;</span><span class="p">,</span>
<span class="s1">&#39;upper_attrib_value&#39;</span><span class="p">:</span> <span class="s1">&#39;Nd(H(A)2)3(org)&#39;</span><span class="p">,</span>
<span class="s1">&#39;lower_element_name&#39;</span><span class="p">:</span> <span class="s1">&#39;h0&#39;</span><span class="p">,</span>
<span class="s1">&#39;lower_attrib_name&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
<span class="s1">&#39;lower_attrib_value&#39;</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span>
<span class="s1">&#39;input_format&#39;</span><span class="p">:</span> <span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">&#39;</span><span class="p">,</span>
<span class="s1">&#39;input_value&#39;</span><span class="p">:</span> <span class="o">-</span><span class="mf">4.7e6</span><span class="p">}}</span>
<span class="n">searcher_parameters</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;exp_csv_filename&#39;</span><span class="p">:</span> <span class="s1">&#39;Nd_exp_data.csv&#39;</span><span class="p">,</span>
<span class="n">searcher_parameters</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;exp_data&#39;</span><span class="p">:</span> <span class="s1">&#39;Nd_exp_data.csv&#39;</span><span class="p">,</span>
<span class="s1">&#39;phases_xml_filename&#39;</span><span class="p">:</span> <span class="s1">&#39;twophase.xml&#39;</span><span class="p">,</span>
<span class="s1">&#39;opt_dict&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;Nd(H(A)2)3(org)&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;h0&#39;</span><span class="p">:</span> <span class="o">-</span><span class="mf">4.7e6</span><span class="p">}},</span>
<span class="s1">&#39;opt_dict&#39;</span><span class="p">:</span> <span class="n">opt_dict</span><span class="p">,</span>
<span class="s1">&#39;phase_names&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;HCl_electrolyte&#39;</span><span class="p">,</span> <span class="s1">&#39;PC88A_liquid&#39;</span><span class="p">],</span>
<span class="s1">&#39;aq_solvent_name&#39;</span><span class="p">:</span> <span class="s1">&#39;H2O(L)&#39;</span><span class="p">,</span>
<span class="s1">&#39;extractant_name&#39;</span><span class="p">:</span> <span class="s1">&#39;(HA)2(org)&#39;</span><span class="p">,</span>
<span class="s1">&#39;diluant_name&#39;</span><span class="p">:</span> <span class="s1">&#39;dodecane&#39;</span><span class="p">,</span>
<span class="s1">&#39;complex_names&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;Nd(H(A)2)3(org)&#39;</span><span class="p">],</span>
<span class="s1">&#39;rare_earth_ion_names&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;Nd+++&#39;</span><span class="p">],</span>
<span class="s1">&#39;extracted_species_ion_names&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;Nd+++&#39;</span><span class="p">],</span>
<span class="s1">&#39;aq_solvent_rho&#39;</span><span class="p">:</span> <span class="mf">1000.0</span><span class="p">,</span>
<span class="s1">&#39;extractant_rho&#39;</span><span class="p">:</span> <span class="mf">960.0</span><span class="p">,</span>
<span class="s1">&#39;diluant_rho&#39;</span><span class="p">:</span> <span class="mf">750.0</span><span class="p">}</span>
<span class="n">searcher</span> <span class="o">=</span> <span class="n">REEPS</span><span class="p">(</span><span class="o">**</span><span class="n">searcher_parameters</span><span class="p">)</span>
<span class="n">searcher</span> <span class="o">=</span> <span class="n">LLEPE</span><span class="p">(</span><span class="o">**</span><span class="n">searcher_parameters</span><span class="p">)</span>
<span class="n">est_enthalpy</span> <span class="o">=</span> <span class="n">searcher</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
<span class="n">searcher</span><span class="o">.</span><span class="n">update_xml</span><span class="p">(</span><span class="n">est_enthalpy</span><span class="p">)</span>
<span class="n">searcher</span><span class="o">.</span><span class="n">parity_plot</span><span class="p">(</span><span class="n">print_r_squared</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
</div>
<p>The code should return something like this</p>
<div class="figure align-default">
<img alt="../_images/quick_start_output.png" src="../_images/quick_start_output.png" />
</div>
</div>

View File

@@ -163,7 +163,7 @@
<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline"></a></h2>
<dl class="py class">
<dt id="llepe.LLEPE">
<em class="property">class </em><code class="sig-prename descclassname">llepe.</code><code class="sig-name descname">LLEPE</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">exp_data</span></em>, <em class="sig-param"><span class="n">phases_xml_filename</span></em>, <em class="sig-param"><span class="n">phase_names</span></em>, <em class="sig-param"><span class="n">aq_solvent_name</span></em>, <em class="sig-param"><span class="n">extractant_name</span></em>, <em class="sig-param"><span class="n">diluant_name</span></em>, <em class="sig-param"><span class="n">complex_names</span></em>, <em class="sig-param"><span class="n">extracted_species_ion_names</span></em>, <em class="sig-param"><span class="n">extracted_species_list</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">aq_solvent_rho</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">extractant_rho</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">diluant_rho</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">opt_dict</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">objective_function</span><span class="o">=</span><span class="default_value">'Log-MSE'</span></em>, <em class="sig-param"><span class="n">optimizer</span><span class="o">=</span><span class="default_value">'SLSQP'</span></em>, <em class="sig-param"><span class="n">temp_xml_file_path</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">dependant_params_dict</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE" title="Permalink to this definition"></a></dt>
<em class="property">class </em><code class="sig-prename descclassname">llepe.</code><code class="sig-name descname">LLEPE</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">exp_data</span></em>, <em class="sig-param"><span class="n">phases_xml_filename</span></em>, <em class="sig-param"><span class="n">phase_names</span></em>, <em class="sig-param"><span class="n">aq_solvent_name</span></em>, <em class="sig-param"><span class="n">extractant_name</span></em>, <em class="sig-param"><span class="n">diluant_name</span></em>, <em class="sig-param"><span class="n">complex_names</span></em>, <em class="sig-param"><span class="n">extracted_species_ion_names</span></em>, <em class="sig-param"><span class="n">extracted_species_list</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">aq_solvent_rho</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">extractant_rho</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">diluant_rho</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">opt_dict</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">objective_function</span><span class="o">=</span><span class="default_value">'Log-MSE'</span></em>, <em class="sig-param"><span class="n">optimizer</span><span class="o">=</span><span class="default_value">'scipy_minimize'</span></em>, <em class="sig-param"><span class="n">temp_xml_file_path</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">dependant_params_dict</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">custom_objects_dict</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE" title="Permalink to this definition"></a></dt>
<dd><p>Liquid-Liquid Extraction Parameter estimator</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
@@ -277,10 +277,8 @@ i.e. Nd(H(A)2)3(org), Pr(H(A)2)3(org)</p>
<li><p><strong>extracted_species_ion_names</strong> -- (list) names of extracted species ions
in xml file</p></li>
<li><p><strong>extracted_species_list</strong> -- <p>(list) names of extracted species elements.</p>
<dl class="simple">
<dt>If <code class="docutils literal notranslate"><span class="pre">None</span></code>, extracted_species_list will be extracted_species_ion_names</dt><dd><p>without '+' i.e. 'Nd+++'-&gt;'Nd'</p>
</dd>
</dl>
<p>If <code class="docutils literal notranslate"><span class="pre">None</span></code>, extracted_species_list will be extracted_species_ion_names
without '+' i.e. 'Nd+++'-&gt;'Nd'</p>
</p></li>
<li><p><strong>aq_solvent_rho</strong> -- <p>(float) density of solvent (g/L)</p>
<p>If <code class="docutils literal notranslate"><span class="pre">None</span></code>, molar volume/molecular weight is used from xml</p>
@@ -402,13 +400,19 @@ xml file</p>
about parameters dependant on opt_dict. Has a similar structure to
opt_dict except instead of input values, it has 3 other fields:
'function', 'kwargs', and 'independent_params.</p>
<p>'function' is a function of the form
<code class="docutils literal notranslate"><span class="pre">function(independent_param__value_list,</span> <span class="pre">**kwargs)</span></code>
'kwargs' are the extra arguments to pass to function
'independent_params' is a list of parameter names in opt_dict that the
<p>'function' is a function of the form</p>
<p><code class="docutils literal notranslate"><span class="pre">function(independent_param__value_list,</span> <span class="pre">custom_objects_dict,</span>
<span class="pre">**kwargs)</span></code></p>
<p>'kwargs' are the extra arguments to pass to function</p>
<p>'independent_params' is a list of parameter names in opt_dict that the
dependent_param is a function of.</p>
<p>'custom_objects_dict' is for accessing the estimator's internal
custom_objects_dict and must be included in the arguments, even if the
custom_objects_dict is not set and is None.</p>
<p>See example code for usage.</p>
</p></li>
<li><p><strong>custom_objects_dict</strong> -- (dict) dictionary containing custom objects
format: {&lt;object_name_string&gt;: &lt;object&gt;,...}</p></li>
</ul>
</dd>
</dl>
@@ -469,14 +473,28 @@ optimized opt_dict: Has identical structure as opt_dict</p>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.get_custom_objects_dict">
<code class="sig-name descname">get_custom_objects_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_custom_objects_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_custom_objects_dict" title="Permalink to this definition"></a></dt>
<dd><p>Returns the custom_objects_dict</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>custom_objects_dict: (dict) dictionary containing
information about custom objects from user</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.get_dependant_params_dict">
<code class="sig-name descname">get_dependant_params_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_dependant_params_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_dependant_params_dict" title="Permalink to this definition"></a></dt>
<dd><p>Returns the dependant_params_dict
:return: dependant_params_dict: (dict) dictionary containing</p>
<blockquote>
<div><p>information about parameters dependant on opt_dict</p>
</div></blockquote>
<dd><p>Returns the dependant_params_dict</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>dependant_params_dict: (dict) dictionary containing
information about parameters dependant on opt_dict</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
@@ -795,12 +813,28 @@ objective_function value</p>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.set_custom_objects_dict">
<code class="sig-name descname">set_custom_objects_dict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">custom_objects_dict</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_custom_objects_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_custom_objects_dict" title="Permalink to this definition"></a></dt>
<dd><p>Sets the custom_objects_dict</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>custom_objects_dict</strong> -- (dict) dictionary containing information
about about custom objects from user</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.set_dependant_params_dict">
<code class="sig-name descname">set_dependant_params_dict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">dependant_params_dict</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_dependant_params_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_dependant_params_dict" title="Permalink to this definition"></a></dt>
<dd><p>Sets the dependant_params_dict
:param dependant_params_dict: (dict) dictionary containing information
<dd><p>Sets the dependant_params_dict</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>dependant_params_dict</strong> -- (dict) dictionary containing information
about parameters dependant on opt_dict</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
@@ -979,6 +1013,21 @@ xml file.</p>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.update_custom_objects_dict">
<code class="sig-name descname">update_custom_objects_dict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">info_dict</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.update_custom_objects_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.update_custom_objects_dict" title="Permalink to this definition"></a></dt>
<dd><p>updates internal custom_objects_dict with info_dict</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>info_dict</strong> -- Requires an identical structure to opt_dict
Ignores items with keys containing &quot;custom_object_name&quot;</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>None</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.update_predicted_dict">
<code class="sig-name descname">update_predicted_dict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">phases_xml_filename</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">phase_names</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.update_predicted_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.update_predicted_dict" title="Permalink to this definition"></a></dt>
@@ -1005,8 +1054,8 @@ If <code class="docutils literal notranslate"><span class="pre">None</span></cod
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>info_dict</strong> -- (dict) info in {species_names:{thermo_prop:val}}
Requires an identical structure to opt_dict</p></li>
<li><p><strong>info_dict</strong> -- (dict) Requires an identical structure to opt_dict
Ignores items with keys containing &quot;custom_object_name&quot;</p></li>
<li><p><strong>phases_xml_filename</strong> -- (str) xml filename if editing other xml
If <code class="docutils literal notranslate"><span class="pre">None</span></code>, the current xml will be modified and the internal
Cantera phases will be refreshed to the new values.</p></li>

Binary file not shown.

File diff suppressed because one or more lines are too long