Skip to content

Commit f41ad0c

Browse files
committed
tissue specific plot
1 parent 99ad786 commit f41ad0c

File tree

2 files changed

+72
-50
lines changed

2 files changed

+72
-50
lines changed

Diff for: MATLAB/plot_results.m

+65-43
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,66 @@
11
clc
22
clear
33

4-
% fname = cell(3,1);
5-
fname{1}{1} = '../../outputs/gre_m1_0.dat';
6-
fname{1}{2} = '../../outputs/gre_m1_1.dat';
7-
8-
fname{2}{1} = '../../outputs/se_m1_0.dat';
9-
fname{2}{2} = '../../outputs/se_m1_1.dat';
10-
11-
fname{3}{1} = '../../outputs/ssfp_m1_0.dat';
12-
fname{3}{2} = '../../outputs/ssfp_m1_1.dat';
13-
14-
% fname{4}{1} = '../../outputs/grase_m1_0.dat';
15-
% fname{4}{2} = '../../outputs/grase_m1_1.dat';
16-
4+
file_fieldmap = '../../field_maps/fieldmap_0.dat';
5+
6+
file_m1{1}{1} = '../../outputs/gre_m1_fieldmap_0.dat';
7+
file_m1{1}{2} = '../../outputs/gre_m1_fieldmap_1.dat';
8+
file_m1{2}{1} = '../../outputs/se_m1_fieldmap_0.dat';
9+
file_m1{2}{2} = '../../outputs/se_m1_fieldmap_1.dat';
10+
file_m1{3}{1} = '../../outputs/ssfp_m1_fieldmap_0.dat';
11+
file_m1{3}{2} = '../../outputs/ssfp_m1_fieldmap_1.dat';
12+
13+
file_xyz1{1}{1} = '../../outputs/gre_xyz1_fieldmap_0.dat';
14+
file_xyz1{1}{2} = '../../outputs/gre_xyz1_fieldmap_1.dat';
15+
file_xyz1{2}{1} = '../../outputs/se_xyz1_fieldmap_0.dat';
16+
file_xyz1{2}{2} = '../../outputs/se_xyz1_fieldmap_1.dat';
17+
file_xyz1{3}{1} = '../../outputs/ssfp_xyz1_fieldmap_0.dat';
18+
file_xyz1{3}{2} = '../../outputs/ssfp_xyz1_fieldmap_1.dat';
19+
20+
dim_xyz = 1;
1721
dim_echo = 2;
1822
dim_spin = 3;
1923
dim_vessel_size = 4;
2024
rad_ref_um = 53.367;
2125

22-
TR = 0.2;
23-
EcoSpc = 0.005;
26+
tissue_type = 0; % 0 = extra-vascular, 1 = intra-vascular, [0,1] = combined
27+
[~, mask, fov] = read_fieldmap(file_fieldmap);
2428

25-
signal_magnitude = cell(numel(fname), 1);
26-
for seq = 1:numel(fname)
27-
spins_xy = [];
28-
for i=1:numel(fname{seq})
29-
[m_xyz, dims, scales] = read_spinwalk(fname{seq}{i});
29+
signal_magnitude = cell(numel(file_m1), numel(file_m1{1}));
30+
for seq = 1:numel(file_m1)
31+
for i=1:numel(file_m1{seq})
32+
[m1, dims, scales] = read_spinwalk(file_m1{seq}{i});
33+
[xyz1, ~, ~] = read_spinwalk(file_xyz1{seq}{i});
3034
if dims(4) ~= numel(scales)
3135
warning('Header info is confusing here?')
3236
end
33-
spins_xy = cat(ndims(m_xyz)+1, spins_xy, m_xyz);
37+
38+
m1_t = zeros(numel(scales), 1);
39+
for s=1:numel(scales)
40+
m1_f = filter_spinwalk(m1(:,end,:,s), xyz1(:,end,:,s), tissue_type, mask, fov * scales(s));
41+
m1_t(s) = abs(complex(sum(m1_f(1,:)), sum(m1_f(2,:))));
42+
end
43+
signal_magnitude{seq, i} = m1_t;
3444
end
35-
36-
spins_xy = complex(sum(spins_xy(1,:,:,:,:), dim_spin), sum(spins_xy(2,:,:,:,:), dim_spin) );
37-
signal_magnitude{seq} = abs(spins_xy);
3845
end
3946

4047
clf
4148
vessel_radius = rad_ref_um * scales;
42-
for seq = 1:numel(fname)
43-
% if seq ~= numel(fname)
44-
% subplot(2,1,1);
45-
relative_signal = 100 * (1 - signal_magnitude{seq}(:,:,:,:,1)./ signal_magnitude{seq}(:,:,:,:,2));
46-
relative_signal = squeeze(relative_signal);
47-
h = semilogx(vessel_radius, relative_signal); xlabel('Vessel radius (um)'); ylabel('BOLD Signal %');
48-
hold on;
49-
ylim([0, 7])
50-
% else
49+
for seq = 1:numel(file_m1)
50+
relative_signal = 100 * (1 - signal_magnitude{seq, 1} ./ signal_magnitude{seq, 2});
51+
h = semilogx(vessel_radius, relative_signal); xlabel('Vessel radius (um)'); ylabel('BOLD Signal %');
52+
hold on;
53+
ylim([0, 7])
54+
end
55+
legend('GRE', 'SE', 'SSFP')
56+
57+
58+
%% grase sequence
59+
60+
% file_m1{4}{1} = '../../outputs/grase_m1_0.dat';
61+
% file_m1{4}{2} = '../../outputs/grase_m1_1.dat';
62+
TR = 0.2;
63+
EcoSpc = 0.005;
5164
% subplot(2,1,2)
5265
% relative_signal = signal_magnitude{seq}(:,:,:,:,2) - signal_magnitude{seq}(:,:,:,:,1);
5366
% relative_signal = 100 * (1 - signal_magnitude{seq}(:,:,:,:,1)./ signal_magnitude{seq}(:,:,:,:,2));
@@ -67,15 +80,12 @@
6780
% % title('BOLD Signal')
6881
% colormap(inferno);
6982
% colorbar
70-
% end
71-
end
72-
legend('GRE', 'SE', 'SSFP')
7383

7484
%% stimulated echo
7585
clc
7686
% clear
77-
fname{1} = '/DATA/aaghaeifar/Nextcloud/Projects/microvascular/outputs/ste_m1_0.dat';
78-
fname{2} = '/DATA/aaghaeifar/Nextcloud/Projects/microvascular/outputs/ste_m1_1.dat';
87+
file_m1{1} = '/DATA/aaghaeifar/Nextcloud/Projects/microvascular/outputs/ste_m1_0.dat';
88+
file_m1{2} = '/DATA/aaghaeifar/Nextcloud/Projects/microvascular/outputs/ste_m1_1.dat';
7989

8090
dim_echo = 2;
8191
dim_spin = 3;
@@ -84,8 +94,8 @@
8494

8595

8696
spins_xyz = [];
87-
for i=1:numel(fname)
88-
[m_xyz, dims, scales] = read_spinwalk(fname{i});
97+
for i=1:numel(file_m1)
98+
[m_xyz, dims, scales] = read_spinwalk(file_m1{i});
8999
spins_xyz = cat(ndims(m_xyz)+1, spins_xyz, m_xyz);
90100
end
91101
vessel_radius = rad_ref_um * scales;
@@ -124,7 +134,19 @@
124134
hold off
125135
legend('STE Rest', 'STE Act', 'SE Rest', 'SE Act')
126136

137+
%% random-walk trajectory
138+
clear
139+
clc;
140+
filename = '../../outputs/gre_trajectory_xyz1_fieldmap_0.dat';
141+
[xyz_all, dims, hdr_extra] = read_spinwalk(filename);
142+
size(xyz_all)
143+
xyz_all = xyz_all * 1e6;
144+
n_spins = size(xyz_all, 3);
145+
for s=round(linspace(1, n_spins, 10))
146+
xyz = xyz_all(:,:,s,2);
147+
plot3(xyz(1,:), xyz(2,:), xyz(3,:))
148+
hold on;
149+
end
150+
hold off
127151

128-
129-
130-
152+
% nonzeros(xyz_all)

Diff for: MATLAB/read_spinwalk.m

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
function [m_xyz, dims, hdr_extra] = read_spinwalk(filename)
22

33

4-
fileID = fopen(filename);
5-
hdr_size = fread(fileID, 1, 'int32=>int32');
6-
dims = fread(fileID, 4, 'int32=>int32'); % 3 * n_echo * n_spins * n_sample_length_scales
7-
hdr_extra = fread(fileID, hdr_size/4-numel(dims), 'single=>single');
8-
m_xyz = fread(fileID, prod(dims), 'single=>single');
4+
fileID = fopen(filename);
5+
hdr_size = fread(fileID, 1, 'int32=>int32');
6+
dims = fread(fileID, 4, 'int32=>int32'); % 3 * n_echo * n_spins * n_sample_length_scales
7+
hdr_extra = fread(fileID, hdr_size/4-numel(dims), 'single=>single');
8+
m_xyz = fread(fileID, prod(dims), 'single=>single');
99
fclose(fileID);
10-
m_xyz = reshape(m_xyz, dims(:)');
11-
m_xyz = reshape(m_xyz, [dims(1), dims(2), dims(3), dims(4)]);
10+
m_xyz = reshape(m_xyz, dims(:)');
11+
m_xyz = reshape(m_xyz, [dims(1), dims(2), dims(3), dims(4)]);

0 commit comments

Comments
 (0)