john Chandler in MATLAB Answers
最後のアクティビティ: 2022 年 5 月 20 日

Hi, I am studying drug pharmacokinetics. I would like to model how enzyme activity (cytochrome p450) and absoprtion would affect the PK profile. I am new to the simbiology and pk/pd modeling. I was loooking through the matlab tutorials but didn't find how these two parameters can be changed. If anyone has insights on how I can create these models, I would appreciate it. Thanks, John
Brandon in MATLAB Answers
最後のアクティビティ: 2022 年 4 月 15 日

Does anyone have a simple working example of code that uses simbiology to estimate parameters for a simple nonlinear pharamacodynamic model? I would like to first simulate data using a simple PKPD model, then estimate model parameters from the data. The code below creates the PK model. However, I have had no success trying to create the PD part. In the code below, the estimation is based on observing the drug concentrations over time. What I'd like to do instead is to pass the concentration values through a Hill function, i.e. if x is the concentration, then I want the observations to be y = R*x^g/(x^g+c^g) where R, g, and c are constants. I would like to allow the estimation routine to "see" only these nonlinearly transformed y values, and to estimate both the PK values (as is done in the code below), and also the parameters of the Hill equation, namely R, g, and c. Can anyone show me how to do this? Thanks in advance! Brandon ------------------------------------ %********************************* % *** simulate the data ********** %********************************* m1=sbiomodel('onecomp') r1=addreaction(m1,'Drug_Central -> null') % elimination k1 = addkineticlaw(r1,'MassAction') k1val = lognrnd(0, 0.2 , 1,1); p1 = addparameter(k1,'ke','Value',k1val,'ValueUnits','1/hour') k1.ParameterVariableNames='ke' % cannot seem to get the following part to work % r2=addreaction(m1,'Drug_Central -> x') % nonlinear observation % k2 = addkineticlaw(r2, 'Hill-Kinetics'); % k2.KineticLaw = 'Unknown'; % r2.ReactionRate = 'Rmax*x^gamma / ( x^gamma+A^gamma)'; % p2 = addparameter(k2, 'Rmax', 2.3); % p3 = addparameter(k2,'A',5); % p4 = addparameter(k2,'gamma',3); % set(p4, 'ValueUnits', 'dimensionless'); %% info for each constant rate interval % start time, end time, rate [figure out intermediate: amount] RateInfo=[2 4 10; 6 12 50; 12 20 90; 22 24 150; 25 27 200; 30 31 50]; d=[]; for i=1:size(RateInfo,1); dt = sbiodose('dt'); dt.TargetName = 'Drug_Central'; dt.RateUnits = 'milligram/hour'; dt.AmountUnits='milligram'; dt.TimeUnits = 'hour'; dt.Rate = RateInfo(i,3); t0=RateInfo(i,1); t1=RateInfo(i,2); amount=(t1-t0)*RateInfo(i,3); dt.Amount = amount; dt.StartTime=t0 dt.Active = true; d=[d dt]; end dose=d; %% run simulation cs = getconfigset(m1) cs.StopTime=48 cs.TimeUnits='hour' [t,sd,species]=sbiosimulate(m1,d) plot(t,sd); legend(species); xlabel('Hours'); ylabel('Drug Concentration'); % throw out some data to simulate sparse sampling in an experiment t=t(1:5:end); sd=sd(1:5:end); data=table(t,sd); % convert to table data.Properties.VariableNames{'t'}='Time'; data.Properties.VariableNames{'sd'}='Conc'; %% convert to groupedData object -- required for fitting with sbiofit gData=groupedData(data) gData.Properties.VariableUnits={'hour','milligram/liter'} gData.Properties %********************************* % *** estimate model from data *** %********************************* pkmd = PKModelDesign pkc1 = addCompartment(pkmd,'Central') pkc1.DosingType = 'Infusion' pkc1.EliminationType='linear-clearance' pkc1.HasResponseVariable=true [model,map]=construct(pkmd) configset = getconfigset(model) configset.CompileOptions.UnitConversion=true configset.SolverOptions.AbsoluteTolerance=1e-9 configset.SolverOptions.RelativeTolerance=1e-5 dose=d; % look at map to see variables responseMap = {'Drug_Central = Conc'}; paramsToEstimate = {'log(Central)','log(Cl_Central)'} estimatedParams = estimatedInfo(paramsToEstimate,'InitialValue',[1 1]) paramsToEstimate = {'log(Central)','log(Cl_Central)'}; estimatedParams = estimatedInfo(paramsToEstimate,'InitialValue',[1 1]); %% estimate the parameters fitConst = sbiofit(model,gData,responseMap,estimatedParams,dose) %% plot results fitConst.ParameterEstimates figure(1); plot(fitConst); %% compare estimate to truth disp('****************') fitConst.ParameterEstimates.Estimate(2) k1val
SeungHyun Lee in MATLAB Answers
最後のアクティビティ: 2017 年 12 月 8 日

I estimated 8 parameters of my glucose-insulin kinetics model(modified model of 'insulindemo.sbproj') using glucose concentration data as response and glucose, insulin doses as input dose data. The estimation was done by 'Fit Data' task of SimBiology. However, there was warning with details; *"Simulation with phi = [222.249598314537 144.778388565053 2.3665676931561 0.00609950427451014 0.156172487611996 0.0142886095746218 0.00444912107474936 1.27397631652191] could not be completed because: Integration Tolerance Not Met. Empty results have been returned for this simulation."* I used 'ode15s(stiff/NDF) solver with RelativeTolerance value of 1.0E-6. and estimation method was 'ga(Constrained optimization using genetic algorithm)' with TerminationTolerance of 1.0E-10 and MaximumGeneration of 800. What is the meaning of this warning message? and how could I treat it? Thank you for your interest.