simFunction and dose Array from an input file
Afficher commentaires plus anciens
Hi. After fitting my model (fitting was successful using sbiofit) I wrote the code below to generate simfunction to run the model with estimated values and the parmetr in the gData for each case.In gData the doses has been detemined and they are diffent rated doses for each patient applied at diffent time points. I was not able to pass
dosesForFit = createDoses(gData, 'DOSE', 'dose_rate', d3)
to simfunction because
Invalid dosing information. Specify doses as a row vector
and then I used
dosesForFit = reshape(dosesForFit, 1, []); % Ensure dosesForFit is a row vector
and the problem solved and simFunction was executed but the dose considered the same for all of the cases and was combinatin of all of the doses. How can I solve this problem. I attached input file and the code is below: Thanks
%% Update Parameters with Estimated Values and Running the Model
d3 = sbiodose('DOSE');
d3.TargetName = 'plasma.A1';
d3.LagParameterName = '';
d3.AmountUnits = 'nanomole';
d3.RateUnits = 'nanomole/day';
d3.TimeUnits=configsetObj.TimeUnits;
dosesForFit = createDoses(gData, 'DOSE', 'dose_rate', d3);
dosesForFit = reshape(dosesForFit, 1, []); % Ensure dosesForFit is a row vector
doseTable = getTable(dosesForFit);
% getTable(dosesForFit)
% Extract Observables and Experimental Data
for i = 1:length(fitResults.EstimatedParameterNames)
paramObj = sbioselect(model, 'Name', fitResults.EstimatedParameterNames{i});
paramObj.Value = fitResults.ParameterEstimates.Estimate(i);
end
% Define parameter names to extract
variantParams = {'BW', 'SLD', 'HSCR', 'FRAPS'};
% Extract IDs in the order they appear in the input file
idsInOrder = exp_data.ID; % Retain original ID order
[uniqueIDs, ~, idOrder] = unique(idsInOrder, 'stable'); % Preserve order from input file
% Initialize paramMatrix with zeros
numIDs = length(uniqueIDs);
paramMatrix = zeros(numIDs, length(variantParams)); % Rows for IDs, columns for parameters
% Populate paramMatrix with parameter values based on the input file order
for i = 1:numIDs
% Filter data for the current ID
currentID = uniqueIDs(i);
idData = exp_data(exp_data.ID == currentID, :);
% Assign parameter values (assume these are constant per ID)
paramMatrix(i, :) = [idData.BW(1), idData.SLD(1), idData.HSCR(1), idData.FRAPS(1)];
end
% Observables for the simulation
obs = {'CAb_plasma', 'CADC_plasma', 'CPLun_plasma'}; % Observables to track
% Create SimFunction
sfxn = createSimFunction(model, variantParams, obs, dosesForFit,'UseParallel', true, 'AutoAccelerate', true);
% Simulate Using the Parameter Matrix
% Create dose table from dosesForFit
% Simulate the model using the parameter matrix
simData = sfxn(paramMatrix, [], doseTable, time);
3 commentaires
Arthur Goldsipe
le 23 Jan 2025
Can you provide code standalone code that reproduces the problem? As currently shared, the code is not runnable due to several of the variables being undefined. If confidentiality is an issue, would you be able to share the code directly with MathWorks?
Mehdi
le 23 Jan 2025
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Nonlinear Mixed-Effects Modeling dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!