meta data for this page
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
applications:applications [2022/03/07 23:31] – joetulenko | applications:applications [2023/02/16 05:11] (current) – gregbalco | ||
---|---|---|---|
Line 2: | Line 2: | ||
Here are some examples we have come up with so far. Please email any of us on the project [[balcs@bgc.org|Greg Balco]], [[benjamin.laabs@ndsu.edu|Ben Laabs]], and/or [[jtulenko@bgc.org|Joe Tulenko]] with your ideas so we can add them to the list! | Here are some examples we have come up with so far. Please email any of us on the project [[balcs@bgc.org|Greg Balco]], [[benjamin.laabs@ndsu.edu|Ben Laabs]], and/or [[jtulenko@bgc.org|Joe Tulenko]] with your ideas so we can add them to the list! | ||
- | |||
- | **1) Analysis layer examples: the ICE-D X OCTOPUS web application** | ||
- | The [[http:// | ||
- | |||
- | The source code for the ICE-D X OCTOPUS web app can be viewed [[https:// | ||
---- | ---- | ||
- | **2) Data-model comparison between LGM and penultimate moraine ages, and model output from simulations over multiple glaciations** (ie the ice sheet influence on regional climate example). **Hypothesis: | + | **1) Data-model comparison between LGM and penultimate moraine ages, and model output from simulations over multiple glaciations** (ie the ice sheet influence on regional climate example). **Hypothesis: |
See the example output figure below and {{ : | See the example output figure below and {{ : | ||
Line 18: | Line 13: | ||
---- | ---- | ||
- | **3) Testing global expression of Younger Dryas** | + | **2) Testing global expression of Younger Dryas** |
Please find a tutorial and some matlab scripts used to generate some of the plots found in a recent paper from Greg Balco ([[https:// | Please find a tutorial and some matlab scripts used to generate some of the plots found in a recent paper from Greg Balco ([[https:// | ||
Line 28: | Line 23: | ||
---- | ---- | ||
- | **4) Post-Glacial Greenland ice-sheet retreat time-distance diagram** following up on a workshop at the University at Buffalo, we attempted | + | **3) Post-Glacial Greenland ice-sheet retreat time-distance diagram** following up on a workshop at the University at Buffalo, we attempt |
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | The script combs through the new database and selects all ages from ' | ||
+ | |||
+ | < | ||
+ | |||
+ | % Does deglaciation TDD for west Greenland.... | ||
+ | clear all; close all; | ||
+ | |||
+ | %% For MAC users use this set of code to connect to the database | ||
+ | % First set up SSH tunnel on port 12345. | ||
+ | %dbc = database(' | ||
+ | |||
+ | %% For WINDOWS users use this set of code to connect to the database | ||
+ | dbc = database(' | ||
+ | |||
+ | %% get all samples | ||
+ | |||
+ | q1 = [' | ||
+ | 'from iced.base_sample, | ||
+ | 'where iced.base_sample.site_id = iced.base_application_sites.site_id ' ... | ||
+ | 'and iced.base_application_sites.application_id = iced.base_application.id ' ... | ||
+ | 'and iced.base_application.Name = " | ||
+ | |||
+ | result1 = fetch(dbc, | ||
+ | |||
+ | %% get West Greenland samples | ||
+ | |||
+ | blats = [64.8 71]; | ||
+ | %blats = [61 71]; | ||
+ | blons = [-60 -48]; | ||
+ | |||
+ | q2 = [' | ||
+ | ' from iced.base_sample, | ||
+ | ' where iced.base_sample.lat_DD < ' sprintf(' | ||
+ | ' and iced.base_sample.lon_DD < ' sprintf(' | ||
+ | ' and iced.base_sample.lat_DD > ' sprintf(' | ||
+ | ' and iced.base_sample.lon_DD > ' sprintf(' | ||
+ | ' and iced.base_sample.site_id = iced.base_application_sites.site_id ' ... | ||
+ | ' and iced.base_application_sites.application_id = iced.base_application.id ' ... | ||
+ | ' and iced.base_application.Name = " | ||
+ | |||
+ | result2 = fetch(dbc, | ||
+ | |||
+ | locs1 = cell2mat(table2cell(result1)); | ||
+ | locs2 = cell2mat(table2cell(result2)); | ||
+ | |||
+ | %% get age data from everything | ||
+ | |||
+ | q3 = [' | ||
+ | ' | ||
+ | ' | ||
+ | 'from iced.base_sample, | ||
+ | ' where iced.base_sample.id = iced.base_calculatedages.sample_unique_id ' ... | ||
+ | ' and iced.base_sample.site_id = iced.base_application_sites.site_id ' ... | ||
+ | ' and iced.base_application_sites.application_id = iced.base_application.id ' ... | ||
+ | ' and iced.base_application.Name = " | ||
+ | ' and lat_DD < ' sprintf(' | ||
+ | |||
+ | result3 = fetch(dbc, | ||
+ | |||
+ | %% | ||
+ | |||
+ | ages1 = cell2mat(table2cell(result3)); | ||
+ | |||
+ | % And just from boulders | ||
+ | q4 = [q3 ' and iced.base_sample.what like " | ||
+ | |||
+ | result4 = fetch(dbc, | ||
+ | |||
+ | ages2 = cell2mat(table2cell(result4)); | ||
+ | |||
+ | close(dbc); | ||
+ | |||
+ | %% | ||
+ | |||
+ | figure(1); clf; | ||
+ | % Center on Greenland Summit | ||
+ | gisplat = 72 + 36/60; | ||
+ | gisplon = -38.5; | ||
+ | |||
+ | xl = [-0.18 0.15]; | ||
+ | yl = [-0.25 0.25]; | ||
+ | |||
+ | tx = xl(1) + 0.95*diff(xl); | ||
+ | ty = yl(1) + 0.06*diff(yl); | ||
+ | ts = 14; | ||
+ | |||
+ | mw = 0.005; | ||
+ | awx = (1 - 5*mw)/4; | ||
+ | awy = (1-2*mw); | ||
+ | |||
+ | axesm(' | ||
+ | |||
+ | %axesm(' | ||
+ | |||
+ | |||
+ | g1 = geoshow(' | ||
+ | set(get(g1,' | ||
+ | set(gca,' | ||
+ | set(gca,' | ||
+ | hold on; | ||
+ | |||
+ | |||
+ | % Plot all samples | ||
+ | plotm(locs1(:, | ||
+ | % Plot only samples in west greenland selection box | ||
+ | plotm(locs2(:, | ||
+ | |||
+ | |||
+ | plotm(blats([1 1 2 2 1]), | ||
+ | |||
+ | |||
+ | |||
+ | % | ||
+ | |||
+ | set(gca,' | ||
+ | %plotm(gisplat, | ||
+ | %text(tx, | ||
+ | |||
+ | hg = gridm(' | ||
+ | set(hg,' | ||
+ | set(hg,' | ||
+ | |||
+ | temp = jet(12); | ||
+ | for a = 1:12 | ||
+ | maxage = 11000 - (a-1).*500; | ||
+ | minage = maxage - 500; | ||
+ | these = find(ages2(:, | ||
+ | if length(these) > 0 | ||
+ | plotm(ages2(these, | ||
+ | end | ||
+ | end | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | %% Plot | ||
+ | |||
+ | figure(2); clf; | ||
+ | %plot(ages1(:, | ||
+ | hold on; | ||
+ | |||
+ | for a = 1: | ||
+ | xx = [1 1].*ages2(a, | ||
+ | yy = ages2(a,3) + [-1 1].*ages2(a, | ||
+ | plot(xx, | ||
+ | end | ||
+ | |||
+ | plot(ages2(:, | ||
+ | set(gca,' | ||
+ | |||
+ | %% Plot proposed cold periods from Young and others, etc. | ||
+ | |||
+ | hold on; | ||
+ | |||
+ | events = [11620 10410 9090 8050 7300]; | ||
+ | devents = [430 350 260 220 310]; | ||
+ | |||
+ | for a = 1: | ||
+ | xx = [-54 -49]; yy = [events(a) events(a)]; | ||
+ | plot(xx, | ||
+ | xx = [-54 -49 -49 -54 -54]; | ||
+ | yy = [events(a)-devents(a) events(a)-devents(a) events(a)+devents(a) events(a)+devents(a) events(a)-devents(a)]; | ||
+ | patch(xx, | ||
+ | end | ||
+ | |||
+ | %% filter for better AEP performance | ||
+ | p1 = polyfit([-53.5 -49.88], | ||
+ | px = [-54 -49]; py = polyval(p1, | ||
+ | |||
+ | predt = polyval(p1, | ||
+ | okclip = find(abs(predt - ages2(:,3)) < 1000); | ||
+ | plot(ages2(okclip, | ||
+ | |||
+ | aept = ages2(okclip, | ||
+ | aepdt = ages2(okclip, | ||
+ | aepz = -ages2(okclip, | ||
+ | |||
+ | % Get bounding curve | ||
+ | |||
+ | out = aep_bound(aept, | ||
+ | figure(2); | ||
+ | aept_out = out.t; aepx_out = -(out.z + 4900)./ | ||
+ | plot(aepx_out, | ||
+ | |||
+ | %% MCS bounding curve | ||
+ | |||
+ | % Interestingly, | ||
+ | % there are a lot of data, almost all the random iterations have one | ||
+ | % outlier that pulls it out. So it actually doesn' | ||
+ | |||
+ | if 1 | ||
+ | |||
+ | figure; | ||
+ | plot(aept, | ||
+ | p1 = plot(1000, | ||
+ | ni = 100; | ||
+ | intt = 6500: | ||
+ | for a = 1:ni | ||
+ | thist = randn(size(aept)).*aepdt + aept; | ||
+ | thisz = aepz; | ||
+ | out = aep_bound(thist, | ||
+ | delete(p1); | ||
+ | p1 = plot(thist, | ||
+ | plot(out.t, | ||
+ | %inty(a,:) = interp1(out.t, | ||
+ | %plot(intt, | ||
+ | disp(a); | ||
+ | end | ||
+ | |||
+ | end | ||
+ | |||
+ | %% | ||
+ | |||
+ | if 1 | ||
+ | |||
+ | % Make figure comparing this to Holocene " | ||
+ | |||
+ | figure; | ||
+ | diffx = diff(aepx_out)./ | ||
+ | for a = 1: | ||
+ | xx = [aept_out(a) aept_out(a+1) aept_out(a+1)]; | ||
+ | if a == length(diffx) | ||
+ | yy = -[diffx(a) diffx(a) diffx(a)]; | ||
+ | else | ||
+ | yy = -[diffx(a) diffx(a) diffx(a+1)]; | ||
+ | end | ||
+ | plot(xx, | ||
+ | end | ||
+ | |||
+ | |||
+ | set(gca,' | ||
+ | grid on; | ||
+ | for a = 1: | ||
+ | yy = [0 5e-3]; xx = [events(a) events(a)]; | ||
+ | plot(xx, | ||
+ | yy = [0 5e-3 5e-3 0 0]; | ||
+ | xx = [events(a)-devents(a) events(a)-devents(a) events(a)+devents(a) events(a)+devents(a) events(a)-devents(a)]; | ||
+ | patch(xx, | ||
+ | end | ||
+ | |||
+ | end | ||
+ | |||
+ | </ | ||
---- | ---- | ||
- | **5) Determining if measurement precision has gotten better through time** | + | **4) Determining if measurement precision has gotten better through time** |
This is a somewhat simple and fun exercise to investigate whether or not we as a community have been making progressively better measurements (ie improvements to field sample techniques, lab extraction procedures, AMS measurements, | This is a somewhat simple and fun exercise to investigate whether or not we as a community have been making progressively better measurements (ie improvements to field sample techniques, lab extraction procedures, AMS measurements, | ||
Line 61: | Line 304: | ||
< | < | ||
- | %%%% A matlab script for extracting all samples | + | %%%% A matlab script for extracting all 10Be measurements |
%%%% and plotting their % measurement uncertainty against collection date | %%%% and plotting their % measurement uncertainty against collection date | ||
%%%% to see if we collectively as a community have gotten any better over the years | %%%% to see if we collectively as a community have gotten any better over the years | ||
Line 77: | Line 320: | ||
% assuming you set up an ODBC connection: | % assuming you set up an ODBC connection: | ||
- | dbc = database(' | + | dbc = database(' |
% here is some code from Greg Balco for connecting to the database from a | % here is some code from Greg Balco for connecting to the database from a | ||
Line 99: | Line 342: | ||
% AMS measurement error into one table: | % AMS measurement error into one table: | ||
- | q1 = [' | + | %% Query to extract all 10Be data from the alpine database |
- | ' from samples, Be10_Al26_quartz, calculated_ages | + | |
- | ' where samples.sample_name | + | q1 = [' |
- | ' and samples.sample_name | + | ' from iced.base_sample, iced._be10_al26_quartz, iced.base_calculatedages, |
- | ' and samples.date_collected is not null '... | + | ' where iced.base_sample.id |
- | ' and Be10_Al26_quartz.N10_atoms_g is not null '... | + | ' and iced.base_sample.id = iced.base_calculatedages.sample_unique_id |
- | ' and Be10_Al26_quartz.delN10_atoms_g is not null '... | + | ' and iced.base_sample.site_id = iced.base_site.id ' ... |
- | ' and samples.date_collected not like " | + | ' and iced.base_site.id = iced.base_application_sites.site_id ' ... |
- | ' and samples.date_collected not like " | + | ' and iced.base_sample.date_collected is not null ' ... |
+ | ' and iced._be10_al26_quartz.N10_atoms_g is not null ' ... | ||
+ | ' and iced._be10_al26_quartz.delN10_atoms_g is not null ' ... | ||
+ | ' and iced.base_sample.date_collected not like " | ||
+ | ' and iced.base_sample.date_collected not like " | ||
+ | ' and iced.base_application_sites.application_id = 2 ']; | ||
+ | |||
+ | %% If you would like to try the entire database (not just the alpine database) use this query instead of the first one | ||
+ | |||
+ | %q1 = [' | ||
+ | % ' from iced.base_sample, | ||
+ | % ' where iced.base_sample.id = iced._be10_al26_quartz.sample_id ' ... | ||
+ | % ' and iced.base_sample.id = iced.base_calculatedages.sample_unique_id ' ... | ||
+ | % ' and iced.base_sample.date_collected is not null ' ... | ||
+ | % ' and iced._be10_al26_quartz.N10_atoms_g is not null ' ... | ||
+ | % ' and iced._be10_al26_quartz.delN10_atoms_g is not null ' ... | ||
+ | % ' and iced.base_calculatedages.t_LSDn not like " | ||
+ | % ' and iced.base_sample.date_collected not like " | ||
+ | % ' and iced.base_sample.date_collected not like " | ||
+ | |||
+ | %% gather the data and organize it into cell arrays that can be used for plotting | ||
% now, we want to store these selections as a table in matlab | % now, we want to store these selections as a table in matlab | ||
Line 129: | Line 392: | ||
% collected (year + month/12 + day/30) and the age of each sample to make | % collected (year + month/12 + day/30) and the age of each sample to make | ||
% a scatterplot of percent error versus time (with marker size dictated by age) | % a scatterplot of percent error versus time (with marker size dictated by age) | ||
+ | |||
+ | %% Figure 1 - percent error by date measured without detrending the influence of sample concentration | ||
fig1 = figure(1) | fig1 = figure(1) | ||
Line 153: | Line 418: | ||
% (see the script below and the resulting figure that demonstrates this | % (see the script below and the resulting figure that demonstrates this | ||
% what-appears-to-be a power relationship. | % what-appears-to-be a power relationship. | ||
+ | |||
+ | %% Figure 2 establishing the relationship between sample concentration and percent error | ||
fig2 = figure(2) | fig2 = figure(2) | ||
Line 190: | Line 457: | ||
%this is an attempt to detrend the data in concentration vs percent error | %this is an attempt to detrend the data in concentration vs percent error | ||
%space and plot the detrended data against date of measurement. Anyway... | %space and plot the detrended data against date of measurement. Anyway... | ||
+ | |||
+ | %% Figure 3 plotting percent error by date measured after accounting for influence of concentration on percent error | ||
fig3 = figure(3) | fig3 = figure(3) | ||
Line 214: | Line 483: | ||
---- | ---- | ||
- | **6) Is there a correlation between Al/Be ratios and sample elevation? | + | **5) Is there a correlation between Al/Be ratios and sample elevation? |
This example is based off a recent publication ([[https:// | This example is based off a recent publication ([[https:// | ||
Line 239: | Line 508: | ||
% assuming you set up an ODBC connection: | % assuming you set up an ODBC connection: | ||
- | dbc = database(' | + | dbc = database(' |
% here is some code from Greg Balco for connecting to the database from a | % here is some code from Greg Balco for connecting to the database from a | ||
Line 263: | Line 532: | ||
% dictating marker size). | % dictating marker size). | ||
- | q1 = [' | + | %% Query to extract all 10Be Al26 pairs from the alpine database |
- | ' Be10_Al26_quartz.delN26_atoms_g, | + | |
- | ' | + | |
- | ' where samples.sample_name = Be10_Al26_quartz.sample_name '... | + | |
- | ' and samples.sample_name = calculated_ages.sample_name '... | + | |
- | ' and samples.elv_m is not null and Be10_Al26_quartz.N10_atoms_g is not null and Be10_Al26_quartz.N26_atoms_g is not null '... | + | |
- | ' and Be10_Al26_quartz.N26_atoms_g > 1000 and Be10_Al26_quartz.N26_atoms_g not like 0 ']; | + | |
- | % this will store all data in a table that we can format | + | q1 = [' |
- | % for plotting | + | ' iced.base_sample.elv_m, |
+ | ' iced._be10_al26_quartz.N10_atoms_g, | ||
+ | ' iced._be10_al26_quartz.delN10_atoms_g, | ||
+ | ' iced._be10_al26_quartz.N26_atoms_g, | ||
+ | ' iced._be10_al26_quartz.delN26_atoms_g, | ||
+ | ' iced.base_calculatedages.t_LSDn ' ... | ||
+ | ' from iced.base_sample, | ||
+ | ' where iced.base_sample.id = iced._be10_al26_quartz.sample_id ' ... | ||
+ | ' and iced.base_sample.id = iced.base_calculatedages.sample_unique_id ' ... | ||
+ | ' AND iced.base_sample.site_id = iced.base_site.id ' ... | ||
+ | ' and iced.base_site.id = iced.base_application_sites.site_id ' ... | ||
+ | ' and iced.base_sample.elv_m is not NULL ' ... | ||
+ | ' and iced._be10_al26_quartz.N10_atoms_g is not NULL ' ... | ||
+ | ' and iced._be10_al26_quartz.N26_atoms_g is not null ' ... | ||
+ | ' and iced._be10_al26_quartz.N26_atoms_g > 1000 ' ... | ||
+ | ' and iced._be10_al26_quartz.N26_atoms_g not like 0 ' ... | ||
+ | ' and iced.base_application_sites.application_id = 2 ']; | ||
+ | |||
+ | %% If you would like to try the entire database (not just the alpine database) use this query instead of the first one | ||
+ | % Worth noting that in this query, we have not isolated the samples that | ||
+ | % have strictly simple exposure histories so there are probably | ||
+ | % samples in the dataset | ||
+ | |||
+ | %q1 = [' | ||
+ | %' iced.base_sample.elv_m, | ||
+ | %' iced._be10_al26_quartz.N10_atoms_g, | ||
+ | %' iced._be10_al26_quartz.delN10_atoms_g, | ||
+ | %' iced._be10_al26_quartz.N26_atoms_g, | ||
+ | %' iced._be10_al26_quartz.delN26_atoms_g, | ||
+ | %' iced.base_calculatedages.t_LSDn ' ... | ||
+ | %' from iced.base_sample, | ||
+ | %' where iced.base_sample.id = iced._be10_al26_quartz.sample_id ' ... | ||
+ | %' and iced.base_sample.id = iced.base_calculatedages.sample_unique_id ' ... | ||
+ | %' and iced.base_sample.elv_m is not NULL ' ... | ||
+ | %' and iced._be10_al26_quartz.N10_atoms_g is not NULL ' ... | ||
+ | %' and iced._be10_al26_quartz.N26_atoms_g is not null ' ... | ||
+ | %' and iced._be10_al26_quartz.N26_atoms_g > 1000 ' ... | ||
+ | %' and iced._be10_al26_quartz.N26_atoms_g not like 0 ' ... | ||
+ | % and iced.base_calculatedages.t_LSDn not like 0 ' ... | ||
+ | %' AND iced.base_sample.name NOT LIKE " | ||
+ | |||
+ | %% gather the data and organize it into cell arrays | ||
samples.table = fetch(dbc, | samples.table = fetch(dbc, | ||
Line 283: | Line 587: | ||
samples.error = double((samples.cell_array(:, | samples.error = double((samples.cell_array(:, | ||
- | %now time to plot it all! | + | %% The code to maka a figure plotting up all of the samples by elevation vs Al/Be ratio |
+ | fig1 = figure(1) | ||
errorbar(samples.cell_array(:, | errorbar(samples.cell_array(:, | ||
hold on | hold on | ||
Line 291: | Line 596: | ||
' | ' | ||
' | ' | ||
+ | ylim([0 15]) | ||
xlabel(' | xlabel(' | ||
ylabel(' | ylabel(' | ||
Line 308: | Line 614: | ||
---- | ---- | ||
- | **7) Heinrich Stadials aridity drives glacier retreat in the Mediterranean? | + | **6) Heinrich Stadials aridity drives glacier retreat in the Mediterranean? |
This example is a follow up to a paper recently published in Nature Geoscience ([[https:// | This example is a follow up to a paper recently published in Nature Geoscience ([[https:// | ||
Line 319: | Line 625: | ||
---- | ---- | ||
- | **8) Identifying regions of possible heavy moraine degradation** (using the moraine ages and land degradation models incorporated into the middle layer of calculations) and **comparing identified areas of high degradation to geohazards** (plate boundaries and areas of high seismic activity). | + | **7) Identifying regions of possible heavy moraine degradation** (using the moraine ages and land degradation models incorporated into the middle layer of calculations) and **comparing identified areas of high degradation to geohazards** (plate boundaries and areas of high seismic activity). |
**Hypothesis: | **Hypothesis: |