Skip to content
Snippets Groups Projects
Commit df0d65ed authored by Maria Engel's avatar Maria Engel
Browse files

Merge branch 'master' into 'main'

Master

See merge request sapme1/hexagonalsampling!6
parents 079c36b3 437d04bc
No related branches found
No related tags found
1 merge request!6Master
......@@ -117,15 +117,12 @@ LArray = unique(sort([LArray L_CAIPI_B]));
isBlippedCAIPI_A = ((ceil(LArray)==LArray) + (LArray<=nSlicesSimultaneously)) > 1;
isBlippedCAIPI_B = ismember(LArray, L_CAIPI_B);
colourCAIPI_A = [217, 83, 25]/255; % red
colourCAIPI_B = [148, 0, 211]/255; % purple
colourOptimum = [34, 139, 34]/255; % green
howFar2Look = 10; % TODO: Find out what to put here!
d_min = zeros(size(LArray));
if doDebug
figure('Name','Sampling grid and alps');
set(gcf, 'Position', [680 693 621 285])
ah = subplot(1,2,1);
end
......@@ -144,19 +141,20 @@ for iL = 1:numel(LArray)
if doDebug
[kyArray, kzArray] = GetGridPoints(3*Lmax, deltak_inplane, sliceSpacing, LArray(iL));
PlotGrid(kyArray, kzArray, sliceSpacing, ah);
title(sprintf('L = %.2f %s = %.2f',LArray(iL), char(hex2dec('0394')), nSlicesSimultaneously/LArray(iL)));
subplot(1,2,2); hold on;
plot(LArray(iL),packingDensityArray(iL),'.','Color','k');
if isBlippedCAIPI_A(iL)
plot(LArray(iL),packingDensityArray(iL),'x','Color',colourCAIPI_A,'MarkerSize',10,'LineWidth',3);
plot(LArray(iL),packingDensityArray(iL),'x','Color',GetSamplingPatternColour(1),'MarkerSize',10,'LineWidth',3);
elseif isBlippedCAIPI_B(iL)
plot(LArray(iL),packingDensityArray(iL),'x','Color',colourCAIPI_B,'MarkerSize',10,'LineWidth',3);
plot(LArray(iL),packingDensityArray(iL),'x','Color',GetSamplingPatternColour(2),'MarkerSize',10,'LineWidth',3);
end
xlabel('L'); ylabel('Packing density [%]');
xlim([Lmin Lmax]); ylim([min(packingDensityArray) 90.7]);
sgtitle(sprintf('L = %.2f',LArray(iL)));
xlim([Lmin Lmax]); ylim([0 90.7]);
axis square;
%% Make GIF
if ~isempty(gifName)
......@@ -213,11 +211,11 @@ if doPlot
plot(LArray, packingDensityArray, 'LineWidth', 3, 'Color', 'k', ...
'DisplayName', 'All feasible sampling patterns');
plot(L_CAIPI_A, packingDensityCAIPI_A, 'x', 'MarkerSize', 10, 'LineWidth', 3, ...
'Color', colourCAIPI_A, 'DisplayName', 'Blipped-CAIPIRINHA - A');
'Color', GetSamplingPatternColour(1), 'DisplayName', 'Blipped-CAIPIRINHA - A');
plot(L_CAIPI_B, packingDensityCAIPI_B, 'x', 'MarkerSize', 10, 'LineWidth', 3, ...
'Color', colourCAIPI_B, 'DisplayName', 'Blipped-CAIPIRINHA - B');
'Color', GetSamplingPatternColour(2), 'DisplayName', 'Blipped-CAIPIRINHA - B');
plot(L_optimum, packingDensity, 'x', 'MarkerSize', 10, 'LineWidth', 3, ...
'Color', colourOptimum, 'DisplayName', 'Optimum sampling');
'Color', GetSamplingPatternColour(0), 'DisplayName', 'Proposed method');
legend;
xlabel('L');
ylabel('Packing density [%]');
......@@ -244,6 +242,9 @@ scatter(ky, kz, 'MarkerEdgeColor', [0.5 0.5 0.5], 'MarkerFaceColor', [0.5 0.5 0.
hold on;
ind0 = find(ky==0);
scatter(ky(ind0:ind0+1), kz(ind0:ind0+1), 'MarkerEdgeColor', [0 0 0], 'MarkerFaceColor', [0 0 0], 'LineWidth', 5);
slabBorderColour = [100 149 237]/255; % light blue
yline(0,'r','LineWidth',3, 'Color', slabBorderColour);
yline(2*pi/sliceSpacing, 'r', 'LineWidth', 3, 'Color', slabBorderColour);
......
function colour = GetSamplingPatternColour(samplingPattern)
% IN
% samplingPattern 0: optimum sampling (as hexagonal as possible)
% 1: blipped-CAIPIRINHA A (Setsompop et al. MRM 2012, Zahneisen et al. MRM 2014)
% 2: blipped-CAIPIRINHA B (Narsude et al. MRM 2016)
% OUT
% colour rgb triplet
%
% Author: Maria Engel
% (c) Cardiff University Brain Research Imaging Centre (CUBRIC), Cardiff University, United Kingdom
switch samplingPattern
case 0
colour = [34, 139, 34]/255; % green
case 1
colour = [217, 83, 25]/255; % red
case 2
colour = [153,50,204]/255; % purple
end
\ No newline at end of file
......@@ -5,6 +5,8 @@ baseFolder = pwd;
doSave = true;
if doSave
gifName = fullfile(baseFolder,'GridAndAlpsGif.gif');
dfws = get(0,'DefaultFigureWindowStyle');
set(0,'DefaultFigureWindowStyle','normal');
else
gifName = [];
end
......@@ -18,5 +20,6 @@ sliceSpacing = FOVinplane/2/Nsim;
[packingDensity, L_optimum, isDegenerate, packingDensityCAIPItmp, L_CAIPItmp] = ...
ComputeMostHexagonalSampling(R, FOVinplane, sliceSpacing, Nsim, [], [], [], [], true, gifName, 0.02);
[packingDensityCAIPI, indCAIPI] = max(packingDensityCAIPItmp);
L_CAIPI = L_CAIPItmp(indCAIPI);
if doSave
set(0,'DefaultFigureWindowStyle',dfws);
end
......@@ -51,17 +51,17 @@ for iNSim = 1:numel(NSimArray)
name = sprintf(', N_{sim} = %i',Nsim);
end
nexttile; hold on;
plot(RArray(1:numel(packingDensity))*Nsim, packingDensity,...
'DisplayName', ['As hexagonal as possible' name], 'LineWidth', 2, 'Color', [34, 139, 34]/255);
plot(RArray(1:numel(packingDensity))*Nsim, packingDensityCAIPI_A, 'Color', [217, 83, 25]/255,...
'DisplayName', ['Blipped-CAIPIRINHA - A' name], 'LineWidth', 2);
plot(RArray(1:min(numel(packingDensity),numel(packingDensityCAIPI_B)))*Nsim, packingDensityCAIPI_B, 'Color', [148, 0, 211]/255,...
'DisplayName', ['Blipped-CAIPIRINHA - B' name], 'LineWidth', 2);
plot(RArray(1:numel(packingDensity))*Nsim, packingDensity, 'LineWidth', 2,...
'DisplayName', ['Proposed method' name], 'Color', GetSamplingPatternColour(0));
plot(RArray(1:numel(packingDensity))*Nsim, packingDensityCAIPI_A, 'LineWidth', 2,...
'DisplayName', ['Blipped-CAIPIRINHA - A' name], 'Color', GetSamplingPatternColour(1));
plot(RArray(1:min(numel(packingDensity),numel(packingDensityCAIPI_B)))*Nsim, packingDensityCAIPI_B, 'LineWidth', 2,...
'DisplayName', ['Blipped-CAIPIRINHA - B' name], 'Color', GetSamplingPatternColour(2));
yline(pi/2/sqrt(3)*100, 'Color', [0.5 0.5 0.5], 'LineWidth', 2, 'DisplayName',...
'Maximum circle packing density, 90.7%');
yline(pi/2/sqrt(3)*100, 'Color', [0.5 0.5 0.5], 'LineWidth', 2,...
'DisplayName', 'Maximum circle packing density, 90.7%');
xlim([Rtot_start Rtot_end]);
ylim([50 92]);
ylim([57 92]);
if iNSim==numel(NSimArray) || doSave==false
xlabel('R_{total}');
legend;
......
......@@ -13,4 +13,4 @@ MakeOptDvsRPlot.m (for Figure 3, this requires https://se.mathworks.com/matlabce
and
MakeExampleGridsPlot (for Figure 4, this requires export_fig code)
\ No newline at end of file
MakeExampleGridsPlot.m (for Figure 4, this also requires export_fig code)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment