https://github.com/zhalehhosseini/GAUGE
Tip revision: 21ee00ff18151745c64f343eb09019d7e49dc05f authored by zhalehhosseini on 28 August 2016, 12:08:39 UTC
Add files via upload
Add files via upload
Tip revision: 21ee00f
GCA.m
function GCM=GCA(model)
% calculating gene couplings for every pair of model genes.
% INPUT:
% model: metabolic model in COBRA format with known gene_reaction
% associations in model.rules field
% OUTPUT:
% GCM: the resulting gene coupling table
% Interpretation for element (i, j):
% 0 - uncoupled
% 1 - fully coupled
% 2 - gene i is directionally coupled to j
% 4 - gene j is directionally coupled to i
GCM=-ones(length(model.genes),length(model.genes));
for i=1:length(model.rxns)
if model.rev(i)
model.lb(i)=-1000;
model.ub(i)=1000;
else
model.lb(i)=0;
model.ub(i)=1000;
end
end
for i=1:length(model.genes)
expressed_rxns=find(model.rxnGeneMat(:,i));
for j=1:length(model.genes)
if j==i
continue
end
expressed_rxns_2=expressed_rxns;
x=ones(length(model.genes),1);
x(j)=0;
deleted=-ones(length(model.rxns));
for k=1:length(model.rxns)
a=strcmp(model.rules(k),'');
if a
deleted(k)=-1;
else
deleted(k)=eval(model.rules{k});
end
end
deleted_rxns=find(deleted==0);
model2=model;
model2.lb(deleted_rxns)=0;
model2.ub(deleted_rxns)=0;
all_del_rxns=[];
m=0;
for k=1:length(expressed_rxns_2)
model2.c(:)=0;
model2.c(expressed_rxns_2(k))=1;
[sol]=optimizeCbModel(model2,'max');
max=sol.f;
[sol]=optimizeCbModel(model2,'min');
min=sol.f;
if abs(min)>10e-11 || abs(max)>10e-11
m=1;
break
end
end
if m==0
GCM(i,j)=1;
end
end
end
GCM(1:length(model.genes)+1:length(model.genes)*length(model.genes))=1;
for i=1:length(model.genes)
for j=1:length(model.genes)
if GCM(i,j)==1 && GCM(j,i)==-1
GCM(i,j)=2;GCM(j,i)=3;
end
if GCM(i,j)==-1 && GCM(j,i)==1
GCM(i,j)=3;GCM(j,i)=2;
end
if GCM(i,j)==-1 && GCM(j,i)==-1
GCM(i,j)=0;GCM(j,i)=0;
end
end
end
end