https://github.com/zhalehhosseini/GAUGE
Raw File
Tip revision: 21ee00ff18151745c64f343eb09019d7e49dc05f authored by zhalehhosseini on 28 August 2016, 12:08:39 UTC
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
back to top