mirror of
https://github.com/ANL-CEEESA/LLEPE.git
synced 2025-12-06 01:48:53 -06:00
updated to LLEPE
This commit is contained in:
@@ -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
|
||||
from llepe import LLEPE
|
||||
import pkg_resources
|
||||
|
||||
import numpy as np
|
||||
import pyswarms as ps
|
||||
from reeps import REEPS1
|
||||
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('one_ree_settings.txt') as file:
|
||||
testing_params = json.load(file)
|
||||
|
||||
beaker = REEPS1(**testing_params)
|
||||
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 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
|
||||
def array_to_list_in_dict(dictionary):
|
||||
new_dictionary = {}
|
||||
for key, value in dictionary.items():
|
||||
new_dictionary[key] = list(value)
|
||||
return new_dictionary
|
||||
|
||||
|
||||
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)
|
||||
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
|
||||
|
||||
|
||||
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()
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user