function FS = FeatureSelection_1600Template(StyleString)

FSoptions = MakeFSoptions;   
if(isfield(FSoptions,StyleString))
  FS = FeatureSelection_BuildFrom1600(FSoptions.(StyleString));
else
  FS = zeros(1600);
  fprintf('ErRoR!  eRrOr!  ErRoR!\n');
  fprintf('unsupported style string');
end

function FSoptions = MakeFSoptions   
%function FSoptions = MakeFSoptions   
FSoptions.ALL.bRemoveColTex = 0;
FSoptions.ALL.bRemoveBTRS = 0;
FSoptions.ALL.bRemovePosition = 0;
FSoptions.ALL.bRemoveSum = 0;
FSoptions.ALL.bRemoveDx = 1;
FSoptions.ALL.bRemoveDy = 1;
FSoptions.ALL.bRemoveLap = 1;

FSoptions.BTRS_POS = FSoptions.ALL;
FSoptions.BTRS_POS.bRemoveColTex = 1;
FSoptions.BTRS_POS.bRemoveBTRS = 0;
FSoptions.BTRS_POS.bRemovePosition = 0;

FSoptions.ColTex_Pos = FSoptions.ALL;
FSoptions.ColTex_Pos.bRemoveColTex = 0;
FSoptions.ColTex_Pos.bRemoveBTRS = 1;
FSoptions.ColTex_Pos.bRemovePosition = 0;

FSoptions.BTRS = FSoptions.ALL;
FSoptions.BTRS.bRemoveColTex = 1;
FSoptions.BTRS.bRemoveBTRS = 0;
FSoptions.BTRS.bRemovePosition = 1;

FSoptions.ColTex = FSoptions.ALL;
FSoptions.ColTex.bRemoveColTex = 0;
FSoptions.ColTex.bRemoveBTRS = 1;
FSoptions.ColTex.bRemovePosition = 1;

FSoptions.JustPosition = FSoptions.ALL;
FSoptions.JustPosition.bRemoveColTex = 1;
FSoptions.JustPosition.bRemoveBTRS = 1;
FSoptions.JustPosition.bRemovePosition = 0;

FSoptions.NoPosition = FSoptions.ALL;
FSoptions.NoPosition.bRemoveColTex = 0;
FSoptions.NoPosition.bRemoveBTRS = 0;
FSoptions.NoPosition.bRemovePosition = 1;

%double the number of models, the second half will have no features nearby
fns = fieldnames(FSoptions);
nfns = length(fns);
for i = 1:nfns
   name = fns{i};
   Dname = sprintf('%s_Far',name);
   FSoptions.(Dname) = FSoptions.(name);
   FSoptions.(Dname).bRemoveNearby = 1;
end   
  
%triple the number of models, add a set with Dx, then a set with Lap
fns = fieldnames(FSoptions);
nfns = length(fns);
for i = 1:nfns
   name = fns{i};
   Dname = sprintf('%s_WithDerivFeats',name);
   FSoptions.(Dname) = FSoptions.(name);
   FSoptions.(Dname).bRemoveDx = 0;
   FSoptions.(Dname).bRemoveDy = 0;
end   
fns = fieldnames(FSoptions);
nfns = length(fns);
for i = 1:nfns
   name = fns{i};
   Dname = sprintf('%s_WithLap',name);
   FSoptions.(Dname) = FSoptions.(name);
   FSoptions.(Dname).bRemoveLap = 0;
end   