Hi,
I am trying to estimate the SMA parameters, k_eq and v, using the Yamamoto method. I did not get any error and the plot of the experiments seems all right, but the results of k_eq are quite different from those in the literature. I would say that the k_eq values are unrealistic:
v [11.951353298695398, 15.621517453314727]
k_eq [999.9999999999999, 999.999999631367]
I am confused as to what went wrong. Any help would be appreciated.
Thank you.
from CADETProcess.processModel import ComponentSystem
from CADETProcess.processModel import Inlet
from CADETProcess.processModel import Cstr
from CADETProcess.processModel import StericMassAction
from CADETProcess.processModel import LumpedRateModelWithoutPores
from CADETProcess.processModel import Outlet
from CADETProcess.processModel import FlowSheet
from CADETProcess.processModel import Process
from CADETProcess.simulator import Cadet
from CADETProcess.tools.yamamoto import GradientExperiment
from CADETProcess.tools.yamamoto import plot_experiments
from CADETProcess.tools.yamamoto import fit_parameters
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
file_name = r'C:\Users\cherr\Desktop\cadet run1-3 Yamamoto units checked.csv' # r:raw strings
EXPdata = np.genfromtxt(file_name, delimiter=',', skip_header=1, dtype=float, filling_values=0)
elution_volume = [15,20,25] # elution volume = gradient volume ?
experiments = []
for i in range(0,3):
time = EXPdata[:, i*5]
c_protein = EXPdata[:, i*5+1:i*5+3] # unit: mM
cond = EXPdata[:, i*5+3] # unit: mS/cm
c_salt = (cond + 0.186) / 0.083328 # unit: mM
gradient_volume = elution_volume [i]
experiment = GradientExperiment(time, c_salt, c_protein, gradient_volume)
experiments.append(experiment)
for experiment in experiments:
experiment.plot()
cAphase = 22.29
cBphase = 1125
Q = 1e-6/60 # 1 mL/min
capacity = 680 # mM?
# Component System
systemE1 = ComponentSystem()
systemE1.add_component('salt')
systemE1.add_component('a')
systemE1.add_component('cyto')
# Binding Model
binding_model = StericMassAction(systemE1, 'SMA')
binding_model.is_kinetic = False
binding_model.adsorption_rate = [1, 1, 1]
binding_model.desorption_rate = [1, 1, 1]
binding_model.steric_factor = [1, 1, 1]
binding_model.capacity = capacity
# column
column = LumpedRateModelWithoutPores(systemE1, 'column')
column.binding_model = binding_model
column.length = 0.02 # m
column.diameter = 0.008 # m
column.axial_dispersion = 2.7516e-7 # unit: m^2/s?
column.total_porosity = 0.9725 # unit:none
column.c = [cAphase, 0, 0] # salt in liquid phase
column.q = [capacity, 0, 0] # stationary phase is fully loaded with salt
yamamoto_results = fit_parameters(experiments, column)
print(yamamoto_results.characteristic_charge)
print(yamamoto_results.k_eq)
yamamoto_results.plot()