/ code / mrxcat_simulations / SaveAsCsv.m
SaveAsCsv.m
 1  %=========================================================================
 2  %    Function to save all simulation .cpx files in subfolders of
 3  %    the ../../data/mrxcat_simulations folder to csv files
 4  %    This file is derived from DisplayMRXCAT.m of the MRXCAT software
 5  %=========================================================================
 6  function [data, fname] = SaveAsCsv()
 7    cd('../../data/mrxcat_simulations');
 8    foldernames = glob ("snr*");
 9  
10    for i = 1:numel(foldernames);
11      [~, foldername] = fileparts (foldernames{i});
12      cd(foldername);
13      files = glob('*.cpx');
14      [~, file] = fileparts (files{1});
15      count = size(files)(1);
16      dest = strcat(pwd, "/csvs");
17    
18      fname = strcat(pwd, "/",  file);
19    
20      %-------------------------------------------------------------------------
21      % load MRXCAT parameter file (acquisition matrix, coils, ...) and update
22      %-------------------------------------------------------------------------
23      load( [fname(1:end) '_par.mat'] );
24    
25      %-------------------------------------------------------------------------
26      % get MRXCAT data
27      %-------------------------------------------------------------------------
28      fid  = fopen( [fname '.cpx'] );
29      data = fread(fid,inf,'float','l');
30      fclose(fid);
31      %-------------------------------------------------------------------------
32      % get sensitivity maps
33      %-------------------------------------------------------------------------
34      fid  = fopen( [fname(1:end) '.sen'] );
35      sen  = fread(fid,inf,'float','l');
36      fclose(fid);
37    
38      %-------------------------------------------------------------------------
39      % reformat to complex data (image and sensitivities)
40      %-------------------------------------------------------------------------
41      data = reshape( data, 2, []);
42      data = data(1,:)+1i*data(2,:);
43      data = reshape( data, Par.acq_matrix(1), Par.acq_matrix(2), Par.acq_matrix(3), Par.ncoils, []);
44      data = permute( data, [1 2 3 5 4] );
45      sen  = reshape( sen, 2, []);
46      sen  = sen(1,:)+1i*sen(2,:);
47      sen  = reshape( sen, Par.acq_matrix(1), Par.acq_matrix(2), Par.acq_matrix(3), Par.ncoils, []);
48      sen  = permute( sen, [1 2 3 5 4] );
49    
50      %-------------------------------------------------------------------------
51      % "coil-combine" data
52      %-------------------------------------------------------------------------
53      sos = sum(data./sen,5);
54      clear sen;
55    
56      SaveData(sos, dest, file);
57  
58      cd("..");
59    end
60  end
61  
62  
63  
64  %=========================================================================
65  %	Save data as csv
66  %=========================================================================
67  function SaveData(data, dest, file)
68    numberimages = numel(data)/(size(data,1)*size(data,2));
69    imageposno = 1;
70  
71    if isreal(data),
72      RealData = 1;       % real data
73    elseif isreal(data*i),
74      RealData = -1;      % imaginary data
75    else
76      RealData = 0;       % complex data
77    end
78  
79    if ~exist(dest)
80      mkdir(dest);
81    end
82  
83    for imageno=1:numberimages
84      if RealData==1,         % real data
85        csvwrite([dest "/" file num2str(imageno) '.csv'], (  (data(:,:,imageno)) )); #transpose(  (data(:,:,imageno)) ));
86      elseif RealData==-1,    % imaginary data
87        csvwrite([dest "/" file num2str(imageno) '.csv'], (  imag(data(:,:,imageno)) )); #transpose(  imag(data(:,:,imageno)) ))
88      else                    % complex data
89        csvwrite([dest "/" file num2str(imageno) '.csv'], (  abs(data(:,:,imageno)) )); #transpose(  abs(data(:,:,imageno)) ));
90      end
91    end
92  end
93