Updated documentation

pull/1/head
titusquah 5 years ago
parent 90b086b6fe
commit af71a2c208

@ -1,9 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="f4439dc0-6756-4612-8f7d-596d8949f300" name="Default Changelist" comment="Updated iterative_fitter.py to calculate error for all species. Added new test with mean squared error.">
<change afterPath="$PROJECT_DIR$/docs/Examples/outputs/iterative_fitter_output2.csv" afterDir="false" />
<change afterPath="$PROJECT_DIR$/docs/Examples/outputs/iterative_fitter_short_info_dict.txt" afterDir="false" />
<list default="true" id="f4439dc0-6756-4612-8f7d-596d8949f300" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/data/csvs/PC88A_HCL_NdPrCeLaDySmY.csv" beforeDir="false" afterPath="$PROJECT_DIR$/data/csvs/PC88A_HCL_NdPrCeLaDySmY.csv" afterDir="false" />
<change beforePath="$PROJECT_DIR$/data/xmls/PC88A_HCL_NdPrCeLaDySmY_w_pitzer.xml" beforeDir="false" afterPath="$PROJECT_DIR$/data/xmls/PC88A_HCL_NdPrCeLaDySmY_w_pitzer.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/data/xmls/twophase.xml" beforeDir="false" afterPath="$PROJECT_DIR$/data/xmls/twophase.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/Examples/iterative_fitter_eval_grapher.py" beforeDir="false" afterPath="$PROJECT_DIR$/docs/Examples/iterative_fitter_eval_grapher.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/Examples/outputs/temp.xml" beforeDir="false" afterPath="$PROJECT_DIR$/docs/Examples/outputs/temp.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/doctrees/environment.pickle" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/doctrees/environment.pickle" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/doctrees/guide/install.doctree" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/doctrees/guide/install.doctree" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/doctrees/guide/quickstart.doctree" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/doctrees/guide/quickstart.doctree" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/doctrees/modules/reeps.doctree" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/doctrees/modules/reeps.doctree" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/_modules/llepe/llepe.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/_modules/llepe/llepe.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/_sources/guide/install.rst.txt" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/_sources/guide/install.rst.txt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/_sources/guide/quickstart.rst.txt" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/_sources/guide/quickstart.rst.txt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/genindex.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/genindex.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/guide/install.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/guide/install.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/guide/quickstart.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/guide/quickstart.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/modules/reeps.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/modules/reeps.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/objects.inv" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/objects.inv" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/searchindex.js" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/searchindex.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/source/guide/install.rst" beforeDir="false" afterPath="$PROJECT_DIR$/docs/source/guide/install.rst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/source/guide/quickstart.rst" beforeDir="false" afterPath="$PROJECT_DIR$/docs/source/guide/quickstart.rst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/llepe/llepe.py" beforeDir="false" afterPath="$PROJECT_DIR$/llepe/llepe.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -41,7 +62,7 @@
<property name="run.code.analysis.last.selected.profile" value="aDefault" />
<property name="settings.editor.selected.configurable" value="preferences.sourceCode" />
</component>
<component name="RunManager" selected="Python.iterative_fitter_w_mse">
<component name="RunManager" selected="Python.scratch_1">
<configuration name="estimator_eval" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" />
@ -78,25 +99,28 @@
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="iterative_fitter_eval_grapher" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<configuration name="grapher_r2" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/docs/examples" />
<option name="IS_MODULE_SDK" value="true" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/figures/graphers" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/docs/examples/iterative_fitter_eval_grapher.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/figures/graphers/grapher_r2.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="true" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="iterative_fitter_w_mse" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<configuration name="iterative_fitter_eval_grapher" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
@ -105,7 +129,7 @@
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/docs/examples/iterative_fitter_w_mse.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/docs/examples/iterative_fitter_eval_grapher.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="true" />
<option name="EMULATE_TERMINAL" value="false" />
@ -114,7 +138,7 @@
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="zeroes_removed_fit" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<configuration name="scratch_1" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
@ -122,11 +146,11 @@
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/one_rare_earth_fit" />
<option name="WORKING_DIRECTORY" value="$APPLICATION_CONFIG_DIR$/scratches" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/one_rare_earth_fit/zeroes_removed_fit.py" />
<option name="SCRIPT_NAME" value="$APPLICATION_CONFIG_DIR$/scratches/scratch_1.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
@ -137,11 +161,11 @@
</configuration>
<recent_temporary>
<list>
<item itemvalue="Python.iterative_fitter_w_mse" />
<item itemvalue="Python.scratch_1" />
<item itemvalue="Python.iterative_fitter_eval_grapher" />
<item itemvalue="Python.eval_mod_lin_params_const_pitzer" />
<item itemvalue="Python.estimator_eval" />
<item itemvalue="Python.estimator_eval" />
<item itemvalue="Python.grapher_r2" />
</list>
</recent_temporary>
</component>
@ -416,7 +440,21 @@
<option name="project" value="LOCAL" />
<updated>1595008865648</updated>
</task>
<option name="localTasksCounter" value="36" />
<task id="LOCAL-00036" summary="Updated iterative_fitter.py to calculate error for all species. Added new test with mean squared error.">
<created>1595009126224</created>
<option name="number" value="00036" />
<option name="presentableId" value="LOCAL-00036" />
<option name="project" value="LOCAL" />
<updated>1595009126224</updated>
</task>
<task id="LOCAL-00037" summary="deleted redundant files">
<created>1595009200358</created>
<option name="number" value="00037" />
<option name="presentableId" value="LOCAL-00037" />
<option name="project" value="LOCAL" />
<updated>1595009200358</updated>
</task>
<option name="localTasksCounter" value="38" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -454,7 +492,8 @@
<MESSAGE value="Updated iterative_fitter.py" />
<MESSAGE value="Updated iterative_fitter.py to fix slopes to 3, stop after minimal change in best objective. ALso added last results from iteration_fitter.py" />
<MESSAGE value="Updated iterative_fitter.py to calculate error for all species. Added new test with mean squared error." />
<option name="LAST_COMMIT_MESSAGE" value="Updated iterative_fitter.py to calculate error for all species. Added new test with mean squared error." />
<MESSAGE value="deleted redundant files" />
<option name="LAST_COMMIT_MESSAGE" value="deleted redundant files" />
</component>
<component name="WindowStateProjectService">
<state x="-1330" y="212" key="#Inspections" timestamp="1590787654691">
@ -478,10 +517,10 @@
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state x="-1213" y="379" key="ANALYSIS_DLG_com.intellij.analysis.BaseAnalysisAction$1/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1590787657711" />
<state x="-1364" y="117" key="CommitChangelistDialog2" timestamp="1595009120606">
<state x="-1364" y="117" key="CommitChangelistDialog2" timestamp="1595009194979">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state x="-1364" y="117" key="CommitChangelistDialog2/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1595009120606" />
<state x="-1364" y="117" key="CommitChangelistDialog2/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1595009194979" />
<state x="662" y="155" key="CommitChangelistDialog2/0.0.1920.1040@0.0.1920.1040" timestamp="1594913509145" />
<state x="-1828" y="94" width="1736" height="856" key="DiffContextDialog" timestamp="1591048879404">
<screen x="-1920" y="2" width="1920" height="1040" />
@ -496,29 +535,37 @@
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state x="-1523" y="423" key="GitRewordDialog/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592321433648" />
<state width="1899" height="279" key="GridCell.Tab.0.bottom" timestamp="1594958896281">
<screen x="-1920" y="2" width="1920" height="1040" />
<state width="1899" height="278" key="GridCell.Tab.0.bottom" timestamp="1595882107104">
<screen x="-1920" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="278" key="GridCell.Tab.0.bottom/0.0.1536.824/-1920.0.1920.1040@-1920.0.1920.1040" timestamp="1595882107104" />
<state width="1899" height="279" key="GridCell.Tab.0.bottom/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1594958896281" />
<state width="1897" height="281" key="GridCell.Tab.0.bottom/0.0.1536.824/-1920.2.1920.1040@0.0.1536.824" timestamp="1590795386435" />
<state width="1515" height="208" key="GridCell.Tab.0.bottom/0.0.1536.824@0.0.1536.824" timestamp="1595614185238" />
<state width="1899" height="279" key="GridCell.Tab.0.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1594929812457" />
<state width="1899" height="279" key="GridCell.Tab.0.center" timestamp="1594958896281">
<screen x="-1920" y="2" width="1920" height="1040" />
<state width="1899" height="278" key="GridCell.Tab.0.center" timestamp="1595882107101">
<screen x="-1920" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="278" key="GridCell.Tab.0.center/0.0.1536.824/-1920.0.1920.1040@-1920.0.1920.1040" timestamp="1595882107101" />
<state width="1899" height="279" key="GridCell.Tab.0.center/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1594958896281" />
<state width="1897" height="281" key="GridCell.Tab.0.center/0.0.1536.824/-1920.2.1920.1040@0.0.1536.824" timestamp="1590795386434" />
<state width="1515" height="208" key="GridCell.Tab.0.center/0.0.1536.824@0.0.1536.824" timestamp="1595614185237" />
<state width="1899" height="279" key="GridCell.Tab.0.center/0.0.1920.1040@0.0.1920.1040" timestamp="1594929812457" />
<state width="1899" height="279" key="GridCell.Tab.0.left" timestamp="1594958896281">
<screen x="-1920" y="2" width="1920" height="1040" />
<state width="1899" height="278" key="GridCell.Tab.0.left" timestamp="1595882107101">
<screen x="-1920" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="278" key="GridCell.Tab.0.left/0.0.1536.824/-1920.0.1920.1040@-1920.0.1920.1040" timestamp="1595882107101" />
<state width="1899" height="279" key="GridCell.Tab.0.left/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1594958896281" />
<state width="1897" height="281" key="GridCell.Tab.0.left/0.0.1536.824/-1920.2.1920.1040@0.0.1536.824" timestamp="1590795386433" />
<state width="1515" height="208" key="GridCell.Tab.0.left/0.0.1536.824@0.0.1536.824" timestamp="1595614185237" />
<state width="1899" height="279" key="GridCell.Tab.0.left/0.0.1920.1040@0.0.1920.1040" timestamp="1594929812457" />
<state width="1899" height="279" key="GridCell.Tab.0.right" timestamp="1594958896281">
<screen x="-1920" y="2" width="1920" height="1040" />
<state width="1899" height="278" key="GridCell.Tab.0.right" timestamp="1595882107103">
<screen x="-1920" y="0" width="1920" height="1040" />
</state>
<state width="1899" height="278" key="GridCell.Tab.0.right/0.0.1536.824/-1920.0.1920.1040@-1920.0.1920.1040" timestamp="1595882107103" />
<state width="1899" height="279" key="GridCell.Tab.0.right/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1594958896281" />
<state width="1897" height="281" key="GridCell.Tab.0.right/0.0.1536.824/-1920.2.1920.1040@0.0.1536.824" timestamp="1590795386434" />
<state width="1515" height="208" key="GridCell.Tab.0.right/0.0.1536.824@0.0.1536.824" timestamp="1595614185238" />
<state width="1899" height="279" key="GridCell.Tab.0.right/0.0.1920.1040@0.0.1920.1040" timestamp="1594929812457" />
<state width="1899" height="348" key="GridCell.Tab.1.bottom" timestamp="1594852783301">
<screen x="-1920" y="2" width="1920" height="1040" />
@ -557,9 +604,10 @@
</state>
<state x="-1368" y="256" key="Vcs.Push.Dialog.v2/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592321242949" />
<state x="552" y="254" key="Vcs.Push.Dialog.v2/0.0.1920.1040@0.0.1920.1040" timestamp="1594770419652" />
<state x="263" y="182" width="1283" height="717" key="com.intellij.ide.util.TipDialog" timestamp="1594821704291">
<screen x="0" y="0" width="1920" height="1040" />
<state x="-1657" y="182" width="1283" height="717" key="com.intellij.ide.util.TipDialog" timestamp="1595513909435">
<screen x="-1920" y="0" width="1920" height="1040" />
</state>
<state x="-1657" y="182" key="com.intellij.ide.util.TipDialog/0.0.1536.824/-1920.0.1920.1040@-1920.0.1920.1040" timestamp="1595513909435" />
<state x="-1341" y="300" key="com.intellij.ide.util.TipDialog/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1593278433547" />
<state x="463" y="236" key="com.intellij.ide.util.TipDialog/0.0.1536.824/-1920.2.1920.1040@0.0.1536.824" timestamp="1592413869252" />
<state x="263" y="182" width="1283" height="717" key="com.intellij.ide.util.TipDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1594821704291" />
@ -577,9 +625,10 @@
</state>
<state x="-1219" y="166" key="refactoring.ChangeSignatureDialog/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591059193684" />
<state x="701" y="164" key="refactoring.ChangeSignatureDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1594217920814" />
<state x="623" y="225" width="672" height="678" key="search.everywhere.popup" timestamp="1594763968564">
<screen x="0" y="0" width="1920" height="1040" />
<state x="-1297" y="225" width="672" height="678" key="search.everywhere.popup" timestamp="1595473667161">
<screen x="-1920" y="0" width="1920" height="1040" />
</state>
<state x="-1297" y="225" width="672" height="678" key="search.everywhere.popup/0.0.1536.824/-1920.0.1920.1040@-1920.0.1920.1040" timestamp="1595473667161" />
<state x="-1297" y="227" width="672" height="678" key="search.everywhere.popup/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1594092852973" />
<state x="623" y="225" width="672" height="678" key="search.everywhere.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1594763968564" />
</component>

@ -1,11 +1,11 @@
# REEPS
REEPS (Rare Earth Element Parameter Searcher) is a toolkit for estimating standard thermodynamic parameters for Gibbs minimization.
Extend a methodology for estimating standard thermodynamic parameters for Gibbs minimization in multiphase, multicomponent separations systems
LLEPE (Liquid-Liquid Extraction Parameter Estimator) is a toolkit for estimating standard thermodynamic parameters for Gibbs minimization.
## Installation
To install REEPS, clone the repository with the command
To install llepe, clone the repository with the command
```
$ git clone https://xgitlab.cels.anl.gov/summer-2020/parameter-estimation.git
@ -19,16 +19,42 @@ and run the command below in your terminal
```
$ pip install -e.
```
For docs and tests, run
```
$ pip install -e .[docs,tests]
```
### Dependencies
REEPS uses packages: cantera (https://cantera.org/), pandas, numpy, scipy, xml, seaborn, and matplotlib
llepe uses packages: cantera (https://cantera.org/), pandas, numpy, scipy, xml, seaborn, and matplotlib
## Usage
Check out examples in docs/examples
Readthedocs documentation are in docs/build/html/index.html
```python
from reeps import REEPS
searcher = REEPS(**REEPS_parameters_dictionary)
optimized_parameter_dictionary = searcher.fit()
searcher.update_xml(optimized_parameter_dictionary)
searcher.parity_plot()
print(seacher.r_squared())
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_data': 'Nd_exp_data.csv',
'phases_xml_filename': 'twophase.xml',
'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)'],
'extracted_species_ion_names': ['Nd+++'],
'aq_solvent_rho': 1000.0,
'extractant_rho': 960.0,
'diluant_rho': 750.0}
searcher = LLEPE(**searcher_parameters)
est_enthalpy = searcher.fit()
searcher.update_xml(est_enthalpy)
searcher.parity_plot(print_r_squared=True)
```

@ -10,16 +10,16 @@ Lyon (2016),0.01,0.01,1,1,0.259983361,0.197587354,0.315789474,0.088710553,0.0718
Lyon (2016),0.05,0.05,1,1,0.259983361,0.207986689,0.25,0.088710553,0.07540397,0.176470588,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Lyon (2016),0.1,0.1,1,1,0.259983361,0.21578619,0.204819277,0.088710553,0.077178181,0.149425287,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Lyon (2016),0.3,0.3,1,1,0.259983361,0.244384359,0.063829787,0.088710553,0.08338792,0.063829787,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.1,0.1,0.022739878,0.017097653,0.33,0.008303308,0.006642646,0.25,0,0,0,0.054425491,0.050393973,0.08,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.3,0.3,0.022739878,0.013298174,0.71,0.008303308,0.005462702,0.52,0,0,0,0.054425491,0.048594188,0.12,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.5,0.5,0.022739878,0.010932634,1.08,0.008303308,0.004537327,0.83,0,0,0,0.054425491,0.048164151,0.13,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.7,0.7,0.022739878,0.009396644,1.42,0.008303308,0.003972875,1.09,0,0,0,0.054425491,0.047326514,0.15,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.9,0.9,0.022739878,0.008209342,1.77,0.008303308,0.002997584,1.77,0,0,0,0.054425491,0.045735706,0.19,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.1,0.1,0.022739878,0.018928042,0.201385664,0.008303308,0.007354823,0.128960943,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.3,0.3,0.022739878,0.014333115,0.586527247,0.008303308,0.005999476,0.384005473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.5,0.5,0.022739878,0.010952454,1.076235839,0.008303308,0.004805359,0.727926764,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.7,0.7,0.022739878,0.008786058,1.588177405,0.008303308,0.003974007,1.089404412,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.9,0.9,0.022739878,0.00700602,2.245762712,0.008303308,0.00322327,1.576050934,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.1,0.1,0.022739878,0.017097653,0.33,0.008303308,0.006642646,0.25,0,0,0,0.054425491,0.050393973,0.08,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.3,0.3,0.022739878,0.013298174,0.71,0.008303308,0.005462702,0.52,0,0,0,0.054425491,0.048594188,0.12,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.5,0.5,0.022739878,0.010932634,1.08,0.008303308,0.004537327,0.83,0,0,0,0.054425491,0.048164151,0.13,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.7,0.7,0.022739878,0.009396644,1.42,0.008303308,0.003972875,1.09,0,0,0,0.054425491,0.047326514,0.15,0,0,0,0,0,0,0,0,0
Banda (2014),1.00E-05,1.00E-05,0.9,0.9,0.022739878,0.008209342,1.77,0.008303308,0.002997584,1.77,0,0,0,0.054425491,0.045735706,0.19,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.1,0.1,0.022739878,0.018928042,0.201385664,0.008303308,0.007354823,0.128960943,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.3,0.3,0.022739878,0.014333115,0.586527247,0.008303308,0.005999476,0.384005473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.5,0.5,0.022739878,0.010952454,1.076235839,0.008303308,0.004805359,0.727926764,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.7,0.7,0.022739878,0.008786058,1.588177405,0.008303308,0.003974007,1.089404412,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Liu (2014),1.00E-05,1.00E-05,0.9,0.9,0.022739878,0.00700602,2.245762712,0.008303308,0.00322327,1.576050934,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Kim (2012),0.01023293,0.01023293,0.1,0.1,0.009359401,0.007999488,0.17,0.003371001,0.003064546,0.1,0.038539496,0.037783819,0.02,0.022461314,0.022020896,0.02,0,0,0,0,0,0,0,0,0
Kim (2012),0.01023293,0.01023293,0.3,0.3,0.009359401,0.006881912,0.36,0.003371001,0.002763116,0.22,0.038539496,0.035357336,0.09,0.022461314,0.021597417,0.04,0,0,0,0,0,0,0,0,0
Kim (2012),0.01023293,0.01023293,0.5,0.5,0.009359401,0.005813293,0.61,0.003371001,0.002340973,0.44,0.038539496,0.032386131,0.19,0.022461314,0.02060671,0.09,0,0,0,0,0,0,0,0,0

1 label Feed H+[M] Feed H+[M].1 PC88A[M] PC88A[M].1 Feed Nd[M] Xaq Nd D Nd Feed Pr[M] Xaq Pr D Pr Feed Ce[M] Xaq Ce D Ce Feed La[M] Xaq La D La Feed Dy[M] Xaq Dy D Dy Feed Sm[M] Xaq Sm D Sm Feed Y[M] Xaq Y D Y
10 Lyon (2016) 0.05 0.05 1 1 0.259983361 0.207986689 0.25 0.088710553 0.07540397 0.176470588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 Lyon (2016) 0.1 0.1 1 1 0.259983361 0.21578619 0.204819277 0.088710553 0.077178181 0.149425287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 Lyon (2016) 0.3 0.3 1 1 0.259983361 0.244384359 0.063829787 0.088710553 0.08338792 0.063829787 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 Liu (2014) Banda (2014) 1.00E-05 1.00E-05 0.1 0.1 0.022739878 0.017097653 0.33 0.008303308 0.006642646 0.25 0 0 0 0.054425491 0.050393973 0.08 0 0 0 0 0 0 0 0 0
14 Liu (2014) Banda (2014) 1.00E-05 1.00E-05 0.3 0.3 0.022739878 0.013298174 0.71 0.008303308 0.005462702 0.52 0 0 0 0.054425491 0.048594188 0.12 0 0 0 0 0 0 0 0 0
15 Liu (2014) Banda (2014) 1.00E-05 1.00E-05 0.5 0.5 0.022739878 0.010932634 1.08 0.008303308 0.004537327 0.83 0 0 0 0.054425491 0.048164151 0.13 0 0 0 0 0 0 0 0 0
16 Liu (2014) Banda (2014) 1.00E-05 1.00E-05 0.7 0.7 0.022739878 0.009396644 1.42 0.008303308 0.003972875 1.09 0 0 0 0.054425491 0.047326514 0.15 0 0 0 0 0 0 0 0 0
17 Liu (2014) Banda (2014) 1.00E-05 1.00E-05 0.9 0.9 0.022739878 0.008209342 1.77 0.008303308 0.002997584 1.77 0 0 0 0.054425491 0.045735706 0.19 0 0 0 0 0 0 0 0 0
18 Banda (2014) Liu (2014) 1.00E-05 1.00E-05 0.1 0.1 0.022739878 0.018928042 0.201385664 0.008303308 0.007354823 0.128960943 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
19 Banda (2014) Liu (2014) 1.00E-05 1.00E-05 0.3 0.3 0.022739878 0.014333115 0.586527247 0.008303308 0.005999476 0.384005473 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
20 Banda (2014) Liu (2014) 1.00E-05 1.00E-05 0.5 0.5 0.022739878 0.010952454 1.076235839 0.008303308 0.004805359 0.727926764 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
21 Banda (2014) Liu (2014) 1.00E-05 1.00E-05 0.7 0.7 0.022739878 0.008786058 1.588177405 0.008303308 0.003974007 1.089404412 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
22 Banda (2014) Liu (2014) 1.00E-05 1.00E-05 0.9 0.9 0.022739878 0.00700602 2.245762712 0.008303308 0.00322327 1.576050934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
23 Kim (2012) 0.01023293 0.01023293 0.1 0.1 0.009359401 0.007999488 0.17 0.003371001 0.003064546 0.1 0.038539496 0.037783819 0.02 0.022461314 0.022020896 0.02 0 0 0 0 0 0 0 0 0
24 Kim (2012) 0.01023293 0.01023293 0.3 0.3 0.009359401 0.006881912 0.36 0.003371001 0.002763116 0.22 0.038539496 0.035357336 0.09 0.022461314 0.021597417 0.04 0 0 0 0 0 0 0 0 0
25 Kim (2012) 0.01023293 0.01023293 0.5 0.5 0.009359401 0.005813293 0.61 0.003371001 0.002340973 0.44 0.038539496 0.032386131 0.19 0.022461314 0.02060671 0.09 0 0 0 0 0 0 0 0 0

@ -33,7 +33,7 @@
<thermo>
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 11:58 7-17-2020">-1376882.3191117246</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-1376882.0784583509</h0>
<s0 units="J/mol/K"> 558.9824 </s0>
<cp0 units="J/mol/K"> 0.0</cp0>
</const_cp>
@ -50,7 +50,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 11:58 7-17-2020">-4925566.309854757</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4924298.0880370205</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -67,7 +67,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 11:58 7-17-2020">-4938249.845712334</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4935685.119723228</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -85,7 +85,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 11:58 7-17-2020">-4920387.823199008</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4920369.042961768</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -103,7 +103,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 11:58 7-17-2020">-4933548.865580005</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4928639.61964031</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -120,7 +120,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 11:58 7-17-2020">-4932560.171447597</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4931991.722599618</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -138,7 +138,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 11:58 7-17-2020">-4944840.781582316</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4944682.264585918</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -157,7 +157,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 11:58 7-17-2020">-4924696.189921901</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4924669.3217661735</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -245,10 +245,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Pr+++">
<beta0 updated="Updated at 11:58 7-17-2020"> 0.05879108748614492, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 11:58 7-17-2020"> 0.5448324180244323, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.058791091500561485, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 0.5448322248125199, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.02066999867229882, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.02066999867229882, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -261,10 +261,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Nd+++">
<beta0 updated="Updated at 11:58 7-17-2020"> 1.2137222016802447, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 11:58 7-17-2020"> 7.748226963005033, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 1.213717095858249, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 7.7481294675488375, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.01963615126026457, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.01963615126026457, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -277,10 +277,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="La+++">
<beta0 updated="Updated at 11:58 7-17-2020"> 1.022316535866388, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 11:58 7-17-2020"> 0.5296311209773129, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 1.0223168335791355, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 0.5296306654103653, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.024339999997603376, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.024339999997603376, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -293,10 +293,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Dy+++">
<beta0 updated="Updated at 11:58 7-17-2020"> 0.7646397332938777, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 11:58 7-17-2020"> 7.849320590516409, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.7646372240575223, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 7.849276225207628, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.019699989216349984, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.019699989216349984, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -309,10 +309,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Ce+++">
<beta0 updated="Updated at 11:58 7-17-2020"> 0.2035235053232368, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 11:58 7-17-2020"> 21.120426174002823, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.20352350320923904, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 21.120419048363047, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.02618999999473301, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.02618999999473301, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -325,10 +325,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Y+++">
<beta0 updated="Updated at 11:58 7-17-2020"> 0.8852802073165494, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 11:58 7-17-2020"> 9.334653075341238, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.8852797060008407, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 9.334636294454038, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.015467323909969704, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.015467323909969704, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -341,10 +341,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Sm+++">
<beta0 updated="Updated at 11:58 7-17-2020"> 0.6989081585234721, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 11:58 7-17-2020"> 6.877882600430561, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.6989083059080712, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 6.877881736471866, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.019920000110321332, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.019920000110321332, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>

@ -50,7 +50,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 15:42 7-15-2020">-4704699.156668724</h0>
<h0 units="J/mol" updated="Updated at 14:28 7-27-2020">-4704699.156668724</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>

@ -10,6 +10,9 @@ font = {'family': 'sans serif',
matplotlib.rc('font', **font)
plt.rc('xtick', labelsize=18)
plt.rc('ytick', labelsize=18)
plt.rcParams['lines.linewidth'] = 4
matplotlib.rcParams['lines.markersize'] = 10
def ext_to_complex(h0, custom_obj_dict, mini_species):
linear_params = custom_obj_dict['lin_param_df']
@ -24,7 +27,8 @@ def mod_lin_param_df(lp_df, input_val, mini_species, mini_lin_param):
return new_lp_df
info_df = pd.read_csv('outputs/iterative_fitter_output2.csv')
info_df = pd.read_csv('outputs/iterative_fitter_w_mse_output.csv')
test_row = 3
pitzer_params_filename = "../../data/jsons/min_h0_pitzer_params.txt"
with open(pitzer_params_filename) as file:
pitzer_params_dict = json.load(file)
@ -33,6 +37,8 @@ species_list = 'Nd,Pr,Ce,La,Dy,Sm,Y'.split(',')
pitzer_param_list = ['beta0', 'beta1']
labeled_data = pd.read_csv("../../data/csvs/"
"PC88A_HCL_NdPrCeLaDySmY.csv")
labeled_data = labeled_data.sort_values(['Feed Pr[M]', 'Feed Ce[M]'],
ascending=True)
exp_data = labeled_data.drop(labeled_data.columns[0], axis=1)
xml_file = "PC88A_HCL_NdPrCeLaDySmY_w_pitzer.xml"
lin_param_df = pd.read_csv("../../data/csvs"
@ -76,11 +82,11 @@ info_dict = {'(HA)2(org)_h0': {'upper_element_name': 'species',
'lower_attrib_value': None,
'input_format': '{0}',
'input_value':
info_df.iloc[-1, :]['best_ext_h0']}}
info_df.iloc[test_row, :]['best_ext_h0']}}
for species in species_list:
for pitzer_param in pitzer_param_list:
pitzer_str = "{0}_{1}".format(species, pitzer_param)
value = info_df.iloc[-1, :][pitzer_str]
value = info_df.iloc[test_row, :][pitzer_str]
pitzer_params_dict[pitzer_str]['input_value'] = value
lin_str = "{0}_slope".format(species)
inner_dict = {'custom_object_name': 'lin_param_df',
@ -91,7 +97,7 @@ for species in species_list:
}
info_dict[lin_str] = inner_dict
lin_str = "{0}_intercept".format(species)
value = info_df.iloc[-1, :][lin_str]
value = info_df.iloc[test_row, :][lin_str]
inner_dict = {'custom_object_name': 'lin_param_df',
'function': mod_lin_param_df,
'kwargs': {'mini_species': species,
@ -112,15 +118,52 @@ for col in exp_data.columns:
if 'aq_i' in col:
feed_cols.append(col)
exp_data['total_re'] = exp_data[feed_cols].sum(axis=1)
label_list = []
for index, row in exp_data[feed_cols].iterrows():
bool_list = list((row > 0).values)
label = ''
for species, el in zip(species_list, bool_list):
if el:
label = '{0}-{1}'.format(label, species)
label = label[1:]
label_list.append(label)
r2s = ""
for species in species_list:
save_name = 'outputs/parity_iterative_fitter_{0}_org_eq'.format(species)
# if species=='La':
# save_name = 'outputs' \
# '/parity_iterative_fitter_{0}_org_eq'.format(species)
save_name = None
# fig, ax = estimator.parity_plot('{0}_org_eq'.format(species),
# c_data='z_i',
# c_label='Feed total RE '
# 'molarity (mol/L)',
# print_r_squared=True,
# save_path=save_name)
r2s += str(estimator.r_squared('{0}_org_eq'.format(species))) + ','
fig, ax = estimator.parity_plot('{0}_org_eq'.format(species),
c_data=exp_data[
'total_re'].values,
c_label='Feed total RE '
'molarity (mol/L)',
data_labels=label_list,
print_r_squared=True,
save_path=save_name)
ax.legend(loc=4)
pred_df = pd.DataFrame(estimator.get_predicted_dict())
new_cols = []
for col in pred_df.columns:
new_cols.append("pred_{0}".format(col))
pred_df.columns = new_cols
new_cols = ['label',
'h_i',
'h_eq',
'z_i',
'z_eq'
]
for species in species_list:
new_cols.append("{0}_aq_i".format(species))
new_cols.append("{0}_aq_eq".format(species))
new_cols.append("{0}_d_eq".format(species))
labeled_data.columns = new_cols
total_df = labeled_data.join(pred_df)
# total_df.to_csv('if_mse_total_df.csv')
# short_info_dict = {}
# for key, value in info_dict.items():
# short_info_dict[key] = value['input_value']

@ -33,7 +33,7 @@
<thermo>
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 10:47 7-17-2020">-1376882.3191117246</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-1376882.0784583509</h0>
<s0 units="J/mol/K"> 558.9824 </s0>
<cp0 units="J/mol/K"> 0.0</cp0>
</const_cp>
@ -50,7 +50,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 10:47 7-17-2020">-4925566.309854757</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4924298.0880370205</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -67,7 +67,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 10:47 7-17-2020">-4938249.845712334</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4935685.119723228</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -85,7 +85,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 10:47 7-17-2020">-4920387.823199008</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4920369.042961768</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -103,7 +103,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 10:47 7-17-2020">-4933548.865580005</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4928639.61964031</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -120,7 +120,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 10:47 7-17-2020">-4932560.171447597</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4931991.722599618</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -138,7 +138,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 10:47 7-17-2020">-4944840.781582316</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4944682.264585918</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -157,7 +157,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 10:47 7-17-2020">-4924696.189921901</h0>
<h0 units="J/mol" updated="Updated at 18:30 7-26-2020">-4924669.3217661735</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>
@ -245,10 +245,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Pr+++">
<beta0 updated="Updated at 10:47 7-17-2020"> 0.05879108748614492, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 10:47 7-17-2020"> 0.5448324180244323, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.058791091500561485, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 0.5448322248125199, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.02066999867229882, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.02066999867229882, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -261,10 +261,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Nd+++">
<beta0 updated="Updated at 10:47 7-17-2020"> 1.2137222016802447, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 10:47 7-17-2020"> 7.748226963005033, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 1.213717095858249, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 7.7481294675488375, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.01963615126026457, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.01963615126026457, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -277,10 +277,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="La+++">
<beta0 updated="Updated at 10:47 7-17-2020"> 1.022316535866388, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 10:47 7-17-2020"> 0.5296311209773129, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 1.0223168335791355, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 0.5296306654103653, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.024339999997603376, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.024339999997603376, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -293,10 +293,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Dy+++">
<beta0 updated="Updated at 10:47 7-17-2020"> 0.7646397332938777, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 10:47 7-17-2020"> 7.849320590516409, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.7646372240575223, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 7.849276225207628, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.019699989216349984, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.019699989216349984, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -309,10 +309,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Ce+++">
<beta0 updated="Updated at 10:47 7-17-2020"> 0.2035235053232368, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 10:47 7-17-2020"> 21.120426174002823, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.20352350320923904, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 21.120419048363047, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.02618999999473301, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.02618999999473301, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -325,10 +325,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Y+++">
<beta0 updated="Updated at 10:47 7-17-2020"> 0.8852802073165494, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 10:47 7-17-2020"> 9.334653075341238, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.8852797060008407, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 9.334636294454038, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.015467323909969704, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.015467323909969704, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>
@ -341,10 +341,10 @@
</binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Sm+++">
<beta0 updated="Updated at 10:47 7-17-2020"> 0.6989081585234721, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 10:47 7-17-2020"> 6.877882600430561, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta0 updated="Updated at 18:30 7-26-2020"> 0.6989083059080712, 0.0, 0.0, 0.0, 0.0 </beta0>
<beta1 updated="Updated at 18:30 7-26-2020"> 6.877881736471866, 0.0, 0.0, 0.0, 0.0 </beta1>
<beta2> 0.0, 0.0, 0.0, 0.0, 0.0 </beta2>
<Cphi updated="Updated at 10:47 7-17-2020"> -0.019920000110321332, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Cphi updated="Updated at 18:30 7-26-2020"> -0.019920000110321332, 0.0, 0.0, 0.0, 0.0 </Cphi>
<Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2>
<source>

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

@ -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>

@ -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

@ -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

@ -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>

@ -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>

@ -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>
<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>
<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_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>

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

@ -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

@ -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

@ -127,7 +127,8 @@ class LLEPE:
:param extracted_species_list: (list) names of extracted species elements.
If ``None``, extracted_species_list will be extracted_species_ion_names
without '+' i.e. 'Nd+++'->'Nd'
without '+' i.e. 'Nd+++'->'Nd'
:param aq_solvent_rho: (float) density of solvent (g/L)
If ``None``, molar volume/molecular weight is used from xml
@ -255,11 +256,19 @@ class LLEPE:
'function', 'kwargs', and 'independent_params.
'function' is a function of the form
``function(independent_param__value_list, **kwargs)``
``function(independent_param__value_list, custom_objects_dict,
**kwargs)``
'kwargs' are the extra arguments to pass to function
'independent_params' is a list of parameter names in opt_dict that the
dependent_param is a function of.
'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.
See example code for usage.
:param custom_objects_dict: (dict) dictionary containing custom objects
format: {<object_name_string>: <object>,...}
@ -883,6 +892,7 @@ class LLEPE:
def get_dependant_params_dict(self):
"""
Returns the dependant_params_dict
:return: dependant_params_dict: (dict) dictionary containing
information about parameters dependant on opt_dict
"""
@ -891,8 +901,9 @@ class LLEPE:
def set_dependant_params_dict(self, dependant_params_dict):
"""
Sets the dependant_params_dict
:param dependant_params_dict: (dict) dictionary containing information
about parameters dependant on opt_dict
about parameters dependant on opt_dict
"""
self._dependant_params_dict = dependant_params_dict
return None
@ -900,6 +911,7 @@ class LLEPE:
def get_custom_objects_dict(self):
"""
Returns the custom_objects_dict
:return: custom_objects_dict: (dict) dictionary containing
information about custom objects from user
"""
@ -908,8 +920,9 @@ class LLEPE:
def set_custom_objects_dict(self, custom_objects_dict):
"""
Sets the custom_objects_dict
:param custom_objects_dict: (dict) dictionary containing information
about about custom objects from user
about about custom objects from user
"""
self._custom_objects_dict = custom_objects_dict
return None
@ -1198,9 +1211,11 @@ class LLEPE:
def update_custom_objects_dict(self, info_dict):
"""
updates internal custom_objects_dict with info_dict
:param info_dict: Requires an identical structure to opt_dict
Ignores items with keys containing "custom_object_name"
:return: None.
:return: None
"""
custom_objects_dict = copy.deepcopy(self._custom_objects_dict)
for key in list(info_dict.keys()):

Loading…
Cancel
Save