updated to LLEPE

pull/1/head
titusquah 5 years ago
parent 0a9a7ffddc
commit adbfd57931

@ -12,6 +12,7 @@
<w>extractant</w>
<w>ftol</w>
<w>kmol</w>
<w>llepe</w>
<w>lmse</w>
<w>matplotlib</w>
<w>maxiter</w>
@ -25,6 +26,7 @@
<w>seaborn</w>
<w>slsqp</w>
<w>thermo</w>
<w>vals</w>
<w>viridis</w>
<w>xmls</w>
</words>

@ -1,11 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="f4439dc0-6756-4612-8f7d-596d8949f300" name="Default Changelist" comment="">
<list default="true" id="f4439dc0-6756-4612-8f7d-596d8949f300" name="Default Changelist" comment="Edited parity plot to allow color to represent 3rd dimension. Still need to improve colorbar axis name.">
<change beforePath="$PROJECT_DIR$/.idea/dictionaries/Titus.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dictionaries/Titus.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/reeps/reeps.py" beforeDir="false" afterPath="$PROJECT_DIR$/reeps/reeps.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/tests/test_multi_reeps.py" beforeDir="false" afterPath="$PROJECT_DIR$/tests/test_multi_reeps.py" 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/build/doctrees/environment.pickle" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/doctrees/environment.pickle" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/doctrees/index.doctree" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/doctrees/index.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/.buildinfo" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/.buildinfo" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/_modules/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/_modules/index.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/_modules/reeps/reeps.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/_modules/reeps/reeps.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/_sources/index.rst.txt" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/_sources/index.rst.txt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/_sources/modules/reeps.rst.txt" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/_sources/modules/reeps.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/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/index.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/py-modindex.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/py-modindex.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/build/html/search.html" beforeDir="false" afterPath="$PROJECT_DIR$/docs/build/html/search.html" 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/conf.py" beforeDir="false" afterPath="$PROJECT_DIR$/docs/source/conf.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/source/index.rst" beforeDir="false" afterPath="$PROJECT_DIR$/docs/source/index.rst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/source/modules/reeps.rst" beforeDir="false" afterPath="$PROJECT_DIR$/docs/source/modules/reeps.rst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/reeps/__init__.py" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/reeps/reeps.py" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/setup.py" beforeDir="false" afterPath="$PROJECT_DIR$/setup.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/tests/multi_ree_settings.txt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/tests/one_ree_settings.txt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/tests/test_multi_reeps.py" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/tests/test_reeps.py" beforeDir="false" afterPath="$PROJECT_DIR$/tests/test_reeps.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -15,8 +41,8 @@
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Python Script" />
<option value="Setup Script" />
<option value="Python Script" />
</list>
</option>
</component>
@ -39,20 +65,24 @@
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="com.intellij.ide.scratch.LRUPopupBuilder$1/New Scratch File" value="Python" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../parameter estimation/parameter estimation/fit.py" />
<property name="restartRequiresConfirmation" value="false" />
<property name="run.code.analysis.last.selected.profile" value="aDefault" />
<property name="settings.editor.selected.configurable" value="preferences.sourceCode" />
</component>
<component name="RunManager" selected="Python.li_data_fit">
<configuration name="li_data_fit" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<component name="RunManager" selected="Python.eval_mod_lin_params_const_pitzer">
<configuration name="eval_const_lin_params_pitzer_fit" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/one_rare_earth_fit" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/one_rare_earth_fit/li_data_fit.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code/eval_const_lin_params_pitzer_fit.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="true" />
<option name="EMULATE_TERMINAL" value="false" />
@ -61,28 +91,25 @@
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="multi_re_data_transformer" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<configuration name="eval_mod_lin_params_const_pitzer" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/one_rare_earth_fit" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/one_rare_earth_fit/multi_re_data_transformer.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code/eval_mod_lin_params_const_pitzer.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="SHOW_COMMAND_LINE" value="true" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="reeps" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<configuration name="eval_mod_lin_params_mod_pitzer" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
@ -90,29 +117,32 @@
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/reeps" />
<option name="IS_MODULE_SDK" value="true" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/reeps/reeps.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code/eval_mod_lin_params_mod_pitzer.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="SHOW_COMMAND_LINE" value="true" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="scratch_2" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<configuration name="grapher_pitzer_compare_r_squared" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$APPLICATION_CONFIG_DIR$/scratches" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$APPLICATION_CONFIG_DIR$/scratches/scratch_2.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code/grapher_pitzer_compare_r_squared.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="true" />
<option name="EMULATE_TERMINAL" value="false" />
@ -121,21 +151,18 @@
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="single_re_data_transformer" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<configuration name="grapher_pitzer_sens_anal" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="parameter-estimation" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/one_rare_earth_fit" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/one_rare_earth_fit/single_re_data_transformer.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../anl_box/Box Sync/titus/pitzer_parameter_explore/code/grapher_pitzer_sens_anal.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="SHOW_COMMAND_LINE" value="true" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
@ -144,11 +171,11 @@
</configuration>
<recent_temporary>
<list>
<item itemvalue="Python.li_data_fit" />
<item itemvalue="Python.scratch_2" />
<item itemvalue="Python.reeps" />
<item itemvalue="Python.multi_re_data_transformer" />
<item itemvalue="Python.single_re_data_transformer" />
<item itemvalue="Python.eval_mod_lin_params_const_pitzer" />
<item itemvalue="Python.grapher_pitzer_sens_anal" />
<item itemvalue="Python.eval_mod_lin_params_const_pitzer" />
<item itemvalue="Python.grapher_pitzer_compare_r_squared" />
<item itemvalue="Python.grapher_pitzer_compare_r_squared" />
</list>
</recent_temporary>
</component>
@ -248,7 +275,14 @@
<option name="project" value="LOCAL" />
<updated>1591972483196</updated>
</task>
<option name="localTasksCounter" value="11" />
<task id="LOCAL-00011" summary="Included package data in data/csvs and data/xmls. Note this only works for sdists. If bdist is needed, research &quot;manifest.in&quot; python setup files.">
<created>1592321239574</created>
<option name="number" value="00011" />
<option name="presentableId" value="LOCAL-00011" />
<option name="project" value="LOCAL" />
<updated>1592321239574</updated>
</task>
<option name="localTasksCounter" value="12" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
@ -269,8 +303,8 @@
<MESSAGE value="Completed one composition parameter estimation" />
<MESSAGE value="Modified reeps to grab charge from REE in xml file for initial chlorine moles calculation" />
<MESSAGE value="Allow user to change optimizer and objective function. Also added r-squared evaluator. Changed temp file location to user temp folder. Added a prediction dictionary to access the values predicted by model." />
<MESSAGE value="Included package data in data/csvs and data/xmls. Note this only works for sdists. If bdist is needed, research &quot;manifest.in&quot; python setup files." />
<option name="LAST_COMMIT_MESSAGE" value="Included package data in data/csvs and data/xmls. Note this only works for sdists. If bdist is needed, research &quot;manifest.in&quot; python setup files." />
<MESSAGE value="Edited parity plot to allow color to represent 3rd dimension. Still need to improve colorbar axis name." />
<option name="LAST_COMMIT_MESSAGE" value="Edited parity plot to allow color to represent 3rd dimension. Still need to improve colorbar axis name." />
</component>
<component name="WindowStateProjectService">
<state x="-1330" y="212" key="#Inspections" timestamp="1590787654691">
@ -290,43 +324,48 @@
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state x="-1213" y="379" key="ANALYSIS_DLG_com.intellij.analysis.BaseAnalysisAction$1/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1590787657711" />
<state x="169" y="115" key="CommitChangelistDialog2" timestamp="1591972481244">
<state x="169" y="115" key="CommitChangelistDialog2" timestamp="1594738674676">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="-1364" y="117" key="CommitChangelistDialog2/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591212137077" />
<state x="169" y="115" key="CommitChangelistDialog2/0.0.1920.1040@0.0.1920.1040" timestamp="1591972481244" />
<state x="-1364" y="117" key="CommitChangelistDialog2/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592321237444" />
<state x="169" y="115" key="CommitChangelistDialog2/0.0.1920.1040@0.0.1920.1040" timestamp="1594738674676" />
<state x="-1828" y="94" width="1736" height="856" key="DiffContextDialog" timestamp="1591048879404">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state x="-1828" y="94" width="1736" height="856" key="DiffContextDialog/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591048879404" />
<state x="-1180" y="278" key="FileChooserDialogImpl" timestamp="1591977779746">
<state x="740" y="276" key="FileChooserDialogImpl" timestamp="1592953302783">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="-1180" y="278" key="FileChooserDialogImpl/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592851918282" />
<state x="740" y="276" key="FileChooserDialogImpl/0.0.1920.1040@0.0.1920.1040" timestamp="1592953302783" />
<state x="-1523" y="423" key="GitRewordDialog" timestamp="1592321433648">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state x="-1180" y="278" key="FileChooserDialogImpl/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591977779746" />
<state width="1899" height="280" key="GridCell.Tab.0.bottom" timestamp="1592250647211">
<screen x="0" y="0" width="1920" height="1040" />
<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="1594689830790">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state width="1899" height="280" key="GridCell.Tab.0.bottom/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592019561222" />
<state width="1899" height="279" key="GridCell.Tab.0.bottom/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1594689830790" />
<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="1899" height="280" key="GridCell.Tab.0.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1592250647211" />
<state width="1899" height="280" key="GridCell.Tab.0.center" timestamp="1592250647211">
<screen x="0" y="0" width="1920" height="1040" />
<state width="1899" height="279" key="GridCell.Tab.0.bottom/0.0.1920.1040@0.0.1920.1040" timestamp="1594670971711" />
<state width="1899" height="279" key="GridCell.Tab.0.center" timestamp="1594689830785">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state width="1899" height="280" key="GridCell.Tab.0.center/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592019561222" />
<state width="1899" height="279" key="GridCell.Tab.0.center/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1594689830785" />
<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="1899" height="280" key="GridCell.Tab.0.center/0.0.1920.1040@0.0.1920.1040" timestamp="1592250647211" />
<state width="1899" height="280" key="GridCell.Tab.0.left" timestamp="1592250647211">
<screen x="0" y="0" width="1920" height="1040" />
<state width="1899" height="279" key="GridCell.Tab.0.center/0.0.1920.1040@0.0.1920.1040" timestamp="1594670971711" />
<state width="1899" height="279" key="GridCell.Tab.0.left" timestamp="1594689830780">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state width="1899" height="280" key="GridCell.Tab.0.left/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592019561220" />
<state width="1899" height="279" key="GridCell.Tab.0.left/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1594689830780" />
<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="1899" height="280" key="GridCell.Tab.0.left/0.0.1920.1040@0.0.1920.1040" timestamp="1592250647211" />
<state width="1899" height="280" key="GridCell.Tab.0.right" timestamp="1592250647211">
<screen x="0" y="0" width="1920" height="1040" />
<state width="1899" height="279" key="GridCell.Tab.0.left/0.0.1920.1040@0.0.1920.1040" timestamp="1594670971710" />
<state width="1899" height="279" key="GridCell.Tab.0.right" timestamp="1594689830787">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state width="1899" height="280" key="GridCell.Tab.0.right/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592019561222" />
<state width="1899" height="279" key="GridCell.Tab.0.right/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1594689830786" />
<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="1899" height="280" key="GridCell.Tab.0.right/0.0.1920.1040@0.0.1920.1040" timestamp="1592250647211" />
<state width="1899" height="279" key="GridCell.Tab.0.right/0.0.1920.1040@0.0.1920.1040" timestamp="1594670971711" />
<state x="-1460" y="164" key="SettingsEditor" timestamp="1591824476757">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
@ -335,31 +374,39 @@
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state width="498" height="446" key="SwitcherDM/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591822611305" />
<state x="-1368" y="256" key="Vcs.Push.Dialog.v2" timestamp="1591047662716">
<state x="-1245" y="438" width="437" height="168" key="VCS.ChangelistChooser" timestamp="1592321346068">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state x="-1245" y="438" width="437" height="168" key="VCS.ChangelistChooser/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1592321346068" />
<state x="-1368" y="256" key="Vcs.Push.Dialog.v2" timestamp="1592321242949">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state x="-1368" y="256" key="Vcs.Push.Dialog.v2/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591047662716" />
<state x="263" y="182" width="1283" height="717" key="com.intellij.ide.util.TipDialog" timestamp="1592167059593">
<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="263" y="182" width="1283" height="717" key="com.intellij.ide.util.TipDialog" timestamp="1594694030135">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="-1341" y="300" key="com.intellij.ide.util.TipDialog/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591885589059" />
<state x="463" y="236" key="com.intellij.ide.util.TipDialog/0.0.1536.824/-1920.2.1920.1040@0.0.1536.824" timestamp="1590784072879" />
<state x="263" y="182" width="1283" height="717" key="com.intellij.ide.util.TipDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1592167059593" />
<state x="-1341" y="300" key="com.intellij.ide.util.TipDialog/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1593278433547" />
<state x="463" y="236" key="com.intellij.ide.util.TipDialog/0.0.1536.824/-1920.2.1920.1040@0.0.1536.824" timestamp="1592413869252" />
<state x="263" y="182" width="1283" height="717" key="com.intellij.ide.util.TipDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1594694030135" />
<state x="-1151" y="440" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1591821870917">
<screen x="-1920" y="2" width="1920" height="1040" />
</state>
<state x="-1151" y="440" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591821870917" />
<state x="769" y="438" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/0.0.1920.1040@0.0.1920.1040" timestamp="1591037545358" />
<state x="701" y="164" key="refactoring.ChangeSignatureDialog" timestamp="1591641371174">
<state x="601" y="253" width="700" height="530" key="recent.locations.popup" timestamp="1593450221360">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="601" y="253" width="700" height="530" key="recent.locations.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1593450221360" />
<state x="701" y="164" key="refactoring.ChangeSignatureDialog" timestamp="1594217920814">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<state x="-1219" y="166" key="refactoring.ChangeSignatureDialog/0.0.1536.824/-1920.2.1920.1040@-1920.2.1920.1040" timestamp="1591059193684" />
<state x="701" y="164" key="refactoring.ChangeSignatureDialog/0.0.1920.1040@0.0.1920.1040" timestamp="1591641371174" />
<state x="-1297" y="227" width="672" height="678" key="search.everywhere.popup" timestamp="1591993050079">
<screen x="-1920" y="2" width="1920" height="1040" />
<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="1594418193025">
<screen x="0" y="0" width="1920" height="1040" />
</state>
<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="1591993050079" />
<state x="623" y="225" width="672" height="678" key="search.everywhere.popup/0.0.1920.1040@0.0.1920.1040" timestamp="1591649653766" />
<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="1594418193025" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>

@ -50,7 +50,7 @@
<const_cp Tmax="300.0" Tmin="298.0">
<t0 units="K">298.14999999999998</t0>
<h0 units="J/mol" updated="Updated at 16:49 6-11-2020">-4704703.645715787</h0>
<h0 units="J/mol" updated="Updated at 12:14 7-10-2020">-4704699.156668724</h0>
<s0 units="J/mol/K"> 1117.965 </s0>
<cp0 units="J/mol/K">0.0</cp0>
</const_cp>

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: b8f412ebe5809ccc0d7953f47cdeb07e
config: 09c8b5742a1f96cda53a1848d8ac9ec1
tags: 645f666f9bcd5a90fca523b33c5a78b7

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Overview: module code &mdash; reeps 1.0.0 documentation</title>
<title>Overview: module code &mdash; LLEPE 1.0.0 documentation</title>
@ -48,7 +48,7 @@
<a href="../index.html" class="icon icon-home"> reeps
<a href="../index.html" class="icon icon-home"> LLEPE
@ -88,7 +88,7 @@
</ul>
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../modules/reeps.html">REEPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/reeps.html">LLEPE</a></li>
</ul>
@ -103,7 +103,7 @@
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">reeps</a>
<a href="../index.html">LLEPE</a>
</nav>
@ -150,7 +150,8 @@
<div itemprop="articleBody">
<h1>All modules for which code is available</h1>
<ul><li><a href="reeps/reeps.html">reeps.reeps</a></li>
<ul><li><a href="llepe/llepe.html">llepe.llepe</a></li>
<li><a href="reeps/reeps.html">reeps.reeps</a></li>
</ul>
</div>

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>reeps.reeps &mdash; reeps 1.0.0 documentation</title>
<title>reeps.reeps &mdash; LLEPE 1.0.0 documentation</title>
@ -48,7 +48,7 @@
<a href="../../index.html" class="icon icon-home"> reeps
<a href="../../index.html" class="icon icon-home"> LLEPE
@ -88,7 +88,7 @@
</ul>
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../modules/reeps.html">REEPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../modules/reeps.html">LLEPE</a></li>
</ul>
@ -103,7 +103,7 @@
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">reeps</a>
<a href="../../index.html">LLEPE</a>
</nav>
@ -167,6 +167,7 @@
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">re</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="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>
@ -211,14 +212,15 @@
<span class="sd"> rare_earth_ion_names = [&#39;Nd+++&#39;, &#39;Pr+++&#39;]</span>
<span class="sd"> :param exp_csv_filename: (str) csv file name with experimental data</span>
<span class="sd"> :param exp_data: (str) csv file name with experimental data</span>
<span class="sd"> In the .csv file, the rows are different experiments and</span>
<span class="sd"> columns are the measured quantities.</span>
<span class="sd"> The ordering of the columns needs to be:</span>
<span class="sd"> [h_i, h_eq, z_i, z_eq, {RE_1}_aq_i, {RE_1}_aq_eq, {RE_1}_d_eq,</span>
<span class="sd"> [h_i, h_eq, z_i, z_eq,</span>
<span class="sd"> {RE_1}_aq_i, {RE_1}_aq_eq, {RE_1}_d_eq,</span>
<span class="sd"> {RE_2}_aq_i, {RE_2}_aq_eq, {RE_2}_d_eq,...</span>
<span class="sd"> {RE_N}_aq_i, {RE_N}_aq_eq, {RE_N}_d_eq]</span>
@ -272,7 +274,7 @@
<span class="sd"> :param phase_names: (list) names of phases in xml file</span>
<span class="sd"> Found in the xml file under &lt;phase ... id={phase_name}&gt;</span>
<span class="sd"> </span>
<span class="sd"> :param aq_solvent_name: (str) name of aqueous solvent in xml file</span>
<span class="sd"> :param extractant_name: (str) name of extractant in xml file</span>
<span class="sd"> :param diluant_name: (str) name of diluant in xml file</span>
@ -280,7 +282,7 @@
<span class="sd"> Ensure the ordering is correct</span>
<span class="sd"> :param rare_earth_ion_names: (list) names of rare earth ions in xml file</span>
<span class="sd"> </span>
<span class="sd"> Ensure the ordering is correct</span>
<span class="sd"> :param re_species_list: (list) names of rare earth elements.</span>
@ -300,26 +302,25 @@
<span class="sd"> :param opt_dict: (dict) dictionary containing info about which</span>
<span class="sd"> species parameters are updated to fit model to experimental data</span>
<span class="sd"> Should have the format as below</span>
<span class="sd"> Should have the format as below. Dictionary keys under user defined</span>
<span class="sd"> parameter name must be named as shown below (&#39;upper_element_name&#39;,</span>
<span class="sd"> &#39;upper_attrib_name&#39;, etc.). &#39;attrib_name&#39;s and &#39;attrib_value&#39;s can</span>
<span class="sd"> be None. {} denotes areas for user to fill in.</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> opt_dict = {&quot;species1&quot;:</span>
<span class="sd"> {&quot;parameter1&quot;: &quot;guess1&quot;,</span>
<span class="sd"> &quot;parameter2&quot;: &quot;guess2&quot;,</span>
<span class="sd"> ...</span>
<span class="sd"> &quot;parameterN&quot;: &quot;guessN&quot;}</span>
<span class="sd"> &quot;species2&quot;:</span>
<span class="sd"> {&quot;parameter1&quot;: &quot;guess1&quot;,</span>
<span class="sd"> &quot;parameter2&quot;: &quot;guess2&quot;,</span>
<span class="sd"> opt_dict = {&quot;{user_defined_name_for_parameter_1}&quot;:</span>
<span class="sd"> {&#39;upper_element_name&#39;: {param_upper_element},</span>
<span class="sd"> &#39;upper_attrib_name&#39;: {param_upper_attrib_name},</span>
<span class="sd"> &#39;upper_attrib_value&#39;: {param_upper_attrib_value},</span>
<span class="sd"> &#39;lower_element_name&#39;: {param_lower_element},</span>
<span class="sd"> &#39;lower_attrib_name&#39;: {param_lower_attrib_name},</span>
<span class="sd"> &#39;lower_attrib_value&#39;: {param_lower_attrib_value},</span>
<span class="sd"> &#39;input_format&#39;: {str format to input input_value}</span>
<span class="sd"> &#39;input_value&#39;: {guess_value}},</span>
<span class="sd"> &quot;{user_defined_name_for_parameter_2}&quot;:</span>
<span class="sd"> ...</span>
<span class="sd"> &quot;parameterN&quot;: &quot;guessN&quot;}</span>
<span class="sd"> ...</span>
<span class="sd"> &quot;speciesN&quot;:</span>
<span class="sd"> {&quot;parameter1&quot;: &quot;guess1&quot;,</span>
<span class="sd"> &quot;parameter2&quot;: &quot;guess2&quot;,</span>
<span class="sd"> ...</span>
<span class="sd"> &quot;parameterN&quot;: &quot;guessN&quot;}</span>
<span class="sd"> }</span>
<span class="sd"> :param objective_function: (function or str) function to compute objective</span>
@ -337,7 +338,7 @@
<span class="sd"> objective_function(predicted_dict, measured_df, kwargs)</span>
<span class="sd"> ``kwargs`` is optional</span>
<span class="sd"> </span>
<span class="sd"> Function needs to return: (float) value computed by objective function</span>
<span class="sd"> Below is the guide for referencing predicted values</span>
@ -381,14 +382,8 @@
<span class="sd"> &quot;bounds&quot;: [(1e-1, 1e1)]</span>
<span class="sd"> Though fit() returns a structure identical to opt_dict with correct</span>
<span class="sd"> scaled values, in case bounds and constraints are used, you must</span>
<span class="sd"> note the optimized x&#39;s are first multiplied by the initial guess</span>
<span class="sd"> before written to the xml.</span>
<span class="sd"> By default, the optimizer is scipy&#39;s optimize function with</span>
<span class="sd"> </span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> default_kwargs= {&quot;method&quot;: &#39;SLSQP&#39;,</span>
@ -403,7 +398,8 @@
<span class="sd"> ``kwargs`` is optional</span>
<span class="sd"> Function needs to return: (np.ndarray) Optimized parameters</span>
<span class="sd"> Function needs to return: ((np.ndarray, float)) Optimized parameters,</span>
<span class="sd"> objective_function value</span>
<span class="sd"> :param temp_xml_file_path: (str) path to temporary xml file.</span>
@ -412,10 +408,13 @@
<span class="sd"> xml file</span>
<span class="sd"> default is local temp folder</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"> &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="n">exp_csv_filename</span><span class="p">,</span>
<span class="n">exp_data</span><span class="p">,</span>
<span class="n">phases_xml_filename</span><span class="p">,</span>
<span class="n">phase_names</span><span class="p">,</span>
<span class="n">aq_solvent_name</span><span class="p">,</span>
@ -430,11 +429,12 @@
<span class="n">opt_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">objective_function</span><span class="o">=</span><span class="s1">&#39;Log-MSE&#39;</span><span class="p">,</span>
<span class="n">optimizer</span><span class="o">=</span><span class="s1">&#39;SLSQP&#39;</span><span class="p">,</span>
<span class="n">temp_xml_file_path</span><span class="o">=</span><span class="kc">None</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="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">_exp_csv_filename</span> <span class="o">=</span> <span class="n">exp_csv_filename</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span> <span class="o">=</span> <span class="n">exp_data</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_phases_xml_filename</span> <span class="o">=</span> <span class="n">phases_xml_filename</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_opt_dict</span> <span class="o">=</span> <span class="n">opt_dict</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_phase_names</span> <span class="o">=</span> <span class="n">phase_names</span>
@ -454,6 +454,7 @@
<span class="k">if</span> <span class="n">temp_xml_file_path</span> <span class="ow">is</span> <span class="kc">None</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">_dependant_params_dict</span> <span class="o">=</span> <span class="n">dependant_params_dict</span>
<span class="c1"># Try and except for adding package data to path.</span>
<span class="c1"># This only works for sdist, not bdist</span>
<span class="c1"># If bdist is needed, research &quot;manifest.in&quot; python setup files</span>
@ -471,12 +472,15 @@
<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">_phases</span> <span class="o">=</span> <span class="n">ct</span><span class="o">.</span><span class="n">import_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="n">phase_names</span><span class="p">)</span>
<span class="k">if</span> <span class="nb">isinstance</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="nb">str</span><span class="p">):</span>
<span class="k">try</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_csv_filename</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="bp">self</span><span class="o">.</span><span class="n">_exp_csv_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;reeps&#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_csv_filename</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_csv_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;reeps&#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="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df_columns</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;h_i&#39;</span><span class="p">,</span> <span class="s1">&#39;h_eq&#39;</span><span class="p">,</span> <span class="s1">&#39;z_i&#39;</span><span class="p">,</span> <span class="s1">&#39;z_eq&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_re_species_list</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
@ -488,7 +492,12 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df_columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_aq_i&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df_columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_aq_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df_columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_d_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</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">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_df_columns</span>
<span class="k">for</span> <span class="n">species</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_re_species_list</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span><span class="p">[</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_org_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">)]</span> <span class="o">=</span> \
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span><span class="p">[</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_aq_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">)]</span> \
<span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span><span class="p">[</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_d_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">)]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_in_moles</span> <span class="o">=</span> <span class="kc">None</span>
@ -500,16 +509,18 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_predicted_dict</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_predicted_dict</span><span class="p">()</span>
<div class="viewcode-block" id="REEPS.slsqp_optimizer"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.slsqp_optimizer">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">slsqp_optimizer</span><span class="p">(</span><span class="n">objective</span><span class="p">,</span> <span class="n">x_guess</span><span class="p">):</span>
<div class="viewcode-block" id="REEPS.scipy_minimize"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.scipy_minimize">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">scipy_minimize</span><span class="p">(</span><span class="n">objective</span><span class="p">,</span> <span class="n">x_guess</span><span class="p">,</span> <span class="n">optimizer_kwargs</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; The default optimizer for REEPS</span>
<span class="sd"> Uses scipy.minimize with options</span>
<span class="sd"> Uses scipy.minimize</span>
<span class="sd"> By default, options are</span>
<span class="sd"> .. code-block:: python</span>
<span class="sd"> default_kwargs= {&quot;method&quot;: &#39;SLSQP&#39;,</span>
<span class="sd"> &quot;bounds&quot;: [(1e-1, 1e1)*len(x_guess)],</span>
<span class="sd"> &quot;bounds&quot;: [(1e-1, 1e1)]*len(x_guess),</span>
<span class="sd"> &quot;constraints&quot;: (),</span>
<span class="sd"> &quot;options&quot;: {&#39;disp&#39;: True,</span>
<span class="sd"> &#39;maxiter&#39;: 1000,</span>
@ -517,8 +528,11 @@
<span class="sd"> :param objective: (func) the objective function</span>
<span class="sd"> :param x_guess: (np.ndarray) the initial guess (always 1)</span>
<span class="sd"> :returns: (np.ndarray) Optimized parameters</span>
<span class="sd"> :param optimizer_kwargs: (dict) dictionary of options for minimize</span>
<span class="sd"> :returns: ((np.ndarray, float)) Optimized parameters,</span>
<span class="sd"> objective_function value</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">optimizer_kwargs</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">optimizer_kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;method&quot;</span><span class="p">:</span> <span class="s1">&#39;SLSQP&#39;</span><span class="p">,</span>
<span class="s2">&quot;bounds&quot;</span><span class="p">:</span> <span class="p">[(</span><span class="mf">1e-1</span><span class="p">,</span> <span class="mf">1e1</span><span class="p">)]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">x_guess</span><span class="p">),</span>
<span class="s2">&quot;constraints&quot;</span><span class="p">:</span> <span class="p">(),</span>
@ -527,7 +541,7 @@
<span class="s1">&#39;ftol&#39;</span><span class="p">:</span> <span class="mf">1e-6</span><span class="p">}}</span>
<span class="n">res</span> <span class="o">=</span> <span class="n">minimize</span><span class="p">(</span><span class="n">objective</span><span class="p">,</span> <span class="n">x_guess</span><span class="p">,</span> <span class="o">**</span><span class="n">optimizer_kwargs</span><span class="p">)</span>
<span class="n">est_parameters</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">x</span>
<span class="k">return</span> <span class="n">est_parameters</span></div>
<span class="k">return</span> <span class="n">est_parameters</span><span class="p">,</span> <span class="n">res</span><span class="o">.</span><span class="n">fun</span></div>
<div class="viewcode-block" id="REEPS.log_mean_squared_error"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.log_mean_squared_error">[docs]</a> <span class="k">def</span> <span class="nf">log_mean_squared_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">predicted_dict</span><span class="p">,</span> <span class="n">meas_df</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Default objective function for REEPS</span>
@ -549,7 +563,8 @@
<span class="k">for</span> <span class="n">species</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_re_species_list</span><span class="p">])</span>
<span class="n">log_pred</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="n">pred</span><span class="p">)</span>
<span class="n">log_meas</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="n">meas</span><span class="p">)</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">((</span><span class="n">log_pred</span> <span class="o">-</span> <span class="n">log_meas</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">log_diff</span> <span class="o">=</span> <span class="p">(</span><span class="n">log_pred</span> <span class="o">-</span> <span class="n">log_meas</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">log_diff</span><span class="p">)</span>
<span class="k">return</span> <span class="n">obj</span></div>
<div class="viewcode-block" id="REEPS.get_exp_df"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.get_exp_df">[docs]</a> <span class="k">def</span> <span class="nf">get_exp_df</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">:</span>
@ -559,7 +574,7 @@
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span></div>
<div class="viewcode-block" id="REEPS.set_exp_df"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.set_exp_df">[docs]</a> <span class="k">def</span> <span class="nf">set_exp_df</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_csv_filename</span><span class="p">):</span>
<div class="viewcode-block" id="REEPS.set_exp_df"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.set_exp_df">[docs]</a> <span class="k">def</span> <span class="nf">set_exp_df</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_data</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Changes the experimental DataFrame to input exp_csv_filename data</span>
<span class="sd"> and renames columns to internal REEPS names</span>
@ -568,15 +583,19 @@
<span class="sd"> See class docstring on &quot;exp_csv_filename&quot; for further explanations.</span>
<span class="sd"> :param exp_csv_filename: (str) file name/path for experimental data csv</span>
<span class="sd"> :param exp_data: (str or pd.DataFrame)</span>
<span class="sd"> file name/path or DataFrame for experimental data csv</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_csv_filename</span> <span class="o">=</span> <span class="n">exp_csv_filename</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="k">if</span> <span class="nb">isinstance</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="nb">str</span><span class="p">):</span>
<span class="k">try</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_csv_filename</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="bp">self</span><span class="o">.</span><span class="n">_exp_csv_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;reeps&#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_csv_filename</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_csv_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;reeps&#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="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_exp_data</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span> <span class="o">=</span> <span class="n">exp_data</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df_columns</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;h_i&#39;</span><span class="p">,</span> <span class="s1">&#39;h_eq&#39;</span><span class="p">,</span> <span class="s1">&#39;z_i&#39;</span><span class="p">,</span> <span class="s1">&#39;z_eq&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_re_species_list</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_re_species_list</span> <span class="o">=</span> <span class="p">[]</span>
@ -588,6 +607,10 @@
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df_columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_aq_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">))</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df_columns</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_d_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</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">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_df_columns</span>
<span class="k">for</span> <span class="n">species</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_re_species_list</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span><span class="p">[</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_org_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">)]</span> <span class="o">=</span> \
<span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span><span class="p">[</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_aq_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">)]</span> \
<span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span><span class="p">[</span><span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_d_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">)]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">set_in_moles</span><span class="p">(</span><span class="n">feed_vol</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_predicted_dict</span><span class="p">()</span>
<span class="k">return</span> <span class="kc">None</span></div>
@ -604,7 +627,7 @@
<span class="sd">&quot;&quot;&quot;Change list of Cantera solutions by inputting</span>
<span class="sd"> new xml file name and phase names</span>
<span class="sd"> Also runs set_in_moles to set initial molality to 1 g/L</span>
<span class="sd"> Also runs set_in_moles to set feed volume to 1 L</span>
<span class="sd"> :param phases_xml_filename: (str) xml file with parameters</span>
<span class="sd"> for equilibrium calc</span>
@ -720,7 +743,7 @@
<div class="viewcode-block" id="REEPS.get_rare_earth_ion_names"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.get_rare_earth_ion_names">[docs]</a> <span class="k">def</span> <span class="nf">get_rare_earth_ion_names</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Returns list of rare earth ion names</span>
<span class="sd"> </span>
<span class="sd"> :return: rare_earth_ion_names: (list) names of rare earth ions in</span>
<span class="sd"> xml file</span>
<span class="sd"> &quot;&quot;&quot;</span>
@ -756,7 +779,7 @@
<div class="viewcode-block" id="REEPS.get_aq_solvent_rho"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.get_aq_solvent_rho">[docs]</a> <span class="k">def</span> <span class="nf">get_aq_solvent_rho</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Returns aqueous solvent density (g/L)</span>
<span class="sd"> </span>
<span class="sd"> :return: aq_solvent_rho: (float) density of aqueous solvent</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">_aq_solvent_rho</span></div>
@ -810,7 +833,7 @@
<span class="sd"> This function also calls update_predicted_dict</span>
<span class="sd"> :param feed_vol: (float) feed volume of mixture (g/L)</span>
<span class="sd"> :param feed_vol: (float) feed volume of mixture (L)</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">phases_copy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_phases</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="n">exp_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
@ -963,7 +986,7 @@
<span class="s2">&quot;with at least 2 arguments: &quot;</span>
<span class="s2">&quot;f(objective_func,x_guess, kwargs)&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">optimizer</span> <span class="o">==</span> <span class="s1">&#39;SLSQP&#39;</span><span class="p">:</span>
<span class="n">optimizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">slsqp_optimizer</span>
<span class="n">optimizer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scipy_minimize</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_optimizer</span> <span class="o">=</span> <span class="n">optimizer</span>
<span class="k">return</span> <span class="kc">None</span></div>
@ -998,6 +1021,23 @@
<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="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="REEPS.get_dependant_params_dict"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.get_dependant_params_dict">[docs]</a> <span class="k">def</span> <span class="nf">get_dependant_params_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Returns the dependant_params_dict</span>
<span class="sd"> :return: dependant_params_dict: (dict) dictionary containing</span>
<span class="sd"> information about parameters dependant on opt_dict</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dependant_params_dict</span></div>
<div class="viewcode-block" id="REEPS.set_dependant_params_dict"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.set_dependant_params_dict">[docs]</a> <span class="k">def</span> <span class="nf">set_dependant_params_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dependant_params_dict</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Sets the dependant_params_dict</span>
<span class="sd"> :param dependant_params_dict: (dict) dictionary containing information</span>
<span class="sd"> about parameters dependant on opt_dict</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_dependant_params_dict</span> <span class="o">=</span> <span class="n">dependant_params_dict</span>
<span class="k">return</span> <span class="kc">None</span></div>
<div class="viewcode-block" id="REEPS.update_predicted_dict"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.update_predicted_dict">[docs]</a> <span class="k">def</span> <span class="nf">update_predicted_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
<span class="n">phases_xml_filename</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">phase_names</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
@ -1080,6 +1120,7 @@
<span class="n">exp_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</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">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">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>
@ -1093,9 +1134,14 @@
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">species_name</span> <span class="ow">in</span> <span class="n">opt_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
<span class="k">for</span> <span class="n">thermo_prop</span> <span class="ow">in</span> <span class="n">opt_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span>
<span class="n">x</span><span class="p">[</span><span class="n">i</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">species_name</span><span class="p">][</span><span class="n">thermo_prop</span><span class="p">]</span> <span class="o">*=</span> <span class="n">x</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</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="bp">self</span><span class="o">.</span><span class="n">update_xml</span><span class="p">(</span><span class="n">opt_dict</span><span class="p">,</span>
<span class="n">temp_xml_file_path</span><span class="p">,</span>
<span class="n">dependant_params_dict</span><span class="o">=</span><span class="n">dep_dict</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_predicted_dict</span><span class="p">(</span><span class="n">temp_xml_file_path</span><span class="p">)</span>
<span class="n">predicted_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_predicted_dict</span><span class="p">()</span>
@ -1118,16 +1164,19 @@
<span class="n">objective_function</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">optimizer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">objective_kwargs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">optimizer_kwargs</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span>
<span class="n">optimizer_kwargs</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">tuple</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Fits experimental to modeled data by minimizing objective function</span>
<span class="sd"> with optimizer. Returns dictionary with opt_dict structure</span>
<span class="sd"> :param objective_function: (function) function to compute objective</span>
<span class="sd"> If &#39;None&#39;, last set objective or default function is used</span>
<span class="sd"> :param optimizer: (function) function to perform optimization</span>
<span class="sd"> :param optimizer_kwargs: (dict) arguments for optimizer</span>
<span class="sd"> :param objective_kwargs: (dict) arguments for objective function</span>
<span class="sd"> :returns opt_dict: (dict) optimized opt_dict. Has identical structure</span>
<span class="sd"> as opt_dict</span>
<span class="sd"> If &#39;None&#39;, last set optimizer or default is used</span>
<span class="sd"> :param optimizer_kwargs: (dict) optional arguments for optimizer</span>
<span class="sd"> :param objective_kwargs: (dict) optional arguments</span>
<span class="sd"> for objective function</span>
<span class="sd"> :returns tuple: (opt_dict (dict), opt_value (float))</span>
<span class="sd"> optimized opt_dict: Has identical structure as opt_dict</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">objective_function</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">set_objective_function</span><span class="p">(</span><span class="n">objective_function</span><span class="p">)</span>
@ -1147,21 +1196,24 @@
<span class="k">if</span> <span class="n">optimizer_kwargs</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># noinspection PyCallingNonCallable</span>
<span class="n">est_parameters</span> <span class="o">=</span> <span class="n">optimizer</span><span class="p">(</span><span class="n">objective</span><span class="p">,</span> <span class="n">x_guess</span><span class="p">)</span>
<span class="n">est_parameters</span><span class="p">,</span> <span class="n">obj_value</span> <span class="o">=</span> <span class="n">optimizer</span><span class="p">(</span><span class="n">objective</span><span class="p">,</span> <span class="n">x_guess</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># noinspection PyCallingNonCallable</span>
<span class="n">est_parameters</span> <span class="o">=</span> <span class="n">optimizer</span><span class="p">(</span><span class="n">objective</span><span class="p">,</span> <span class="n">x_guess</span><span class="p">,</span> <span class="o">**</span><span class="n">optimizer_kwargs</span><span class="p">)</span>
<span class="n">est_parameters</span><span class="p">,</span> <span class="n">obj_value</span> <span class="o">=</span> <span class="n">optimizer</span><span class="p">(</span><span class="n">objective</span><span class="p">,</span>
<span class="n">x_guess</span><span class="p">,</span>
<span class="n">optimizer_kwargs</span><span class="p">)</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">species_name</span> <span class="ow">in</span> <span class="n">opt_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
<span class="k">for</span> <span class="n">thermo_prop</span> <span class="ow">in</span> <span class="n">opt_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
<span class="n">opt_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">][</span><span class="n">thermo_prop</span><span class="p">]</span> <span class="o">*=</span> <span class="n">est_parameters</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">return</span> <span class="n">opt_dict</span></div>
<span class="k">return</span> <span class="n">opt_dict</span><span class="p">,</span> <span class="n">obj_value</span></div>
<div class="viewcode-block" id="REEPS.update_xml"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.update_xml">[docs]</a> <span class="k">def</span> <span class="nf">update_xml</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="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">dependant_params_dict</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;updates xml file with info_dict</span>
<span class="sd"> :param info_dict: (dict) info in {species_names:{thermo_prop:val}}</span>
@ -1169,20 +1221,42 @@
<span class="sd"> :param phases_xml_filename: (str) xml filename if editing other xml</span>
<span class="sd"> If ``None``, the current xml will be modified and the internal</span>
<span class="sd"> Cantera phases will be refreshed to the new values.</span>
<span class="sd"> :param dependant_params_dict: (dict) dictionary containing information</span>
<span class="sd"> about parameters dependant on info_dict</span>
<span class="sd"> &quot;&quot;&quot;</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">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="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">for</span> <span class="n">species_name</span> <span class="ow">in</span> <span class="n">dep_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
<span class="k">for</span> <span class="n">thermo_prop</span> <span class="ow">in</span> <span class="n">dep_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">]:</span>
<span class="n">mod_func</span> <span class="o">=</span> \
<span class="n">dep_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">][</span><span class="n">thermo_prop</span><span class="p">][</span><span class="s1">&#39;function&#39;</span><span class="p">]</span>
<span class="n">mod_kwargs</span> <span class="o">=</span> \
<span class="n">dep_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">][</span><span class="n">thermo_prop</span><span class="p">][</span><span class="s1">&#39;kwargs&#39;</span><span class="p">]</span>
<span class="n">ind_vars</span> <span class="o">=</span> \
<span class="n">dep_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">][</span><span class="n">thermo_prop</span><span class="p">][</span><span class="s1">&#39;ind_vars&#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_var</span><span class="p">[</span><span class="mi">0</span><span class="p">]][</span><span class="n">ind_var</span><span class="p">[</span><span class="mi">1</span><span class="p">]]</span>
<span class="k">for</span> <span class="n">ind_var</span> <span class="ow">in</span> <span class="n">ind_vars</span><span class="p">]</span>
<span class="n">new_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">new_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">][</span><span class="n">thermo_prop</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">new_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">][</span><span class="n">thermo_prop</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="o">**</span><span class="n">mod_kwargs</span><span class="p">)</span>
<span class="c1"># print(mod_func(ind_vals, **mod_kwargs))</span>
<span class="c1"># print(new_dict)</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="c1"># Update xml file</span>
<span class="k">for</span> <span class="n">species_name</span> <span class="ow">in</span> <span class="n">info_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
<span class="k">for</span> <span class="n">thermo_prop</span> <span class="ow">in</span> <span class="n">info_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
<span class="k">for</span> <span class="n">species_name</span> <span class="ow">in</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">thermo_prop</span> <span class="ow">in</span> <span class="n">new_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
<span class="k">for</span> <span class="n">species</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="s1">&#39;species&#39;</span><span class="p">):</span>
<span class="k">if</span> <span class="n">species</span><span class="o">.</span><span class="n">attrib</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">species_name</span><span class="p">:</span>
<span class="k">for</span> <span class="n">changed_prop</span> <span class="ow">in</span> <span class="n">species</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">thermo_prop</span><span class="p">):</span>
<span class="n">changed_prop</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span>
<span class="n">info_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">][</span><span class="n">thermo_prop</span><span class="p">])</span>
<span class="n">new_dict</span><span class="p">[</span><span class="n">species_name</span><span class="p">][</span><span class="n">thermo_prop</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">changed_prop</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s1">&#39;updated&#39;</span><span class="p">,</span>
<span class="s1">&#39;Updated at </span><span class="si">{0}</span><span class="s1">:</span><span class="si">{1}</span><span class="s1"> </span><span class="si">{2}</span><span class="s1">-</span><span class="si">{3}</span><span class="s1">-</span><span class="si">{4}</span><span class="s1">&#39;</span>
@ -1195,10 +1269,213 @@
<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">def</span> <span class="nf">_internal_objective_ver2</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ver2 generalizes to handle accessing parameters. ver1 assumes species</span>
<span class="sd"> parameter is modified. ver2 assumes parameter is accessed by going</span>
<span class="sd"> through two levels: upper and lower</span>
<span class="sd"> Internal objective function. Uses objective function to compute value</span>
<span class="sd"> If the optimizer requires vectorized variables ie pso, this function</span>
<span class="sd"> takes care of it</span>
<span class="sd"> :param x: (list) thermo properties varied to minimize objective func</span>
<span class="sd"> :param kwargs: (list) arguments for objective_function</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">temp_xml_file_path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_temp_xml_file_path</span>
<span class="n">exp_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_exp_df</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">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">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="n">xs</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">vectorized_x</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">vectorized_x</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">xs</span> <span class="o">=</span> <span class="n">x</span>
<span class="n">objective_values</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">xs</span><span class="p">:</span>
<span class="k">for</span> <span class="n">ind</span><span class="p">,</span> <span class="n">param_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">opt_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">()):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">np</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</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="bp">self</span><span class="o">.</span><span class="n">update_xml_ver2</span><span class="p">(</span><span class="n">opt_dict</span><span class="p">,</span>
<span class="n">temp_xml_file_path</span><span class="p">,</span>
<span class="n">dependant_params_dict</span><span class="o">=</span><span class="n">dep_dict</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_predicted_dict</span><span class="p">(</span><span class="n">temp_xml_file_path</span><span class="p">)</span>
<span class="n">predicted_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_predicted_dict</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">update_predicted_dict</span><span class="p">()</span>
<span class="k">if</span> <span class="n">kwargs</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># noinspection PyCallingNonCallable</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">objective_function</span><span class="p">(</span><span class="n">predicted_dict</span><span class="p">,</span> <span class="n">exp_df</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># noinspection PyCallingNonCallable</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">objective_function</span><span class="p">(</span><span class="n">predicted_dict</span><span class="p">,</span> <span class="n">exp_df</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
<span class="n">objective_values</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
<span class="k">if</span> <span class="n">vectorized_x</span><span class="p">:</span>
<span class="n">objective_values</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">objective_values</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">objective_values</span> <span class="o">=</span> <span class="n">objective_values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">return</span> <span class="n">objective_values</span>
<div class="viewcode-block" id="REEPS.fit_ver2"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.fit_ver2">[docs]</a> <span class="k">def</span> <span class="nf">fit_ver2</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
<span class="n">objective_function</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">optimizer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">objective_kwargs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">optimizer_kwargs</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">tuple</span><span class="p">:</span>
<span class="sd">&quot;&quot;&quot;Fits experimental to modeled data by minimizing objective function</span>
<span class="sd"> with optimizer. Returns dictionary with opt_dict structure</span>
<span class="sd"> :param objective_function: (function) function to compute objective</span>
<span class="sd"> If &#39;None&#39;, last set objective or default function is used</span>
<span class="sd"> :param optimizer: (function) function to perform optimization</span>
<span class="sd"> If &#39;None&#39;, last set optimizer or default is used</span>
<span class="sd"> :param optimizer_kwargs: (dict) optional arguments for optimizer</span>
<span class="sd"> :param objective_kwargs: (dict) optional arguments</span>
<span class="sd"> for objective function</span>
<span class="sd"> :returns tuple: (opt_dict (dict), opt_value (float))</span>
<span class="sd"> optimized opt_dict: Has identical structure as opt_dict</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">objective_function</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">set_objective_function</span><span class="p">(</span><span class="n">objective_function</span><span class="p">)</span>
<span class="k">if</span> <span class="n">optimizer</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">set_optimizer</span><span class="p">(</span><span class="n">optimizer</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">objective</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_internal_objective_ver2</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">objective_kwargs</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">_optimizer</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">x_guess</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">opt_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())))</span>
<span class="k">if</span> <span class="n">optimizer_kwargs</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1"># noinspection PyCallingNonCallable</span>
<span class="n">est_parameters</span><span class="p">,</span> <span class="n">obj_value</span> <span class="o">=</span> <span class="n">optimizer</span><span class="p">(</span><span class="n">objective</span><span class="p">,</span> <span class="n">x_guess</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># noinspection PyCallingNonCallable</span>
<span class="n">est_parameters</span><span class="p">,</span> <span class="n">obj_value</span> <span class="o">=</span> <span class="n">optimizer</span><span class="p">(</span><span class="n">objective</span><span class="p">,</span>
<span class="n">x_guess</span><span class="p">,</span>
<span class="n">optimizer_kwargs</span><span class="p">)</span>
<span class="k">for</span> <span class="n">ind</span><span class="p">,</span> <span class="n">param_name</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">opt_dict</span><span class="o">.</span><span class="n">keys</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">est_parameters</span><span class="p">[</span><span class="n">ind</span><span class="p">]</span>
<span class="k">return</span> <span class="n">opt_dict</span><span class="p">,</span> <span class="n">obj_value</span></div>
<div class="viewcode-block" id="REEPS.update_xml_ver2"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.update_xml_ver2">[docs]</a> <span class="k">def</span> <span class="nf">update_xml_ver2</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="n">phases_xml_filename</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"> :param info_dict: (dict) info in {species_names:{thermo_prop:val}}</span>
<span class="sd"> Requires an identical structure to opt_dict</span>
<span class="sd"> :param phases_xml_filename: (str) xml filename if editing other xml</span>
<span class="sd"> If ``None``, the current xml will be modified and the internal</span>
<span class="sd"> Cantera phases will be refreshed to the new values.</span>
<span class="sd"> :param dependant_params_dict: (dict) dictionary containing information</span>
<span class="sd"> about parameters dependant on info_dict</span>
<span class="sd"> &quot;&quot;&quot;</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">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="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="k">for</span> <span class="n">param_name</span> <span class="ow">in</span> <span class="n">dep_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
<span class="n">mod_func</span> <span class="o">=</span> \
<span class="n">dep_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;function&#39;</span><span class="p">]</span>
<span class="n">mod_kwargs</span> <span class="o">=</span> \
<span class="n">dep_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;kwargs&#39;</span><span class="p">]</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dep_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;independent_params&#39;</span><span class="p">],</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">ind_param_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">dep_dict</span><span class="p">[</span>
<span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;independent_params&#39;</span><span class="p">]]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ind_param_names</span> <span class="o">=</span> \
<span class="n">dep_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;independent_params&#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">if</span> <span class="n">mod_kwargs</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">new_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;input_value&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">mod_func</span><span class="p">(</span><span class="n">ind_vals</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">new_dict</span><span class="p">[</span><span class="n">param_name</span><span class="p">][</span><span class="s1">&#39;input_value&#39;</span><span class="p">]</span> <span class="o">=</span> \
<span class="n">mod_func</span><span class="p">(</span><span class="n">ind_vals</span><span class="p">,</span>
<span class="o">**</span><span class="n">mod_kwargs</span><span class="p">)</span>
<span class="n">tree</span> <span class="o">=</span> <span class="n">ET</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">phases_xml_filename</span><span class="p">)</span>
<span class="n">root</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
<span class="c1"># Update xml file</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">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="p">(</span><span class="n">d</span><span class="p">[</span><span class="s1">&#39;upper_attrib_name&#39;</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
<span class="ow">and</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;lower_attrib_name&#39;</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">for</span> <span class="n">child1</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="s1">&#39;upper_element_name&#39;</span><span class="p">]):</span>
<span class="k">if</span> <span class="p">(</span><span class="n">child1</span><span class="o">.</span><span class="n">attrib</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="o">==</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;upper_attrib_value&#39;</span><span class="p">]):</span>
<span class="k">for</span> <span class="n">child2</span> <span class="ow">in</span> <span class="n">child1</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;lower_element_name&#39;</span><span class="p">]):</span>
<span class="k">if</span> <span class="p">(</span><span class="n">child1</span><span class="o">.</span><span class="n">attrib</span><span class="p">[</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="o">==</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;lower_attrib_value&#39;</span><span class="p">]):</span>
<span class="n">child2</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;input_format&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">format</span><span class="p">(</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">child2</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s1">&#39;updated&#39;</span><span class="p">,</span>
<span class="s1">&#39;Updated at </span><span class="si">{0}</span><span class="s1">:</span><span class="si">{1}</span><span class="s1"> </span><span class="si">{2}</span><span class="s1">-</span><span class="si">{3}</span><span class="s1">-</span><span class="si">{4}</span><span class="s1">&#39;</span>
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">now</span><span class="o">.</span><span class="n">hour</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">minute</span><span class="p">,</span>
<span class="n">now</span><span class="o">.</span><span class="n">month</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">day</span><span class="p">,</span>
<span class="n">now</span><span class="o">.</span><span class="n">year</span><span class="p">))</span>
<span class="k">elif</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="kc">None</span>
<span class="ow">and</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;lower_attrib_name&#39;</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">):</span>
<span class="k">for</span> <span class="n">child1</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="s1">&#39;upper_element_name&#39;</span><span class="p">]):</span>
<span class="k">for</span> <span class="n">child2</span> <span class="ow">in</span> <span class="n">child1</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;lower_element_name&#39;</span><span class="p">]):</span>
<span class="k">if</span> <span class="p">(</span><span class="n">child1</span><span class="o">.</span><span class="n">attrib</span><span class="p">[</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="o">==</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;lower_attrib_value&#39;</span><span class="p">]):</span>
<span class="n">child2</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;input_format&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">format</span><span class="p">(</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">child2</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s1">&#39;updated&#39;</span><span class="p">,</span>
<span class="s1">&#39;Updated at </span><span class="si">{0}</span><span class="s1">:</span><span class="si">{1}</span><span class="s1"> </span><span class="si">{2}</span><span class="s1">-</span><span class="si">{3}</span><span class="s1">-</span><span class="si">{4}</span><span class="s1">&#39;</span>
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">now</span><span class="o">.</span><span class="n">hour</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">minute</span><span class="p">,</span>
<span class="n">now</span><span class="o">.</span><span class="n">month</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">day</span><span class="p">,</span>
<span class="n">now</span><span class="o">.</span><span class="n">year</span><span class="p">))</span>
<span class="k">elif</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="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">if</span> <span class="p">(</span><span class="n">child1</span><span class="o">.</span><span class="n">attrib</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="o">==</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;upper_attrib_value&#39;</span><span class="p">]):</span>
<span class="k">for</span> <span class="n">child2</span> <span class="ow">in</span> <span class="n">child1</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;lower_element_name&#39;</span><span class="p">]):</span>
<span class="n">child2</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;input_format&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">format</span><span class="p">(</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">child2</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s1">&#39;updated&#39;</span><span class="p">,</span>
<span class="s1">&#39;Updated at </span><span class="si">{0}</span><span class="s1">:</span><span class="si">{1}</span><span class="s1"> </span><span class="si">{2}</span><span class="s1">-</span><span class="si">{3}</span><span class="s1">-</span><span class="si">{4}</span><span class="s1">&#39;</span>
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">now</span><span class="o">.</span><span class="n">hour</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">minute</span><span class="p">,</span>
<span class="n">now</span><span class="o">.</span><span class="n">month</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">day</span><span class="p">,</span>
<span class="n">now</span><span class="o">.</span><span class="n">year</span><span class="p">))</span>
<span class="k">else</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">child2</span> <span class="ow">in</span> <span class="n">child1</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;lower_element_name&#39;</span><span class="p">]):</span>
<span class="n">child2</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">d</span><span class="p">[</span><span class="s1">&#39;input_format&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">format</span><span class="p">(</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">child2</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s1">&#39;updated&#39;</span><span class="p">,</span> <span class="s1">&#39;Updated at </span><span class="si">{0}</span><span class="s1">:</span><span class="si">{1}</span><span class="s1"> </span><span class="si">{2}</span><span class="s1">-</span><span class="si">{3}</span><span class="s1">-</span><span class="si">{4}</span><span class="s1">&#39;</span>
<span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">now</span><span class="o">.</span><span class="n">hour</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">minute</span><span class="p">,</span>
<span class="n">now</span><span class="o">.</span><span class="n">month</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">day</span><span class="p">,</span>
<span class="n">now</span><span class="o">.</span><span class="n">year</span><span class="p">))</span>
<span class="n">tree</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">phases_xml_filename</span><span class="p">)</span>
<span class="k">if</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="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>
<div class="viewcode-block" id="REEPS.parity_plot"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.parity_plot">[docs]</a> <span class="k">def</span> <span class="nf">parity_plot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
<span class="n">compared_value</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">c_data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">c_label</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">plot_title</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">save_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">print_r_squared</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
<span class="n">print_r_squared</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">data_labels</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">legend</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Parity plot between measured and predicted compared_value.</span>
<span class="sd"> Default compared value is {RE_1}_aq_eq</span>
@ -1206,9 +1483,25 @@
<span class="sd"> :param compared_value: (str) Quantity to compare predicted and</span>
<span class="sd"> experimental data. Can be any column containing &quot;eq&quot; in exp_df i.e.</span>
<span class="sd"> h_eq, z_eq, {RE}_d_eq, etc.</span>
<span class="sd"> :param plot_title: (str or boolean)</span>
<span class="sd"> If None (default): Plot title will be generated from compared_value</span>
<span class="sd"> Recommend to just explore. If h_eq, plot_title is</span>
<span class="sd"> &quot;H^+ eq conc&quot;.</span>
<span class="sd"> If str: Plot title will be plot_title string</span>
<span class="sd"> If &quot;False&quot;: No plot title</span>
<span class="sd"> :param c_data: (list or np.ndarray) data for color axis</span>
<span class="sd"> :param c_label: (str) label for color axis</span>
<span class="sd"> :param save_path: (str) save path for parity plot</span>
<span class="sd"> :param print_r_squared: (boolean) To plot or not to plot r-squared</span>
<span class="sd"> value. Prints 2 places past decimal</span>
<span class="sd"> :param data_labels: labels for the data such as paper&#39;s name where</span>
<span class="sd"> experiment is pulled from.</span>
<span class="sd"> :param legend: whether to display legend for data_labels. Has no</span>
<span class="sd"> effect if data_labels is None</span>
<span class="sd"> :return fig, ax: returns the figure and axes objects</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">exp_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_exp_df</span><span class="p">()</span>
<span class="n">predicted_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_predicted_dict</span><span class="p">()</span>
@ -1217,45 +1510,98 @@
<span class="n">re_charges</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_re_charges</span>
<span class="k">if</span> <span class="n">compared_value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">compared_value</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_aq_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">re_species_list</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">pred</span> <span class="o">=</span> <span class="n">predicted_dict</span><span class="p">[</span><span class="n">compared_value</span><span class="p">]</span>
<span class="n">meas</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span><span class="n">compared_value</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
<span class="n">pred</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="n">predicted_dict</span><span class="p">)[</span><span class="n">compared_value</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">values</span>
<span class="n">meas</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span><span class="n">compared_value</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">values</span>
<span class="n">name_breakdown</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s1">&#39;[^_\W]+&#39;</span><span class="p">,</span> <span class="n">compared_value</span><span class="p">)</span>
<span class="n">compared_species</span> <span class="o">=</span> <span class="n">name_breakdown</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="n">compared_species</span> <span class="o">==</span> <span class="s1">&#39;h&#39;</span><span class="p">:</span>
<span class="n">feed_molarity</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span><span class="s1">&#39;h_i&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">values</span>
<span class="k">elif</span> <span class="n">compared_species</span> <span class="o">==</span> <span class="s1">&#39;z&#39;</span><span class="p">:</span>
<span class="n">feed_molarity</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span><span class="s1">&#39;z_i&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</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">feed_molarity</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span>
<span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_aq_i&#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="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">values</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">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;label&#39;</span><span class="p">:</span> <span class="n">data_labels</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="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">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="n">c_data</span><span class="p">:</span> <span class="n">exp_df</span><span class="p">[</span><span class="n">c_data</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">,</span>
<span class="s1">&#39;feed_molarity&#39;</span><span class="p">:</span> <span class="n">feed_molarity</span><span class="p">})</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">combined_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">({</span><span class="s1">&#39;pred&#39;</span><span class="p">:</span> <span class="n">pred</span><span class="p">,</span>
<span class="s1">&#39;meas&#39;</span><span class="p">:</span> <span class="n">meas</span><span class="p">,</span>
<span class="s1">&#39;feed_molarity&#39;</span><span class="p">:</span> <span class="n">feed_molarity</span><span class="p">})</span>
<span class="n">combined_df</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;feed_molarity&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)]</span>
<span class="n">meas</span> <span class="o">=</span> <span class="n">combined_df</span><span class="p">[</span><span class="s1">&#39;meas&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
<span class="n">pred</span> <span class="o">=</span> <span class="n">combined_df</span><span class="p">[</span><span class="s1">&#39;pred&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
<span class="n">min_data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">min</span><span class="p">([</span><span class="n">pred</span><span class="p">,</span> <span class="n">meas</span><span class="p">])</span>
<span class="n">max_data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">([</span><span class="n">pred</span><span class="p">,</span> <span class="n">meas</span><span class="p">])</span>
<span class="n">min_max_data</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">min_data</span><span class="p">,</span> <span class="n">max_data</span><span class="p">])</span>
<span class="n">name_breakdown</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s1">&#39;[^_\W]+&#39;</span><span class="p">,</span> <span class="n">compared_value</span><span class="p">)</span>
<span class="n">compared_species</span> <span class="o">=</span> <span class="n">name_breakdown</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="n">compared_species</span> <span class="o">==</span> <span class="s1">&#39;h&#39;</span><span class="p">:</span>
<span class="n">species_name</span> <span class="o">=</span> <span class="s1">&#39;$H^+$&#39;</span>
<span class="n">default_title</span> <span class="o">=</span> <span class="s1">&#39;$H^+$ eq. conc. (mol/L)&#39;</span>
<span class="k">elif</span> <span class="n">compared_species</span> <span class="o">==</span> <span class="s1">&#39;z&#39;</span><span class="p">:</span>
<span class="n">species_name</span> <span class="o">=</span> <span class="n">extractant_name</span>
<span class="n">default_title</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">{0}</span><span class="s1"> eq. conc. (mol/L)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">extractant_name</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">phase</span> <span class="o">=</span> <span class="n">name_breakdown</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="k">if</span> <span class="n">phase</span> <span class="o">==</span> <span class="s1">&#39;aq&#39;</span><span class="p">:</span>
<span class="n">re_charge</span> <span class="o">=</span> <span class="n">re_charges</span><span class="p">[</span><span class="n">re_species_list</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">compared_species</span><span class="p">)]</span>
<span class="n">species_name</span> <span class="o">=</span> <span class="s1">&#39;$</span><span class="si">%s</span><span class="s1">^{</span><span class="si">%d</span><span class="s1">+}$&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">compared_species</span><span class="p">,</span> <span class="n">re_charge</span><span class="p">)</span>
<span class="n">default_title</span> <span class="o">=</span> <span class="s1">&#39;$</span><span class="si">%s</span><span class="s1">^{</span><span class="si">%d</span><span class="s1">+}$ eq. conc. (mol/L)&#39;</span> \
<span class="o">%</span> <span class="p">(</span><span class="n">compared_species</span><span class="p">,</span> <span class="n">re_charge</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">phase</span> <span class="o">==</span> <span class="s1">&#39;d&#39;</span><span class="p">:</span>
<span class="n">species_name</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">{0}</span><span class="s1"> distribution ratio&#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"> distribution ratio&#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="k">else</span><span class="p">:</span>
<span class="n">species_name</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">{0}</span><span class="s1"> complex&#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">default_title</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">{0}</span><span class="s1"> complex eq. conc. (mol/L)&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">compared_species</span><span class="p">)</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="n">p1</span> <span class="o">=</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">label</span><span class="o">=</span><span class="s2">&quot;</span><span class="si">{0}</span><span class="s2"> eq. conc. (mol/L)&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
<span class="n">species_name</span><span class="p">),</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data_labels</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
<span class="n">unique_labels</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">data_labels</span><span class="p">))</span>
<span class="k">for</span> <span class="n">label</span> <span class="ow">in</span> <span class="n">unique_labels</span><span class="p">:</span>
<span class="n">filtered_data</span> <span class="o">=</span> <span class="n">combined_df</span><span class="p">[</span><span class="n">combined_df</span><span class="p">[</span><span class="s1">&#39;label&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="n">label</span><span class="p">]</span>
<span class="n">filtered_meas</span> <span class="o">=</span> <span class="n">filtered_data</span><span class="p">[</span><span class="s1">&#39;meas&#39;</span><span class="p">]</span>
<span class="n">filtered_pred</span> <span class="o">=</span> <span class="n">filtered_data</span><span class="p">[</span><span class="s1">&#39;pred&#39;</span><span class="p">]</span>
<span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">filtered_meas</span><span class="p">,</span> <span class="n">filtered_pred</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">)</span>
<span class="k">if</span> <span class="n">legend</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s1">&#39;best&#39;</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">c_data</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">c_data</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">c_data</span> <span class="o">=</span> <span class="n">combined_df</span><span class="p">[</span><span class="n">c_data</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
<span class="n">p1</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">meas</span><span class="p">,</span> <span class="n">pred</span><span class="p">,</span> <span class="n">c</span><span class="o">=</span><span class="n">c_data</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">&#39;viridis&#39;</span><span class="p">)</span>
<span class="n">c_bar</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s1">&#39;</span><span class="si">%.2f</span><span class="s1">&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">c_label</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">c_bar</span><span class="o">.</span><span class="n">set_label</span><span class="p">(</span><span class="n">c_label</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">270</span><span class="p">,</span> <span class="n">labelpad</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">sns</span><span class="o">.</span><span class="n">scatterplot</span><span class="p">(</span><span class="n">meas</span><span class="p">,</span> <span class="n">pred</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">&quot;r&quot;</span><span class="p">,</span>
<span class="n">legend</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="n">sns</span><span class="o">.</span><span class="n">lineplot</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="n">p1</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="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="n">plt</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;lower right&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="c1"># plt.legend(loc=&#39;lower right&#39;)</span>
<span class="c1"># else:</span>
<span class="c1"># plt.legend()</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">xlabel</span><span class="o">=</span><span class="s1">&#39;Measured&#39;</span><span class="p">,</span> <span class="n">ylabel</span><span class="o">=</span><span class="s1">&#39;Predicted&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">plot_title</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="n">default_title</span><span class="p">)</span>
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">plot_title</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="n">plot_title</span><span class="p">)</span>
<span class="n">set_size</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="k">if</span> <span class="n">save_path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save_path</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s1">&#39;tight&#39;</span><span class="p">)</span>
<span class="k">return</span> <span class="kc">None</span></div>
<span class="k">return</span> <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span></div>
<div class="viewcode-block" id="REEPS.r_squared"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.r_squared">[docs]</a> <span class="k">def</span> <span class="nf">r_squared</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="sd">&quot;&quot;&quot;r-squared value comparing measured and predicted compared value</span>
@ -1264,20 +1610,87 @@
<span class="sd"> :param compared_value: (str) Quantity to compare predicted and</span>
<span class="sd"> experimental data. Can be any column containing &quot;eq&quot; in exp_df i.e.</span>
<span class="sd"> h_eq, z_eq, {RE}_d_eq, etc.</span>
<span class="sd"> h_eq, z_eq, {RE}_d_eq, etc. default is {RE}_aq_eq</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">exp_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_exp_df</span><span class="p">()</span>
<span class="n">predicted_dict</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_predicted_dict</span><span class="p">()</span>
<span class="n">re_species_list</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_re_species_list</span>
<span class="k">if</span> <span class="n">compared_value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">compared_value</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_aq_eq&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">re_species_list</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">pred</span> <span class="o">=</span> <span class="n">predicted_dict</span><span class="p">[</span><span class="n">compared_value</span><span class="p">]</span>
<span class="n">pred</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="n">predicted_dict</span><span class="p">)[</span><span class="n">compared_value</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">values</span>
<span class="n">predicted_y</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">pred</span><span class="p">)</span>
<span class="n">actual_y</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span><span class="n">compared_value</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
<span class="n">actual_y</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span><span class="n">compared_value</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">values</span>
<span class="n">name_breakdown</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s1">&#39;[^_\W]+&#39;</span><span class="p">,</span> <span class="n">compared_value</span><span class="p">)</span>
<span class="n">compared_species</span> <span class="o">=</span> <span class="n">name_breakdown</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">if</span> <span class="n">compared_species</span> <span class="o">==</span> <span class="s1">&#39;h&#39;</span><span class="p">:</span>
<span class="n">feed_molarity</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span><span class="s1">&#39;h_i&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">values</span>
<span class="k">elif</span> <span class="n">compared_species</span> <span class="o">==</span> <span class="s1">&#39;z&#39;</span><span class="p">:</span>
<span class="n">feed_molarity</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span><span class="s1">&#39;z_i&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</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">feed_molarity</span> <span class="o">=</span> <span class="n">exp_df</span><span class="p">[</span>
<span class="s1">&#39;</span><span class="si">{0}</span><span class="s1">_aq_i&#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="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">values</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">predicted_y</span><span class="p">,</span>
<span class="s1">&#39;meas&#39;</span><span class="p">:</span> <span class="n">actual_y</span><span class="p">,</span>
<span class="s1">&#39;in_moles&#39;</span><span class="p">:</span> <span class="n">feed_molarity</span><span class="p">})</span>
<span class="n">combined_df</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;in_moles&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)]</span>
<span class="n">actual_y</span> <span class="o">=</span> <span class="n">combined_df</span><span class="p">[</span><span class="s1">&#39;meas&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
<span class="n">predicted_y</span> <span class="o">=</span> <span class="n">combined_df</span><span class="p">[</span><span class="s1">&#39;pred&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">values</span>
<span class="n">num</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">((</span><span class="n">actual_y</span> <span class="o">-</span> <span class="n">predicted_y</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">den</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">((</span><span class="n">actual_y</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">actual_y</span><span class="p">))</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span>
<span class="k">if</span> <span class="n">den</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">r_2</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">r_2</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="n">num</span> <span class="o">/</span> <span class="n">den</span><span class="p">)</span>
<span class="k">return</span> <span class="n">r_2</span></div></div>
<span class="k">return</span> <span class="n">r_2</span></div>
<div class="viewcode-block" id="REEPS.plot_3d_data"><a class="viewcode-back" href="../../modules/reeps.html#reeps.REEPS.plot_3d_data">[docs]</a> <span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">plot_3d_data</span><span class="p">(</span><span class="n">x_data</span><span class="p">,</span>
<span class="n">y_data</span><span class="p">,</span>
<span class="n">z_data</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">x_label</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">y_label</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">z_label</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">c_label</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> :param x_data: (list) list of data for x axis</span>
<span class="sd"> :param y_data: (list) list of data for y axis</span>
<span class="sd"> :param z_data: (list) list of data for z axis</span>
<span class="sd"> :param c_data: (list) list of data for color axis</span>
<span class="sd"> :param x_label: (str) label for x axis</span>
<span class="sd"> :param y_label: (str) label for y axis</span>
<span class="sd"> :param z_label: (str) label for z axis</span>
<span class="sd"> :param c_label: (str) label for color axis</span>
<span class="sd"> :return:</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">,</span> <span class="n">projection</span><span class="o">=</span><span class="s1">&#39;3d&#39;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">c_data</span> <span class="ow">is</span> <span class="kc">None</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">x_data</span><span class="p">,</span> <span class="n">y_data</span><span class="p">,</span> <span class="n">z_data</span><span class="p">,</span> <span class="s1">&#39;o&#39;</span><span class="p">)</span>
<span class="k">else</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">x_data</span><span class="p">,</span>
<span class="n">y_data</span><span class="p">,</span>
<span class="n">z_data</span><span class="p">,</span> <span class="s1">&#39;o&#39;</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">cmap</span><span class="o">=</span><span class="s1">&#39;viridis&#39;</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">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="k">if</span> <span class="n">c_label</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">c_bar</span><span class="o">.</span><span class="n">set_label</span><span class="p">(</span><span class="n">c_label</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">270</span><span class="p">,</span> <span class="n">labelpad</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="k">if</span> <span class="n">x_label</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">&#39;x&#39;</span><span class="p">,</span> <span class="n">labelpad</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="n">x_label</span><span class="p">,</span> <span class="n">labelpad</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="k">if</span> <span class="n">y_label</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">&#39;y&#39;</span><span class="p">,</span> <span class="n">labelpad</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="n">y_label</span><span class="p">,</span> <span class="n">labelpad</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="k">if</span> <span class="n">z_label</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_zlabel</span><span class="p">(</span><span class="s1">&#39;z&#39;</span><span class="p">,</span> <span class="n">labelpad</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_zlabel</span><span class="p">(</span><span class="n">z_label</span><span class="p">,</span> <span class="n">labelpad</span><span class="o">=</span><span class="mi">15</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="k">return</span> <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span></div></div>
</pre></div>
</div>

@ -3,12 +3,11 @@
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to reeps's docs! - the Rare earth element parameter searcher
====================================================================
REEPS is a package for thermodynamic parameter estimation specifically
for rare earth element extraction modeling.
Welcome to llepe's docs! - the Liquid-Liquid Extraction Parameter Estimator
===========================================================================
LLEPE is a package for thermodynamic parameter estimation for liquid-liquid extraction modeling
REEPS takes experimental data in a csv and system data in a xml.
LLEPE takes experimental data in a csv and system data in a xml.
The package then uses Cantera, another python package, to simulate equilibrium.

@ -1,8 +1,8 @@
.. _reeps:
.. automodule:: reeps
.. automodule:: llepe
REEPS
LLEPE
=====
@ -10,6 +10,6 @@ REEPS
Parameters
----------
.. autoclass:: REEPS
.. autoclass:: LLEPE
:members:
:inherited-members:

@ -9,7 +9,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Index &mdash; reeps 1.0.0 documentation</title>
<title>Index &mdash; LLEPE 1.0.0 documentation</title>
@ -49,7 +49,7 @@
<a href="index.html" class="icon icon-home"> reeps
<a href="index.html" class="icon icon-home"> LLEPE
@ -89,7 +89,7 @@
</ul>
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">REEPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">LLEPE</a></li>
</ul>
@ -104,7 +104,7 @@
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">reeps</a>
<a href="index.html">LLEPE</a>
</nav>
@ -169,7 +169,7 @@
<h2 id="F">F</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.fit">fit() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.fit">fit() (llepe.LLEPE method)</a>
</li>
</ul></td>
</tr></table>
@ -177,41 +177,43 @@
<h2 id="G">G</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.get_aq_solvent_name">get_aq_solvent_name() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_aq_solvent_name">get_aq_solvent_name() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_aq_solvent_rho">get_aq_solvent_rho() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_aq_solvent_rho">get_aq_solvent_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_complex_names">get_complex_names() (reeps.REEPS 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#reeps.REEPS.get_diluant_name">get_diluant_name() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_dependant_params_dict">get_dependant_params_dict() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_diluant_rho">get_diluant_rho() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_diluant_name">get_diluant_name() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_exp_df">get_exp_df() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_diluant_rho">get_diluant_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_extractant_name">get_extractant_name() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_exp_df">get_exp_df() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_extractant_rho">get_extractant_rho() (reeps.REEPS 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>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.get_in_moles">get_in_moles() (reeps.REEPS 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><a href="modules/reeps.html#reeps.REEPS.get_objective_function">get_objective_function() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_extracted_species_list">get_extracted_species_list() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_opt_dict">get_opt_dict() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_in_moles">get_in_moles() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_optimizer">get_optimizer() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_objective_function">get_objective_function() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_phases">get_phases() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_opt_dict">get_opt_dict() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_predicted_dict">get_predicted_dict() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_optimizer">get_optimizer() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_rare_earth_ion_names">get_rare_earth_ion_names() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_phases">get_phases() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_re_species_list">get_re_species_list() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_predicted_dict">get_predicted_dict() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.get_temp_xml_file_path">get_temp_xml_file_path() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.get_temp_xml_file_path">get_temp_xml_file_path() (llepe.LLEPE method)</a>
</li>
</ul></td>
</tr></table>
@ -219,7 +221,18 @@
<h2 id="L">L</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.log_mean_squared_error">log_mean_squared_error() (reeps.REEPS method)</a>
<li>
llepe
<ul>
<li><a href="modules/reeps.html#module-llepe">module</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#llepe.LLEPE">LLEPE (class in llepe)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.log_mean_squared_error">log_mean_squared_error() (llepe.LLEPE method)</a>
</li>
</ul></td>
</tr></table>
@ -231,7 +244,7 @@
module
<ul>
<li><a href="modules/reeps.html#module-reeps">reeps</a>
<li><a href="modules/reeps.html#module-llepe">llepe</a>
</li>
</ul></li>
</ul></td>
@ -240,7 +253,11 @@
<h2 id="P">P</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.parity_plot">parity_plot() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.parity_plot">parity_plot() (llepe.LLEPE method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#llepe.LLEPE.plot_3d_data">plot_3d_data() (llepe.LLEPE static method)</a>
</li>
</ul></td>
</tr></table>
@ -248,18 +265,7 @@
<h2 id="R">R</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.r_squared">r_squared() (reeps.REEPS method)</a>
</li>
<li>
reeps
<ul>
<li><a href="modules/reeps.html#module-reeps">module</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS">REEPS (class in reeps)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.r_squared">r_squared() (llepe.LLEPE method)</a>
</li>
</ul></td>
</tr></table>
@ -267,41 +273,43 @@
<h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.set_aq_solvent_name">set_aq_solvent_name() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.scipy_minimize">scipy_minimize() (llepe.LLEPE static method)</a>
</li>
<li><a href="modules/reeps.html#llepe.LLEPE.set_aq_solvent_name">set_aq_solvent_name() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_aq_solvent_rho">set_aq_solvent_rho() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_aq_solvent_rho">set_aq_solvent_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_complex_names">set_complex_names() (reeps.REEPS 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#reeps.REEPS.set_diluant_name">set_diluant_name() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_dependant_params_dict">set_dependant_params_dict() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_diluant_rho">set_diluant_rho() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_diluant_name">set_diluant_name() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_exp_df">set_exp_df() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_diluant_rho">set_diluant_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_extractant_name">set_extractant_name() (reeps.REEPS 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#reeps.REEPS.set_extractant_rho">set_extractant_rho() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_extractant_name">set_extractant_name() (llepe.LLEPE method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.set_in_moles">set_in_moles() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_extractant_rho">set_extractant_rho() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_objective_function">set_objective_function() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_extracted_species_ion_names">set_extracted_species_ion_names() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_opt_dict">set_opt_dict() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_extracted_species_list">set_extracted_species_list() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_optimizer">set_optimizer() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_in_moles">set_in_moles() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_phases">set_phases() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_objective_function">set_objective_function() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_rare_earth_ion_names">set_rare_earth_ion_names() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_opt_dict">set_opt_dict() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_re_species_list">set_re_species_list() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_optimizer">set_optimizer() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.set_temp_xml_file_path">set_temp_xml_file_path() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_phases">set_phases() (llepe.LLEPE method)</a>
</li>
<li><a href="modules/reeps.html#reeps.REEPS.slsqp_optimizer">slsqp_optimizer() (reeps.REEPS static method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.set_temp_xml_file_path">set_temp_xml_file_path() (llepe.LLEPE method)</a>
</li>
</ul></td>
</tr></table>
@ -309,11 +317,11 @@
<h2 id="U">U</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.update_predicted_dict">update_predicted_dict() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.update_predicted_dict">update_predicted_dict() (llepe.LLEPE method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="modules/reeps.html#reeps.REEPS.update_xml">update_xml() (reeps.REEPS method)</a>
<li><a href="modules/reeps.html#llepe.LLEPE.update_xml">update_xml() (llepe.LLEPE method)</a>
</li>
</ul></td>
</tr></table>

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Installation &mdash; reeps 1.0.0 documentation</title>
<title>Installation &mdash; LLEPE 1.0.0 documentation</title>
@ -36,7 +36,7 @@
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Getting Started" href="quickstart.html" />
<link rel="prev" title="Welcome to reeps&#39;s docs! - the Rare earth element parameter searcher" href="../index.html" />
<link rel="prev" title="Welcome to llepe&#39;s docs! - the Liquid-Liquid Extraction Parameter Estimator" href="../index.html" />
</head>
<body class="wy-body-for-nav">
@ -50,7 +50,7 @@
<a href="../index.html" class="icon icon-home"> reeps
<a href="../index.html" class="icon icon-home"> LLEPE
@ -97,7 +97,7 @@
</ul>
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../modules/reeps.html">REEPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/reeps.html">LLEPE</a></li>
</ul>
@ -112,7 +112,7 @@
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">reeps</a>
<a href="../index.html">LLEPE</a>
</nav>
@ -204,7 +204,7 @@ pip install -e .<span class="o">[</span>docs,tests<span class="o">]</span>
<a href="quickstart.html" class="btn btn-neutral float-right" title="Getting Started" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="../index.html" class="btn btn-neutral float-left" title="Welcome to reeps&#39;s docs! - the Rare earth element parameter searcher" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
<a href="../index.html" class="btn btn-neutral float-left" title="Welcome to llepe&#39;s docs! - the Liquid-Liquid Extraction Parameter Estimator" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Getting Started &mdash; reeps 1.0.0 documentation</title>
<title>Getting Started &mdash; LLEPE 1.0.0 documentation</title>
@ -35,7 +35,7 @@
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="REEPS" href="../modules/reeps.html" />
<link rel="next" title="LLEPE" href="../modules/reeps.html" />
<link rel="prev" title="Installation" href="install.html" />
</head>
@ -50,7 +50,7 @@
<a href="../index.html" class="icon icon-home"> reeps
<a href="../index.html" class="icon icon-home"> LLEPE
@ -90,7 +90,7 @@
</ul>
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../modules/reeps.html">REEPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../modules/reeps.html">LLEPE</a></li>
</ul>
@ -105,7 +105,7 @@
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">reeps</a>
<a href="../index.html">LLEPE</a>
</nav>
@ -193,7 +193,7 @@ aqueous phase.</p>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../modules/reeps.html" class="btn btn-neutral float-right" title="REEPS" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="../modules/reeps.html" class="btn btn-neutral float-right" title="LLEPE" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="install.html" class="btn btn-neutral float-left" title="Installation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to reeps&#39;s docs! - the Rare earth element parameter searcher &mdash; reeps 1.0.0 documentation</title>
<title>Welcome to llepe&#39;s docs! - the Liquid-Liquid Extraction Parameter Estimator &mdash; LLEPE 1.0.0 documentation</title>
@ -49,7 +49,7 @@
<a href="#" class="icon icon-home"> reeps
<a href="#" class="icon icon-home"> LLEPE
@ -89,7 +89,7 @@
</ul>
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">REEPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">LLEPE</a></li>
</ul>
@ -104,7 +104,7 @@
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="#">reeps</a>
<a href="#">LLEPE</a>
</nav>
@ -135,7 +135,7 @@
<li><a href="#">Docs</a> &raquo;</li>
<li>Welcome to reeps's docs! - the Rare earth element parameter searcher</li>
<li>Welcome to llepe's docs! - the Liquid-Liquid Extraction Parameter Estimator</li>
<li class="wy-breadcrumbs-aside">
@ -154,11 +154,10 @@
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="welcome-to-reeps-s-docs-the-rare-earth-element-parameter-searcher">
<h1>Welcome to reeps's docs! - the Rare earth element parameter searcher<a class="headerlink" href="#welcome-to-reeps-s-docs-the-rare-earth-element-parameter-searcher" title="Permalink to this headline"></a></h1>
<p>REEPS is a package for thermodynamic parameter estimation specifically
for rare earth element extraction modeling.</p>
<p>REEPS takes experimental data in a csv and system data in a xml.</p>
<div class="section" id="welcome-to-llepe-s-docs-the-liquid-liquid-extraction-parameter-estimator">
<h1>Welcome to llepe's docs! - the Liquid-Liquid Extraction Parameter Estimator<a class="headerlink" href="#welcome-to-llepe-s-docs-the-liquid-liquid-extraction-parameter-estimator" title="Permalink to this headline"></a></h1>
<p>LLEPE is a package for thermodynamic parameter estimation for liquid-liquid extraction modeling</p>
<p>LLEPE takes experimental data in a csv and system data in a xml.</p>
<p>The package then uses Cantera, another python package, to simulate equilibrium.</p>
<p>Error between predicted and experimental data is then minimized.</p>
<div class="toctree-wrapper compound">
@ -178,7 +177,7 @@ for rare earth element extraction modeling.</p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">REEPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">LLEPE</a></li>
</ul>
</div>
</div>

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>REEPS &mdash; reeps 1.0.0 documentation</title>
<title>LLEPE &mdash; LLEPE 1.0.0 documentation</title>
@ -49,7 +49,7 @@
<a href="../index.html" class="icon icon-home"> reeps
<a href="../index.html" class="icon icon-home"> LLEPE
@ -89,7 +89,7 @@
</ul>
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">REEPS</a><ul>
<li class="toctree-l1 current"><a class="current reference internal" href="#">LLEPE</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#parameters">Parameters</a></li>
</ul>
</li>
@ -107,7 +107,7 @@
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">reeps</a>
<a href="../index.html">LLEPE</a>
</nav>
@ -138,7 +138,7 @@
<li><a href="../index.html">Docs</a> &raquo;</li>
<li>REEPS</li>
<li>LLEPE</li>
<li class="wy-breadcrumbs-aside">
@ -157,21 +157,20 @@
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<span class="target" id="module-reeps"><span id="reeps"></span></span><div class="section" id="id1">
<h1>REEPS<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h1>
<span class="target" id="module-llepe"><span id="reeps"></span></span><div class="section" id="llepe">
<h1>LLEPE<a class="headerlink" href="#llepe" title="Permalink to this headline"></a></h1>
<div class="section" id="parameters">
<h2>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline"></a></h2>
<dl class="py class">
<dt id="reeps.REEPS">
<em class="property">class </em><code class="sig-prename descclassname">reeps.</code><code class="sig-name descname">REEPS</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">exp_csv_filename</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">rare_earth_ion_names</span></em>, <em class="sig-param"><span class="n">re_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><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS" title="Permalink to this definition"></a></dt>
<dd><p>Rare earth elements (REE or RE) Takes in experimental data
Returns parameters for GEM</p>
<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>
<dd><p>Liquid-Liquid Extraction Parameter estimator</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The order in which the REEs appear in the csv file must be the same
order as they appear in the xml, complex_names and
rare_earth_ion_names.</p>
<p>For example, say in exp_csv_filename's csv, RE_1 is Nd RE_2 is Pr,
<p>The order in which the extracted species (ES) appear in the csv file
must be the same order as they appear in the xml, complex_names and
extracted_species_ion_names.</p>
<p>For example, say in exp_csv_filename's csv, ES_1 is Nd ES_2 is Pr,
and</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">aq_solvent_name</span> <span class="o">=</span> <span class="s1">&#39;H2O(L)&#39;</span>
<span class="n">extractant_name</span> <span class="o">=</span> <span class="s1">&#39;(HA)2(org)&#39;</span>
@ -187,22 +186,24 @@ Pr_aq_i, Pr_aq_eq, Pr_d_eq]</p>
<p>The organic speciesArray must be
&quot;(HA)2(org) dodecane Nd(H(A)2)3(org) Pr(H(A)2)3(org)&quot;</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">complex_names</span> <span class="o">=</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;Pr(H(A)2)3(org)&#39;</span><span class="p">]</span>
<span class="n">rare_earth_ion_names</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Nd+++&#39;</span><span class="p">,</span> <span class="s1">&#39;Pr+++&#39;</span><span class="p">]</span>
<span class="n">extracted_species_ion_names</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;Nd+++&#39;</span><span class="p">,</span> <span class="s1">&#39;Pr+++&#39;</span><span class="p">]</span>
</pre></div>
</div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>exp_csv_filename</strong> -- <p>(str) csv file name with experimental data</p>
<li><p><strong>exp_data</strong> -- <p>(str or pd.DataFrame) csv file name
or DataFrame with experimental data</p>
<p>In the .csv file, the rows are different experiments and
columns are the measured quantities.</p>
<p>The ordering of the columns needs to be:</p>
<p>[h_i, h_eq, z_i, z_eq, {RE_1}_aq_i, {RE_1}_aq_eq, {RE_1}_d_eq,
{RE_2}_aq_i, {RE_2}_aq_eq, {RE_2}_d_eq,...
{RE_N}_aq_i, {RE_N}_aq_eq, {RE_N}_d_eq]</p>
<p>[h_i, h_eq, z_i, z_eq,
{ES_1}_aq_i, {ES_1}_aq_eq, {ES_1}_d_eq,
{ES_2}_aq_i, {ES_2}_aq_eq, {ES_2}_d_eq,...
{ES_N}_aq_i, {ES_N}_aq_eq, {ES_N}_d_eq]</p>
<p>Naming does not matter, just the order.</p>
<p>Where {RE_1}-{RE_N} are the rare earth element names of interest
<p>Where {ES_1}-{ES_N} are the extracted species names of interest
i.e. Nd, Pr, La, etc.</p>
<p>Below is an explanation of the columns.</p>
<table class="docutils align-default">
@ -239,18 +240,18 @@ extractant (mol/L)</p></td>
extractant (mol/L)</p></td>
</tr>
<tr class="row-even"><td><p>4</p></td>
<td><p>{RE}_aq_i</p></td>
<td><p>Initial concentration of RE ions (mol/L)</p></td>
<td><p>{ES}_aq_i</p></td>
<td><p>Initial concentration of ES ions (mol/L)</p></td>
</tr>
<tr class="row-odd"><td><p>5</p></td>
<td><p>{RE}_aq_eq</p></td>
<td><p>Equilibrium concentration of RE ions
<td><p>{ES}_aq_eq</p></td>
<td><p>Equilibrium concentration of ES ions
in aqueous phase (mol/L)</p></td>
</tr>
<tr class="row-even"><td><p>6</p></td>
<td><p>{RE}_d_eq</p></td>
<td><p>{ES}_d_eq</p></td>
<td><p>Equilibrium Ratio between amount of
RE atoms in organic to aqueous</p></td>
ES atoms in organic to aqueous</p></td>
</tr>
</tbody>
</table>
@ -260,10 +261,10 @@ for equilibrium calc</p>
<p>Would recommend copying and modifying xmls located in data/xmls
or in Cantera's &quot;data&quot; folder</p>
<p>speciesArray fields need specific ordering.</p>
<p>In aqueous phase: aq_solvent_name, H+, OH-, Cl-, RE_1, RE_2, ..., RE_N</p>
<p>For aqueous phase, RE_1-RE_N represent RE ion names i.e. Nd+++, Pr+++</p>
<p>In organic phase : extractant_name, diluant_name, RE_1, RE_2, ..., RE_N</p>
<p>For organic phase, RE_1-RE_N represent RE complex names
<p>In aqueous phase: aq_solvent_name, H+, OH-, Cl-, ES_1, ES_2, ..., ES_N</p>
<p>(ES_1-ES_N) represent ES ion names i.e. Nd+++, Pr+++</p>
<p>In organic phase : extractant_name, diluant_name, ES_1, ES_2, ..., ES_N</p>
<p>(ES_1-ES_N) represent ES complex names
i.e. Nd(H(A)2)3(org), Pr(H(A)2)3(org)</p>
</p></li>
<li><p><strong>phase_names</strong> -- <p>(list) names of phases in xml file</p>
@ -272,18 +273,14 @@ i.e. Nd(H(A)2)3(org), Pr(H(A)2)3(org)</p>
<li><p><strong>aq_solvent_name</strong> -- (str) name of aqueous solvent in xml file</p></li>
<li><p><strong>extractant_name</strong> -- (str) name of extractant in xml file</p></li>
<li><p><strong>diluant_name</strong> -- (str) name of diluant in xml file</p></li>
<li><p><strong>complex_names</strong> -- <p>(list) names of complexes in xml file.</p>
<p>Ensure the ordering is correct</p>
</p></li>
<li><p><strong>rare_earth_ion_names</strong> -- <p>(list) names of rare earth ions in xml file</p>
<p>Ensure the ordering is correct</p>
</p></li>
<li><p><strong>re_species_list</strong> -- <p>(list) names of rare earth elements.</p>
<li><p><strong>complex_names</strong> -- (list) names of complexes in xml file.</p></li>
<li><p><strong>extracted_species_ion_names</strong> -- (list) names of extracted species ions
in xml file</p></li>
<li><p><strong>extracted_species_list</strong> -- <p>(list) names of extracted species elements.</p>
<dl class="simple">
<dt>If <code class="docutils literal notranslate"><span class="pre">None</span></code>, re_species_list will be rare_earth_ion_names without '+'</dt><dd><p>i.e. 'Nd+++'-&gt;'Nd'</p>
<dt>If <code class="docutils literal notranslate"><span class="pre">None</span></code>, extracted_species_list will be extracted_species_ion_names</dt><dd><p>without '+' i.e. 'Nd+++'-&gt;'Nd'</p>
</dd>
</dl>
<p>Ensure the ordering is correct</p>
</p></li>
<li><p><strong>aq_solvent_rho</strong> -- <p>(float) density of solvent (g/L)</p>
<p>If <code class="docutils literal notranslate"><span class="pre">None</span></code>, molar volume/molecular weight is used from xml</p>
@ -296,26 +293,26 @@ i.e. Nd(H(A)2)3(org), Pr(H(A)2)3(org)</p>
</p></li>
<li><p><strong>opt_dict</strong> -- <p>(dict) dictionary containing info about which
species parameters are updated to fit model to experimental data</p>
<p>Should have the format as below</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">opt_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;species1&quot;</span><span class="p">:</span>
<span class="p">{</span><span class="s2">&quot;parameter1&quot;</span><span class="p">:</span> <span class="s2">&quot;guess1&quot;</span><span class="p">,</span>
<span class="s2">&quot;parameter2&quot;</span><span class="p">:</span> <span class="s2">&quot;guess2&quot;</span><span class="p">,</span>
<span class="o">...</span>
<span class="s2">&quot;parameterN&quot;</span><span class="p">:</span> <span class="s2">&quot;guessN&quot;</span><span class="p">}</span>
<span class="s2">&quot;species2&quot;</span><span class="p">:</span>
<span class="p">{</span><span class="s2">&quot;parameter1&quot;</span><span class="p">:</span> <span class="s2">&quot;guess1&quot;</span><span class="p">,</span>
<span class="s2">&quot;parameter2&quot;</span><span class="p">:</span> <span class="s2">&quot;guess2&quot;</span><span class="p">,</span>
<p>Should have the format as below. Dictionary keys under user defined
parameter name must be named as shown below ('upper_element_name',
'upper_attrib_name', etc.). 'attrib_name's and 'attrib_value's can
be None. {} denotes areas for user to fill in.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">opt_dict</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;</span><span class="si">{user_defined_name_for_parameter_1}</span><span class="s2">&quot;</span><span class="p">:</span>
<span class="p">{</span><span class="s1">&#39;upper_element_name&#39;</span><span class="p">:</span> <span class="p">{</span><span class="n">param_upper_element</span><span class="p">},</span>
<span class="s1">&#39;upper_attrib_name&#39;</span><span class="p">:</span> <span class="p">{</span><span class="n">param_upper_attrib_name</span><span class="p">},</span>
<span class="s1">&#39;upper_attrib_value&#39;</span><span class="p">:</span> <span class="p">{</span><span class="n">param_upper_attrib_value</span><span class="p">},</span>
<span class="s1">&#39;lower_element_name&#39;</span><span class="p">:</span> <span class="p">{</span><span class="n">param_lower_element</span><span class="p">},</span>
<span class="s1">&#39;lower_attrib_name&#39;</span><span class="p">:</span> <span class="p">{</span><span class="n">param_lower_attrib_name</span><span class="p">},</span>
<span class="s1">&#39;lower_attrib_value&#39;</span><span class="p">:</span> <span class="p">{</span><span class="n">param_lower_attrib_value</span><span class="p">},</span>
<span class="s1">&#39;input_format&#39;</span><span class="p">:</span> <span class="p">{</span><span class="nb">str</span> <span class="nb">format</span> <span class="n">to</span> <span class="nb">input</span> <span class="n">input_value</span><span class="p">}</span>
<span class="s1">&#39;input_value&#39;</span><span class="p">:</span> <span class="p">{</span><span class="n">guess_value</span><span class="p">}},</span>
<span class="s2">&quot;</span><span class="si">{user_defined_name_for_parameter_2}</span><span class="s2">&quot;</span><span class="p">:</span>
<span class="o">...</span>
<span class="s2">&quot;parameterN&quot;</span><span class="p">:</span> <span class="s2">&quot;guessN&quot;</span><span class="p">}</span>
<span class="o">...</span>
<span class="s2">&quot;speciesN&quot;</span><span class="p">:</span>
<span class="p">{</span><span class="s2">&quot;parameter1&quot;</span><span class="p">:</span> <span class="s2">&quot;guess1&quot;</span><span class="p">,</span>
<span class="s2">&quot;parameter2&quot;</span><span class="p">:</span> <span class="s2">&quot;guess2&quot;</span><span class="p">,</span>
<span class="o">...</span>
<span class="s2">&quot;parameterN&quot;</span><span class="p">:</span> <span class="s2">&quot;guessN&quot;</span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>See example files for more examples.</p>
</p></li>
<li><p><strong>objective_function</strong> -- <p>(function or str) function to compute objective</p>
<p>By default, the objective function is log mean squared error
@ -347,18 +344,18 @@ of distribution ratio</p>
<tr class="row-odd"><td><p>extractant conc in org</p></td>
<td><p>predicted_dict['z_eq']</p></td>
</tr>
<tr class="row-even"><td><p>RE ion eq conc in aq</p></td>
<td><p>predicted_dict['{RE}_aq_eq']</p></td>
<tr class="row-even"><td><p>ES ion eq conc in aq</p></td>
<td><p>predicted_dict['{ES}_aq_eq']</p></td>
</tr>
<tr class="row-odd"><td><p>RE complex eq conc in org</p></td>
<td><p>predicted_dict['{RE}_org_eq']</p></td>
<tr class="row-odd"><td><p>ES complex eq conc in org</p></td>
<td><p>predicted_dict['{ES}_org_eq']</p></td>
</tr>
<tr class="row-even"><td><p>RE distribution ratio</p></td>
<td><p>predicted_dict['{RE}_d_eq']</p></td>
<tr class="row-even"><td><p>ES distribution ratio</p></td>
<td><p>predicted_dict['{ES}_d_eq']</p></td>
</tr>
</tbody>
</table>
<p>Replace &quot;{RE}&quot; with rare earth element i.e. Nd, La, etc.</p>
<p>Replace &quot;{ES}&quot; with extracted species element i.e. Nd, La, etc.</p>
<p>For measured values, use the same names, but
replace <code class="docutils literal notranslate"><span class="pre">predicted_dict</span></code> with <code class="docutils literal notranslate"><span class="pre">measured_df</span></code></p>
</p></li>
@ -377,10 +374,6 @@ divide the bounds by the guess and get</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="s2">&quot;bounds&quot;</span><span class="p">:</span> <span class="p">[(</span><span class="mf">1e-1</span><span class="p">,</span> <span class="mf">1e1</span><span class="p">)]</span>
</pre></div>
</div>
<p>Though fit() returns a structure identical to opt_dict with correct
scaled values, in case bounds and constraints are used, you must
note the optimized x's are first multiplied by the initial guess
before written to the xml.</p>
</div>
<p>By default, the optimizer is scipy's optimize function with</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">default_kwargs</span><span class="o">=</span> <span class="p">{</span><span class="s2">&quot;method&quot;</span><span class="p">:</span> <span class="s1">&#39;SLSQP&#39;</span><span class="p">,</span>
@ -394,7 +387,10 @@ before written to the xml.</p>
<p>Function needs to take inputs:
<code class="docutils literal notranslate"><span class="pre">optimizer(objective_function,</span> <span class="pre">x_guess,</span> <span class="pre">kwargs)</span></code></p>
<p><code class="docutils literal notranslate"><span class="pre">kwargs</span></code> is optional</p>
<p>Function needs to return: (np.ndarray) Optimized parameters</p>
<dl class="simple">
<dt>Function needs to return: ((np.ndarray, float)) Optimized parameters,</dt><dd><p>objective_function value</p>
</dd>
</dl>
</p></li>
<li><p><strong>temp_xml_file_path</strong> -- <p>(str) path to temporary xml file.</p>
<p>This xml file is a duplicate of the phases_xml_file name and is
@ -402,33 +398,47 @@ modified during the optimization process to avoid changing the original
xml file</p>
<p>default is local temp folder</p>
</p></li>
<li><p><strong>dependant_params_dict</strong> -- <p>(dict) dictionary containing information
about parameters dependant on opt_dict. Has a similar structure to
opt_dict except instead of input values, it has 3 other fields:
'function', 'kwargs', and 'independent_params.</p>
<p>'function' is a function of the form
<code class="docutils literal notranslate"><span class="pre">function(independent_param__value_list,</span> <span class="pre">**kwargs)</span></code>
'kwargs' are the extra arguments to pass to function
'independent_params' is a list of parameter names in opt_dict that the
dependent_param is a function of.</p>
<p>See example code for usage.</p>
</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt id="reeps.REEPS.fit">
<code class="sig-name descname">fit</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">objective_function</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">optimizer</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">objective_kwargs</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">optimizer_kwargs</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span> &#x2192; dict<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.fit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.fit" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.fit">
<code class="sig-name descname">fit</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">objective_function</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">optimizer</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">objective_kwargs</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">optimizer_kwargs</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span> &#x2192; tuple<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.fit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.fit" title="Permalink to this definition"></a></dt>
<dd><p>Fits experimental to modeled data by minimizing objective function
with optimizer. Returns dictionary with opt_dict structure</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>objective_function</strong> -- (function) function to compute objective</p></li>
<li><p><strong>optimizer</strong> -- (function) function to perform optimization</p></li>
<li><p><strong>optimizer_kwargs</strong> -- (dict) arguments for optimizer</p></li>
<li><p><strong>objective_kwargs</strong> -- (dict) arguments for objective function</p></li>
<li><p><strong>objective_function</strong> -- (function) function to compute objective
If 'None', last set objective or default function is used</p></li>
<li><p><strong>optimizer</strong> -- (function) function to perform optimization
If 'None', last set optimizer or default is used</p></li>
<li><p><strong>optimizer_kwargs</strong> -- (dict) optional arguments for optimizer</p></li>
<li><p><strong>objective_kwargs</strong> -- (dict) optional arguments
for objective function</p></li>
</ul>
</dd>
<dt class="field-even">Returns opt_dict</dt>
<dd class="field-even"><p>(dict) optimized opt_dict. Has identical structure
as opt_dict</p>
<dt class="field-even">Returns tuple</dt>
<dd class="field-even"><p>(opt_dict (dict), opt_value (float))
optimized opt_dict: Has identical structure as opt_dict</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_aq_solvent_name">
<code class="sig-name descname">get_aq_solvent_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_aq_solvent_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_aq_solvent_name" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_aq_solvent_name">
<code class="sig-name descname">get_aq_solvent_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_aq_solvent_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_aq_solvent_name" title="Permalink to this definition"></a></dt>
<dd><p>Returns aq_solvent_name</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -438,8 +448,8 @@ as opt_dict</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_aq_solvent_rho">
<code class="sig-name descname">get_aq_solvent_rho</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_aq_solvent_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_aq_solvent_rho" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_aq_solvent_rho">
<code class="sig-name descname">get_aq_solvent_rho</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_aq_solvent_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_aq_solvent_rho" title="Permalink to this definition"></a></dt>
<dd><p>Returns aqueous solvent density (g/L)</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -449,8 +459,8 @@ as opt_dict</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_complex_names">
<code class="sig-name descname">get_complex_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; list<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_complex_names"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_complex_names" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_complex_names">
<code class="sig-name descname">get_complex_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; list<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_complex_names"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_complex_names" title="Permalink to this definition"></a></dt>
<dd><p>Returns list of complex names</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -460,15 +470,25 @@ as opt_dict</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_diluant_name">
<code class="sig-name descname">get_diluant_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_diluant_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_diluant_name" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_dependant_params_dict">
<code class="sig-name descname">get_dependant_params_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_dependant_params_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_dependant_params_dict" title="Permalink to this definition"></a></dt>
<dd><p>Returns the dependant_params_dict
:return: dependant_params_dict: (dict) dictionary containing</p>
<blockquote>
<div><p>information about parameters dependant on opt_dict</p>
</div></blockquote>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.get_diluant_name">
<code class="sig-name descname">get_diluant_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_diluant_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_diluant_name" title="Permalink to this definition"></a></dt>
<dd><p>Returns diluant name
:return: diluant_name: (str) name of diluant in xml file</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_diluant_rho">
<code class="sig-name descname">get_diluant_rho</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_diluant_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_diluant_rho" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_diluant_rho">
<code class="sig-name descname">get_diluant_rho</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_diluant_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_diluant_rho" title="Permalink to this definition"></a></dt>
<dd><p>Returns diluant density (g/L)</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -478,8 +498,8 @@ as opt_dict</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_exp_df">
<code class="sig-name descname">get_exp_df</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; pandas.core.frame.DataFrame<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_exp_df"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_exp_df" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_exp_df">
<code class="sig-name descname">get_exp_df</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; pandas.core.frame.DataFrame<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_exp_df"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_exp_df" title="Permalink to this definition"></a></dt>
<dd><p>Returns the experimental DataFrame</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -489,8 +509,8 @@ as opt_dict</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_extractant_name">
<code class="sig-name descname">get_extractant_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_extractant_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_extractant_name" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_extractant_name">
<code class="sig-name descname">get_extractant_name</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_extractant_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_extractant_name" title="Permalink to this definition"></a></dt>
<dd><p>Returns extractant name</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -500,8 +520,8 @@ as opt_dict</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_extractant_rho">
<code class="sig-name descname">get_extractant_rho</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_extractant_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_extractant_rho" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_extractant_rho">
<code class="sig-name descname">get_extractant_rho</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; str<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_extractant_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_extractant_rho" title="Permalink to this definition"></a></dt>
<dd><p>Returns extractant density (g/L)</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -511,8 +531,32 @@ as opt_dict</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_in_moles">
<code class="sig-name descname">get_in_moles</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; pandas.core.frame.DataFrame<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_in_moles"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_in_moles" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_extracted_species_ion_names">
<code class="sig-name descname">get_extracted_species_ion_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; list<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_extracted_species_ion_names"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_extracted_species_ion_names" title="Permalink to this definition"></a></dt>
<dd><p>Returns list of extracted species ion names</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>extracted_species_ion_names: (list) names of
extracted species ions in xml file</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.get_extracted_species_list">
<code class="sig-name descname">get_extracted_species_list</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; list<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_extracted_species_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_extracted_species_list" title="Permalink to this definition"></a></dt>
<dd><p>Returns list of extracted species names</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>extracted_species_list: (list) names of extracted species in
xml file</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.get_in_moles">
<code class="sig-name descname">get_in_moles</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; pandas.core.frame.DataFrame<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_in_moles"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_in_moles" title="Permalink to this definition"></a></dt>
<dd><p>Returns the in_moles DataFrame which contains the initial mole
fractions of each species for each experiment</p>
<dl class="field-list simple">
@ -523,8 +567,8 @@ fractions of each species for each experiment</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_objective_function">
<code class="sig-name descname">get_objective_function</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_objective_function"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_objective_function" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_objective_function">
<code class="sig-name descname">get_objective_function</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_objective_function"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_objective_function" title="Permalink to this definition"></a></dt>
<dd><p>Returns objective function</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -535,8 +579,8 @@ error between model and experimental data</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_opt_dict">
<code class="sig-name descname">get_opt_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; dict<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_opt_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_opt_dict" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_opt_dict">
<code class="sig-name descname">get_opt_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; dict<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_opt_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_opt_dict" title="Permalink to this definition"></a></dt>
<dd><p>Returns the dictionary containing optimization information</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -547,8 +591,8 @@ species parameters are updated to fit model to experimental data</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_optimizer">
<code class="sig-name descname">get_optimizer</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_optimizer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_optimizer" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_optimizer">
<code class="sig-name descname">get_optimizer</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_optimizer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_optimizer" title="Permalink to this definition"></a></dt>
<dd><p>Returns objective function</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -559,8 +603,8 @@ function</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_phases">
<code class="sig-name descname">get_phases</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; list<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_phases"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_phases" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_phases">
<code class="sig-name descname">get_phases</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; list<a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_phases"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_phases" title="Permalink to this definition"></a></dt>
<dd><p>Returns the list of Cantera solutions</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
@ -570,8 +614,8 @@ function</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_predicted_dict">
<code class="sig-name descname">get_predicted_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_predicted_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_predicted_dict" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_predicted_dict">
<code class="sig-name descname">get_predicted_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_predicted_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_predicted_dict" title="Permalink to this definition"></a></dt>
<dd><p>Returns predicted dictionary of species concentrations
that xml parameters predicts given current in_moles</p>
<dl class="field-list simple">
@ -582,32 +626,8 @@ that xml parameters predicts given current in_moles</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_rare_earth_ion_names">
<code class="sig-name descname">get_rare_earth_ion_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; list<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_rare_earth_ion_names"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_rare_earth_ion_names" title="Permalink to this definition"></a></dt>
<dd><p>Returns list of rare earth ion names</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>rare_earth_ion_names: (list) names of rare earth ions in
xml file</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_re_species_list">
<code class="sig-name descname">get_re_species_list</code><span class="sig-paren">(</span><span class="sig-paren">)</span> &#x2192; list<a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_re_species_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_re_species_list" title="Permalink to this definition"></a></dt>
<dd><p>Returns list of rare earth element names</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>re_species_list: (list) names of rare earth elements in
xml file</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.get_temp_xml_file_path">
<code class="sig-name descname">get_temp_xml_file_path</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.get_temp_xml_file_path"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.get_temp_xml_file_path" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.get_temp_xml_file_path">
<code class="sig-name descname">get_temp_xml_file_path</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.get_temp_xml_file_path"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.get_temp_xml_file_path" title="Permalink to this definition"></a></dt>
<dd><p>Returns path to temporary xml file.</p>
<p>This xml file is a duplicate of the phases_xml_file name and is
modified during the optimization process to avoid changing the original
@ -620,9 +640,9 @@ xml file.</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.log_mean_squared_error">
<code class="sig-name descname">log_mean_squared_error</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">predicted_dict</span></em>, <em class="sig-param"><span class="n">meas_df</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.log_mean_squared_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.log_mean_squared_error" title="Permalink to this definition"></a></dt>
<dd><p>Default objective function for REEPS</p>
<dt id="llepe.LLEPE.log_mean_squared_error">
<code class="sig-name descname">log_mean_squared_error</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">predicted_dict</span></em>, <em class="sig-param"><span class="n">meas_df</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.log_mean_squared_error"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.log_mean_squared_error" title="Permalink to this definition"></a></dt>
<dd><p>Default objective function for LLEPE</p>
<p>Returns the log mean squared error of
predicted distribution ratios (d=n_org/n_aq)
to measured d.</p>
@ -641,41 +661,110 @@ to measured d.</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.parity_plot">
<code class="sig-name descname">parity_plot</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">compared_value</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">save_path</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">print_r_squared</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.parity_plot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.parity_plot" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.parity_plot">
<code class="sig-name descname">parity_plot</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">compared_value</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">c_data</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">c_label</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">plot_title</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">save_path</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">print_r_squared</span><span class="o">=</span><span class="default_value">False</span></em>, <em class="sig-param"><span class="n">data_labels</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">legend</span><span class="o">=</span><span class="default_value">True</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.parity_plot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.parity_plot" title="Permalink to this definition"></a></dt>
<dd><p>Parity plot between measured and predicted compared_value.
Default compared value is {RE_1}_aq_eq</p>
Default compared value is {ES_1}_aq_eq</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>compared_value</strong> -- (str) Quantity to compare predicted and
experimental data. Can be any column containing &quot;eq&quot; in exp_df i.e.
h_eq, z_eq, {RE}_d_eq, etc.</p></li>
h_eq, z_eq, {ES}_d_eq, etc.</p></li>
<li><p><strong>plot_title</strong> -- <p>(str or boolean)</p>
<dl class="simple">
<dt>If None (default): Plot title will be generated from compared_value</dt><dd><p>Recommend to just explore. If h_eq, plot_title is
&quot;H^+ eq conc&quot;.</p>
</dd>
</dl>
<p>If str: Plot title will be plot_title string</p>
<p>If &quot;False&quot;: No plot title</p>
</p></li>
<li><p><strong>c_data</strong> -- (list or np.ndarray) data for color axis</p></li>
<li><p><strong>c_label</strong> -- (str) label for color axis</p></li>
<li><p><strong>save_path</strong> -- (str) save path for parity plot</p></li>
<li><p><strong>print_r_squared</strong> -- (boolean) To plot or not to plot r-squared
value. Prints 2 places past decimal</p></li>
<li><p><strong>data_labels</strong> -- labels for the data such as paper's name where
experiment is pulled from.</p></li>
<li><p><strong>legend</strong> -- whether to display legend for data_labels. Has no
effect if data_labels is None</p></li>
</ul>
</dd>
<dt class="field-even">Return fig, ax</dt>
<dd class="field-even"><p>returns the figure and axes objects</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.plot_3d_data">
<em class="property">static </em><code class="sig-name descname">plot_3d_data</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">x_data</span></em>, <em class="sig-param"><span class="n">y_data</span></em>, <em class="sig-param"><span class="n">z_data</span></em>, <em class="sig-param"><span class="n">c_data</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">x_label</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">y_label</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">z_label</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">c_label</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.plot_3d_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.plot_3d_data" title="Permalink to this definition"></a></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>x_data</strong> -- (list) list of data for x axis</p></li>
<li><p><strong>y_data</strong> -- (list) list of data for y axis</p></li>
<li><p><strong>z_data</strong> -- (list) list of data for z axis</p></li>
<li><p><strong>c_data</strong> -- (list) list of data for color axis</p></li>
<li><p><strong>x_label</strong> -- (str) label for x axis</p></li>
<li><p><strong>y_label</strong> -- (str) label for y axis</p></li>
<li><p><strong>z_label</strong> -- (str) label for z axis</p></li>
<li><p><strong>c_label</strong> -- (str) label for color axis</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p></p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.r_squared">
<code class="sig-name descname">r_squared</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">compared_value</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.r_squared"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.r_squared" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.r_squared">
<code class="sig-name descname">r_squared</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">compared_value</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.r_squared"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.r_squared" title="Permalink to this definition"></a></dt>
<dd><p>r-squared value comparing measured and predicted compared value</p>
<p>Closer to 1, the better the model's predictions.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>compared_value</strong> -- (str) Quantity to compare predicted and
experimental data. Can be any column containing &quot;eq&quot; in exp_df i.e.
h_eq, z_eq, {RE}_d_eq, etc.</p>
h_eq, z_eq, {ES}_d_eq, etc. default is {ES}_aq_eq</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.scipy_minimize">
<em class="property">static </em><code class="sig-name descname">scipy_minimize</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">objective</span></em>, <em class="sig-param"><span class="n">x_guess</span></em>, <em class="sig-param"><span class="n">optimizer_kwargs</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.scipy_minimize"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.scipy_minimize" title="Permalink to this definition"></a></dt>
<dd><p>The default optimizer for LLEPE</p>
<p>Uses scipy.minimize</p>
<p>By default, options are</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">default_kwargs</span><span class="o">=</span> <span class="p">{</span><span class="s2">&quot;method&quot;</span><span class="p">:</span> <span class="s1">&#39;SLSQP&#39;</span><span class="p">,</span>
<span class="s2">&quot;bounds&quot;</span><span class="p">:</span> <span class="p">[(</span><span class="mf">1e-1</span><span class="p">,</span> <span class="mf">1e1</span><span class="p">)]</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">x_guess</span><span class="p">),</span>
<span class="s2">&quot;constraints&quot;</span><span class="p">:</span> <span class="p">(),</span>
<span class="s2">&quot;options&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;disp&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
<span class="s1">&#39;maxiter&#39;</span><span class="p">:</span> <span class="mi">1000</span><span class="p">,</span>
<span class="s1">&#39;ftol&#39;</span><span class="p">:</span> <span class="mf">1e-6</span><span class="p">}}</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>objective</strong> -- (func) the objective function</p></li>
<li><p><strong>x_guess</strong> -- (np.ndarray) the initial guess (always 1)</p></li>
<li><p><strong>optimizer_kwargs</strong> -- (dict) dictionary of options for minimize</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>((np.ndarray, float)) Optimized parameters,
objective_function value</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_aq_solvent_name">
<code class="sig-name descname">set_aq_solvent_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">aq_solvent_name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_aq_solvent_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_aq_solvent_name" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_aq_solvent_name">
<code class="sig-name descname">set_aq_solvent_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">aq_solvent_name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_aq_solvent_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_aq_solvent_name" title="Permalink to this definition"></a></dt>
<dd><p>Change aq_solvent_name to input aq_solvent_name</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@ -685,8 +774,8 @@ h_eq, z_eq, {RE}_d_eq, etc.</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_aq_solvent_rho">
<code class="sig-name descname">set_aq_solvent_rho</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">aq_solvent_rho</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_aq_solvent_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_aq_solvent_rho" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_aq_solvent_rho">
<code class="sig-name descname">set_aq_solvent_rho</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">aq_solvent_rho</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_aq_solvent_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_aq_solvent_rho" title="Permalink to this definition"></a></dt>
<dd><p>Changes aqueous solvent density (g/L) to input aq_solvent_rho</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@ -696,8 +785,8 @@ h_eq, z_eq, {RE}_d_eq, etc.</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_complex_names">
<code class="sig-name descname">set_complex_names</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">complex_names</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_complex_names"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_complex_names" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_complex_names">
<code class="sig-name descname">set_complex_names</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">complex_names</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_complex_names"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_complex_names" title="Permalink to this definition"></a></dt>
<dd><p>Change complex names list to input complex_names</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@ -707,8 +796,16 @@ h_eq, z_eq, {RE}_d_eq, etc.</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_diluant_name">
<code class="sig-name descname">set_diluant_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">diluant_name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_diluant_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_diluant_name" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_dependant_params_dict">
<code class="sig-name descname">set_dependant_params_dict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">dependant_params_dict</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_dependant_params_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_dependant_params_dict" title="Permalink to this definition"></a></dt>
<dd><p>Sets the dependant_params_dict
:param dependant_params_dict: (dict) dictionary containing information
about parameters dependant on opt_dict</p>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.set_diluant_name">
<code class="sig-name descname">set_diluant_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">diluant_name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_diluant_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_diluant_name" title="Permalink to this definition"></a></dt>
<dd><p>Change diluant_name to input diluant_name</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@ -718,8 +815,8 @@ h_eq, z_eq, {RE}_d_eq, etc.</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_diluant_rho">
<code class="sig-name descname">set_diluant_rho</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">diluant_rho</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_diluant_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_diluant_rho" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_diluant_rho">
<code class="sig-name descname">set_diluant_rho</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">diluant_rho</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_diluant_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_diluant_rho" title="Permalink to this definition"></a></dt>
<dd><p>Changes diluant density (g/L) to input diluant_rho</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@ -729,29 +826,30 @@ h_eq, z_eq, {RE}_d_eq, etc.</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_exp_df">
<code class="sig-name descname">set_exp_df</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">exp_csv_filename</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_exp_df"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_exp_df" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_exp_df">
<code class="sig-name descname">set_exp_df</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">exp_data</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_exp_df"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_exp_df" title="Permalink to this definition"></a></dt>
<dd><p>Changes the experimental DataFrame to input exp_csv_filename data
and renames columns to internal REEPS names</p>
<p>h_i, h_eq, z_i, z_eq, {RE}_aq_i, {RE}_aq_eq, {RE}_d</p>
and renames columns to internal LLEPE names</p>
<p>h_i, h_eq, z_i, z_eq, {ES}_aq_i, {ES}_aq_eq, {ES}_d</p>
<p>See class docstring on &quot;exp_csv_filename&quot; for further explanations.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>exp_csv_filename</strong> -- (str) file name/path for experimental data csv</p>
<dd class="field-odd"><p><strong>exp_data</strong> -- (str or pd.DataFrame)
file name/path or DataFrame for experimental data csv</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_extractant_name">
<code class="sig-name descname">set_extractant_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">extractant_name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_extractant_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_extractant_name" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_extractant_name">
<code class="sig-name descname">set_extractant_name</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">extractant_name</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_extractant_name"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_extractant_name" title="Permalink to this definition"></a></dt>
<dd><p>Change extractant_name to input extractant_name
:param extractant_name: (str) name of extractant in xml file</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_extractant_rho">
<code class="sig-name descname">set_extractant_rho</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">extractant_rho</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_extractant_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_extractant_rho" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_extractant_rho">
<code class="sig-name descname">set_extractant_rho</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">extractant_rho</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_extractant_rho"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_extractant_rho" title="Permalink to this definition"></a></dt>
<dd><p>Changes extractant density (g/L) to input extractant_rho</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@ -761,8 +859,38 @@ and renames columns to internal REEPS names</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_in_moles">
<code class="sig-name descname">set_in_moles</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">feed_vol</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_in_moles"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_in_moles" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_extracted_species_ion_names">
<code class="sig-name descname">set_extracted_species_ion_names</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">extracted_species_ion_names</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_extracted_species_ion_names"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_extracted_species_ion_names" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Change list of extracted species ion names to input</dt><dd><p>extracted_species_ion_names</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>extracted_species_ion_names</strong> -- (list) names of extracted species
ions in xml file</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.set_extracted_species_list">
<code class="sig-name descname">set_extracted_species_list</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">extracted_species_list</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_extracted_species_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_extracted_species_list" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Change list of extracted species ion names to input</dt><dd><p>extracted_species_ion_names</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>extracted_species_list</strong> -- (list) names of extracted species in
xml file</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="llepe.LLEPE.set_in_moles">
<code class="sig-name descname">set_in_moles</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">feed_vol</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_in_moles"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_in_moles" title="Permalink to this definition"></a></dt>
<dd><p>Function that initializes mole fractions to input feed_vol</p>
<p>This function is called at initialization</p>
<p>Sets in_moles to a pd.DataFrame containing initial mole fractions</p>
@ -770,14 +898,14 @@ and renames columns to internal REEPS names</p>
<p>This function also calls update_predicted_dict</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>feed_vol</strong> -- (float) feed volume of mixture (g/L)</p>
<dd class="field-odd"><p><strong>feed_vol</strong> -- (float) feed volume of mixture (L)</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_objective_function">
<code class="sig-name descname">set_objective_function</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">objective_function</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_objective_function"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_objective_function" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_objective_function">
<code class="sig-name descname">set_objective_function</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">objective_function</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_objective_function"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_objective_function" title="Permalink to this definition"></a></dt>
<dd><p>Change objective function to input objective_function.</p>
<blockquote>
<div><p>See class docstring on &quot;objective_function&quot; for instructions</p>
@ -791,8 +919,8 @@ error between model and experimental data</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_opt_dict">
<code class="sig-name descname">set_opt_dict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">opt_dict</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_opt_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_opt_dict" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_opt_dict">
<code class="sig-name descname">set_opt_dict</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">opt_dict</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_opt_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_opt_dict" title="Permalink to this definition"></a></dt>
<dd><p>Change the dictionary to input opt_dict.</p>
<p>opt_dict specifies species parameters to be updated to
fit model to data</p>
@ -806,8 +934,8 @@ species parameters are updated to fit model to experimental data</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_optimizer">
<code class="sig-name descname">set_optimizer</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">optimizer</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_optimizer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_optimizer" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_optimizer">
<code class="sig-name descname">set_optimizer</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">optimizer</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_optimizer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_optimizer" title="Permalink to this definition"></a></dt>
<dd><p>Change optimizer function to input optimizer.</p>
<blockquote>
<div><p>See class docstring on &quot;optimizer&quot; for instructions</p>
@ -821,11 +949,11 @@ function</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_phases">
<code class="sig-name descname">set_phases</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">phases_xml_filename</span></em>, <em class="sig-param"><span class="n">phase_names</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_phases"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_phases" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_phases">
<code class="sig-name descname">set_phases</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">phases_xml_filename</span></em>, <em class="sig-param"><span class="n">phase_names</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_phases"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_phases" title="Permalink to this definition"></a></dt>
<dd><p>Change list of Cantera solutions by inputting
new xml file name and phase names</p>
<p>Also runs set_in_moles to set initial molality to 1 g/L</p>
<p>Also runs set_in_moles to set feed volume to 1 L</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
@ -838,38 +966,8 @@ for equilibrium calc</p></li>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_rare_earth_ion_names">
<code class="sig-name descname">set_rare_earth_ion_names</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">rare_earth_ion_names</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_rare_earth_ion_names"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_rare_earth_ion_names" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Change list of rare earth ion names to input</dt><dd><p>rare_earth_ion_names</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>rare_earth_ion_names</strong> -- (list) names of rare earth ions in
xml file</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_re_species_list">
<code class="sig-name descname">set_re_species_list</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">re_species_list</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_re_species_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_re_species_list" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Change list of rare earth ion names to input</dt><dd><p>rare_earth_ion_names</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>re_species_list</strong> -- (list) names of rare earth elements in
xml file</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.set_temp_xml_file_path">
<code class="sig-name descname">set_temp_xml_file_path</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">temp_xml_file_path</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.set_temp_xml_file_path"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.set_temp_xml_file_path" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.set_temp_xml_file_path">
<code class="sig-name descname">set_temp_xml_file_path</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">temp_xml_file_path</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/llepe/llepe.html#LLEPE.set_temp_xml_file_path"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.set_temp_xml_file_path" title="Permalink to this definition"></a></dt>
<dd><p>Changes temporary xml file path to input temp_xml_file_path.</p>
<p>This xml file is a duplicate of the phases_xml_file name and is
modified during the optimization process to avoid changing the original
@ -882,34 +980,8 @@ xml file.</p>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.slsqp_optimizer">
<em class="property">static </em><code class="sig-name descname">slsqp_optimizer</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">objective</span></em>, <em class="sig-param"><span class="n">x_guess</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.slsqp_optimizer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.slsqp_optimizer" title="Permalink to this definition"></a></dt>
<dd><p>The default optimizer for REEPS</p>
<p>Uses scipy.minimize with options</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">default_kwargs</span><span class="o">=</span> <span class="p">{</span><span class="s2">&quot;method&quot;</span><span class="p">:</span> <span class="s1">&#39;SLSQP&#39;</span><span class="p">,</span>
<span class="s2">&quot;bounds&quot;</span><span class="p">:</span> <span class="p">[(</span><span class="mf">1e-1</span><span class="p">,</span> <span class="mf">1e1</span><span class="p">)</span><span class="o">*</span><span class="nb">len</span><span class="p">(</span><span class="n">x_guess</span><span class="p">)],</span>
<span class="s2">&quot;constraints&quot;</span><span class="p">:</span> <span class="p">(),</span>
<span class="s2">&quot;options&quot;</span><span class="p">:</span> <span class="p">{</span><span class="s1">&#39;disp&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
<span class="s1">&#39;maxiter&#39;</span><span class="p">:</span> <span class="mi">1000</span><span class="p">,</span>
<span class="s1">&#39;ftol&#39;</span><span class="p">:</span> <span class="mf">1e-6</span><span class="p">}}</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>objective</strong> -- (func) the objective function</p></li>
<li><p><strong>x_guess</strong> -- (np.ndarray) the initial guess (always 1)</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>(np.ndarray) Optimized parameters</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.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/reeps/reeps.html#REEPS.update_predicted_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.update_predicted_dict" title="Permalink to this definition"></a></dt>
<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>
<dd><p>Function that computes the predicted equilibrium concentrations
the fed phases_xml_filename parameters predicts given the initial
mole fractions set by in_moles()</p>
@ -927,8 +999,8 @@ If <code class="docutils literal notranslate"><span class="pre">None</span></cod
</dd></dl>
<dl class="py method">
<dt id="reeps.REEPS.update_xml">
<code class="sig-name descname">update_xml</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">info_dict</span></em>, <em class="sig-param"><span class="n">phases_xml_filename</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/reeps/reeps.html#REEPS.update_xml"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#reeps.REEPS.update_xml" title="Permalink to this definition"></a></dt>
<dt id="llepe.LLEPE.update_xml">
<code class="sig-name descname">update_xml</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">info_dict</span></em>, <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">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.update_xml"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#llepe.LLEPE.update_xml" title="Permalink to this definition"></a></dt>
<dd><p>updates xml file with info_dict</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
@ -938,6 +1010,8 @@ Requires an identical structure to opt_dict</p></li>
<li><p><strong>phases_xml_filename</strong> -- (str) xml filename if editing other xml
If <code class="docutils literal notranslate"><span class="pre">None</span></code>, the current xml will be modified and the internal
Cantera phases will be refreshed to the new values.</p></li>
<li><p><strong>dependant_params_dict</strong> -- (dict) dictionary containing information
about parameters dependant on info_dict</p></li>
</ul>
</dd>
</dl>

Binary file not shown.

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Python Module Index &mdash; reeps 1.0.0 documentation</title>
<title>Python Module Index &mdash; LLEPE 1.0.0 documentation</title>
@ -55,7 +55,7 @@
<a href="index.html" class="icon icon-home"> reeps
<a href="index.html" class="icon icon-home"> LLEPE
@ -95,7 +95,7 @@
</ul>
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">REEPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">LLEPE</a></li>
</ul>
@ -110,7 +110,7 @@
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">reeps</a>
<a href="index.html">LLEPE</a>
</nav>
@ -160,17 +160,17 @@
<h1>Python Module Index</h1>
<div class="modindex-jumpbox">
<a href="#cap-r"><strong>r</strong></a>
<a href="#cap-l"><strong>l</strong></a>
</div>
<table class="indextable modindextable">
<tr class="pcap"><td></td><td>&#160;</td><td></td></tr>
<tr class="cap" id="cap-r"><td></td><td>
<strong>r</strong></td><td></td></tr>
<tr class="cap" id="cap-l"><td></td><td>
<strong>l</strong></td><td></td></tr>
<tr>
<td></td>
<td>
<a href="modules/reeps.html#module-reeps"><code class="xref">reeps</code></a></td><td>
<a href="modules/reeps.html#module-llepe"><code class="xref">llepe</code></a></td><td>
<em></em></td></tr>
</table>

@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Search &mdash; reeps 1.0.0 documentation</title>
<title>Search &mdash; LLEPE 1.0.0 documentation</title>
@ -49,7 +49,7 @@
<a href="index.html" class="icon icon-home"> reeps
<a href="index.html" class="icon icon-home"> LLEPE
@ -89,7 +89,7 @@
</ul>
<p class="caption"><span class="caption-text">Searchers</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">REEPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/reeps.html">LLEPE</a></li>
</ul>
@ -104,7 +104,7 @@
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">reeps</a>
<a href="index.html">LLEPE</a>
</nav>

File diff suppressed because one or more lines are too long

@ -17,7 +17,7 @@ sys.path.insert(0, os.path.abspath('../../'))
# -- Project information -----------------------------------------------------
project = 'reeps'
project = 'LLEPE'
copyright = '2020, Titus Quah, Nwike Iloeje'
author = 'Titus Quah, Nwike Iloeje'

@ -3,12 +3,11 @@
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to reeps's docs! - the Rare earth element parameter searcher
====================================================================
REEPS is a package for thermodynamic parameter estimation specifically
for rare earth element extraction modeling.
Welcome to llepe's docs! - the Liquid-Liquid Extraction Parameter Estimator
===========================================================================
LLEPE is a package for thermodynamic parameter estimation for liquid-liquid extraction modeling
REEPS takes experimental data in a csv and system data in a xml.
LLEPE takes experimental data in a csv and system data in a xml.
The package then uses Cantera, another python package, to simulate equilibrium.

@ -1,8 +1,8 @@
.. _reeps:
.. automodule:: reeps
.. automodule:: llepe
REEPS
LLEPE
=====
@ -10,6 +10,6 @@ REEPS
Parameters
----------
.. autoclass:: REEPS
.. autoclass:: LLEPE
:members:
:inherited-members:

@ -1 +0,0 @@
from .reeps import REEPS

File diff suppressed because it is too large Load Diff

@ -1,12 +1,13 @@
from setuptools import setup
setup(
name='reeps',
name='llepe',
version='0.0.0',
packages=['reeps'],
packages=['LLEPE'],
package_data={
'csvs': ['data/csvs/*.csv'],
'xmls': ['data/xmls/*.xml']
'xmls': ['data/xmls/*.xml'],
'tests': ['tests/*.txt'],
},
include_package_data=True,
zip_safe=False,
@ -14,11 +15,10 @@ setup(
license='',
author='Titus Quah',
author_email='',
description='Rare earth element parameter searcher',
description='Liquid-liquid extraction parameter searcher',
install_requires=['cantera==2.4.0',
'pandas==1.0.3',
'numpy==1.15.4',
'scipy==1.4.1',
'seaborn==0.10.1',
'matplotlib==3.1.3']
)

@ -1 +0,0 @@
{"exp_csv_filename": "../data/csvs/Nd_exp_data.csv", "phases_xml_filename": "../data/xmls/twophase.xml", "opt_dict": {"Nd(H(A)2)3(org)": {"h0": -4662344.6400}}, "phase_names": ["HCl_electrolyte", "PC88A_liquid"], "aq_solvent_name": "H2O(L)", "extractant_name": "(HA)2(org)", "diluant_name": "dodecane", "complex_names": ["Nd(H(A)2)3(org)"], "rare_earth_ion_names": ["Nd+++"], "aq_solvent_rho": 1000.0, "extractant_rho": 960.0, "diluant_rho": 750.0}

@ -1 +0,0 @@
{"exp_csv_filename": "../data/csvs/exp_data.csv", "phases_xml_filename": "../data/xmls/twophase.xml", "opt_dict": {"Nd(H(A)2)3(org)": {"h0": -4662344.6400}}, "phase_names": ["HCl_electrolyte", "PC88A_liquid"], "aq_solvent_name": "H2O(L)", "extractant_name": "(HA)2(org)", "diluant_name": "dodecane", "complex_name": "Nd(H(A)2)3(org)", "rare_earth_ion_name": "Nd+++", "aq_solvent_rho": 1000.0, "extractant_rho": 960.0, "diluant_rho": 750.0}

@ -1,37 +0,0 @@
import json
import numpy as np
import sys
sys.path.append('../')
from reeps import REEPS
with open('multi_ree_settings.txt') as file:
testing_params = json.load(file)
beaker = REEPS(**testing_params)
def optimizer(func, x_guess):
lb = np.array([1e-1])
ub = np.array([1e1])
bounds = (lb, ub)
options = {'c1': 1e-3, 'c2': 1e-3, 'w': 0.9}
mini_optimizer = ps.single.global_best.GlobalBestPSO(n_particles=100,
dimensions=1,
options=options,
bounds=bounds)
f_opt, x_opt = mini_optimizer.optimize(func, iters=100)
return x_opt
minimizer_kwargs = {"method": 'SLSQP',
"bounds": [(1e-1, 1e1)],
"constraints": (),
"options": {'disp': True, 'maxiter': 1000, 'ftol': 1e-6}}
# est_enthalpy = beaker.fit(optimizer=optimizer)
est_enthalpy = beaker.fit()
print(est_enthalpy)
beaker.update_xml(est_enthalpy)
# beaker.parity_plot('Nd_d_eq', print_r_squared=True)
print(beaker.r_squared())

@ -1,165 +1,51 @@
import json
from unittest import TestCase
import numpy as np
import pyswarms as ps
from reeps import REEPS1
with open('one_ree_settings.txt') as file:
testing_params = json.load(file)
beaker = REEPS1(**testing_params)
# def new_obj(predicted_dict, meas_df, epsilon):
# meas_cols = list(meas_df)
# pred_keys = list(predicted_dict.keys())
# meas = meas_df[meas_cols[2]]
# pred = (predicted_dict['re_org'] + epsilon) / (predicted_dict['re_aq'] + epsilon)
# log_pred = np.log10(pred)
# log_meas = np.log10(meas)
# obj = np.sum((log_pred - log_meas) ** 2)
# return obj
# #
# #
# # def new_obj(ping):
# # print(ping)
# beaker.set_objective_function(new_obj)
# objective_kwargs = {"epsilon": 1e-14}
# beaker.set
# noinspection PyUnusedLocal
def optimizer(func, x_guess):
lb = np.array([1e-1])
ub = np.array([1e1])
bounds = (lb, ub)
options = {'c1': 1e-3, 'c2': 1e-3, 'w': 0.9}
mini_optimizer = ps.single.global_best.GlobalBestPSO(n_particles=100, dimensions=1,
options=options, bounds=bounds)
f_opt, x_opt = mini_optimizer.optimize(func, iters=100)
return x_opt
minimizer_kwargs = {"method": 'SLSQP',
"bounds": [(1e-1, 1e1)],
"constraints": (),
"options": {'disp': True, 'maxiter': 1000, 'ftol': 1e-6}}
# est_enthalpy = beaker.fit(optimizer=optimizer)
est_enthalpy = beaker.fit()
print(est_enthalpy)
beaker.update_xml(est_enthalpy)
# beaker.parity_plot()
print(beaker.r_squared())
# class TestREEPS1(TestCase):
# def test_slsqp_optimizer(self):
# self.fail()
#
# def test_log_mean_squared_error(self):
# self.fail()
#
# def test_get_exp_df(self):
# self.fail()
#
# def test_set_exp_df(self):
# self.fail()
#
# def test_get_phases(self):
# self.fail()
#
# def test_set_phases(self):
# self.fail()
#
# def test_get_opt_dict(self):
# self.fail()
#
# def test_set_opt_dict(self):
# self.fail()
#
# def test_get_aq_solvent_name(self):
# self.fail()
#
# def test_set_aq_solvent_name(self):
# self.fail()
#
# def test_get_extractant_name(self):
# self.fail()
#
# def test_set_extractant_name(self):
# self.fail()
#
# def test_get_diluant_name(self):
# self.fail()
#
# def test_set_diluant_name(self):
# self.fail()
#
# def test_get_complex_names(self):
# self.fail()
#
# def test_set_complex_names(self):
# self.fail()
#
# def test_get_rare_earth_ion_names(self):
# self.fail()
#
# def test_set_rare_earth_ion_names(self):
# self.fail()
#
# def test_get_aq_solvent_rho(self):
# self.fail()
#
# def test_set_aq_solvent_rho(self):
# self.fail()
#
# def test_get_extractant_rho(self):
# self.fail()
#
# def test_set_extractant_rho(self):
# self.fail()
#
# def test_get_diluant_rho(self):
# self.fail()
#
# def test_set_diluant_rho(self):
# self.fail()
#
# def test_set_in_moles(self):
# self.fail()
#
# def test_get_in_moles(self):
# self.fail()
#
# def test_set_objective_function(self):
# self.fail()
#
# def test_get_objective_function(self):
# self.fail()
#
# def test_set_optimizer(self):
# self.fail()
#
# def test_get_optimizer(self):
# self.fail()
#
# def test_update_predicted_dict(self):
# self.fail()
#
# def test_get_predicted_dict(self):
# self.fail()
#
# def test__internal_objective(self):
# self.fail()
#
# def test_fit(self):
# self.fail()
#
# def test_update_xml(self):
# self.fail()
#
# def test_parity_plot(self):
# self.fail()
#
# def test_r_squared(self):
# self.fail()
from llepe import LLEPE
import pkg_resources
validation_parameters_filename = pkg_resources.resource_filename(
'llepe',
r'..\tests\validation_parameters.txt')
validation_values_filename = pkg_resources.resource_filename(
'llepe',
r'..\tests\validation_values.txt')
with open(validation_parameters_filename) as file:
validation_params = json.load(file)
with open(validation_values_filename) as file:
validation_values = json.load(file)
searcher = LLEPE(**validation_params)
def array_to_list_in_dict(dictionary):
new_dictionary = {}
for key, value in dictionary.items():
new_dictionary[key] = list(value)
return new_dictionary
def test_init():
searcher.update_xml(validation_params['opt_dict'])
predicted_dict1 = searcher.get_predicted_dict()
predicted_dict1 = array_to_list_in_dict(predicted_dict1)
in_moles = searcher.get_in_moles().to_dict('list')
assert predicted_dict1 == validation_values['predicted_dict1'], \
"Prediction dicts are not equal. Error with set_in_moles, "
"update_predicted_dict, or changed xmls, or changed data"
assert in_moles == validation_values['in_moles'], \
"In_moles are different. Error with set_in_moles or data"
return None
def test_fit():
est_enthalpy, obj_value = searcher.fit()
searcher.update_xml(est_enthalpy)
predicted_dict2 = searcher.get_predicted_dict()
predicted_dict2 = array_to_list_in_dict(predicted_dict2)
r2 = searcher.r_squared()
assert est_enthalpy == validation_values['est_enthalpy'], \
"estimated enthalpy is not equal. Check fit method"
assert predicted_dict2 == validation_values['predicted_dict2'], \
"Prediction dicts are not equal. Error with set_in_moles, "
"update_predicted_dict, or changed xmls, or changed data"
assert r2 == validation_values['r2'], "r-squared value is off, check " \
"r_squared method"

Loading…
Cancel
Save