How do I fit multiple curves at once, sharing some fitting parameters and floating others?

13 views (last 30 days)
Hi,
I am new to using MATLAB and SIMBIOLOGY. I am trying to fit 6 binding curves where the ligand is the same throughout the experiment and only the analyte concentrations are different. I want to globally fit all 6 curves to one model, sharing the rate parameters but not sharing the concentration parameters. Is there a way to do this in simbiology? When I am setting up the Data Map I have my independent variable as Time, since binding is measured over time, and I have 6 responses each corresponding to my binding response generated for each analyte concentration. I get an error of "The same model component appears in the left-hand side of multiple elements of the responseMap input argument. The responseMap cannot contain any duplicates." Any help would be great! Attached is the data I am trying to fit.

Accepted Answer

Arthur Goldsipe
Arthur Goldsipe on 1 Jul 2024
Are the 6 different analyte concentrations something you want to specify or estimate? Both of these these are possible in SimBiology, but each is handled differently.
Either way, you will need to reformat your data, "stacking" each of the 6 responses into the same column. You will also need to add another column to the data that gives each of the 6 curves a unique ID (so that SimBiology recognizes that you have 6 different time courses in your data). This ID column is the "group" identifier, since all measurements with the same ID get "grouped" into a single time course / simulation.
Next, you need to figure out how you want to handle the 6 different analyte concentrations.
Option 1: If you want to estimate them, you can follow this example. Namely, you need to configure the CategoryVariableName of each estimate parameter appropriately. For rate parameters, you set this to <None> to indicate the same parameter value is used for each group. For the concentration, set this to <GroupVariableName> to indicate each group has its own estimate.
Option 2: If you want to specify the initial amount (not concentration!) of ligand added for each of these 6 conditions, then I would probably implement that as doses in the data set. Add a column that specifies the initial amount of ligand at time=0 for each of the 6 conditions. (For all other times in the data set, leave that column empty. It will import into MATLAB as NaN, which stands for "not a number", and in this case denotes "missing" data.) Since dosing is additive (that is, it adds to what is already in the model), you will also need to ensure that the initial value for the ligand is zero on the model.
Option 3: If you need more flexibility (for example, specifying the initial ligand conditions as concentration rather than amount) you can create variants instead of doses. (Variants specify "replacement" initial conditions, whereas doses are additive and can be applied at any time during the simulation.) You can still put this variant information in your data, similar to how you'd set up the dosing. The main difference is in how you configure the program to use that data. You can find more details on the variant approach here.
  2 Comments
ALEXANDRA
ALEXANDRA on 1 Jul 2024
Hi,
This is super helpful! Stacking my columns into one column fixed the main issue I was having. I also set up for my ligand concentrations to be variants and made a separate columns for those and it worked great. thanks again!

Sign in to comment.

More Answers (0)

Communities

More Answers in the  SimBiology Community

Categories

Find more on Extend Modeling Environment in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!