scieee Science in your language
[en] (orig)

MATLAB scripts for "On the influence of mineral dust on glacial albedo at Nevado Huascarán"

Abstract

MATLAB scripts used to investigate the ice core data and to produce the figures shown in "On the influence of mineral dust on glacial albedo at Nevado Huascarán" (submitted for peer-review, October 2025).

Read accessible full text

MATLAB scripts for "On the influence of mineral dust on glacial albedo at Nevado Huascarán"

Author: Weber, Austin M.
Publisher: Zenodo
DOI: 10.5281/zenodo.17258407
Source: https://zenodo.org/records/17258407/files/Reproduce-Results-and-Figures.pdf
On he in luence o mine al dus on glacial albedo a Ne ado
Huasca án
Aus in M. Webe | By d Pola and Clima e Resea ch Cen e , Columbus, Ohio, USA
No e on dependencies: This sc ip equi es unc ions om Toolboxes and File Exchange submissions ha a e
no a pa o he base MATLAB language. You will need:
• S a is ics and Machine Lea ning Toolbox
• Cu e Fi ing Toolbox
• Clima e Da a Toolbox (G eene e al., 2019)
• Ca ego ical Colo s (Webe , 2025)
De ine he pa h o he da a
da a ile = 'dus -da a-agg ega ed-scnica .xlsx';
Load he da a
colB_5y = eadDus Table(da a ile,'ColB_5y'); % [ug dus / g snow]
summi B_5y = eadDus Table(da a ile,'Summi B_5y'); % [ug dus / g snow]
colB_SNICAR = eadDus Table(da a ile,'ColB_SNICAR'); % [B oadband albedo]
summi B_SNICAR = eadDus Table(da a ile,'Summi B_SNICAR'); % [B oadband albedo]
Compa e o al dus eco ds
age5y = colB_5y.S a Yea ;
age5y_labels = {'1960-4','1965-9','1970-4','1975-9','1980-4','1985-9',...
'1990-4','1995-9','2000-4','2005-9','2010-4','2015-9'};
colB_5y_ o alDus = sum(colB_5y{:,3:end},2);
summi B_5y_ o alDus = sum(summi B_5y{:,3:end},2);
lw=3;
iledlayou (2,2,'TileSpacing','compac ')
nex ile([1 2])
s1=s ai s(age5y,[colB_5y_ o alDus summi B_5y_ o alDus ],...
'LineWid h',lw,...
'Colo ','k');
s1(2).LineS yle=':';
ylim([0 5])
ylabel('To al Dus (µg/g)')
x icks(1960:5:2015)
xlim([1959 2016])
x icklabels(age5y_labels)
lg=legend('Col','Summi ','Loca ion','no hwes ');
lg.IconColumnWid h=15;
1
lg.Box='o ';
upda eFon
upda eG id
nex ile()
s ai s(age5y,colB_5y{:,3:end},...
'LineWid h',lw)
x icks(1960:5:2015)
xlim([1959 2016])
x icklabels(age5y_labels)
ylabel('Col (µg/g)')
lg2=legend('0.63-1.00 µm',...
'1.00-2.52 µm',...
'2.52-5.04 µm',...
'5.04-10.07 µm',...
'10.07-16.00 µm',...
'Loca ion','no hwes ');
lg2.IconColumnWid h=12;
lg2.Box='o ';
upda eFon
upda eG id
upda eColo O de
nex ile
s ai s(age5y,summi B_5y{:,3:end},':',...
'LineWid h',lw)
x icks(1960:5:2015)
xlim([1959 2016])
x icklabels(age5y_labels)
ylabel('Summi (µg/g)')
upda eFon
upda eG id
upda eColo O de
2
Compa e o me (1960-1989) and la e (1990-2019) pe iods
col = epma ({'Col'},[12 1]);
summi = epma ({'Summi '},[12 1]);
o me = epma (1960,[6 1]);
la e = epma (1990,[6 1]);
o me La e Table = a ay2 able([col; summi ],'Va iableNames',{'Si e'});
o me La e Table.To alDus = [colB_5y_ o alDus ; summi B_5y_ o alDus ];
o me La e Table.Pe iod = [ o me ; la e ; o me ; la e ];
%%%
%%% Visualize
%%%
igu e
g oupedSpacedBoxcha ( o me La e Table,'Si e','To alDus ','Pe iod');
colo o de (ca _colo s('colo blind'))
y icks(0.5:0.5:5),y icklabels({'0.5','1.0','1.5','2.0','2.5','3.0','3.5','4.0','4.5'
,'5.0'})
ylabel('Concen a ion (µg/g)')
lg=legend('1960-1989','1990-2019');
lg.Box='o ';
lg.IconColumnWid h=14;
upda eFon
upda eG id
box on
axis squa e
3
%%%
%%% E alua e s a is ical di e ence sco es
%%%
% Tes whe he he means a e s a is ically di e en
h = es 2(colB_5y_ o alDus (1:6),colB_5y_ o alDus (7:12));
i h == 1
p in ('The null hypo hesis is ejec ed. The COL sample means a e s a is ically
di e en .')
else
p in ('The null hypo hesis canno be ejec ed. The COL sample means a e no
s a is ically di e en .')
end
The null hypo hesis is ejec ed. The COL sample means a e s a is ically di e en .
% Tes whe he he medians a e s a is ically di e en
p = anksum(colB_5y_ o alDus (1:6),colB_5y_ o alDus (7:12));
i p < 0.05
p in ('The COL sample medians a e s a is ically di e en .')
else
p in ('The COL sample medians a e no s a is ically di e en .')
end
The COL sample medians a e s a is ically di e en .
% Tes whe he he means a e s a is ically di e en
h = es 2(summi B_5y_ o alDus (1:6),summi B_5y_ o alDus (7:12));
4
i h == 1
p in ('The null hypo hesis is ejec ed. The SUMMIT sample means a e
s a is ically di e en .')
else
p in ('The null hypo hesis canno be ejec ed. The SUMMIT sample means a e no
s a is ically di e en .')
end
The null hypo hesis is ejec ed. The SUMMIT sample means a e s a is ically di e en .
% Tes whe he he medians a e s a is ically di e en
p = anksum(summi B_5y_ o alDus (1:6),summi B_5y_ o alDus (7:12));
i p < 0.05
p in ('The SUMMIT sample medians a e s a is ically di e en .')
else
p in ('The SUMMIT sample medians a e no s a is ically di e en .')
end
The SUMMIT sample medians a e s a is ically di e en .
SNICAR-AD 3 Modeled Albedos
lw=2.5;
x ick als = 1960:5:2015;
yea s = colB_SNICAR.Sample;
close
igu e
% Syn he ic da a o o ganizing he legend-- hese da apoin s will no be shown
% on he cha
syn hX = [1 2 3];
syn hY = [-1 -0.5 0];
plo (syn hX,syn hY,'k-','LineWid h',lw);
hold on
plo (syn hX,syn hY,'k:','LineWid h',lw);
plo (syn hX,syn hY,'k','Ma ke ','o','Ma ke Size',8,'Ma ke FaceColo ','w','LineS yle'
,'none');
plo (syn hX,syn hY,'k','Ma ke ','diamond','Ma ke Size',8,'Ma ke FaceColo ','w','Line
S yle','none');
hold on
% Con ol
ylim([0.714 0.734])
yline(0.732956,'- ','linewid h',lw)
% Col da a
col = plo (x ick als,colB_SNICAR{:,2:end},...
'Colo ','k',...
'LineWid h',lw);
col(1).Ma ke ='o'; col(1).Ma ke Size=8; col(1).Ma ke FaceColo ='w';
col(2).Ma ke ='diamond'; col(2).Ma ke Size=8; col(2).Ma ke FaceColo ='w';
xlim([1958 2017])
x icks(1960:5:2015)
x icklabels(yea s)
5

ylabel('B oadband Albedo')
hold on
% Summi da a
summi = plo (x ick als,summi B_SNICAR{:,2:end},':',...
'Colo ','k',...
'LineWid h',lw);
summi (1).Ma ke ='o'; summi (1).Ma ke Size=8; summi (1).Ma ke FaceColo ='w';
summi (2).Ma ke ='diamond'; summi (2).Ma ke Size=8; summi (2).Ma ke FaceColo ='w';
%ylim([0.8259 0.8306]);
y icks(0.714 : 0.002 : 0.734)
y icklabels({'0.714','0.716','0.718','0.720','0.722','0.724',...
'0.726','0.728','0.730','0.732','0.734'})
lg = legend('Col','Summi ','Dus ','Dus + BC','Con ol',...
'Loca ion','no heas ');
lg.IconColumnWid h=14;
lg.Box='o ';
upda eFon
upda eG id
Compa e o me (1960-1989) and la e (1990-2019) pe iods
col = epma ({'Col'},[12 1]);
summi = epma ({'Summi '},[12 1]);
o me = epma (1960,[6 1]);
la e = epma (1990,[6 1]);
o me La e AlbedoTable = a ay2 able([col; summi ],'Va iableNames',{'Si e'});
6
o me La e AlbedoTable.To alDus = [colB_SNICAR.Albedo; summi B_SNICAR.Albedo];
o me La e AlbedoTable.Pe iod = [ o me ; la e ; o me ; la e ];
%%%
%%% Visualize
%%%
igu e
g oupedSpacedBoxcha ( o me La e AlbedoTable,'Si e','To alDus ','Pe iod');
colo o de (ca _colo s('colo blind'))
ylim([0.714 0.728])
y icks(0.714:0.002:0.728),
y icklabels({'0.714','0.716','0.718',...
'0.720','0.722','0.724','0.726','0.728'})
ylabel('B oadband Albedo')
lg=legend('1960-1989','1990-2019',...
'Loca ion','no hwes ');
lg.Box='o ';
lg.IconColumnWid h=14;
upda eFon
upda eG id
box on
axis squa e
%%%
%%% E alua e s a is ical di e ence sco es
%%%
% Tes whe he he means a e s a is ically di e en
7
h = es 2(colB_SNICAR.Albedo(1:6),colB_SNICAR.Albedo(7:12));
i h == 1
p in ('The null hypo hesis is ejec ed. The COL sample means a e s a is ically
di e en .')
else
p in ('The null hypo hesis canno be ejec ed. The COL sample means a e no
s a is ically di e en .')
end
The null hypo hesis is ejec ed. The COL sample means a e s a is ically di e en .
% Tes whe he he medians a e s a is ically di e en
p = anksum(colB_SNICAR.Albedo(1:6),colB_SNICAR.Albedo(7:12));
i p < 0.05
p in ('The COL sample medians a e s a is ically di e en .')
else
p in ('The COL sample medians a e no s a is ically di e en .')
end
The COL sample medians a e s a is ically di e en .
% Tes whe he he means a e s a is ically di e en
h = es 2(summi B_SNICAR.Albedo(1:6),summi B_SNICAR.Albedo(7:12));
i h == 1
p in ('The null hypo hesis is ejec ed. The SUMMIT sample means a e
s a is ically di e en .')
else
p in ('The null hypo hesis canno be ejec ed. The SUMMIT sample means a e no
s a is ically di e en .')
end
The null hypo hesis is ejec ed. The SUMMIT sample means a e s a is ically di e en .
% Tes whe he he medians a e s a is ically di e en
p = anksum(summi B_SNICAR.Albedo(1:6),summi B_SNICAR.Albedo(7:12));
i p < 0.05
p in ('The SUMMIT sample medians a e s a is ically di e en .')
else
p in ('The SUMMIT sample medians a e no s a is ically di e en .')
end
The SUMMIT sample medians a e s a is ically di e en .
Loga i hmic i ing
%%%
%%% COL
%%%
% Ge da a since 1960
y s = (1960:5:2015)';
col_albedos = colB_SNICAR.Albedo;
% Fi model
8
[ _col,s_col] = i (y s,col_albedos,"log10")
_col =
Linea model Log10:
_col(x) = a*log10(x) + b
Coe icien s (wi h 95% con idence bounds):
a = -0.4948 (-0.7263, -0.2633)
b = 2.352 (1.588, 3.115)
s_col = s uc wi h ields:
sse: 0.00
squa e: 0.69
d e: 10.00
adj squa e: 0.66
mse: 0.00
col_logMdl = @(x) -0.4948*log10(x)+2.352;
% Gene a e he loga i hmic cu e and con idence in e als
x_ i = 1955:1:2105;
[col_ci, col_ i ] = p edin ( _col, x_ i , 0.95);
%%%
%%% SUMMIT
%%%
summi _albedos = summi B_SNICAR.Albedo;
[ _summi ,s_summi ] = i (y s,summi _albedos,"log10")
_summi =
Linea model Log10:
_summi (x) = a*log10(x) + b
Coe icien s (wi h 95% con idence bounds):
a = -0.4491 (-0.7111, -0.1871)
b = 2.204 (1.34, 3.068)
s_summi = s uc wi h ields:
sse: 0.00
squa e: 0.59
d e: 10.00
adj squa e: 0.55
mse: 0.00
summi _logMdl = @(x) -0.4491*log10(x)+2.204;
[summi _ci, summi _ i ] = p edin ( _summi , x_ i , 0.95);
%%%
%%% VISUALIZE
%%%
scalingFac o = 1.2;
close
igu e('uni s','inches','posi ion',[1 1 7/scalingFac o 4/scalingFac o ])
% Col
boundedline(x_ i ,col_ i ,[col_ i -col_ci(:,1), col_ci(:,2)-col_ i ],'-
k','alpha','linewid h',3)
ylabel('B oadband Albedo')
hold on
% Summi
boundedline(x_ i ,summi _ i ,[summi _ i -summi _ci(:,1), summi _ci(:,2)-
summi _ i ],':k','alpha','linewid h',3)
9