MATLAB Answers


Accessing a variant object

Asked by Deepa Maheshvare on 27 Apr 2019
Latest activity Answered by Jeremy Huard on 29 Apr 2019
I have a variant object of the following form
ContentIndex: Type: Name: Property: Value:
1 parameter A InitialAmount 5
2 species B InitialAmount 10
3 compartment C InitialAmount 15
How to I access the rows with type species alone?
Thanks a lot


Sign in to comment.



More Answers in the  SimBiology Community

1 Answer

Answer by Jeremy Huard on 29 Apr 2019
 Accepted Answer

Hi Deepa,
you can access the variant content with the dot notation.
If your variant is called v, v.Content will be an array of cell array with one row per component in this variant.
That being said, I like to convert variants into a table to handle it. For this you can use the following function:
function tableObj = sbiovariant2table(variantObj)
% tableObj = sbiovariant2table(variantObj)
% Converts the content of a variant to a Table that can be exported to
% Excel with writeTable
content = vertcat(variantObj.Content{:});
tableObj = cell2table(content,'VariableNames',{'Type','Name','Property','Value'});
tableObj.Name = string(tableObj.Name);
tableObj.Type = categorical(tableObj.Type);
tableObj.Property = categorical(tableObj.Property);
tableObj.Properties.Description = variantObj.Name;
With this function you can retrieve all species easily:
tableVar = sbiovariant2table(v);
speciesInVar = tableVar(tableVar.Type == 'species',{'Name','Value'})


Sign in to comment.