0001 function options = drawFlux(map,model,flux,options,varargin)
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
0032
0033
0034 if nargin<4, options=[]; end
0035
0036 if mod(length(varargin),2)==0
0037 for i=1:2:length(varargin)-1
0038 options = setMapOptions(options,map,model,varargin{i},varargin{i+1});
0039 end
0040 else
0041 error('Invalid number of parameters/values');
0042 end
0043
0044 if ~isfield(options,'colorScale')
0045 options.colorScale = cool(100);
0046 end
0047 if ~isfield(options,'scaleType'), options.scaleType=1; end
0048 if ~isfield(options,'lb'), lb=[];else lb = options.lb; end
0049 if ~isfield(options,'ub'), ub=[];else ub = options.ub; end
0050 if ~isfield(options,'rxnDirMultiplier'), options.rxnDirMultiplier = 2; end
0051 if ~isfield(options,'rxnDirFlag'), rxnDirFlag = false; else rxnDirFlag = options.rxnDirFlag; end
0052 rxnListZero = model.rxns(abs(flux)<=1e-9);
0053 absFlag=false;
0054 switch lower(options.scaleType)
0055 case {1, 'linear'}
0056 options.scaleTypeLabel='Linear;';
0057 case {2 ,'linear absolute'}
0058 flux=abs(flux);
0059 absFlag=true;
0060 options.scaleTypeLabel='Linear absolute;';
0061 case {3,'log10'}
0062 flux = log10(abs(flux));
0063 rxnListZero = model.rxns(isinf(flux));
0064 options.scaleTypeLabel='Log10;';
0065 end
0066 if ~isempty(ub)
0067 flux(flux>ub)=ub;
0068 options.overlayUB = [num2str(ub) '+'];
0069 fluxMax = ub;
0070 else
0071 options.overlayUB = num2str(max(flux));
0072 fluxMax = max(flux);
0073 end
0074 if ~isempty(lb)
0075 flux(flux<lb)=lb;
0076 options.overlayLB = [num2str(lb) '-'];
0077 fluxMin = lb;
0078 elseif absFlag
0079 options.overlayLB = '0';
0080 fluxMin = 0;
0081 else
0082 fluxMin = min(flux(~isinf(flux)));
0083 options.overlayLB = num2str(fluxMin);
0084 end
0085 if isempty(find(options.colorScale>1, 1))
0086 options.colorScale = round(options.colorScale*255);
0087 end
0088 flux2 = flux-fluxMin;
0089 if (fluxMax-fluxMin~=0), flux2 = flux2/(fluxMax-fluxMin); end
0090 color = getColorFromColorScale(flux2,options.colorScale);
0091 if isfield(options,'zeroFluxWidth')
0092 global CB_MAP_OUTPUT
0093 if ~isfield(options,'edgeWeight')
0094 s= size(map.connection);
0095 if strcmp(CB_MAP_OUTPUT,'svg')
0096 options.edgeWeight = ones(s(1),1)*9;
0097 else
0098 options.edgeWeight = ones(s(1),1)*2;
0099 end
0100 end
0101 options.edgeWeight(ismember(map.connectionAbb,rxnListZero))=options.zeroFluxWidth;
0102 end
0103 if isfield(options,'zeroFluxColor')
0104 zeroFluxRxns = find(ismember(model.rxns,rxnListZero));
0105 color(zeroFluxRxns,:)=repmat(options.zeroFluxColor,size(zeroFluxRxns,1),1);
0106 end
0107
0108
0109 if rxnDirFlag
0110 options.rxnDir = zeros(length(map.rxnIndex),1);
0111 options.rxnDir(ismember(map.connectionAbb,model.rxns(flux>0))) = 1;
0112 options.rxnDir(ismember(map.connectionAbb,model.rxns(flux<0))) = -1;
0113 end
0114
0115
0116
0117 options = setMapOptions(options,map,model,'edgeColor',color);
0118 options.colorScale=options.colorScale;
0119 options.lb = fluxMin;
0120 options.ub = fluxMax;
0121 options.overlayType = 'Flux';
0122 drawCbMap(map,options);