% Testing data generation % The data is prepared from inital analyzed format dMRI data and saved in .mat file. % Input: % % foder_dwi: the location of dmri analyzed image. % ---default=work_folder = ['.\Test_Data']; %halfsize_input : the patchsize preparison paramter. %--- default=1 means the pathsize is 2*1+1 = 3 % stride: the sample location of the training coordinates within a 3D brain % grids. --- default =1 means sample each specific pixels among the entire % brain. % slice_num_start, slice_num_end: start and end slices to be tested. % By default, only one slice is tested. % % Output(saved file): % % data: is a 3x3xMxN matrix that for nerual network input. % label: is a 3x3xN matrix that for neurual network training target. % % Usage: [data,label] = MRH_trainingG(['R:\zhangj18lab\zhangj18labspace\'... %'Zifei_Data\HCP\DeepNetIdea\JesseGray\JesseGray20191223\Porcessed\C'],... %3,20) % - Zifei Liang (zifei.liang@nyumc.org) % Using code please refer our work: % Inferring Maps of Cellular Structures from MRI Signals using Deep Learning % https://www.biorxiv.org/content/10.1101/2020.05.01.072561v1 function [data,fa] = MRH_testingPrep(folder_dwi, halfsize_input, stride,sample_num,slice_num_start, slice_num_end) folder_list=dir(folder_dwi); folder_list(1:2) = []; % count the test samples amount. count=0; for sample_img =sample_num:sample_num%length(file_list) % load all MRI images. dwi2000 = load_untouch_nii([folder_dwi,folder_list(sample_num).name,'\rigidaffine_Lddm_dwi2000.img']); dwi5000 = load_untouch_nii([folder_dwi,folder_list(sample_num).name,'\rigidaffine_Lddm_dwi5000.img']); t2MTONOFF = load_untouch_nii([folder_dwi,folder_list(sample_num).name,'\rigidaffine_lddm_t2MTONOFF.img']); fa_img = load_untouch_nii([folder_dwi,folder_list(sample_num).name,'\rigidaffine_Lddm_fa.img']); fa_mask = load_untouch_nii([folder_dwi,folder_list(sample_num).name,'\Masked_outline.img']); % axon_img = load_untouch_nii(['R:\zhangj18lab\zhangj18labspace\Zifei_Data\HCP\DeepNetIdea\',... % 'JesseGray\JesseGray20191223\Porcessed\Axon_to_C',num2str(sample_img),'.img']); %% data pre-process %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% dwi_data = cat(4,dwi2000.img,dwi5000.img,t2MTONOFF.img); fa_data=fa_img.img; fa_data(isnan(fa_data))=0; dwi_data(isnan(dwi_data))=0; mask_data = fa_mask.img; mask_data(isnan(mask_data))=0; % ns_data = axon_img.img; ns_data(isnan(ns_data))=0; dwi_data=permute(dwi_data,[1,3,2,4]); fa_data=permute(fa_data,[1,3,2]); mask_data = 1- permute(mask_data,[1,3,2]); %ns_data = permute(ns_data,[1,3,2]); dwi_data=double(dwi_data);%./double(max(max(max(max(max(dwi_data)))))); fa_data=double(fa_data);%./double(max(max(max(max(max(fa_data)))))); [A,B,C,D]=size(dwi_data); % figure;subplot(1,2,1);imshow(ns_data(:,:,124),[]); subplot(1,2,2);imshow(fa_data(:,:,124),[]); %clear dwi_img fa_img; [hei,wid,C,channel]=size(dwi_data); %% loop count samples %%%%%%%%%%%%%%%%%%%%%%%%% % for slice=1:228 for slice=slice_num_start:slice_num_end % seg_slice=seg_P60data(:,:,slice); for x = 1+halfsize_input : stride : hei-halfsize_input for y = 1+halfsize_input :stride : wid-halfsize_input subim_input = dwi_data(x-halfsize_input : x+halfsize_input, y-halfsize_input : y+halfsize_input,slice,[1:end]); % subim_label = ns_data(x-halfsize_input : x+halfsize_input, y-halfsize_input : y+halfsize_input,slice); subim_fa = fa_data(x-halfsize_input : x+halfsize_input, y-halfsize_input : y+halfsize_input,slice); count=count+1 data(:, :, :, count) = permute(subim_input,[1,2,4,3]); fa(:, :, :, count) = subim_fa; end end end end % save testing patches in mat file. save testdataPatch_mouse.mat data fa -v7.3;