# HG changeset patch # User jcb-mpl # Date 1619532390 0 # Node ID e93012d3bbf5b4b3ab2590ff178737ce9abfa10a Uploaded diff -r 000000000000 -r e93012d3bbf5 2018_07_compression.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/2018_07_compression.xml Tue Apr 27 14:06:30 2021 +0000 @@ -0,0 +1,134 @@ + + by a factor k + + + + scilab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +**Authors** Jean-Claude Boulet (INRAE). + + +--------------------------------------------------- + +============================ +COMPRESSION OF A MS-CENTROID +============================ + + +----------- +Description +----------- + +This function reduces by a factor k the number of RTs and associated mass spectra. + + +----- +Input +----- + +**MS-centroid** + +A centroid mass spectrum, at the HDF5-scilab format. + +**k** + +The compression factor. + +**option** + +- 1: selects one out of k RTs and associated ms. + +- 2: merges by k the RTs and associated ms + + +------- +Outputs +------- + +**MS-compressed** + +A MS-centroid similar to the input, but with k times less RTs and ms. + + + + + + + + + + diff -r 000000000000 -r e93012d3bbf5 src/mz_1_merge_by_k.sci --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/mz_1_merge_by_k.sci Tue Apr 27 14:06:30 2021 +0000 @@ -0,0 +1,48 @@ +function resbary_out=mz_1_merge_by_k(resbary_in,k) + + // regroupe les TR par k et ajoute les signaux si m/z égaux + + if ~isfield(resbary_in,'time') | ~isfield(resbary_in,'mzdata') then + error('fields time and/or mzdata are missing in resbary_in') + end + + n=max(size(resbary_in.time)); + n2=max(size(resbary_in.mzdata)); + if n~=n2 then + disp('n time ~= n mzdata'); + end + + resbary_out.time=[]; + resbary_out.mzdata=list(); + + index=1; + i=1; + while index <=n-k+1; + resbary_out.time(i)=mean(resbary_in.time(index:index+k-1)); + // regroupement des k mzdata + resbary_out.mzdata(i)=resbary_in.mzdata(index); + for j=1:k-1; + resbary_out.mzdata(i)=[resbary_out.mzdata(i);resbary_in.mzdata(index+j)] + end; + [nul,tri]=gsort(resbary_out.mzdata(i)(:,1),'g','i'); + resbary_out.mzdata(i)=resbary_out.mzdata(i)(tri,:); // tri par m/z croissants + resbary_out.mzdata(i)(:,1)=0.0001*round(10000*resbary_out.mzdata(i)(:,1)); // arrondi à 0.0001 // 1fev20 + + // sommes des signaux pour m/z identiques + resbary_mz=resbary_out.mzdata(i)(:,1); + resbary_mz=unique(resbary_mz); + n_i=max(size(resbary_mz)); + resbary_signal=zeros(n_i,1); + for j=1:n_i; + tri_temp=find(resbary_out.mzdata(i)(:,1)==resbary_mz(j)); + resbary_signal(j)= sum(resbary_out.mzdata(i)(tri_temp,2)); // somme des signaux de même m/z + end; + resbary_out.mzdata(i)=[resbary_mz resbary_signal]; + + // suite de la boucle + index=index+k; + i=i+1; + end; + + +endfunction diff -r 000000000000 -r e93012d3bbf5 src/mz_1_out_of_k.sci --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/mz_1_out_of_k.sci Tue Apr 27 14:06:30 2021 +0000 @@ -0,0 +1,24 @@ +function resbary_out=mz_1_out_of_k(resbary_in,k) + + // extrait 1 TR sur k + + if ~isfield(resbary_in,'time') | ~isfield(resbary_in,'mzdata') then + disp('fields time and/or mzdata are missing in resbary_in') + end + + n=max(size(resbary_in.time)); + + list_to_keep=[1:k:n] + + n2=max(size(list_to_keep)); + + resbary_out.time=resbary_in.time(list_to_keep,:); + + resbary_out.mzdata=list(); + + for i=1:n2; + resbary_out.mzdata(i)=resbary_in.mzdata(list_to_keep(i)); + end + + +endfunction diff -r 000000000000 -r e93012d3bbf5 test-data/._.DS_Store Binary file test-data/._.DS_Store has changed diff -r 000000000000 -r e93012d3bbf5 test-data/VI2016_AC_4Acentroide-1_k1outof3.mat Binary file test-data/VI2016_AC_4Acentroide-1_k1outof3.mat has changed diff -r 000000000000 -r e93012d3bbf5 test-data/VI2016_AC_4Acentroide-1_k_3mean.mat Binary file test-data/VI2016_AC_4Acentroide-1_k_3mean.mat has changed diff -r 000000000000 -r e93012d3bbf5 test-data/VI2016_AC_4Areduit_1centroide.mat Binary file test-data/VI2016_AC_4Areduit_1centroide.mat has changed