Home > metabolic-economics > metabolic-economics-utils > cba_efm_remove_duplicates.m

cba_efm_remove_duplicates

PURPOSE ^

EFM_REMOVE_DUPLICATES - Remove duplicate columns in Elementary Flux Mode Matrix

SYNOPSIS ^

function M = efm_remove_duplicates(M)

DESCRIPTION ^

 EFM_REMOVE_DUPLICATES - Remove duplicate columns in Elementary Flux Mode Matrix

 M = efm_remove_duplicates(M)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

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

Generated on Fri 12-Feb-2016 20:18:22 by m2html © 2003