|
addpath('./CIFTI_read_save') |
|
clear;close all;clc; |
|
|
|
|
|
img_size = 192; |
|
mask_path = './mask'; |
|
output_path = './data'; |
|
data_full_path = './Example_Lynch2024_Priors/Lynch_2024_Nature_Priors.mat' |
|
namestr = 'Lynch2024_45subj_Prior' |
|
parcelname = '20NetsParcel' |
|
sampleinterval = 1; |
|
randpermutation = false; |
|
cifti_type = 'parcel_dconn'; |
|
h5file_path = ['./data/',namestr,'_',parcelname,'.h5']; |
|
|
|
if ~isfolder(output_path) |
|
mkdir(output_path); |
|
disp(['Target directory does not exist and is created: ', output_path]); |
|
else |
|
disp(['Target directory exists: ', output_path]); |
|
end |
|
|
|
|
|
LeftMask = load(fullfile(mask_path, 'MSE_Mask.mat')).Regular_Grid_Left_Mask; |
|
RightMask = load(fullfile(mask_path, 'MSE_Mask.mat')).Regular_Grid_Right_Mask; |
|
|
|
left_transmat = load(fullfile(mask_path, 'Left_fMRI2Grid_192_by_192_NN.mat')).grid_mapping; |
|
right_transmat = load(fullfile(mask_path, 'Right_fMRI2Grid_192_by_192_NN.mat')).grid_mapping; |
|
|
|
|
|
load(data_full_path) |
|
|
|
|
|
fmri_data1 = Priors.FC; |
|
assert(size(fmri_data1,1)==59412) |
|
|
|
[LeftSurfData, RightSurfData] = FormatData(fmri_data1,cifti_type,left_transmat,right_transmat,randpermutation,sampleinterval,img_size); |
|
|
|
SaveData(LeftSurfData, RightSurfData,h5file_path) |
|
|
|
|
|
|
|
function [LeftSurfData, RightSurfData] = FormatData(fmri_data,cifti_type,left_transmat,right_transmat,randpermutation,sampleinterval,img_size) |
|
if strcmp(cifti_type, 'dconn') |
|
fmri_data(1:size(fmri_data,1)+1:end) = 0; |
|
end |
|
|
|
if randpermutation |
|
idx = randperm(size(fmri_data, 2)); |
|
idx = idx(1:sampleinterval:size(fmri_data,2)); |
|
else |
|
idx = 1:sampleinterval:size(fmri_data,2); |
|
end |
|
|
|
left_data = fmri_data(1:29696, idx); |
|
right_data = fmri_data(29697:59412, idx); |
|
disp(['Loading data the size of the left hemisphere is ', num2str(size(left_data)), '; the size of the right hemisphere is ', num2str(size(right_data))]); |
|
|
|
|
|
LeftSurfData = reshape(left_transmat * left_data, img_size, img_size, 1,[]); |
|
RightSurfData = reshape(right_transmat * right_data, img_size, img_size,1, []); |
|
|
|
disp(size(LeftSurfData)); |
|
disp(size(RightSurfData)); |
|
disp('here in format data'); |
|
end |
|
|
|
|
|
function SaveData(LeftSurfData, RightSurfData,file_path) |
|
disp(size(LeftSurfData)); |
|
disp(['saving to ' file_path]); |
|
if isfile(file_path) |
|
disp('Output Data Exists. Append Data To The End'); |
|
fileInfo = h5info(file_path,'/LeftData'); |
|
currentSize = fileInfo.Dataspace.Size(4); |
|
else |
|
disp('Output Data Does Not Exist. Creating New Data'); |
|
currentSize = 0; |
|
h5create(file_path, '/LeftData', [size(LeftSurfData,[1,2,3]),Inf], 'Datatype', 'single','ChunkSize',[size(LeftSurfData,[1,2,3]),1]); |
|
h5create(file_path, '/RightData', [size(RightSurfData,[1,2,3]),Inf], 'Datatype', 'single','ChunkSize',[size(RightSurfData,[1,2,3]),1]); |
|
end |
|
|
|
N = size(LeftSurfData,4); |
|
startIndex = [1,1,1,currentSize+1]; |
|
chunkSize = [size(RightSurfData,[1,2,3]),N]; |
|
|
|
h5write(file_path, '/LeftData', single(LeftSurfData),startIndex,chunkSize); |
|
h5write(file_path, '/RightData', single(RightSurfData),startIndex,chunkSize); |
|
|
|
disp('here in save_data'); |
|
end |
|
|
|
|