0001 function notMapped=drawMap(title,pathway,modelA,conditionA,conditionB,modelB,filename,cutOff)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 if nargin<4
0032 conditionB=conditionA;
0033 end
0034
0035 if nargin<5
0036 modelB=modelA;
0037 end
0038
0039 if nargin<8
0040 cutOff=10^-7;
0041 end
0042
0043 if isempty(conditionB)
0044 conditionB=conditionA;
0045 end
0046
0047 if isempty(modelB)
0048 modelB=modelA;
0049 end
0050
0051 objectiveNames=modelA.rxns(modelA.c~=0);
0052 objectiveValues=modelA.c(modelA.c~=0);
0053
0054
0055 conditionA(abs(conditionA)<cutOff)=0;
0056 conditionB(abs(conditionB)<cutOff)=0;
0057
0058
0059 carriesFlux=union(modelA.rxns,modelB.rxns);
0060
0061 rxnsInModel={};
0062
0063 for i=1:numel(pathway.listOfSpecies)
0064 if strcmp(pathway.listOfSpecies(i).type,'PROTEIN')
0065 if ~isempty(pathway.listOfSpecies(i).note)
0066 rxnsInModel=[rxnsInModel;pathway.listOfSpecies(i).note(1)];
0067 end
0068 end
0069 end
0070
0071
0072
0073
0074 rxnBoundsA=find(modelA.ub~=max(modelA.ub) | (modelA.lb~=-max(modelA.ub) & modelA.rev==1) | (modelA.lb~=0 & modelA.rev==0));
0075 rxnBoundsB=find(modelB.ub~=max(modelB.ub) | (modelB.lb~=-max(modelB.ub) & modelB.rev==1) | (modelB.lb~=0 & modelB.rev==0));
0076
0077 notMapped=setdiff(carriesFlux,rxnsInModel);
0078
0079 pathway=colorPathway(pathway,modelA.rxns,conditionA,conditionB,cutOff);
0080 pathway=markPathwayWithFluxes(pathway,modelA.rxns,conditionA,conditionB);
0081
0082 h=figure;
0083 drawPathway(pathway,h,cutOff);
0084
0085
0086 plotLabels(h,pathway);
0087 setTitle(h,pathway,title);
0088
0089
0090 exampleBoxText(1)={'Reaction ID'};
0091 exampleBoxText(2)={'Condition A'};
0092 exampleBoxText(3)={'Condition B'};
0093 if nargin>7
0094 exampleBoxText(4)={'Other data'};
0095 end
0096
0097 additionalText={};
0098 additionalText=[additionalText;{'Objective function'}];
0099
0100 additionalText=[additionalText;{getObjectiveString(true, objectiveNames, objectiveValues)}];
0101 additionalText=[additionalText;{''}];
0102 additionalText=[additionalText;{'Constraints (condition A)'}];
0103
0104 counter=numel(additionalText)+1;
0105 for i=1:length(rxnBoundsA)
0106 additionalText{counter}=[modelA.rxns{rxnBoundsA(i)} ' [' ...
0107 num2str([modelA.lb(rxnBoundsA(i)) modelA.ub(rxnBoundsA(i))]) ']'];
0108 counter=counter+1;
0109 end
0110
0111 additionalText=[additionalText;{''}];
0112 additionalText=[additionalText;{'Constraints (condition B)'}];
0113
0114 counter=numel(additionalText)+1;
0115 for i=1:length(rxnBoundsB)
0116 additionalText{counter}=[modelB.rxns{rxnBoundsB(i)} ' [' ...
0117 num2str([modelB.lb(rxnBoundsB(i)) modelB.ub(rxnBoundsB(i))]) ']'];
0118 counter=counter+1;
0119 end
0120
0121 plotAdditionalInfo(h, pathway, additionalText, exampleBoxText, 1);
0122
0123 if nargin>5
0124 if any(filename)
0125 set(gcf, 'PaperType', 'A4');
0126 orient landscape;
0127 print('-dpdf', '-r600', filename);
0128 fprintf('File saved as %s\n',filename);
0129 end
0130 end
0131 end