sbiofit ability to estimate the parameter for 3 different cases at the same time
Hi,
I wrote the code below for estimation of KD from the binding assay for three different cell lines: i.e. bxpc3, colo205, T84 which have different number of antigen molecule on their surface. The code properly work for estimation of kD spearately for each cell line.
How can I estimate the kD as one value for different cell lines at the same time?
I attached my excel file (exp.xlsx) in which each cell line data has been stored in a spearted sheet.
Thanks
%% Setup Model
case_study = ‘T84’; % ‘bxpc3’ ‘colo205’ ‘T84’
model_input_file=’exp.xlsx’
switch case_study
case ‘bxpc3’
exp_data=readtable(model_input_file,’Sheet’,’bxpc3′);
data.dose = exp_data.dose;
data.ro = exp_data.RO_exp;
input1=[0.1 0.4 1.2 11.1 33.3 100 300];
RPC_Ag_Tumor = 219202;
case ‘colo205’
exp_data=readtable(model_input_file,’Sheet’,’colo205′);
data.dose = exp_data.dose;
data.ro = exp_data.RO_exp;
input1=[0.1 0.4 1.2 3.7 11.1 33.3 100];
RPC_Ag_Tumor = 662642;
case ‘T84’
exp_data=readtable(model_input_file,’Sheet’,’T84′);
data.dose = exp_data.dose;
data.ro = exp_data.RO_exp;
input1=[0.1 0.4 1.2 3.7 11.1 33.3 100 300];
RPC_Ag_Tumor = 169163;
end
data = structfun( @rmmissing , data , ‘UniformOutput’ , false);
setup; % (I build the model here)
%% Data Import
gData = groupedData(exp_data);
gData.Properties.VariableUnits = {”,’second’,’nanomole’,’dimensionless’};
gData.Properties.GroupVariableName = ‘ID’;
gData.Properties.IndependentVariableName = ‘Time’;
sbiotrellis(gData,’ID’,’Time’,{‘RO_exp’},’Marker’,’+’,’LineStyle’,’none’);
% Extract data columns into separate variables for the weight expression
% evaluation.
headings = exp_data.Properties.VariableNames;
for i=1:length(headings)
next = headings{i};
eval([next ‘ = exp_data. ‘ next ‘;’]);
end
%% Create the data dose.
d2 = sbiodose(‘dose’);
d2.TargetName = ‘Ab’;
d2.LagParameterName = ”;
d2 = createDoses(gData, ‘dose’, ”, d2);
% Build table of doses.
d2 = num2cell(d2);
dosesForFit = d2;
%% Fitting options
% Define response information.
responseMap = {‘RO = RO_exp’};
% Define objects being estimated and their initial estimates.
estimatedInfoObj = estimatedInfo({‘kD_Ab’});
% estimatedInfoObj = estimatedInfo({‘k_max’, ‘EC50’});
estimatedInfoObj(1).Bounds = [1E-1 1E2];
% estimatedInfoObj(2).Bounds = [1E-6 1E-4];
% Define Algorithm options.
options = optimoptions(‘particleswarm’);
options.Display= ‘iter’;
% Define fit problem.
f = fitproblem(‘FitFunction’, ‘sbiofit’);
f.Data = gData;
f.Model = model;
f.Estimated = estimatedInfoObj;
f.ErrorModel = ‘exponential’;
f.ResponseMap = responseMap;
f.Weights = [];
f.Doses = dosesForFit;
f.FunctionName = ‘particleswarm’;
f.Options = options;
f.ProgressPlot = true;
f.UseParallel = false;
f.Pooled = true;
%% Run the model with optimum parameters
fitResults = f.fit;
plot(fitResults)
ci = sbiopredictionci(fitResults);
plot(ci)
ciParam = sbioparameterci(fitResults);
ci2table(ciParam)
plot(ciParam)
fitResults.ParameterEstimates
%update parameters
for i=1:length(estimatedInfoObj)
xopt = sbioselect(model,’Name’,fitResults.EstimatedParameterNames{i});
xopt.value = fitResults.ParameterEstimates.Estimate(i);
end
params = {‘Ab0’};
obs = {‘RO’};
input=dose(~isnan(dose));
RO_exp = RO_exp(~isnan(RO_exp));
sfxn = createSimFunction(model, params, obs, d1,’UseParallel’,false,’AutoAccelerate’,false);
sfxn.accelerate;
doseTable = getTable(d1);
simData=sfxn(input,configsetObj.StopTime,doseTable);
%% Plot
fontsize = 18;
linesize = 2;
markersize = 10;
f = figure(‘Position’, [14 10 900 600]);
colors = ["k", "#D95319", "#A2142F", "#77AC30", "#7E2F8E", "#00CED1", "#FF1493"]; % Define an array of colors
set(f, ‘Visible’, ‘on’);
set(gca,’fontsize’, fontsize);
hold on;
box on;
grid on;
set(gca, ‘XScale’, ‘log’);
%set(gca, ‘YScale’, ‘log’);
for i = 1:size(input,1)
if i < size(input,1)
line([input1(i) input1(i+1)], [simData(i).Data(end) simData(i+1).Data(end)], ‘Color’, colors(3),’LineWidth’, 2);
end
% plot(input1(i), simData(i).Data(end), ‘O’, ‘MarkerEdgeColor’, colors(3), ‘MarkerFaceColor’, colors(3), ‘markersize’, markersize);
plot(input1(i), RO_exp(i), ‘O’, ‘MarkerEdgeColor’, colors(4), ‘MarkerFaceColor’, colors(4), ‘markersize’, markersize);
end
xlabel(‘Dose (ug/mL)’, ‘fontweight’, ‘bold’, ‘Fontsize’, fontsize, ‘Interpreter’, ‘none’);
ylabel(‘RO (%)’, ‘fontweight’, ‘bold’, ‘Fontsize’, fontsize);
legend(‘Simulation’,’Experiment’ , ‘NumColumns’, 1, ‘Location’, ‘best’, ‘FontSize’, fontsize)
saveas(gca, fullfile(save_locations{2}, ‘RO’), ‘png’);
close(f);Hi,
I wrote the code below for estimation of KD from the binding assay for three different cell lines: i.e. bxpc3, colo205, T84 which have different number of antigen molecule on their surface. The code properly work for estimation of kD spearately for each cell line.
How can I estimate the kD as one value for different cell lines at the same time?
I attached my excel file (exp.xlsx) in which each cell line data has been stored in a spearted sheet.
Thanks
%% Setup Model
case_study = ‘T84’; % ‘bxpc3’ ‘colo205’ ‘T84’
model_input_file=’exp.xlsx’
switch case_study
case ‘bxpc3’
exp_data=readtable(model_input_file,’Sheet’,’bxpc3′);
data.dose = exp_data.dose;
data.ro = exp_data.RO_exp;
input1=[0.1 0.4 1.2 11.1 33.3 100 300];
RPC_Ag_Tumor = 219202;
case ‘colo205’
exp_data=readtable(model_input_file,’Sheet’,’colo205′);
data.dose = exp_data.dose;
data.ro = exp_data.RO_exp;
input1=[0.1 0.4 1.2 3.7 11.1 33.3 100];
RPC_Ag_Tumor = 662642;
case ‘T84’
exp_data=readtable(model_input_file,’Sheet’,’T84′);
data.dose = exp_data.dose;
data.ro = exp_data.RO_exp;
input1=[0.1 0.4 1.2 3.7 11.1 33.3 100 300];
RPC_Ag_Tumor = 169163;
end
data = structfun( @rmmissing , data , ‘UniformOutput’ , false);
setup; % (I build the model here)
%% Data Import
gData = groupedData(exp_data);
gData.Properties.VariableUnits = {”,’second’,’nanomole’,’dimensionless’};
gData.Properties.GroupVariableName = ‘ID’;
gData.Properties.IndependentVariableName = ‘Time’;
sbiotrellis(gData,’ID’,’Time’,{‘RO_exp’},’Marker’,’+’,’LineStyle’,’none’);
% Extract data columns into separate variables for the weight expression
% evaluation.
headings = exp_data.Properties.VariableNames;
for i=1:length(headings)
next = headings{i};
eval([next ‘ = exp_data. ‘ next ‘;’]);
end
%% Create the data dose.
d2 = sbiodose(‘dose’);
d2.TargetName = ‘Ab’;
d2.LagParameterName = ”;
d2 = createDoses(gData, ‘dose’, ”, d2);
% Build table of doses.
d2 = num2cell(d2);
dosesForFit = d2;
%% Fitting options
% Define response information.
responseMap = {‘RO = RO_exp’};
% Define objects being estimated and their initial estimates.
estimatedInfoObj = estimatedInfo({‘kD_Ab’});
% estimatedInfoObj = estimatedInfo({‘k_max’, ‘EC50’});
estimatedInfoObj(1).Bounds = [1E-1 1E2];
% estimatedInfoObj(2).Bounds = [1E-6 1E-4];
% Define Algorithm options.
options = optimoptions(‘particleswarm’);
options.Display= ‘iter’;
% Define fit problem.
f = fitproblem(‘FitFunction’, ‘sbiofit’);
f.Data = gData;
f.Model = model;
f.Estimated = estimatedInfoObj;
f.ErrorModel = ‘exponential’;
f.ResponseMap = responseMap;
f.Weights = [];
f.Doses = dosesForFit;
f.FunctionName = ‘particleswarm’;
f.Options = options;
f.ProgressPlot = true;
f.UseParallel = false;
f.Pooled = true;
%% Run the model with optimum parameters
fitResults = f.fit;
plot(fitResults)
ci = sbiopredictionci(fitResults);
plot(ci)
ciParam = sbioparameterci(fitResults);
ci2table(ciParam)
plot(ciParam)
fitResults.ParameterEstimates
%update parameters
for i=1:length(estimatedInfoObj)
xopt = sbioselect(model,’Name’,fitResults.EstimatedParameterNames{i});
xopt.value = fitResults.ParameterEstimates.Estimate(i);
end
params = {‘Ab0’};
obs = {‘RO’};
input=dose(~isnan(dose));
RO_exp = RO_exp(~isnan(RO_exp));
sfxn = createSimFunction(model, params, obs, d1,’UseParallel’,false,’AutoAccelerate’,false);
sfxn.accelerate;
doseTable = getTable(d1);
simData=sfxn(input,configsetObj.StopTime,doseTable);
%% Plot
fontsize = 18;
linesize = 2;
markersize = 10;
f = figure(‘Position’, [14 10 900 600]);
colors = ["k", "#D95319", "#A2142F", "#77AC30", "#7E2F8E", "#00CED1", "#FF1493"]; % Define an array of colors
set(f, ‘Visible’, ‘on’);
set(gca,’fontsize’, fontsize);
hold on;
box on;
grid on;
set(gca, ‘XScale’, ‘log’);
%set(gca, ‘YScale’, ‘log’);
for i = 1:size(input,1)
if i < size(input,1)
line([input1(i) input1(i+1)], [simData(i).Data(end) simData(i+1).Data(end)], ‘Color’, colors(3),’LineWidth’, 2);
end
% plot(input1(i), simData(i).Data(end), ‘O’, ‘MarkerEdgeColor’, colors(3), ‘MarkerFaceColor’, colors(3), ‘markersize’, markersize);
plot(input1(i), RO_exp(i), ‘O’, ‘MarkerEdgeColor’, colors(4), ‘MarkerFaceColor’, colors(4), ‘markersize’, markersize);
end
xlabel(‘Dose (ug/mL)’, ‘fontweight’, ‘bold’, ‘Fontsize’, fontsize, ‘Interpreter’, ‘none’);
ylabel(‘RO (%)’, ‘fontweight’, ‘bold’, ‘Fontsize’, fontsize);
legend(‘Simulation’,’Experiment’ , ‘NumColumns’, 1, ‘Location’, ‘best’, ‘FontSize’, fontsize)
saveas(gca, fullfile(save_locations{2}, ‘RO’), ‘png’);
close(f); Hi,
I wrote the code below for estimation of KD from the binding assay for three different cell lines: i.e. bxpc3, colo205, T84 which have different number of antigen molecule on their surface. The code properly work for estimation of kD spearately for each cell line.
How can I estimate the kD as one value for different cell lines at the same time?
I attached my excel file (exp.xlsx) in which each cell line data has been stored in a spearted sheet.
Thanks
%% Setup Model
case_study = ‘T84’; % ‘bxpc3’ ‘colo205’ ‘T84’
model_input_file=’exp.xlsx’
switch case_study
case ‘bxpc3’
exp_data=readtable(model_input_file,’Sheet’,’bxpc3′);
data.dose = exp_data.dose;
data.ro = exp_data.RO_exp;
input1=[0.1 0.4 1.2 11.1 33.3 100 300];
RPC_Ag_Tumor = 219202;
case ‘colo205’
exp_data=readtable(model_input_file,’Sheet’,’colo205′);
data.dose = exp_data.dose;
data.ro = exp_data.RO_exp;
input1=[0.1 0.4 1.2 3.7 11.1 33.3 100];
RPC_Ag_Tumor = 662642;
case ‘T84’
exp_data=readtable(model_input_file,’Sheet’,’T84′);
data.dose = exp_data.dose;
data.ro = exp_data.RO_exp;
input1=[0.1 0.4 1.2 3.7 11.1 33.3 100 300];
RPC_Ag_Tumor = 169163;
end
data = structfun( @rmmissing , data , ‘UniformOutput’ , false);
setup; % (I build the model here)
%% Data Import
gData = groupedData(exp_data);
gData.Properties.VariableUnits = {”,’second’,’nanomole’,’dimensionless’};
gData.Properties.GroupVariableName = ‘ID’;
gData.Properties.IndependentVariableName = ‘Time’;
sbiotrellis(gData,’ID’,’Time’,{‘RO_exp’},’Marker’,’+’,’LineStyle’,’none’);
% Extract data columns into separate variables for the weight expression
% evaluation.
headings = exp_data.Properties.VariableNames;
for i=1:length(headings)
next = headings{i};
eval([next ‘ = exp_data. ‘ next ‘;’]);
end
%% Create the data dose.
d2 = sbiodose(‘dose’);
d2.TargetName = ‘Ab’;
d2.LagParameterName = ”;
d2 = createDoses(gData, ‘dose’, ”, d2);
% Build table of doses.
d2 = num2cell(d2);
dosesForFit = d2;
%% Fitting options
% Define response information.
responseMap = {‘RO = RO_exp’};
% Define objects being estimated and their initial estimates.
estimatedInfoObj = estimatedInfo({‘kD_Ab’});
% estimatedInfoObj = estimatedInfo({‘k_max’, ‘EC50’});
estimatedInfoObj(1).Bounds = [1E-1 1E2];
% estimatedInfoObj(2).Bounds = [1E-6 1E-4];
% Define Algorithm options.
options = optimoptions(‘particleswarm’);
options.Display= ‘iter’;
% Define fit problem.
f = fitproblem(‘FitFunction’, ‘sbiofit’);
f.Data = gData;
f.Model = model;
f.Estimated = estimatedInfoObj;
f.ErrorModel = ‘exponential’;
f.ResponseMap = responseMap;
f.Weights = [];
f.Doses = dosesForFit;
f.FunctionName = ‘particleswarm’;
f.Options = options;
f.ProgressPlot = true;
f.UseParallel = false;
f.Pooled = true;
%% Run the model with optimum parameters
fitResults = f.fit;
plot(fitResults)
ci = sbiopredictionci(fitResults);
plot(ci)
ciParam = sbioparameterci(fitResults);
ci2table(ciParam)
plot(ciParam)
fitResults.ParameterEstimates
%update parameters
for i=1:length(estimatedInfoObj)
xopt = sbioselect(model,’Name’,fitResults.EstimatedParameterNames{i});
xopt.value = fitResults.ParameterEstimates.Estimate(i);
end
params = {‘Ab0’};
obs = {‘RO’};
input=dose(~isnan(dose));
RO_exp = RO_exp(~isnan(RO_exp));
sfxn = createSimFunction(model, params, obs, d1,’UseParallel’,false,’AutoAccelerate’,false);
sfxn.accelerate;
doseTable = getTable(d1);
simData=sfxn(input,configsetObj.StopTime,doseTable);
%% Plot
fontsize = 18;
linesize = 2;
markersize = 10;
f = figure(‘Position’, [14 10 900 600]);
colors = ["k", "#D95319", "#A2142F", "#77AC30", "#7E2F8E", "#00CED1", "#FF1493"]; % Define an array of colors
set(f, ‘Visible’, ‘on’);
set(gca,’fontsize’, fontsize);
hold on;
box on;
grid on;
set(gca, ‘XScale’, ‘log’);
%set(gca, ‘YScale’, ‘log’);
for i = 1:size(input,1)
if i < size(input,1)
line([input1(i) input1(i+1)], [simData(i).Data(end) simData(i+1).Data(end)], ‘Color’, colors(3),’LineWidth’, 2);
end
% plot(input1(i), simData(i).Data(end), ‘O’, ‘MarkerEdgeColor’, colors(3), ‘MarkerFaceColor’, colors(3), ‘markersize’, markersize);
plot(input1(i), RO_exp(i), ‘O’, ‘MarkerEdgeColor’, colors(4), ‘MarkerFaceColor’, colors(4), ‘markersize’, markersize);
end
xlabel(‘Dose (ug/mL)’, ‘fontweight’, ‘bold’, ‘Fontsize’, fontsize, ‘Interpreter’, ‘none’);
ylabel(‘RO (%)’, ‘fontweight’, ‘bold’, ‘Fontsize’, fontsize);
legend(‘Simulation’,’Experiment’ , ‘NumColumns’, 1, ‘Location’, ‘best’, ‘FontSize’, fontsize)
saveas(gca, fullfile(save_locations{2}, ‘RO’), ‘png’);
close(f); sbiofit, simbiology MATLAB Answers — New Questions