Main Content

Results for

Hi,
I want to develop a PK model based on some PK data. The PK data seems to display 2 peaks when one initial dose is given.
I would like to give one dose. A fraction of this dose (fr) is absorbed following the linear relationship - ka*Drug the other fraction (1-fr) is absorbed following a linear absorption (ka1*Drug) with a Tlag (it maybe a zero order). The fraction fr is unknown so it must be estimate.
Does anyone have can provide any suggestion to implement this in symbiology or provide a link where I can look?
Thank you very much in advance,
Ferran
I have a species which is absorbed in a zero-order manner. I want to model the reaction rate as "UptakeRate*ActiveState". So I can give value of 1 or 0 to ActivateState to control the active state of this process. The species itself is under control multiple processes, so I want to use Event to automatically change the active state of absorption.
However, when I use these two events:
Event 1,trigger: species > 0, Function: ActiveState =1; Event 2, trigger: species <=0, Function: ActiveState=0
The simulation seems to be stuck without stop.
Is there any way to solve this ? Thanks
Hi,
Im a new user of simbiology, can any one tell me How to fix a parameters to a known constant when estimating models.
Rutwij Dave
Rutwij Dave
Last activity on 28 Jul 2022

Hello,
In the previous versions, we were able to change the reaction line properties to Reactant, Product, or Reactant and Product. This option is not available in 2021b. How do we change the proerpties if we reaction line is both Reactant and Product?
Thanks

Simulations and model results do not get exported to the MATLAB workspace automatically. 2021b. Under Model Analyzer preferences, I checked "export results when model run is complete", but to no effect. I have to manually expert simulations after each run. Please advise. Thanks RD

Introduction
Comma-separated lists are really very simple. You use them all the time. Here is one:
a,b,c,d
That is a comma-separated list containing four variables, the variables a, b, c, and d. Every time you write a list separated by commas then you are writing a comma-separated list. Most commonly you would write a comma-separated list as inputs when calling a function:
fun(a,b,c,d)
or as arguments to the concatenation operator or cell construction operator:
[a,b,c,d]
{a,b,c,d}
or as function outputs:
[a,b,c,d] = fun();
It is very important to understand that in general a comma-separated list is NOT one variable (but it could be). However, sometimes it is useful to create a comma-separated list from one variable (or define one variable from a comma-separated list), and MATLAB has several ways of doing this from various container array types:
1) from a field of a structure array using dot-indexing:
struct_array.field % all elements
struct_array(idx).field % selected elements
2) from a cell array using curly-braces:
cell_array{:} % all elements
cell_array{idx} % selected elements
3) from a string array using curly-braces:
string_array{:} % all elements
string_array{idx} % selected elements
Note that in all cases, the comma-separated list consists of the content of the container array, not subsets (or "slices") of the container array itself (use parentheses to "slice" any array). In other words, they will be equivalent to writing this comma-separated list of the container array content:
content1, content2, content3, .. , contentN
and will return as many content arrays as the original container array has elements (or that you select using indexing, in the requested order). A comma-separated list of one element is just one array, but in general there can be any number of separate arrays in the comma-separated list (zero, one, two, three, four, or more). Here is an example showing that a comma-separated list generated from the content of a cell array is the same as a comma-separated list written explicitly:
>> C = {1,0,Inf};
>> C{:}
ans =
1
ans =
0
ans =
Inf
>> 1,0,Inf
ans =
1
ans =
0
ans =
Inf
How to Use Comma-Separated Lists
Function Inputs: Remember that every time you call a function with multiple input arguments you are using a comma-separated list:
fun(a,b,c,d)
and this is exactly why they are useful: because you can specify the arguments for a function or operator without knowing anything about the arguments (even how many there are). Using the example cell array from above:
>> vertcat(C{:})
ans =
1
0
Inf
which, as we should know by now, is exactly equivalent to writing the same comma-separated list directly into the function call:
>> vertcat(1,0,Inf)
ans =
1
0
Inf
How can we use this? Commonly these are used to generate vectors of values from a structure or cell array, e.g. to concatenate the filenames which are in the output structure of dir:
S = dir(..);
F = {S.name}
which is simply equivalent to
F = {S(1).name, S(2).name, S(3).name, .. , S(end).name}
Or, consider a function with multiple optional input arguments:
opt = {'HeaderLines',2, 'Delimiter',',', 'CollectOutputs',true);
fid = fopen(..);
C = textscan(fid,'%f%f',opt{:});
fclose(fid);
Note how we can pass the optional arguments as a comma-separated list. Remember how a comma-separated list is equivalent to writing var1,var2,var3,..., then the above example is really just this:
C = textscan(fid,'%f%f', 'HeaderLines',2, 'Delimiter',',', 'CollectOutputs',true)
with the added advantage that we can specify all of the optional arguments elsewhere and handle them as one cell array (e.g. as a function input, or at the top of the file). Or we could select which options we want simply by using indexing on that cell array. Note that varargin and varargout can also be useful here.
Function Outputs: In much the same way that the input arguments can be specified, so can an arbitrary number of output arguments. This is commonly used for functions which return a variable number of output arguments, specifically ind2sub and gradient and ndgrid. For example we can easily get all outputs of ndgrid, for any number of inputs (in this example three inputs and three outputs, determined by the number of elements in the cell array):
C = {1:3,4:7,8:9};
[C{:}] = ndgrid(C{:});
which is thus equivalent to:
[C{1},C{2},C{3}] = ndgrid(C{1},C{2},C{3});
Further Topics:
MATLAB documentation:
Click on these links to jump to relevant comments below:
Dynamic Indexing (indexing into arrays with arbitrary numbers of dimensions)
Nested Structures (why you get an error trying to index into a comma-separated list)
Summary
Just remember that in general a comma-separated list is not one variable (although they can be), and that they are exactly what they say: a list (of arrays) separated with commas. You use them all the time without even realizing it, every time you write this:
fun(a,b,c,d)

Hello

I would like to pulse an input species. I read in the forums that repeated assignments can be used for this, but I am not exactly sure how to implement this. This is the MATLAB code that resembles what I would like the input pattern to be:

t = 0:1/1e3:60;
d = [10:2:30]';
x = @rectpuls;
y = pulstran(t,d,x);
plot(t,y)
hold off
xlabel('Time (s)')
ylabel('Waveform')

Thanks for any help! Aaron

Hello, We would like to share one of our QSP models with non-modeler colleagues for them to play with. Is there a simple way to generate a standalone app from a SimBiology model, with sliders allowing the user to change various parameter values?

Thank you,

Abed

Hello, Does the 'sbiofit' function have functionality implemented for likelihood=based handling of BLoQ censored data, similar to functionality in NONMEM and other softwares? If not, are there plans to implement this?

Thanks,

Abed

Hello,

I recently downloaded the GlobalSensitivityAnalysisApp. I am trying to perform a GSA using a simbiology model. I try running the App, but I get the error "No Sobol Indices Available to Plot. Configure the Sobol section and click the Compute button." I'm not sure if there is a step I'm overlooking. I'm following the instructional video for this app on the Matlab website, and I'm not sure what Configure the Sobol section is referring to. Any guidance would be greatly appreciated.

How can I add the value of the error for each estimated parameter?

Hi, all

Recently I read the book "Physiologically Based Pharmacokinetic (PBPK) Modeling and Simulations: Principles, Methods, and Applications in the Pharmaceutical Industry" and find this state,"Since the unbound concentrations in plasma and blood are expected to be the same, fub , fup , and R are related as follows: R=Cb/Cp=(Cub·fup)/(Cup·fub) and R=fup/fub". I don't know whether it is reasonable to generally assume unbound concentrations in plasma and blood to be the same since components in whole blood and plasma are not the same. Is it common to see this equality in real situation?

Thanks for comment.

Hello,

We're working with a vendor to expand one of our current models that's written in SimBiology, but that vendor doesn't have a license to SimBiology. It would be nice if there existed a "Simbiology Viewer" which can be downloaded as a free Matlab package, and which would allow one to view but not edit SimBiology models. Are there any plans for something like this in the future? Something like this would make it much easier to share our models with people who don't have a license to SimBiology.

On a similar note, does anyone have any advice on the best ways to share SimBiology models currently? I noticed there's some functionality to export the tables of reactions, parameters, species, etc., and there's also some functionality to export the model into SBML.

Thank you,

Abed

Hi, all friends,

I want to record the fraction of drug absorbed in each intestinal segment, so I define a set of parameters with rate rule like: AbFraction_Colon= ((PeffColon*2/organismRadiusColon+paracellularAbsorption*organismFluxMucosaSerosa/Colon)*Colon.DrugDissolved)*Colon/InitialDose The attached figure shows the simulation result that overall PK profile (purple) seems OK, but I don't know why the absorption fraction line (red) starts from value of 1. Does anyone know the cause?

By the way, I am using model modified from "generic PBPK model"

Thanks for comment.

Hi, all friends

I am dealing with a confusing NCA result. As this result shows, AUC_infinity=0.8537 (μg*h/mL), DM=1 (mg). CL should be equal to DM/AUC_infinity but why is the calculated result 2.4491? There is no dimension along with value so I do not know if I ignore anything.

Does any one can handle with this situation? Thanks very much. I also post my used data (i.v.).

Hi, all friends

If I define a parameter, like solubility with dimension of milligram/milliliter and I want to refer it in an reaction equation in dimension of millimole/liter, suppose I have define its molecularweight, could I input this parameter directly in equation with specified dimension?

Question: How to load a host of variants created through scripts to a sbproj file so that we can simulate and visualize them through the simbiology GUI.

Description : In a typical QSP workflow, we generate virtual patients by perturbing a set of parameters. These virtual patients are generated as variants by using "addvariant".

We end up with an array of variants saved as "variants.mat". This mat contains the list of ~3000 variants.

These variants are now to be simulated with different dose objects. This could be done with scripts but it would be ideal if we import these variants into the sbproj file and simulate via simbiology GUI for both purpose of troubleshooting and dosing.

Is there a way to do this?

Hi, all friends

I am working on building a oral model with "Generic SimBiology PBPK model" and meet some problems about intestinal transit rate. Take duodenum as example, the transit rate is defined as " (kTransportSmallIntestine*organismLengthDuodenum/organismLengthSmallInstestine)*Duodenum.DrugDissolved". I think assuming duodenum transit time is equal to SmallIntestineTransittime*organismLengthDuodenum/organismLengthSmallInstestine, the transit rate constant is the inverse of that,which result in kTransportSmallIntestine*organismLengthSmallInstestine/organismLengthDuodenum, contradicting with the equation in model. Am I wrong?

Besides that, the kTransportSmallIntestine_is defined as _0.693/organismMeanResidenceSmallIntestine in model. Isn't the mean residence time determining the time at which about 63.2% of initial amount having passed through the compartment and inverse of mean residence time determining the transit rate? Why does organismMeanResidenceSmallIntestine correlate with 0.693 which is often seen in half-life associated expression?

Thanks for any comment.

Hi, fellows,

I am a new user of MATLAB and SimBiology. When I open the "Generic SimBiology Physiologically-based Pharmacokinetic (PBPK) model" downloaded from "https://ww2.mathworks.cn/matlabcentral/fileexchange/37752-generic-simbiology-physiologically-based-pharmacokinetic-pbpk-model", I get a note of "Copyright 2012-2018 The MathWorks, Inc. ...". Does that mean I can not access to the model built-in or make any modification?

Thanks for any comment!

New Features

R2019b introduces the new SimBiology Model Analyzer which replaces Task Editor enabling you to do a lot more within the app.

For a detailed look into enhancements with Model Analyzer, we created a few short videos. Below is a list of the new features together with videos describing each feature.

Compatibility considerations with earlier versions of SimBiology

There are a few things that one needs to be aware of if planning to use R2019b with a SimBiology project created in older versions. If you load a project created pre-R2019b, the existing tasks are converted to equivalent programs. However, keep in mind the following for the current version of SimBiology Model Analyzer:

  • Live Plots functionality of the Task Editor is not supported. If Live Plots in the Task Editor is turned on and shows a time plot of simulation results, then an equivalent time plot is added on import to the SimBiology Model Analyzer app with the main difference being that the time plot is updated and displayed after the program finishes (not while it is running).
  • Previously available Calculate Conserved Cycles, Search Model(s), and Generate Report tasks are not supported.
  • Any Group Simulation task is converted to a Scan program.
  • Fit Data program does not support nlinfit as the estimation method. However, the command-line function sbiofit still supports nlinfit.
  • To help with the transition to R2019b, when you open an existing project created in R2019a or earlier, the app creates a backup of the original file. The backup file has the release information suffixed to its name, filename_release.sbproj. For example, if you open an R2019a project named foo.sbproj in the app, the app creates a backup file called foo_R2019a.sbproj.
  • Also, when you open and save a project, the app creates a backup file of the version prior to the saved version of the project. The backup file has the .bak extension (for example, foo.sbproj.bak).

See the complete list of general behavior change, compatibility considerations, and new features in the release notes.