- Parameter mg_per_mL with value 1 and units "milligram/milliliter"
- Parameter g_per_mol with value 1 and units "gram/mole"

1 view (last 30 days)

Show older comments

Hi, all

I want to calculate the intestinal solubility of drug according to intestinal cyclodextrin concentration in a SimBiology model, so I compile a function like:

function [IntestinalAGSolubility] = calculateSolubilityCD(CDConcentration,CDMW,AGMW)

% This is a function to calculate solubility of a drug,AG, according to concentration

% of cyclodextrin (CD). Equation is transformed from phase solubility test.

% AGMW: AG molecular weight (g/mol); CDMW: CD molecular weight (g/mol);

% CDConcentration (mg/mL); IntestinalAGSolubility (mg/mL)

% 0.4653: slope; 0.4409: intercept (mmol/L)

if (0.4653*CDConcentration*1000/CDMW+0.4409)*AGMW>2990.1

IntestinalAGSolubility=2990.1*1000;

elseif (0.4653*CDConcentration*1000/CDMW+0.4409)*AGMW<=2990.1

IntestinalAGSolubility=(0.4653*CDConcentration*1000/CDMW+0.4409)*AGMW*1000;

end

This function is due to the fact that the solubility of AG and CD concentraion is consistent with a equation: S (mmol/L) =0.4653*CD (mmol/L)+0.4409, and maximum solubility is 2990.1 mg/L. Variables in function with their dimension are used in my SimBiology model, which is modified from "generic PBPK model". I have turned on the UnitConversion in program and I call this function in SimBiology APP like ColonSolubility=calculateSolubilityCD(Colon.CD,CDMW,AGMW). The line: IntestinalAGSolubility=2990.1*1000; and IntestinalAGSolubility=(0.4653*CDConcentration*1000/CDMW+0.4409)*AGMW*1000 are coded like this because only by this way I can get the exepexted result that presented in figure. However, value of 2990.1*1000 is not what I want to use in AG solubility (2.990 mg/mL). I am confused why I can not use IntestinalAGSolubility=2.990 in function (which will result in 1000-fold decrease in simulated solubility).

Can anyone explain why this happens and do I make it right in other part of this function? Thanks a lot.

Arthur Goldsipe
on 22 Apr 2020

Hi,

The problem is that you are have written your function calculateSolubilityCD to assume that the input arguments have specific units, but SimBiology does not pass the input arguments in with those units. I would address the issue using the advice from the Tip (ensure input arguments are passed in as dimensionless) as follows:

First, I would create parameters with value 1 and the units of your input and output arguments:

- Parameter mg_per_mL with value 1 and units "milligram/milliliter"
- Parameter g_per_mol with value 1 and units "gram/mole"

Then, I would change

ColonSolubility=calculateSolubilityCD(Colon.CD,CDMW,AGMW)

to

ColonSolubility=mg_per_mL*calculateSolubilityCD(Colon.CD/mg_per_mL,CDMW/g_per_mol,AGMW/g_per_mol)

Finally, you can remove the factors of 1000 from calculateSolubilityCD.

Good luck!

-Arthur

Arthur Goldsipe
on 23 Apr 2020

More Answers in the SimBiology Community

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!