Updated documentation

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

@ -1,9 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <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."> <list default="true" id="f4439dc0-6756-4612-8f7d-596d8949f300" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/docs/Examples/outputs/iterative_fitter_output2.csv" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/docs/Examples/outputs/iterative_fitter_short_info_dict.txt" 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> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -41,7 +62,7 @@
<property name="run.code.analysis.last.selected.profile" value="aDefault" /> <property name="run.code.analysis.last.selected.profile" value="aDefault" />
<property name="settings.editor.selected.configurable" value="preferences.sourceCode" /> <property name="settings.editor.selected.configurable" value="preferences.sourceCode" />
</component> </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"> <configuration name="estimator_eval" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" /> <module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
@ -78,25 +99,28 @@
<option name="INPUT_FILE" value="" /> <option name="INPUT_FILE" value="" />
<method v="2" /> <method v="2" />
</configuration> </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" /> <module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/docs/examples" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/figures/graphers" />
<option name="IS_MODULE_SDK" value="true" /> <option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_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="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="true" /> <option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" /> <option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" /> <option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" /> <option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" /> <option name="INPUT_FILE" value="" />
<method v="2" /> <method v="2" />
</configuration> </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" /> <module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
@ -105,7 +129,7 @@
<option name="IS_MODULE_SDK" value="true" /> <option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_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="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="true" /> <option name="SHOW_COMMAND_LINE" value="true" />
<option name="EMULATE_TERMINAL" value="false" /> <option name="EMULATE_TERMINAL" value="false" />
@ -114,7 +138,7 @@
<option name="INPUT_FILE" value="" /> <option name="INPUT_FILE" value="" />
<method v="2" /> <method v="2" />
</configuration> </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" /> <module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
@ -122,11 +146,11 @@
<env name="PYTHONUNBUFFERED" value="1" /> <env name="PYTHONUNBUFFERED" value="1" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <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="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_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="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" /> <option name="EMULATE_TERMINAL" value="false" />
@ -137,11 +161,11 @@
</configuration> </configuration>
<recent_temporary> <recent_temporary>
<list> <list>
<item itemvalue="Python.iterative_fitter_w_mse" /> <item itemvalue="Python.scratch_1" />
<item itemvalue="Python.iterative_fitter_eval_grapher" /> <item itemvalue="Python.iterative_fitter_eval_grapher" />
<item itemvalue="Python.eval_mod_lin_params_const_pitzer" /> <item itemvalue="Python.eval_mod_lin_params_const_pitzer" />
<item itemvalue="Python.estimator_eval" /> <item itemvalue="Python.estimator_eval" />
<item itemvalue="Python.estimator_eval" /> <item itemvalue="Python.grapher_r2" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@ -416,7 +440,21 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1595008865648</updated> <updated>1595008865648</updated>
</task> </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 /> <servers />
</component> </component>
<component name="Vcs.Log.Tabs.Properties"> <component name="Vcs.Log.Tabs.Properties">
@ -454,7 +492,8 @@
<MESSAGE value="Updated iterative_fitter.py" /> <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 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." /> <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>
<component name="WindowStateProjectService"> <component name="WindowStateProjectService">
<state x="-1330" y="212" key="#Inspections" timestamp="1590787654691"> <state x="-1330" y="212" key="#Inspections" timestamp="1590787654691">
@ -478,10 +517,10 @@
<screen x="-1920" y="2" width="1920" height="1040" /> <screen x="-1920" y="2" width="1920" height="1040" />
</state> </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="-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" /> <screen x="-1920" y="2" width="1920" height="1040" />
</state> </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="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"> <state x="-1828" y="94" width="1736" height="856" key="DiffContextDialog" timestamp="1591048879404">
<screen x="-1920" y="2" width="1920" height="1040" /> <screen x="-1920" y="2" width="1920" height="1040" />
@ -496,29 +535,37 @@
<screen x="-1920" y="2" width="1920" height="1040" /> <screen x="-1920" y="2" width="1920" height="1040" />
</state> </state>
<state x="-1523" y="423" key="GitRewordDialog/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592321433648" /> <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"> <state width="1899" height="278" key="GridCell.Tab.0.bottom" timestamp="1595882107104">
<screen x="-1920" y="2" width="1920" height="1040" /> <screen x="-1920" y="0" width="1920" height="1040" />
</state> </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="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="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.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1594929812457" />
<state width="1899" height="279" key="GridCell.Tab.0.center" timestamp="1594958896281"> <state width="1899" height="278" key="GridCell.Tab.0.center" timestamp="1595882107101">
<screen x="-1920" y="2" width="1920" height="1040" /> <screen x="-1920" y="0" width="1920" height="1040" />
</state> </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="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="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.center/0.0.1920.1040@0.0.1920.1040" timestamp="1594929812457" />
<state width="1899" height="279" key="GridCell.Tab.0.left" timestamp="1594958896281"> <state width="1899" height="278" key="GridCell.Tab.0.left" timestamp="1595882107101">
<screen x="-1920" y="2" width="1920" height="1040" /> <screen x="-1920" y="0" width="1920" height="1040" />
</state> </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="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="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.left/0.0.1920.1040@0.0.1920.1040" timestamp="1594929812457" />
<state width="1899" height="279" key="GridCell.Tab.0.right" timestamp="1594958896281"> <state width="1899" height="278" key="GridCell.Tab.0.right" timestamp="1595882107103">
<screen x="-1920" y="2" width="1920" height="1040" /> <screen x="-1920" y="0" width="1920" height="1040" />
</state> </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="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="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="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"> <state width="1899" height="348" key="GridCell.Tab.1.bottom" timestamp="1594852783301">
<screen x="-1920" y="2" width="1920" height="1040" /> <screen x="-1920" y="2" width="1920" height="1040" />
@ -557,9 +604,10 @@
</state> </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="-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="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"> <state x="-1657" y="182" width="1283" height="717" key="com.intellij.ide.util.TipDialog" timestamp="1595513909435">
<screen x="0" y="0" width="1920" height="1040" /> <screen x="-1920" y="0" width="1920" height="1040" />
</state> </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="-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="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" /> <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>
<state x="-1219" y="166" key="refactoring.ChangeSignatureDialog/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591059193684" /> <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="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"> <state x="-1297" y="225" width="672" height="678" key="search.everywhere.popup" timestamp="1595473667161">
<screen x="0" y="0" width="1920" height="1040" /> <screen x="-1920" y="0" width="1920" height="1040" />
</state> </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="-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" /> <state x="623" y="225" width="672" height="678" key="search.everywhere.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1594763968564" />
</component> </component>

@ -1,11 +1,11 @@
# REEPS # REEPS
REEPS (Rare Earth Element Parameter Searcher) is a toolkit for estimating standard thermodynamic parameters for Gibbs minimization. LLEPE (Liquid-Liquid Extraction Parameter Estimator) 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
## Installation ## 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 $ 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. $ pip install -e.
``` ```
For docs and tests, run
```
$ pip install -e .[docs,tests]
```
### Dependencies ### 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 ## Usage
Check out examples in docs/examples Check out examples in docs/examples
Readthedocs documentation are in docs/build/html/index.html
```python ```python
from reeps import REEPS from llepe import LLEPE
searcher = REEPS(**REEPS_parameters_dictionary) opt_dict = {'Nd(H(A)2)3(org)_h0': {'upper_element_name': 'species',
optimized_parameter_dictionary = searcher.fit() 'upper_attrib_name': 'name',
searcher.update_xml(optimized_parameter_dictionary) 'upper_attrib_value': 'Nd(H(A)2)3(org)',
searcher.parity_plot() 'lower_element_name': 'h0',
print(seacher.r_squared()) '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.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.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 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 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
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 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
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 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
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 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
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.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 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
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 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
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 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
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 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
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 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.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.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 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> <thermo>
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 558.9824 </s0>
<cp0 units="J/mol/K"> 0.0</cp0> <cp0 units="J/mol/K"> 0.0</cp0>
</const_cp> </const_cp>
@ -50,7 +50,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -67,7 +67,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -85,7 +85,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -103,7 +103,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -120,7 +120,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -138,7 +138,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -157,7 +157,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -245,10 +245,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Pr+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.058791091500561485, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -261,10 +261,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Nd+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 1.213717095858249, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -277,10 +277,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="La+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 1.0223168335791355, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -293,10 +293,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Dy+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.7646372240575223, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -309,10 +309,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Ce+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.20352350320923904, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -325,10 +325,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Y+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.8852797060008407, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -341,10 +341,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Sm+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.6989083059080712, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>

@ -50,7 +50,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>

@ -10,6 +10,9 @@ font = {'family': 'sans serif',
matplotlib.rc('font', **font) matplotlib.rc('font', **font)
plt.rc('xtick', labelsize=18) plt.rc('xtick', labelsize=18)
plt.rc('ytick', 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): def ext_to_complex(h0, custom_obj_dict, mini_species):
linear_params = custom_obj_dict['lin_param_df'] 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 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" pitzer_params_filename = "../../data/jsons/min_h0_pitzer_params.txt"
with open(pitzer_params_filename) as file: with open(pitzer_params_filename) as file:
pitzer_params_dict = json.load(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'] pitzer_param_list = ['beta0', 'beta1']
labeled_data = pd.read_csv("../../data/csvs/" labeled_data = pd.read_csv("../../data/csvs/"
"PC88A_HCL_NdPrCeLaDySmY.csv") "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) exp_data = labeled_data.drop(labeled_data.columns[0], axis=1)
xml_file = "PC88A_HCL_NdPrCeLaDySmY_w_pitzer.xml" xml_file = "PC88A_HCL_NdPrCeLaDySmY_w_pitzer.xml"
lin_param_df = pd.read_csv("../../data/csvs" 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, 'lower_attrib_value': None,
'input_format': '{0}', 'input_format': '{0}',
'input_value': 'input_value':
info_df.iloc[-1, :]['best_ext_h0']}} info_df.iloc[test_row, :]['best_ext_h0']}}
for species in species_list: for species in species_list:
for pitzer_param in pitzer_param_list: for pitzer_param in pitzer_param_list:
pitzer_str = "{0}_{1}".format(species, pitzer_param) 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 pitzer_params_dict[pitzer_str]['input_value'] = value
lin_str = "{0}_slope".format(species) lin_str = "{0}_slope".format(species)
inner_dict = {'custom_object_name': 'lin_param_df', inner_dict = {'custom_object_name': 'lin_param_df',
@ -91,7 +97,7 @@ for species in species_list:
} }
info_dict[lin_str] = inner_dict info_dict[lin_str] = inner_dict
lin_str = "{0}_intercept".format(species) 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', inner_dict = {'custom_object_name': 'lin_param_df',
'function': mod_lin_param_df, 'function': mod_lin_param_df,
'kwargs': {'mini_species': species, 'kwargs': {'mini_species': species,
@ -112,15 +118,52 @@ for col in exp_data.columns:
if 'aq_i' in col: if 'aq_i' in col:
feed_cols.append(col) feed_cols.append(col)
exp_data['total_re'] = exp_data[feed_cols].sum(axis=1) 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: 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), fig, ax = estimator.parity_plot('{0}_org_eq'.format(species),
c_data=exp_data[ data_labels=label_list,
'total_re'].values,
c_label='Feed total RE '
'molarity (mol/L)',
print_r_squared=True, print_r_squared=True,
save_path=save_name) 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 = {} # short_info_dict = {}
# for key, value in info_dict.items(): # for key, value in info_dict.items():
# short_info_dict[key] = value['input_value'] # short_info_dict[key] = value['input_value']

@ -33,7 +33,7 @@
<thermo> <thermo>
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 558.9824 </s0>
<cp0 units="J/mol/K"> 0.0</cp0> <cp0 units="J/mol/K"> 0.0</cp0>
</const_cp> </const_cp>
@ -50,7 +50,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -67,7 +67,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -85,7 +85,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -103,7 +103,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -120,7 +120,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -138,7 +138,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -157,7 +157,7 @@
<const_cp Tmax="300.0" Tmin="298.0"> <const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0> <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> <s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0> <cp0 units="J/mol/K">0.0</cp0>
</const_cp> </const_cp>
@ -245,10 +245,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Pr+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.058791091500561485, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -261,10 +261,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Nd+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 1.213717095858249, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -277,10 +277,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="La+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 1.0223168335791355, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -293,10 +293,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Dy+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.7646372240575223, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -309,10 +309,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Ce+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.20352350320923904, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -325,10 +325,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Y+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.8852797060008407, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <source>
@ -341,10 +341,10 @@
</binarySaltParameters> </binarySaltParameters>
<binarySaltParameters anion="Cl-" cation="Sm+++"> <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> <beta0 updated="Updated at 18:30 7-26-2020"> 0.6989083059080712, 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> <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> <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> <Alpha1> 2 </Alpha1>
<Alpha2> 0 </Alpha2> <Alpha2> 0 </Alpha2>
<source> <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="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="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">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">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">shutil</span>
<span class="kn">import</span> <span class="nn">copy</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">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="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> <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> <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"> :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"> 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"> :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> <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;, &#39;kwargs&#39;, and &#39;independent_params.</span>
<span class="sd"> &#39;function&#39; is a function of the form</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;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"> &#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"> 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"> 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="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> <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">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">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">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">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">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="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_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">_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">_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> <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="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">_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">_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"># Try and except for adding package data to path.</span>
<span class="c1"># This only works for sdist, not bdist</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> <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="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="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="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">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="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> <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="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="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="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="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="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> <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="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="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="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="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="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> <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="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="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="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">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="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> <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;optimizer must be a function &quot;</span>
<span class="s2">&quot;with at least 2 arguments: &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="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="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="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> <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> <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">&quot;&quot;&quot;</span>
<span class="sd"> Returns the dependant_params_dict</span> <span class="sd"> Returns the dependant_params_dict</span>
<span class="sd"> :return: dependant_params_dict: (dict) dictionary containing</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"> information about parameters dependant on opt_dict</span>
<span class="sd"> &quot;&quot;&quot;</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> <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">&quot;&quot;&quot;</span>
<span class="sd"> Sets the dependant_params_dict</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"> :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="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="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> <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> <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">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> <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">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">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">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="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> <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">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="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="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">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> <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="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">&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"> :param info_dict: (dict) Requires an identical structure to opt_dict</span>
<span class="sd"> 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"> :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"> 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> <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="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">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">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="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> <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="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">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="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">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">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="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">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> <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="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">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="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="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="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> <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="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> <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> <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">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> <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="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="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="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="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="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;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">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">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="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="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="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="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_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_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">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="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="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">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="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="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">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="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="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="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="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">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">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">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="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="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">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="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="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="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> <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 Prerequisites
============= =============
REEPS requires python3 (>=3.5) with the development headers. LLEPE requires python3 (>=3.5) with the development headers.
Stable Release 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 This code fits Nd standard enthalpy in the "twophase.xml" cantera file to the
experimental data in "Nd_exp_data.csv". 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 The code then produces a parity plot of the measured and predicted concentrations of Nd 3+ in the
aqueous phase. aqueous phase.
.. code-block:: python .. code-block:: python
from reeps import REEPS from llepe import LLEPE
opt_dict = {'Nd(H(A)2)3(org)_h0': {'upper_element_name': 'species',
searcher_parameters = {'exp_csv_filename': 'Nd_exp_data.csv', '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', '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'], 'phase_names': ['HCl_electrolyte', 'PC88A_liquid'],
'aq_solvent_name': 'H2O(L)', 'aq_solvent_name': 'H2O(L)',
'extractant_name': '(HA)2(org)', 'extractant_name': '(HA)2(org)',
'diluant_name': 'dodecane', 'diluant_name': 'dodecane',
'complex_names': ['Nd(H(A)2)3(org)'], 'complex_names': ['Nd(H(A)2)3(org)'],
'rare_earth_ion_names': ['Nd+++'], 'extracted_species_ion_names': ['Nd+++'],
'aq_solvent_rho': 1000.0, 'aq_solvent_rho': 1000.0,
'extractant_rho': 960.0, 'extractant_rho': 960.0,
'diluant_rho': 750.0} 'diluant_rho': 750.0}
searcher = REEPS(**searcher_parameters) searcher = LLEPE(**searcher_parameters)
est_enthalpy = searcher.fit() est_enthalpy = searcher.fit()
searcher.update_xml(est_enthalpy) searcher.update_xml(est_enthalpy)
searcher.parity_plot(print_r_squared=True) searcher.parity_plot(print_r_squared=True)
The code should return something like this 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><a href="modules/reeps.html#llepe.LLEPE.get_aq_solvent_rho">get_aq_solvent_rho() (llepe.LLEPE method)</a>
</li> </li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_complex_names">get_complex_names() (llepe.LLEPE method)</a> <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>
<li><a href="modules/reeps.html#llepe.LLEPE.get_dependant_params_dict">get_dependant_params_dict() (llepe.LLEPE method)</a> <li><a href="modules/reeps.html#llepe.LLEPE.get_dependant_params_dict">get_dependant_params_dict() (llepe.LLEPE method)</a>
</li> </li>
@ -192,11 +194,11 @@
<li><a href="modules/reeps.html#llepe.LLEPE.get_exp_df">get_exp_df() (llepe.LLEPE method)</a> <li><a href="modules/reeps.html#llepe.LLEPE.get_exp_df">get_exp_df() (llepe.LLEPE method)</a>
</li> </li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_extractant_name">get_extractant_name() (llepe.LLEPE method)</a> <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> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <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><a href="modules/reeps.html#llepe.LLEPE.get_extracted_species_ion_names">get_extracted_species_ion_names() (llepe.LLEPE method)</a>
</li> </li>
<li><a href="modules/reeps.html#llepe.LLEPE.get_extracted_species_list">get_extracted_species_list() (llepe.LLEPE method)</a> <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><a href="modules/reeps.html#llepe.LLEPE.set_aq_solvent_rho">set_aq_solvent_rho() (llepe.LLEPE method)</a>
</li> </li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_complex_names">set_complex_names() (llepe.LLEPE method)</a> <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>
<li><a href="modules/reeps.html#llepe.LLEPE.set_dependant_params_dict">set_dependant_params_dict() (llepe.LLEPE method)</a> <li><a href="modules/reeps.html#llepe.LLEPE.set_dependant_params_dict">set_dependant_params_dict() (llepe.LLEPE method)</a>
</li> </li>
@ -288,11 +292,11 @@
<li><a href="modules/reeps.html#llepe.LLEPE.set_diluant_rho">set_diluant_rho() (llepe.LLEPE method)</a> <li><a href="modules/reeps.html#llepe.LLEPE.set_diluant_rho">set_diluant_rho() (llepe.LLEPE method)</a>
</li> </li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_exp_df">set_exp_df() (llepe.LLEPE method)</a> <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> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <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><a href="modules/reeps.html#llepe.LLEPE.set_extractant_rho">set_extractant_rho() (llepe.LLEPE method)</a>
</li> </li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_extracted_species_ion_names">set_extracted_species_ion_names() (llepe.LLEPE method)</a> <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> <h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <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> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <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><a href="modules/reeps.html#llepe.LLEPE.update_xml">update_xml() (llepe.LLEPE method)</a>
</li> </li>
</ul></td> </ul></td>

@ -166,7 +166,7 @@
<span id="install"></span><h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1> <span id="install"></span><h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1>
<div class="section" id="prerequisites"> <div class="section" id="prerequisites">
<h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline"></a></h2> <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>
<div class="section" id="stable-release"> <div class="section" id="stable-release">
<h2>Stable Release<a class="headerlink" href="#stable-release" title="Permalink to this headline"></a></h2> <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>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 <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> 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 <p>The code then produces a parity plot of the measured and predicted concentrations of Nd 3+ in the
aqueous phase.</p> aqueous phase.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">reeps</span> <span class="kn">import</span> <span class="n">REEPS</span> <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">llepe</span> <span class="kn">import</span> <span class="n">LLEPE</span>
<span class="n">opt_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;Nd(H(A)2)3(org)_h0&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;upper_element_name&#39;</span><span class="p">:</span> <span class="s1">&#39;species&#39;</span><span class="p">,</span>
<span class="n">searcher_parameters</span> <span class="o">=</span> <span class="p">{</span><span class="s1">&#39;exp_csv_filename&#39;</span><span class="p">:</span> <span class="s1">&#39;Nd_exp_data.csv&#39;</span><span class="p">,</span> <span class="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;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;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;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;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;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;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;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;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="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">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">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> <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> </pre></div>
</div> </div>
<p>The code should return something like this</p> <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> </div>

@ -163,7 +163,7 @@
<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline"></a></h2> <h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline"></a></h2>
<dl class="py class"> <dl class="py class">
<dt id="llepe.LLEPE"> <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> <dd><p>Liquid-Liquid Extraction Parameter estimator</p>
<div class="admonition note"> <div class="admonition note">
<p class="admonition-title">Note</p> <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 <li><p><strong>extracted_species_ion_names</strong> -- (list) names of extracted species ions
in xml file</p></li> in xml file</p></li>
<li><p><strong>extracted_species_list</strong> -- <p>(list) names of extracted species elements.</p> <li><p><strong>extracted_species_list</strong> -- <p>(list) names of extracted species elements.</p>
<dl class="simple"> <p>If <code class="docutils literal notranslate"><span class="pre">None</span></code>, extracted_species_list will be extracted_species_ion_names
<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> without '+' i.e. 'Nd+++'-&gt;'Nd'</p>
</dd>
</dl>
</p></li> </p></li>
<li><p><strong>aq_solvent_rho</strong> -- <p>(float) density of solvent (g/L)</p> <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> <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 about parameters dependant on opt_dict. Has a similar structure to
opt_dict except instead of input values, it has 3 other fields: opt_dict except instead of input values, it has 3 other fields:
'function', 'kwargs', and 'independent_params.</p> 'function', 'kwargs', and 'independent_params.</p>
<p>'function' is a function of the form <p>'function' is a function of the form</p>
<code class="docutils literal notranslate"><span class="pre">function(independent_param__value_list,</span> <span class="pre">**kwargs)</span></code> <p><code class="docutils literal notranslate"><span class="pre">function(independent_param__value_list,</span> <span class="pre">custom_objects_dict,</span>
'kwargs' are the extra arguments to pass to function <span class="pre">**kwargs)</span></code></p>
'independent_params' is a list of parameter names in opt_dict that the <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> 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>See example code for usage.</p>
</p></li> </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> </ul>
</dd> </dd>
</dl> </dl>
@ -469,14 +473,28 @@ optimized opt_dict: Has identical structure as opt_dict</p>
</dl> </dl>
</dd></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"> <dl class="py method">
<dt id="llepe.LLEPE.get_dependant_params_dict"> <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> <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 <dd><p>Returns the dependant_params_dict</p>
:return: dependant_params_dict: (dict) dictionary containing</p> <dl class="field-list simple">
<blockquote> <dt class="field-odd">Returns</dt>
<div><p>information about parameters dependant on opt_dict</p> <dd class="field-odd"><p>dependant_params_dict: (dict) dictionary containing
</div></blockquote> information about parameters dependant on opt_dict</p>
</dd>
</dl>
</dd></dl> </dd></dl>
<dl class="py method"> <dl class="py method">
@ -795,12 +813,28 @@ objective_function value</p>
</dl> </dl>
</dd></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"> <dl class="py method">
<dt id="llepe.LLEPE.set_dependant_params_dict"> <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> <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 <dd><p>Sets the dependant_params_dict</p>
:param dependant_params_dict: (dict) dictionary containing information <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> about parameters dependant on opt_dict</p>
</dd>
</dl>
</dd></dl> </dd></dl>
<dl class="py method"> <dl class="py method">
@ -979,6 +1013,21 @@ xml file.</p>
</dl> </dl>
</dd></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"> <dl class="py method">
<dt id="llepe.LLEPE.update_predicted_dict"> <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> <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"> <dl class="field-list simple">
<dt class="field-odd">Parameters</dt> <dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple"> <dd class="field-odd"><ul class="simple">
<li><p><strong>info_dict</strong> -- (dict) info in {species_names:{thermo_prop:val}} <li><p><strong>info_dict</strong> -- (dict) Requires an identical structure to opt_dict
Requires an identical structure to opt_dict</p></li> 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 <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 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> 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 Prerequisites
============= =============
REEPS requires python3 (>=3.5) with the development headers. LLEPE requires python3 (>=3.5) with the development headers.
Stable Release 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 This code fits Nd standard enthalpy in the "twophase.xml" cantera file to the
experimental data in "Nd_exp_data.csv". 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 The code then produces a parity plot of the measured and predicted concentrations of Nd 3+ in the
aqueous phase. aqueous phase.
.. code-block:: python .. code-block:: python
from reeps import REEPS from llepe import LLEPE
opt_dict = {'Nd(H(A)2)3(org)_h0': {'upper_element_name': 'species',
searcher_parameters = {'exp_csv_filename': 'Nd_exp_data.csv', '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', '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'], 'phase_names': ['HCl_electrolyte', 'PC88A_liquid'],
'aq_solvent_name': 'H2O(L)', 'aq_solvent_name': 'H2O(L)',
'extractant_name': '(HA)2(org)', 'extractant_name': '(HA)2(org)',
'diluant_name': 'dodecane', 'diluant_name': 'dodecane',
'complex_names': ['Nd(H(A)2)3(org)'], 'complex_names': ['Nd(H(A)2)3(org)'],
'rare_earth_ion_names': ['Nd+++'], 'extracted_species_ion_names': ['Nd+++'],
'aq_solvent_rho': 1000.0, 'aq_solvent_rho': 1000.0,
'extractant_rho': 960.0, 'extractant_rho': 960.0,
'diluant_rho': 750.0} 'diluant_rho': 750.0}
searcher = REEPS(**searcher_parameters) searcher = LLEPE(**searcher_parameters)
est_enthalpy = searcher.fit() est_enthalpy = searcher.fit()
searcher.update_xml(est_enthalpy) searcher.update_xml(est_enthalpy)
searcher.parity_plot(print_r_squared=True) searcher.parity_plot(print_r_squared=True)
The code should return something like this 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. :param extracted_species_list: (list) names of extracted species elements.
If ``None``, extracted_species_list will be extracted_species_ion_names 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) :param aq_solvent_rho: (float) density of solvent (g/L)
If ``None``, molar volume/molecular weight is used from xml If ``None``, molar volume/molecular weight is used from xml
@ -255,11 +256,19 @@ class LLEPE:
'function', 'kwargs', and 'independent_params. 'function', 'kwargs', and 'independent_params.
'function' is a function of the form '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 'kwargs' are the extra arguments to pass to function
'independent_params' is a list of parameter names in opt_dict that the 'independent_params' is a list of parameter names in opt_dict that the
dependent_param is a function of. 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. See example code for usage.
:param custom_objects_dict: (dict) dictionary containing custom objects :param custom_objects_dict: (dict) dictionary containing custom objects
format: {<object_name_string>: <object>,...} format: {<object_name_string>: <object>,...}
@ -883,6 +892,7 @@ class LLEPE:
def get_dependant_params_dict(self): def get_dependant_params_dict(self):
""" """
Returns the dependant_params_dict Returns the dependant_params_dict
:return: dependant_params_dict: (dict) dictionary containing :return: dependant_params_dict: (dict) dictionary containing
information about parameters dependant on opt_dict information about parameters dependant on opt_dict
""" """
@ -891,8 +901,9 @@ class LLEPE:
def set_dependant_params_dict(self, dependant_params_dict): def set_dependant_params_dict(self, dependant_params_dict):
""" """
Sets the dependant_params_dict Sets the dependant_params_dict
:param dependant_params_dict: (dict) dictionary containing information :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 self._dependant_params_dict = dependant_params_dict
return None return None
@ -900,6 +911,7 @@ class LLEPE:
def get_custom_objects_dict(self): def get_custom_objects_dict(self):
""" """
Returns the custom_objects_dict Returns the custom_objects_dict
:return: custom_objects_dict: (dict) dictionary containing :return: custom_objects_dict: (dict) dictionary containing
information about custom objects from user information about custom objects from user
""" """
@ -908,8 +920,9 @@ class LLEPE:
def set_custom_objects_dict(self, custom_objects_dict): def set_custom_objects_dict(self, custom_objects_dict):
""" """
Sets the custom_objects_dict Sets the custom_objects_dict
:param custom_objects_dict: (dict) dictionary containing information :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 self._custom_objects_dict = custom_objects_dict
return None return None
@ -1198,9 +1211,11 @@ class LLEPE:
def update_custom_objects_dict(self, info_dict): def update_custom_objects_dict(self, info_dict):
""" """
updates internal custom_objects_dict with info_dict updates internal custom_objects_dict with info_dict
:param info_dict: Requires an identical structure to opt_dict :param info_dict: Requires an identical structure to opt_dict
Ignores items with keys containing "custom_object_name" Ignores items with keys containing "custom_object_name"
:return: None.
:return: None
""" """
custom_objects_dict = copy.deepcopy(self._custom_objects_dict) custom_objects_dict = copy.deepcopy(self._custom_objects_dict)
for key in list(info_dict.keys()): for key in list(info_dict.keys()):

Loading…
Cancel
Save