How to plot categorical data to compare with SimBiology simulation result?

2 views (last 30 days)
Is there a way to extract a simbiology simulation result for one time point and then overaly the result to compare with actual data? I'd like to create something like this plot below. The x-axis in my case would represent different sections of tissue samples such as stomach or small intestine and all measuremets would be compared with simulation result from day= 5.
  6 Comments
Fearass Zieneddin
Fearass Zieneddin on 10 Mar 2022
Edited: Fearass Zieneddin on 10 Mar 2022
Here's some sample data attached. Each coloumn is labeled for a certain tissue sample (cloumns C and D in excel) which is a catagorical score that ranges from (0-4) that describes the severity of diesase in these tissues. You can see there are multiple measurements that share the same y-value and x-value. So I would like to plot them in groups where my x-axis would display the corresponding tissue something like (colon and stomach). This is my first part of the question. The overall plot would look similar to the one shown above.
example code to extract plot scatter points from the data (how can I overlay the points next to each other as shown above):
%choose color red for group 1
scatter(sample_data.day(1:10, 1), sample_data.colon(1:10, 1),100 , 'red', 'x');
hold on;
scatter(sample_data.day(1:10, 1), sample_data.stomach(1:10, 1),100 , 'red', 'x');
ylim([0 4]); xlim([0 25]);
ylable('histopath severity score');
xlabel('time (days)');
%errorbars reprsent the standard error of the samples collected
errorbar(sample_data(1:10, 1), sample_data.colon_avg(1:10, 1), sample_data.colon_ste(1:10, 1));
errorbar(sample_data(1:10, 1), sample_data.stomach_avg(1:10, 1), sample_data.stomach_ste(1:10, 1));
Part 2: how can I overlay a single time point from my simulation to compare with the data presented in the table? My simulation has a contiuous time scale so I would like to extract the time point t= day 5 and compare it with the tissue measurements

Sign in to comment.

Answers (1)

Arthur Goldsipe
Arthur Goldsipe on 11 Mar 2022
If I understand your question, you're primarily asking how to extract the simulation results at a specific time (for example, 5 days). It sounds like you already have the simulation results, which you obtained by calling sbiosimulate. I'm assuming your simulation time units are day. However, it's not clear to me whether you have those results as a SimData object or as numeric arrays. If you have the results in SimData you can estimate the results at 5 days using the resample method. If you have the results in numeric arrays, you can estimate the resutls at 5 days using the interp1 function. In both cases, I default to the pchip interpolation method. Here's some sample code.
t = 5;
% Case 1: SimData
simdata = sbiosimulate(model);
simdata1 = resample(simdata, t, 'pchip');
[~,x1] = getdata(simdata1);
% Case 2: Numeric arrays
[tManyTimes,xManyTimes] = sbiosimulate(model);
x2 = interp1(tManyTimes, xManyTimes, 5, 'pchip');
% Now plot the data
plot(t, x1, 'o')
plot(t, x2, 'o')

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!