drawFlux

PURPOSE ^

drawFlux overlays a flux distribution onto a reaction map

SYNOPSIS ^

function options = drawFlux(map,model,flux,options,varargin)

DESCRIPTION ^

drawFlux overlays a flux distribution onto a reaction map

 options = drawFlux(map,model,flux,options,varargin)

INPUTS
 map               map structure
 model             COBRA model structure
 flux              Flux vector to overlay

OPTIONAL INPUTS
 Optional parameters can be set using either the options structure, a
 parameter name / value pair input arguments, or a combination of both.

 options            Structure containing optional parameters
   lb                Lower limit to round smaller values up to.
   ub                Upper limit to round larger values down to.
   colorScale        Colormap
   zeroFluxWidth     Width of arrows of reactions which carry zero flux.
   zeroFluxColor     Color of arrows of reactions which carry zero flux.
   fileName          Name of output file
   rxnDirMultiplier  scaling value of arrows denoting flux direction

  Note: see setMapOptions for additional options.

 varargin          optional parameter name / parameter value pairs

OUTPUT
 options           Structure containing optional parameters.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function options = drawFlux(map,model,flux,options,varargin)
0002 %drawFlux overlays a flux distribution onto a reaction map
0003 %
0004 % options = drawFlux(map,model,flux,options,varargin)
0005 %
0006 %INPUTS
0007 % map               map structure
0008 % model             COBRA model structure
0009 % flux              Flux vector to overlay
0010 %
0011 %OPTIONAL INPUTS
0012 % Optional parameters can be set using either the options structure, a
0013 % parameter name / value pair input arguments, or a combination of both.
0014 %
0015 % options            Structure containing optional parameters
0016 %   lb                Lower limit to round smaller values up to.
0017 %   ub                Upper limit to round larger values down to.
0018 %   colorScale        Colormap
0019 %   zeroFluxWidth     Width of arrows of reactions which carry zero flux.
0020 %   zeroFluxColor     Color of arrows of reactions which carry zero flux.
0021 %   fileName          Name of output file
0022 %   rxnDirMultiplier  scaling value of arrows denoting flux direction
0023 %
0024 %  Note: see setMapOptions for additional options.
0025 %
0026 % varargin          optional parameter name / parameter value pairs
0027 %
0028 %OUTPUT
0029 % options           Structure containing optional parameters.
0030 %
0031 %
0032 %
0033 
0034 if nargin<4, options=[]; end
0035 %Parse optional parameters
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 %rxnDirectionality
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);

Generated on Thu 21-Jun-2012 15:39:23 by m2html © 2003