EFM_REMOVE_DUPLICATES - Remove duplicate columns in Elementary Flux Mode Matrix M = efm_remove_duplicates(M)
0001 function M = efm_remove_duplicates(M) 0002 0003 % EFM_REMOVE_DUPLICATES - Remove duplicate columns in Elementary Flux Mode Matrix 0004 % 0005 % M = efm_remove_duplicates(M) 0006 0007 if length(M), 0008 0009 duplicate = zeros(size(M,2),1); 0010 0011 %% trick!! 0012 zeta = randn(1,size(M,1)) * M; 0013 [dum,order] = sort(zeta); 0014 M = M(:,order); 0015 0016 n_check = 20; % how many duplicates of one vector are expected at most? 0017 0018 for it = 2:size(M,2), 0019 ind_check = max(1,it-100):it-1; 0020 %% duplicate(it) = M(:,ind_check)'*M(:,it) == M(:,it)'*M(:,it); 0021 duplicate(it) = sum( full( sum( abs( M(:,ind_check) - repmat(M(:,it),1,length(ind_check))) ,1))==0)>0; 0022 end 0023 M = M(:,duplicate==0); 0024 0025 end