This example demonstrates using COBRA toolbox commands in MATLAB from python through pymatbridge.
%load_ext pymatbridge
Starting MATLAB on ZMQ socket ipc:///tmp/pymatbridge-57ff5429-02d9-4e1a-8ed0-44e391fb0df7 Send 'exit' command to kill the server ....MATLAB started and connected!
import cobra.test
m = cobra.test.create_test_model("textbook")
The model_to_pymatbridge function will send the model to the workspace with the given variable name.
from cobra.io.mat import model_to_pymatbridge
model_to_pymatbridge(m, variable_name="model")
Now in the MATLAB workspace, the variable name 'model' holds a COBRA toolbox struct encoding the model.
%%matlab
model
model = rev: [95x1 double] metNames: {72x1 cell} b: [72x1 double] metCharge: [72x1 double] c: [95x1 double] csense: [72x1 char] genes: {137x1 cell} metFormulas: {72x1 cell} rxns: {95x1 cell} grRules: {95x1 cell} rxnNames: {95x1 cell} description: [11x1 char] S: [72x95 double] ub: [95x1 double] lb: [95x1 double] mets: {72x1 cell} subSystems: {95x1 cell}
First, we have to initialize the COBRA toolbox in MATLAB.
%%matlab --silent
warning('off'); % this works around a pymatbridge bug
addpath(genpath('~/cobratoolbox/'));
initCobraToolbox();
Commands from the COBRA toolbox can now be run on the model
%%matlab
optimizeCbModel(model)
ans = x: [95x1 double] f: 0.8739 y: [71x1 double] w: [95x1 double] stat: 1 origStat: 5 solver: 'glpk' time: 3.2911
FBA in the COBRA toolbox should give the same result as cobrapy (but maybe just a little bit slower :))
%time
m.optimize().f
CPU times: user 0 ns, sys: 0 ns, total: 0 ns Wall time: 5.48 µs
0.8739215069684909