library(magrittr)
setwd('/media/erik/catacomb/research')
rec <- data.table::fread('/home/erik/output/df20k_1000.csv')
rec1 <- data.table::fread('/home/erik/output/df20k_1001.csv')
recf <- data.table::fread('/home/erik/output/ff20k_1000.csv')
recf1 <- data.table::fread('/home/erik/output/ff20k_1001.csv')
recf2 <- data.table::fread('/home/erik/output/ff20k_1002.csv')
recg <- data.table::fread('/home/erik/output/fg20k_1000.csv')
recg1 <- data.table::fread('/home/erik/output/fg20k_1001.csv')
rec <- rbind(rec, rec1)
recf <- rbind(recf, rbind(recf1, recf2))
recg <- rbind(recg, recg1)
rm(rec1, recf1, recf2, recg1)
rec10 <- data.table::fread('/home/erik/output/steady_10ky_20kr_7777.csv')
plot(rec$input, rec$n, pch = 20, col = get_palette('charcoal'))
points(rec10$input, rec10$n, pch = 20, col = get_palette('crimson'))
df_stereo <- data.table::fread('/home/erik/output/df_stereo.csv') %>% unlist
# knowles creek pebble counts
peb <- data.table::fread('/media/erik/catacomb/research/knowles_pebble_count.csv')
pebs <- data.table::fread('/media/erik/catacomb/research/knowles_subsurface_pebbles.csv')
# debris-flow transit times at selected fits
df_transit_ad <- data.table::fread('/home/erik/output/df_transits_ad.csv') %>% unlist
df_transit_ch <- data.table::fread('/home/erik/output/df_transits_ch.csv') %>% unlist
df_transit_kp <- data.table::fread('/home/erik/output/df_transits_kp.csv') %>% unlist
df_transit_ks <- data.table::fread('/home/erik/output/df_transits_ks.csv') %>% unlist
cdf_hook <- function(obs) {
# given observations in random order
# returns a vector of the cdf value of each ob
vals <- rep(0, length(obs))
cdf <- emp_cdf(obs)
x <- cdf[ , 1]
y <- cdf[ , 2]
for (i in 1:length(x)) {
if (i == 1) {
vals[obs <= x[i]] <- y[i]
}
if (i > 1) {
vals[obs > x[i-1] & obs <= x[i]] <- y[i]
}
}
vals
}
rarer <- function(d, d50, mod, win = .95, r = 1) {
# given a b-axis width, the d50, and a model fit
# returns the relative rarity of the diameter
# intercept at surface d50
off <- log(d50) * mod$coefficients[2] - log(0.5)
# pred width when less common
upr <- exp((off + log(0.5 + 0.5 * win)) / mod$coefficients[2])
# pred width when less rare
lwr <- exp((off + log(0.5 - 0.5 * win)) / mod$coefficients[2])
# test if d is in range, else recurse up or down
if (d < lwr) {
r <- rarer(d, lwr, mod, r = r * 0.5 / (0.5 - 0.5 * win))
}
if (d > upr) {
r <- rarer(d, upr, mod, r = r * 0.5 / (0.5 + 0.5 * win))
}
# cdf at d
c <- exp(log(d) * mod$coefficients[2] - off)
# relative rarity to d50
r <- r * 0.5 / c
r
}
# kolmogorov-smirnov
# debris-flow input/output rate
drt <- rec$input[rec$ks == min(rec$ks)[1]]
drt_ad <- rec$input[rec$ad == min(rec$ad)[1]]
drt_ch <- rec$input[rec$ch == min(rec$ch)[1]]
drt_kp <- rec$input[rec$kp == min(rec$kp)[1]]
drt_ks <- rec$input[rec$ks == min(rec$ks)[1]]
# fines input/output rate
frt <- recf$input[recf$ks == min(recf$ks)[1]][1]
frt_ad <- recf$input[recf$ad == min(recf$ad)[1]][1]
frt_ch <- recf$input[recf$ch == min(recf$ch)[1]][1]
frt_kp <- recf$input[recf$kp == min(recf$kp)[1]][1]
frt_ks <- recf$input[recf$ks == min(recf$ks)[1]][1]
# gravels input/output rate
grt <- recg$input[recg$ks == min(recg$ks)[1]][1]
grt_ad <- recg$input[recg$ad == min(recg$ad)[1]][1]
grt_ch <- recg$input[recg$ch == min(recg$ch)[1]][1]
grt_kp <- recg$input[recg$kp == min(recg$kp)[1]][1]
grt_ks <- recg$input[recg$ks == min(recg$ks)[1]][1]
# debris-flow events remaining
der <- rec$n[rec$ks == min(rec$ks)[1]][1]
# fines events remaining
fer <- recf$n[recf$ks == min(recf$ks)[1]][1]
# gravel events remaining
ger <- recg$n[recg$ks == min(recg$ks)[1]][1]
# turnover period for debris-flow inputs
tp_ks <- 205.27607176168172
tp_ad <- 318 # ad
tp_ch <- 293 # ch
tp_kp <- 191 # kp
tp <- 208 # ks
# debris-flow events per turnover period
et <- tp * drt
et_ad <- tp_ad * drt_ad
et_ch <- tp_ch * drt_ch
et_kp <- tp_kp * drt_kp
et_ks <- tp_ks * drt_ks
# debris-flow events remaining
er_ad <- rec$n[rec$ad == min(rec$ad)[1]]
er_ch <- rec$n[rec$ch == min(rec$ch)[1]]
er_kp <- rec$n[rec$kp == min(rec$kp)[1]]
er_ks <- rec$n[rec$ks == min(rec$ks)[1]]
# er <- rec$n[rec$ch == min(rec$ch)[1]]
# er <- rec$n[rec$kp == min(rec$kp)[1]]
er <- rec$n[rec$ks == min(rec$ks)[1]]
# fluvial events per turnover period
fet <- tp * frt
fet_ad <- tp_ad * frt_ad
fet_ch <- tp_ch * frt_ch
fet_kp <- tp_kp * frt_kp
fet_ks <- tp_ks * frt_ks
# fluvial events remaining
fer_ad <- recf$n[recf$ad == min(recf$ad)[1]][1]
fer_ch <- recf$n[recf$ch == min(recf$ch)[1]][1]
fer_kp <- recf$n[recf$kp == min(recf$kp)[1]][1]
fer_ks <- recf$n[recf$ks == min(recf$ks)[1]][1]
# fer <- recf$n[recf$ch == min(recf$ch)[1]][1]
# fer <- recf$n[recf$kp == min(recf$kp)[1]][1]
fer <- recf$n[recf$ks == min(recf$ks)[1]][1]
# gravel events per turnover period
get <- tp * grt
get_ad <- tp_ad * grt_ad
get_ch <- tp_ch * grt_ch
get_kp <- tp_kp * grt_kp
get_ks <- tp_ks * grt_ks
# gravel events remaining
ger_ad <- recg$n[recg$ad == min(recg$ad)[1]][1]
ger_ch <- recg$n[recg$ch == min(recg$ch)[1]][1]
ger_kp <- recg$n[recg$kp == min(recg$kp)[1]][1]
ger_ks <- recg$n[recg$ks == min(recg$ks)[1]][1]
# ger <- recg$n[recg$ch == min(recg$ch)[1]][1]
# ger <- recg$n[recg$kp == min(recg$kp)[1]][1]
ger <- recg$n[recg$ks == min(recg$ks)[1]][1]
# total events per turnover
te <- et + fet + get
te_ad <- et_ad + fet_ad + get_ad
te_ch <- et_ch + fet_ch + get_ch
te_kp <- et_kp + fet_kp + get_kp
te_ks <- et_ks + fet_ks + get_ks
# total events remaining
tr <- er + fer + ger
tr_ad <- er_ad + fer_ad + ger_ad
tr_ch <- er_ch + fer_ch + ger_ch
tr_kp <- er_kp + fer_kp + ger_kp
tr_ks <- er_ks + fer_ks + ger_ks
# odds of flux selection
pf <- te / (te + tr)
pf_ad <- te_ad / (te_ad + tr_ad) # 0.5252573
pf_ch <- te_ch / (te_ch + tr_ch) # 0.5194105
pf_kp <- te_kp / (te_kp + tr_kp) # 0.5726348
pf_ks <- te_ks / (te_ks + tr_ks) # 0.5187506
pf_ad <- get_ad / (get_ad + ger_ad) # 0.4093586
pf_ch <- get_ch / (get_ch + ger_ch) # 0.5197172
pf_kp <- get_kp / (get_kp + ger_kp) # 0.5895043
pf_ks <- get_ks / (get_ks + ger_ks) # 0.508744
# ad = 0.7227464
# ch = 0.6812836
# kp = 0.4243889
# ks = 0.5187506
fish <- function(rt, t, k) {
(rt*t)^k*exp(-rt*t) / factorial(k)
}
# look up optimized delivery probability and streampower coefficient k for charcoal samples
crks <- creeks_radio
crks_so <- rater1(creeks, .73, .73)
# convert lengths from to-mouth to hipchain from study area
crks_so$hip <- crks_so$ToMouth_km
crks_so$hip[crks_so$creek_name == 'knowles'] <- crks_so$hip[crks_so$creek_name == 'knowles'] - min(crks_so$hip[crks_so$creek_name == 'knowles'])
# subset bear then knowles
br <- crks_so[crks_so$creek_name == 'bear', ]
kn <- crks_so[crks_so$creek_name == 'knowles', ]
# from km to m
# switch orientation from mouth to initiation point
br$hp <- (max(br$hip) - br$hip) * 1000
kn$hp <- (max(kn$hip) - kn$hip) * 1000
# cumulative lengths
br$cm <- br$hp %>% rev %>% cumsum %>% rev
kn$cm <- kn$hp %>% rev %>% cumsum %>% rev
# upstream count
br$ct <- nrow(br):1
kn$ct <- nrow(kn):1
# average length traveled per segment
br$alt <- br$cm / br$ct
kn$alt <- kn$cm / kn$ct
# mean reach length [m]
mn_ln <- mean(c(br$hp, kn$hp))
# mean sediment distance per year [m/y]
mn_d <- mn_ln / tp
# fluvial inheritance
br$fi <- br$alt / mn_d
kn$fi <- kn$alt / mn_d
# estimate counts for fines fractions
# predict mass by width
gmod <- lm(log(wgt) ~ log(b), data = pebs[pebs$wgt > 0, ])
summary(gmod)
# combine surface pebble counts into single set
surf <- c(peb$site_1a, peb$site_1b, peb$base_1a, peb$base_1b)
# fit the in-place comminution rate
b4 <- pebs[pebs$b >= 4.5 & pebs$b <= 7.5, ]
b4c <- cdf_hook(log(b4$b))
b4d <- data.frame(b = b4$b, lb = log(b4$b), c = b4c)
b4m <- lm(c ~ lb, data = b4d)
summary(b4m)
xs <- seq(4.5, 7.5, .01)
png('comminution_fit.png', height = 17, width = 21, units = 'cm', res = 300)
plot(b4d$b, b4d$c, log = 'x', pch = 20, col = get_palette('ocean', .1),
xlab = 'b-axis width [mm]',
ylab = 'CDF of sizes 4.5-7.5mm')
b4p <- b4m$coefficients[1] + (b4m$coefficients[2] * log(xs))
lines(xs, b4p, lwd = 3, col = get_palette('gold', .5))
legend('topleft', legend = c('subsurface', 'modeled'),
fill = get_palette(c('ocean', 'gold'), .7))
text(7.3, 0.85, labels = 'R2 = 0.997')
dev.off()
# mass log-linear model from 0.25-0.6 g
gd <- pebs[pebs$wgt >= 0.25 & pebs$wgt <= .6, ]
gd$c <- cdf_hook(gd$wgt)
gdm <- lm(c ~ log(wgt), data = gd)
plot(gd$wgt, gd$c)
summary(gdm)
xm <- seq(0.25, 0.6, length.out = nrow(gd))
png('logliner_width_mass.png', height = 17, width = 21, units = 'cm', res = 300)
par(mar = c(5, 5, 5, 3))
plot(b4d$b, b4d$c, log = 'x', pch = 20, col = get_palette('ocean', .1),
xlab = 'b-axis width [mm]',
ylab = 'CDF of samples')
b4p <- b4m$coefficients[1] + (b4m$coefficients[2] * log(xs))
lines(xs, b4p, lwd = 2.5, col = get_palette('gold', .9))
text(7.35, 0.83, labels = 'R2 = 0.997', col = get_palette('gold', 1))
par(new = T)
plot(gd$wgt, gd$c, log = 'x', pch = 20, col = get_palette('charcoal', .1),
xaxt = 'n', yaxt = 'n',
xlab = '', ylab = '')
gdp <- gdm$coefficients[1] + (gdm$coefficients[2] * log(xm))
lines(xm, gdp, lwd = 2.5, col = get_palette('crimson'))
text(.58, 0.8, labels = 'R2 = 0.997', col = get_palette('crimson', 1))
axis(side = 3)
mtext('mass [g]', side = 3, line = 3)
legend('bottomright', legend = c('width', 'width fit', 'mass', 'mass fit'),
fill = get_palette(c('ocean', 'gold', 'charcoal', 'crimson'), .7))
dev.off()
plot(emp_cdf(pebs$wgt), log ='x', xlim = c(0.15, 0.9))
# build data frames for plotting
d <- data.frame(b = surf, c = cdf_hook(surf))
ds <- data.frame(b = pebs$b, c= cdf_hook(pebs$b))
# relative rarity
d$r <- vapply(surf, function(x) rarer(x, median(surf), b4m, .05), 0)
ds$r <- vapply(ds$b, function(x) rarer(x, median(pebs$b), b4m, .05), 0)
png('rarity_fit.png', height = 17, width = 21, units = 'cm', res = 300)
plot(d$b, d$r, log ='xy', xlim = c(2, max(d$b)),
xlab = 'b-axis width [mm]',
ylab = 'relative rarity to D50',
pch = 20, col = get_palette('ocean'))
points(ds$b, ds$r, pch = 20, col = get_palette('crimson'))
abline(h = 1, lty = 2, col = get_palette('charcoal', .7))
text(200, 2.5, labels = 'D50 = 1')
legend('bottomleft', legend = c('surface', 'subsurface', 'D50'),
pch = c(20, 20, NA), lty = c(NA, NA, 2),
col = get_palette(c('ocean', 'crimson', 'charcoal'), .77))
dev.off()
# umbrella distribution
ds$rw <- ds$b / median(pebs$b) # width relative to median
d$rw <- d$b / median(d$b) # width relative to median
# ds$rw[ds$rw < 1] <- median(pebs$b) / ds$b[ds$rw < 1]
# above median, increasing width decreases selection probability
# subtract 1 from rarity weight and max because median == 1 to get relative probability
# subtract from one to indicate decreasing selection likelihood with increasing width
ds$rw[ds$rw < 1] <- 1
ds$rw[ds$rw > 1] <- 1 - (ds$rw[ds$rw > 1] - 1) / (max(ds$rw) - 1)
d$rw[d$rw > 1] <- 1 - (d$rw[d$rw > 1] - 1) / (max(d$rw) - 1)
# below median, decreasing width decreases selection probability
# invert the width ratio
# ds$rw[ds$b < median(ds$b)] <- 1 / ds$rw[ds$b < median(ds$b)]
d$rw[d$b < median(d$b)] <- 1 / d$rw[d$b < median(d$b)]
# convert to relative probability using same transform as above median
# ds$rw[ds$rw > 1] <- 1 - (ds$rw[ds$rw > 1] - 1) / (max(ds$rw) - 1)
d$rw[d$rw > 1] <- 1 - (d$rw[d$rw > 1] - 1) / (max(d$rw) - 1)
# preferred model
m <- lm(c ~ log(b) + rw + b, data = d)
summary(m)
ms <- lm(c ~ log(b) + rw + b, data = ds)
summary(ms)
b4$c <- cdf_hook(b4$wgt)
gm <- lm(c ~ log(wgt), data = b4[b4$wgt != 0, ])
summary(gm)
dp <- predict(m, newdata = d)
msp <- predict(ms, newdata = ds)
png('gravel_fit2.png', height = 17, width = 21, units = 'cm', res = 300)
plot(sort(d$b), sort(dp), log = 'x',
xlab = 'b-axis width [mm]', xlim = c(2, max(d$b)),
ylab = 'CDF of samples', ylim = range(msp),
type = 'l', lwd = 3, col = get_palette('crimson', .7))
points(emp_cdf(d$b), pch = 20, col = get_palette('charcoal', .2))
points(emp_cdf(ds$b), pch = 20, col = get_palette('hardwood', .2))
lines(sort(ds$b), sort(msp), lwd = 3, col = get_palette('crimson', .7))
legend('bottomright', legend = c('surface', 'subsurface', 'modeled'),
fill = get_palette(c('charcoal', 'hardwood', 'crimson'), .8))
dev.off()
# estimated turnover period at selected fits
# convert pmf to cdf and calculate weighted mean transit time
dft_ad <- df_transit_ad %>% cumsum
dft_ad_mn <- weighted.mean(0:10000, df_transit_ad)
dft_ch <- df_transit_ch %>% cumsum
dft_ch_mn <- weighted.mean(0:10000, df_transit_ch)
dft_kp <- df_transit_kp %>% cumsum
dft_kp_mn <- weighted.mean(0:10000, df_transit_kp)
dft_ks <- df_transit_ks %>% cumsum
dft_ks_mn <- weighted.mean(0:10000, df_transit_ks)
# d50_mass <- exp(predict(gmod, newdata = data.frame(b = 41.15)))
d50_mass <- exp(predict(gmod, newdata = data.frame(b = median(pebs$b))))
d2_mass <- exp(predict(gmod, newdata = data.frame(b = 2)))
# sternberg mass loss coefficient over time
# estimating mass from b-axis width
# turnover period from select tests of debris-flow charcoal ages
st_ad <- -(log(d2_mass) - log(d50_mass)) / dft_ad_mn
st_ch <- -(log(d2_mass) - log(d50_mass)) / dft_ch_mn
st_kp <- -(log(d2_mass) - log(d50_mass)) / dft_kp_mn
st_ks <- -(log(d2_mass) - log(d50_mass)) / dft_ks_mn
stm <- -(log(d2_mass) - log(d50_mass)) / mn_dkn
stm <- -(log(d2_mass) - log(d50s_mass)) / mn_dkn
# sternberg equation fit to log width
stw_ad <- log(median(surf)) / dft_ad_mn
stw_ch <- log(median(surf)) / dft_ch_mn
stw_kp <- log(median(surf)) / dft_kp_mn
stw_ks <- log(median(surf)) / dft_ks_mn
xlen <- 1e4
std <- data.frame(
ad = d50_mass * exp(-st_ad * seq(1, dft_ad_mn, length.out = xlen)),
ch = d50_mass * exp(-st_ch * seq(1, dft_ch_mn, length.out = xlen)),
kp = d50_mass * exp(-st_kp * seq(1, dft_kp_mn, length.out = xlen)),
ks = d50_mass * exp(-st_ks * seq(1, dft_ks_mn, length.out = xlen)),
st = d50_mass * exp(-stm * seq(1, dft_ad_mn, length.out = xlen)),
oc = d50_mass * exp(-1.204 * seq(1, dft_ad_mn, length.out = xlen))
)
png('pebble_mass_loss.png', height = 17, width = 21, units = 'cm', res = 300)
magicaxis::magplot(seq(1, dft_ad_mn, length.out = xlen), std$ad, log = 'y',
lwd = 2.5, type = 'l', col = get_palette('ocean', .7),
xlab = 'Residence Time [y]', ylab = 'Pebble Mass [g]')
lines(seq(1, dft_ch_mn, length.out = xlen), std$ch,
lwd = 2.5, col = get_palette('gold', .7))
lines(seq(1, dft_kp_mn, length.out = xlen), std$kp,
lwd = 2.5, col = get_palette('violet', .7))
lines(seq(1, dft_ks_mn, length.out = xlen), std$ks,
lwd = 2.5, col = get_palette('crimson', .7))
legend('topright', legend = c('Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov'),
fill = get_palette(c('ocean', 'gold', 'violet', 'crimson'), .9))
text(50, 0.19, labels = paste0('D50s = ', round(d50_mass, 2), ' g'))
text(240, 0.012, labels = paste0('D2mm = ', round(d2_mass, 3), ' g'))
dev.off()
ss <- data.frame(g = std$ks[std$ks < 2])
ss$c <- cdf_hook(ss$g)
ssm <- lm(c ~ log(g), data = ss)
summary(ssm)
gdm
gmod
# expected median weight in grams
ew <- exp(predict(gmod, newdata = data.frame(b = median(surf))))
ews <- exp(predict(gmod, newdata = data.frame(b = median(pebs$b))))
# relative rarity
d$gr <- vapply(surf, function(x) rarer(x, ew, gdm, .05), 0)
ds$gr <- vapply(ds$b, function(x) rarer(x, ews, gdm, .05), 0) * 1e8
plot(seq(1, dft_ad_mn, length.out = 100), std$ad, log = 'y',
lwd = 2.5, type = 'l', col = get_palette('ocean', .7),
xlab = 'residence time [y]', ylab = 'pebble mass [g]')
std$cad <- cdf_hook(std$ad)
std$cch <- cdf_hook(std$ch)
std$cks <- cdf_hook(std$kp)
std$ckp <- cdf_hook(std$ks)
stadm <- lm(cad ~ log(ad), data = std)
stchm <- lm(cch ~ log(ch), data = std)
stksm <- lm(cks ~ log(kp), data = std)
stkpm <- lm(ckp ~ log(kp), data = std)
summary(stadm)
summary(stchm)
summary(stkpm)
summary(stksm)
log(4.5) / median(log(surf))
log(7.5) / median(log(surf))
b4m$coefficients[2] / (log(7.5) - log(4.5)) / median(log(surf))
d$rks <- vapply(surf, function(x) rarer(x, ew, stksm, .05), 0)
ds$rks <- vapply(ds$b, function(x) rarer(x, ews, stksm, .05), 0)
plot(d$b, d$gr, log = 'xy', xlim = c(2, max(d$b)),
ylim = c(min(c(d$r, d$gr, ds$r, ds$gr)), max(c(d$r, d$gr, ds$r, ds$gr))))
points(d$b, d$r, pch = 20, col = get_palette('gold'))
points(ds$b, ds$gr, pch = 20, col = get_palette('charcoal'))
points(ds$b, ds$r, pch = 20, col = get_palette('crimson'))
plot(ds$b, ds$rks, pch = 20, col = get_palette('crimson'), log = 'xy')
plot(d$b, d$rks, pch = 20, col = get_palette('crimson'), log = 'xy')
points(d$b, d$rks, pch = 20, col = get_palette('crimson'))
df1 <- c('intercept', 'beta')
df1$coefficients <- c(1, )
gdm
off <- (median(log(surf)) * gmod$coefficients[2] + gmod$coefficients[1])
gmod
# sternberg mass loss coefficient over distance
# estimating mean travel distance from bear and knowles
# starting weight is d50 of surface gravel at knowles
stm <- log(predict(gmod, newdata = data.frame(b = median(surf)))) / (mn_ln / 1000)
# 0.816 comparable to O'Conner 2014
# mass remaining after turnover period
(mr_ad <- exp(log(sum(pebs$wgt)) - st_ad * dft_ad_mn)) # 477.58 g remain
(mr_ch <- exp(log(sum(pebs$wgt)) - st_ch * dft_ch_mn)) # 477.58 g remain
(mr_kp <- exp(log(sum(pebs$wgt)) - st_kp * dft_kp_mn)) # 477.58 g remain
(mr_ks <- exp(log(sum(pebs$wgt)) - st_ks * dft_ks_mn)) # 477.58 g remain
(mr_st <- exp(log(sum(pebs$wgt)) - stm * mn_ln / 1000)) # 477.58 g remain
# fines produced by measured gravel in turnover period [g] (50g observed)
fn <- sum(pebs$wgt) - mr_ks # 1243.835 g produced
# ratio of fines to gravel
fn / sum(pebs$wgt)
# fluvial exit probability
# % of gravel converted to fines over turnover period
fep <- fn / sum(pebs$wgt)
# bootstrap charcoal ages
s1 <- sample(dfi, length(dfi), replace = T, prob = dfp)
s2 <- s1
altered <- 0
for (i in seq_along(s1)) {
if (runif(1) > 0.8) {
s2[i] <- s1[i] + sample(index, 1, replace = T, prob = pex_pmf)
altered <- altered + 1
}
}
print(altered / length(s2))
plot(emp_cdf(s1))
plot(emp_cdf(s2))
lines(dfc)
lines(emp_cdf(charcoal$mn[charcoal$facies == 'FG']))
plot(kn, pch = '.', col = 'blue')
points(kn[kn$NODE_ID %in% crks$node_ids[crks$type == 'FG'], ])
t <- seq(0, 37, length.out = 4430)
# probability of exiting single reservoir within turnover period t (k is exit)
pex_pmf <- (fish(1-pf, t, 1)/sum(fish(1-pf,t,1)))
pex_kn <- fish(1-(pf * (mean(kn$hp) / mn_ln)), t, 1) / sum(fish(1-(pf * mean(kn$hp) / mn_ln), t, 1))
pex_br <- fish(1-(pf * (mean(br$hp) / mn_ln)), t, 1) / sum(fish(1-(pf * mean(br$hp) / mn_ln), t, 1))
pex_cd <- fish(1-(pf * (mean(crks_so$ToMouth_km[crks_so$creek_name == 'cedar']) * 1000) / mn_ln), t, 1) /
sum(fish(1-(pf * (mean(crks_so$ToMouth_km[crks_so$creek_name == 'cedar']) * 1000) / mn_ln), t, 1))
pex_gr <- fish(1-(pf * 500 / mn_ln), t, 1) / sum(fish(1-(pf * 500 / mn_ln), t, 1))
# fluvial inheritance at select rates
# pf_ad <- 0.7227464
# pf_ch <- 0.6812836
# pf_kp <- 0.4243889
# pf_ks <- 0.5187506
tp_ad <- 318
tp_ch <- 293
tp_kp <- 191
tp_ks <- 208
sfill / tp_ad / 1416 * 0.128
sfill / tp_ch / 1515 * 0.137
sfill / tp_kp / 2864 * 0.259
sfill / tp_ks / 2109 * 0.191
t <- seq(0, 100, length.out = 4430)
pex_ad <- (fish(0.058, t, 1)/sum(fish(0.058, t, 1)))
pex_ch <- (fish(0.136, t, 1)/sum(fish(0.136, t, 1)))
pex_kp <- (fish(0.011, t, 1)/sum(fish(0.011, t, 1)))
pex_ks <- (fish(0.106, t, 1)/sum(fish(0.106, t, 1)))
fex_ad <- (fish(0.108, t, 1)/sum(fish(0.108, t, 1)))
fex_ch <- (fish(0.075, t, 1)/sum(fish(0.075, t, 1)))
fex_kp <- (fish(0.075, t, 1)/sum(fish(0.075, t, 1)))
fex_ks <- (fish(0.425, t, 1)/sum(fish(0.425, t, 1)))
png('fluvial_travel.png', height = 17, width = 21, units = 'cm', res = 300)
magicaxis::magplot(t * tp_ks , cumsum(pex_ks), log = 'x',
xlab = 'Fluvial Travel Time [y]', xlim = c(50, 35000),
ylab = 'CDF',
type = 'l', lwd = 2.5, col = get_palette('crimson', .7))
lines(t*tp_ch, cumsum(pex_ch), lwd = 2.5, col = get_palette('gold', .7))
lines(t * tp_kp , cumsum(pex_kp), lwd = 2.5, col = get_palette('violet', .7))
lines(t*tp_ad, cumsum(pex_ad), lwd = 2.5, col = get_palette('ocean', .7))
lines(t * tp_ad , cumsum(fex_ad), lty = 2, lwd = 1.5, col = get_palette('ocean', .7))
lines(t * tp_ch , cumsum(fex_ch), lty = 2, lwd = 1.5, col = get_palette('gold', .7))
lines(t * tp_kp , cumsum(fex_kp), lty = 2, lwd = 1.5, col = get_palette('violet', .7))
lines(t * tp_ks , cumsum(fex_ks), lty = 2, lwd = 1.5, col = get_palette('crimson', .7))
legend('topleft', legend = c('Gravels', 'Fines', 'Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov'),
col = get_palette(c('charcoal', 'charcoal', 'ocean', 'gold', 'violet', 'crimson'), .9),
lty = c(1, 2, 1, 1, 1, 1))
dev.off()
library(magicaxis)
png('fluvial_travel.png', height = 17, width = 21, units = 'cm', res = 300)
plot(t*tp_ad, cumsum(pex_ks), log = 'x',
xlab = 'fluvial travel time (slow fraction) [y]', xlim = c(20, 9000),
ylab = 'CDF',
type = 'l', lwd = 2.5, col = get_palette('ocean', .7))
lines(t*tp_ch, cumsum(pex_ks), lwd = 2.5, col = get_palette('gold', .7))
lines(t*tp_kp, cumsum(pex_ks), lwd = 2.5, col = get_palette('violet', .7))
lines(t*tp_ks, cumsum(pex_ks), lwd = 2.5, col = get_palette('crimson', .7))
legend('topleft', legend = c('Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov'),
fill = get_palette(c('ocean', 'gold', 'violet', 'crimson'), .9))
dev.off()
tex <- seq(0, 1, length.out = 4430)
pex_f <- fish(fep, tex, 1)/ sum(fish(fep, tex, 1))
png('fluvial_exit.png', height = 17, width = 21, units = 'cm', res = 300)
magplot(tex * tp_ad, cumsum(pex_t), type = 'l', lwd = 2.5, col = get_palette('violet', .7),
xlab = 'fluvial travel time (fast fraction) [y]',
ylab = 'CDF')
lines(tex * tp_ch, cumsum(pex_t), lwd = 2.5, col = get_palette('gold', .7))
lines(tex * tp_kp, cumsum(pex_t), lwd = 2.5, col = get_palette('crimson', .7))
lines(tex * tp_ks, cumsum(pex_t), lwd = 2.5, col = get_palette('ocean', .7))
legend('topleft', legend = c('Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov'),
fill = get_palette(c('ocean', 'gold', 'violet', 'crimson'), .9))
dev.off()
# gravel deposit count at study sites
# pull type from fluvial1.R
gct_kn <- nrow(crks[crks$creek_name == 'knowles' & crks$type == 'FG', ])
gct_br <- nrow(crks[crks$creek_name == 'bear' & crks$type == 'FG', ])
gct_cd <- 10
gct_gr <- 36
gct_tl <- sum(gct_kn, gct_br, gct_cd, gct_gr)
# fines deposit count at study sites
fct_kn <- nrow(crks[crks$creek_name == 'knowles' & crks$type == 'FF', ])
fct_br <- nrow(crks[crks$creek_name == 'bear' & crks$type == 'FF', ])
fct_cd <- 10
fct_gr <- 36
fct_tl <- sum(fct_kn, fct_br, fct_cd, fct_gr)
dct_kn <- nrow(crks[crks$creek_name == 'knowles' & crks$type == 'DF', ])
dct_br <- nrow(crks[crks$creek_name == 'bear' & crks$type == 'DF', ])
m_df <- (dct_br + dct_kn) * (1 - (gct_br + gct_kn) / (dct_br + dct_kn))
m_g <- fep * (gct_br + gct_kn)
# fines exit probability
ffep <- (m_df + m_g) / (m_df + m_g + fct_br + fct_kn)
# remainder probability (fines)
rpf <- 1 - ffep
# fines exit pmfs
ftrap <- 4
fex_t <- fish(ffep^ftrap, t, 1) / sum(fish(ffep^ftrap, t, 1))
# fpex_t <- fish(ffep, tex, 1)/ sum(fish(ffep, tex, 1))
# debris-flow pmf and index
index <- char_pmfs %>% rownames %>% as.numeric %>% rev
dfc <- emp_cdf(charcoal$mn[charcoal$facies == 'DF'])
dfi <- dfc[ , 1]
dfp <- to_pmf(dfc[ , 2])
#
dfi <- dfi + 50
hill_source <- dfi[dfi < tp_ks]
hill_pmf <- dfp[dfi < tp_ks] / sum(dfp[dfi < tp_ks])
plot(hill_source, cumsum(hill_pmf))
gr_fit <- gravel_fit(n = 10, win = .33)
gr_ad <- gr_fit[[1]]
gr_ch <- gr_fit[[2]]
gr_kp <- gr_fit[[3]]
gr_ks <- gr_fit[[4]]
fn_fit <- fine_fit(mod = .4, hill_rt = 0.0)
fn_ad <- fn_fit[[1]]
fn_ch <- fn_fit[[2]]
fn_kp <- fn_fit[[3]]
fn_ks <- fn_fit[[4]]
png('gravel_fits.png', height = 17, width = 21, units = 'cm', res = 300)
magplot(emp_cdf(charcoal$mn[charcoal$facies == 'FF']), pch = 20, col = get_palette('coral'),
xlab = 'Charcoal Age [y]', ylab = 'CDF', xlim = c(0, 17000))
points(dfc, pch = 20, col = get_palette('hardwood'))
points(emp_cdf(charcoal$mn[charcoal$facies == 'FG']), pch = 20, col = get_palette('charcoal'))
lines(gr_ad, lwd = 2.5, col = get_palette('ocean'))
lines(gr_ch, lwd = 2.5, col = get_palette('gold'))
lines(gr_kp, lwd = 2.5, col = get_palette('violet'))
lines(gr_ks, lwd = 2.5, col = get_palette('crimson'))
# lines(gf[[1]], lwd = 2.5, col = get_palette('ocean'))
# lines(gf[[2]], lwd = 2.5, col = get_palette('gold'))
# lines(gf[[3]], lwd = 2.5, col = get_palette('violet'))
# lines(gf[[4]], lwd = 2.5, col = get_palette('crimson'))
legend('bottomright', legend = c('Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov', 'Debris Flows', 'Gravels', 'Fines'),
pch = c(rep(NA, 4), rep(20, 3)), lty = c(rep(1, 4), rep(NA, 3)),
col = get_palette(c('ocean', 'gold', 'violet', 'crimson', 'hardwood', 'charcoal', 'coral'), .77))
dev.off()
png('fines_fits.png', height = 17, width = 21, units = 'cm', res = 300)
magplot(emp_cdf(charcoal$mn[charcoal$facies == 'FF']), pch = 20, col = get_palette('coral'),
xlab = 'charcoal age', ylab = 'CDF of samples', xlim = c(0, 17000))
points(dfc, pch = 20, col = get_palette('hardwood'))
points(emp_cdf(charcoal$mn[charcoal$facies == 'FG']), pch = 20, col = get_palette('charcoal'))
lines(fn_ad, lwd = 2.5, col = get_palette('ocean'))
lines(fn_ch, lwd = 2.5, col = get_palette('gold'))
lines(fn_kp, lwd = 2.5, col = get_palette('violet'))
lines(fn_ks, lwd = 2.5, col = get_palette('crimson'))
legend('bottomright', legend = c('anderson-darling', 'chi-squared', 'kuiper', 'kolmogorov-smirnov', 'debris flows', 'gravels', 'fines'),
pch = c(rep(NA, 4), rep(20, 3)), lty = c(rep(1, 4), rep(NA, 3)),
col = get_palette(c('ocean', 'gold', 'violet', 'crimson', 'hardwood', 'charcoal', 'coral'), .77))
dev.off()
df_test <- data.table::fread('/home/erik/output/df_test.csv')
df_test <- unlist(df_test)
lines(emp_cdf(gr_test), lwd = 2)
lines(emp_cdf(df_test), lwd = 2)
library(plot3D)
gr_test <- data.table::fread('/home/erik/output/gravels_ks_1kx_1000.csv')
min(gr_test$ks2)
(gr_ks_flux <- gr_test$capture_rate_gravels[gr_test$ks2 == min(gr_test$ks2)][1])
(gr_ks_stor <- gr_test$storage_rate_gravels[gr_test$ks2 == min(gr_test$ks2)][1])
plot3D::points3D(gr_test$capture_rate_gravels, gr_test$storage_rate_gravels, gr_test$ks2, ticktype = 'detailed',
xlab = 'flux rate', ylab = 'storage rate', zlab = 'ks test', pch = 20,
phi = 30, theta = 310)
plot(emp_cdf(gr_test$ks2))
magplot(gr_test$storage_rate, gr_test$ks2,
xlab = 'storage rate', ylab = 'ks test')
plot3D::points3D(gr_test$capture_rate_fines, gr_test$storage_rate_fines, gr_test$ks2, ticktype = 'detailed',
xlab = 'flux rate', ylab = 'storage rate', zlab = 'ks test', pch = 20,
phi = 30, theta = 310)
gr_test_ad <- data.table::fread('/home/erik/output/gravels_ad_1kx_1000.csv')
min(gr_test_ad$ad2)
(gr_ad_flux <- gr_test_ad$capture_rate_gravels[gr_test_ad$ad2 == min(gr_test_ad$ad2)][1])
(gr_ad_stor <- gr_test_ad$storage_rate_gravels[gr_test_ad$ad2 == min(gr_test_ad$ad2)][1])
plot3D::points3D(gr_test_ad$capture_rate_gravels, gr_test_ad$storage_rate_gravels, gr_test_ad$ad2, ticktype = 'detailed',
xlab = 'capture rate', ylab = 'storage rate', zlab = 'ad test', pch = 20,
phi = 20, theta = 310)
gr_test_ad <- gr_test_ad[gr_test_ad$ad2 < 2, ]
plot3D::points3D(gr_test_ad$capture_rate_gravels, gr_test_ad$storage_rate_gravels, gr_test_ad$ad2, ticktype = 'detailed',
xlab = 'capture rate', ylab = 'storage rate', zlab = 'ad test', pch = 20,
phi = 20, theta = 310)
plot(emp_cdf(gr_test_ad$ad2))
(gr_ad_flux <- gr_test_ad$capture_rate_fines[gr_test_ad$ad2 == min(gr_test_ad$ad2)][1])
(gr_ad_stor <- gr_test_ad$storage_rate_fines[gr_test_ad$ad2 == min(gr_test_ad$ad2)][1])
plot3D::points3D(gr_test_ad$capture_rate_fines, gr_test_ad$storage_rate_fines, gr_test_ad$ad2, ticktype = 'detailed',
xlab = 'capture rate', ylab = 'storage rate', zlab = 'ad test', pch = 20)
magplot(gr_test_ad$storage_rate, gr_test_ad$ad2,
xlab = 'storage rate', ylab = 'Anderson-Darling test',
pch = 20, col = get_palette('crimson'))
gr_test_ch <- data.table::fread('/home/erik/output/gravels_ch_1kx_1000.csv')
gr_test_ch <- rbind(gr_test_ch,
data.table::fread('/home/erik/output/gravels_ch_10kx_1001.csv'))
plot(emp_cdf(gr_test_ch$ch))
min(gr_test_ch$ch)
(gr_ch_flux <- gr_test_ch$capture_rate_gravels[gr_test_ch$ch == min(gr_test_ch$ch)][1])
(gr_ch_stor <- gr_test_ch$storage_rate_gravels[gr_test_ch$ch == min(gr_test_ch$ch)][1])
plot3D::points3D(gr_test_ch$capture_rate_gravels, gr_test_ch$storage_rate_gravels, gr_test_ch$ch, ticktype = 'detailed',
xlab = 'capture rate', ylab = 'storage rate', zlab = 'ch test', pch = 20,
phi = 30, theta = 310)
gr_test_ch <- gr_test_ch[gr_test_ch$ch < 4]
plot3D::points3D(gr_test_ch$capture_rate_gravels, gr_test_ch$storage_rate_gravels, gr_test_ch$ch, ticktype = 'detailed',
xlab = 'capture rate', ylab = 'storage rate', zlab = 'ch test', pch = 20,
phi = 30, theta = 310)
par(mar = c(5, 5, 3, 5))
magplot(gr_test_ch$storage_rate, gr_test_ch$ch,
xlab = 'storage rate', ylab = 'Chi-squared test',
pch = 20, col = get_palette('gold'))
par(new = T)
magplot(gr_test_ad$storage_rate, gr_test_ad$ad2,
pch = 20, col = get_palette('crimson'),
xaxt = 'n', yaxt = 'n',
xlab = '', ylab = '')
axis(side = 4)
mtext('Anderson-Darling test', side = 4, line = 3)
gr_test_kp <- data.table::fread('/home/erik/output/gravels_kp_1kx_1000.csv')
min(gr_test_kp$kp)
(gr_kp_flux <- gr_test_kp$capture_rate_gravels[gr_test_kp$kp == min(gr_test_kp$kp)][1])
(gr_kp_stor <- gr_test_kp$storage_rate_gravels[gr_test_kp$kp == min(gr_test_kp$kp)][1])
plot3D::points3D(gr_test_kp$capture_rate_gravels, gr_test_kp$storage_rate_gravels, gr_test_kp$kp, ticktype = 'detailed',
xlab = 'capture rate', ylab = 'storage rate', zlab = 'kp test', pch = 20,
phi = 30, theta = 310)
gr_test_kp <- gr_test_kp[gr_test_kp$kp < .3, ]
plot3D::points3D(gr_test_kp$capture_rate_gravels, gr_test_kp$storage_rate_gravels, gr_test_kp$kp, ticktype = 'detailed',
xlab = 'capture rate', ylab = 'storage rate', zlab = 'kp test', pch = 20,
phi = 30, theta = 310)
(gr_kp_fluxf <- gr_test_kp$capture_rate_fines[gr_test_kp$kp == min(gr_test_kp$kp)][1])
(gr_kp_storf <- gr_test_kp$storage_rate_fines[gr_test_kp$kp == min(gr_test_kp$kp)][1])
plot3D::points3D(gr_test_kp$capture_rate_fines, gr_test_kp$storage_rate_fines, gr_test_kp$kp, ticktype = 'detailed',
xlab = 'capture rate', ylab = 'storage rate', zlab = 'kp test', pch = 20)
magplot(gr_test_kp$storage_rate, gr_test_kp$kp,
xlab = 'storage rate', ylab = 'Kuiper test',
pch = 20, col = get_palette('violet'))
log(gr_ks_stor) / log(1 - gr_ks_flux)
log(gr_ks_stor) / log(1 - pf_ks)
log(gr_ad_stor) / log(1 - gr_ad_flux)
log(gr_ad_stor) / log(1 - pf_ad)
log(gr_ch_stor) / log(1 - gr_ch_flux)
log(gr_ch_stor) / log(1 - pf_ch)
log(gr_kp_stor) / log(gr_kp_flux)
log(gr_kp_stor) / log(0.48)
library(magicaxis)
gr_stereo <- data.table::fread('/home/erik/output/gravels_stereo.csv')
gr_stereo_ad <- data.table::fread('/home/erik/output/gravels_stereo_ad.csv')
gr_stereo_ch <- data.table::fread('/home/erik/output/gravels_stereo_ch.csv')
gr_stereo_kp <- data.table::fread('/home/erik/output/gravels_stereo_kp.csv')
gr_stereo_ks <- data.table::fread('/home/erik/output/gravels_stereo_ks.csv')
fn_stereo_ad <- data.table::fread('/home/erik/output/fines_stereo_ad.csv')
fn_stereo_kp <- data.table::fread('/home/erik/output/fines_stereo_kp.csv')
magicaxis::magplot(emp_cdf(charcoal$mn[charcoal$facies == 'FF']), pch = 20, col = get_palette('coral'),
xlab = 'charcoal age', ylab = 'CDF of samples', xlim = c(0, 17000))
points(dfc, pch = 20, col = get_palette('hardwood'))
points(emp_cdf(charcoal$mn[charcoal$facies == 'FG']), pch = 20, col = get_palette('charcoal'))
lines(emp_cdf(fn_stereo_kp %>% unlist), lwd = 1.5, col = get_palette('violet', .7))
lines(emp_cdf(fn_stereo_ad %>% unlist), lwd = 1.5, col = get_palette('ocean', .7))
lines(emp_cdf(gr_stereo_ks %>% unlist), lwd = 1.5, col = get_palette('crimson', .7))
lines(emp_cdf(gr_stereo_ad %>% unlist), lwd = 1.5, col = get_palette('ocean', .7))
lines(emp_cdf(gr_stereo_ch %>% unlist), lwd = 1.5, col = get_palette('gold', .7))
lines(emp_cdf(gr_stereo_kp %>% unlist), lwd = 1.5, col = get_palette('violet', .7))
df_stereo <- data.table::fread('/home/erik/output/debris_flows_stereo.csv')
lines(emp_cdf(df_stereo %>% unlist))
# bootstrap gravel ages 3
gravel_synth <- function(win = fep) {
gad <- sample(dfi, length(dfi), replace = TRUE, prob = dfp)
gch <- sample(dfi, length(dfi), replace = TRUE, prob = dfp)
gkp <- sample(dfi, length(dfi), replace = TRUE, prob = dfp)
gks <- sample(dfi, length(dfi), replace = TRUE, prob = dfp)
for (i in 1:length(dfi)) {
rd_ad <- runif(1)
rd_ch <- runif(1)
rd_kp <- runif(1)
rd_ks <- runif(1)
# pf is exit probability
# rd > pf means deposit did not exit
# pex controls steepness of curve along x-axis
# win controls % of CDF affected on y-axis
if (rd_ad <= (1 - pf_ad) * win) {
gad[i] <- gad[i] + sample(index, 1, prob = pex_ad)
}
if (rd_ch <= (1 - pf_ch) * win) {
gch[i] <- gch[i] + sample(index, 1, replace = T, prob = pex_ch)
}
if (rd_kp <= (1 - pf_kp) * win) {
gkp[i] <- gkp[i] + sample(index, 1, replace = T, prob = pex_kp)
}
if (rd_ks <= (1 - pf_ks) * win) {
gks[i] <- gks[i] + sample(index, 1, replace = T, prob = pex_ks)
}
}
list(gad, gch, gkp, gks)
}
# gravel fit for gravel synth 3
gravel_fit <- function(n = 10, win = fep) {
fits <- gravel_synth(win)
gad <- fits[[1]]
gch <- fits[[2]]
gkp <- fits[[3]]
gks <- fits[[4]]
for (i in 2:n) {
fits <- gravel_synth(win)
gad <- c(gad, fits[[1]])
gch <- c(gch, fits[[2]])
gkp <- c(gkp, fits[[3]])
gks <- c(gks, fits[[4]])
}
list(emp_cdf(gad), emp_cdf(gch), emp_cdf(gkp), emp_cdf(gks))
}
# bootstrap fines ages 3
fines_synth <- function(mod = ffep, win = fep, n = 10) {
df <- charcoal$mn[charcoal$facies == 'DF'] # debris flow age obs
dfc <- emp_cdf(df) # cdf of ages
dfi <- dfc[ , 1] # index of cdf ages
dfp <- to_pmf(dfc[ , 2]) # pmf of index ages
gf <- gravel_fit(n = n, win = win)
fad <- 0 # synth deposits
fch <- 0
fkp <- 0
fks <- 0
for (i in 1:length(dfi)) {
fad[i] <- sample(c(sample(dfi, 135, replace = T, prob = dfp), sample(gf[[1]][,1], 83, replace = T, prob = to_pmf(gf[[1]][,2]))), 1)
fch[i] <- sample(c(sample(dfi, 135, replace = T, prob = dfp), sample(gf[[2]][,1], 83, replace = T, prob = to_pmf(gf[[2]][,2]))), 1)
fkp[i] <- sample(c(sample(dfi, 135, replace = T, prob = dfp), sample(gf[[3]][,1], 83, replace = T, prob = to_pmf(gf[[3]][,2]))), 1)
fks[i] <- sample(c(sample(dfi, 135, replace = T, prob = dfp), sample(gf[[4]][,1], 83, replace = T, prob = to_pmf(gf[[4]][,2]))), 1)
# fad[i] <- sample(c(rep(sample(dfi, 1, prob = dfp), 3), sample(gf[[1]], 1)), 1)
# fch[i] <- sample(c(rep(sample(dfi, 1, prob = dfp), 3), sample(gf[[2]], 1)), 1)
# fkp[i] <- sample(c(rep(sample(dfi, 1, prob = dfp), 3), sample(gf[[3]], 1)), 1)
# fks[i] <- sample(c(rep(sample(dfi, 1, prob = dfp), 3), sample(gf[[4]], 1)), 1)
rd_ad <- runif(1)
rd_ch <- runif(1)
rd_kp <- runif(1)
rd_ks <- runif(1)
# pf is exit probability
# rd > pf means deposit did not exit
if (rd_ad <= (1 - ffep) * mod) {
fad[i] <- fad[i] + sample(index, 1, prob = fex_t)
}
if (rd_ch <= (1 - ffep) * mod) {
fch[i] <- fch[i] + sample(index, 1, prob = fex_t)
}
if (rd_kp <= (1 - ffep) * mod) {
fkp[i] <- fkp[i] + sample(index, 1, prob = fex_t)
}
if (rd_ks <= (1 - ffep) * mod) {
fks[i] <- fks[i] + sample(index, 1, prob = fex_t)
}
}
list(fad, fch, fkp, fks)
}
# fines fit for fines synth 3
fine_fit <- function(mod = ffep, win = fep, n = 10, hill_rt = 0.1) {
fits <- fines_synth(mod, win, n)
gad <- fits[[1]]
gch <- fits[[2]]
gkp <- fits[[3]]
gks <- fits[[4]]
for (i in 2:n) {
fits <- fines_synth(mod, win, n)
gad <- c(gad, fits[[1]])
gch <- c(gch, fits[[2]])
gkp <- c(gkp, fits[[3]])
gks <- c(gks, fits[[4]])
}
list(emp_cdf(c(gad, hills(gad, hill_rt))),
emp_cdf(c(gch, hills(gch, hill_rt))),
emp_cdf(c(gkp, hills(gkp, hill_rt))),
emp_cdf(c(gks, hills(gks, hill_rt))))
}
hills <- function(obs, rate = 0.1) {
n <- round(length(obs) * rate)
hills <- sample(hill_source, n, replace = T, prob = hill_pmf)
c(hill_source, hills)
}
hills()
png('fines_travel.png', height = 17, width = 21, units = 'cm', res = 300)
plot(t*tp_ad, cumsum(fex_t), log = 'x',
xlab = 'fines travel time (slow fraction) [y]', xlim = c(tp_kp, 12000),
ylab = 'CDF',
type = 'l', lwd = 2.5, col = get_palette('ocean', .7))
lines(t*tp_ch, cumsum(fex_t), lwd = 2.5, col = get_palette('gold', .7))
lines(t*tp_kp, cumsum(fex_t), lwd = 2.5, col = get_palette('violet', .7))
lines(t*tp_ks, cumsum(fex_t), lwd = 2.5, col = get_palette('crimson', .7))
legend('topleft', legend = c('Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov'),
fill = get_palette(c('ocean', 'gold', 'violet', 'crimson'), .9))
dev.off()
png('fines_exit.png', height = 17, width = 21, units = 'cm', res = 300)
magplot(tex * tp_ad, cumsum(fpex_t), type = 'l', lwd = 2.5, col = get_palette('violet', .7),
xlab = 'fines travel time (fast fraction) [y]',
ylab = 'CDF')
lines(tex * tp_ch, cumsum(fpex_t), lwd = 2.5, col = get_palette('gold', .7))
lines(tex * tp_kp, cumsum(fpex_t), lwd = 2.5, col = get_palette('crimson', .7))
lines(tex * tp_ks, cumsum(fpex_t), lwd = 2.5, col = get_palette('ocean', .7))
legend('topleft', legend = c('Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov'),
fill = get_palette(c('ocean', 'gold', 'violet', 'crimson'), .9))
dev.off()
fex_kn <- fish(1-(fep * (mean(kn$hp) / mn_ln)), t, 1) / sum(fish(1-(fep * mean(kn$hp) / mn_ln), t, 1))
fex_br <- fish(1-(fep * (mean(br$hp) / mn_ln)), t, 1) / sum(fish(1-(fep * mean(br$hp) / mn_ln), t, 1))
fex_cd <- fish(1-(fep * (mean(crks_so$ToMouth_km[crks_so$creek_name == 'cedar']) * 1000) / mn_ln), t, 1) /
sum(fish(1-(fep * (mean(crks_so$ToMouth_km[crks_so$creek_name == 'cedar']) * 1000) / mn_ln), t, 1))
fex_gr <- fish(1-(fep * 500 / mn_ln), t, 1) / sum(fish(1-(fep * 500 / mn_ln), t, 1))
png('fluvial_traversal.png', height = 17, width = 21, units = 'cm', res = 300)
magplot(t*tp_ad, cumsum(pex_ad), log = 'x',
xlab = 'Fluvial Traversal Time [y]', xlim = c(10, 9000),
ylab = 'CDF',
type = 'l', lwd = 2.5, col = get_palette('ocean', .7))
lines(t*tp_ch, cumsum(pex_ch), lwd = 2.5, col = get_palette('gold', .7))
lines(t*tp_kp, cumsum(pex_kp), lwd = 2.5, col = get_palette('violet', .7))
lines(t*tp_ks, cumsum(pex_ks), lwd = 2.5, col = get_palette('crimson', .7))
lines(t*tp_ad, cumsum(fex_t), lwd = 1.75, lty = 2, col = get_palette('ocean', .7))
lines(t*tp_ch, cumsum(fex_t), lwd = 1.75, lty = 2, col = get_palette('gold', .7))
lines(t*tp_kp, cumsum(fex_t), lwd = 1.75, lty = 2, col = get_palette('violet', .7))
lines(t*tp_ks, cumsum(fex_t), lwd = 1.75, lty = 2, col = get_palette('crimson', .7))
legend('topleft', legend = c('Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov',
'Gravels', 'Fines'),
col = get_palette(c('ocean', 'gold', 'violet', 'crimson', 'charcoal', 'charcoal'), .9),
lty = c(rep(NA, 4), 1, 2), pch = c(rep(20, 4), NA, NA))
dev.off()
png('fast_fraction.png', height = 17, width = 21, units = 'cm', res = 300)
magplot(tex * tp_ad, cumsum(pex_f), type = 'l', lwd = 2.5, col = get_palette('ocean', .7),
xlab = 'fluvial travel time (fast fraction) [y]',
ylab = 'CDF')
lines(tex * tp_ch, cumsum(pex_f), lwd = 2.5, col = get_palette('gold', .7))
lines(tex * tp_kp, cumsum(pex_f), lwd = 2.5, col = get_palette('violet', .7))
lines(tex * tp_ks, cumsum(pex_f), lwd = 2.5, col = get_palette('crimson', .7))
lines(tex * tp_ad, cumsum(fpex_t), lwd = 1.75, lty = 2, col = get_palette('ocean', .7))
lines(tex * tp_ch, cumsum(fpex_t), lwd = 1.75, lty = 2, col = get_palette('gold', .7))
lines(tex * tp_kp, cumsum(fpex_t), lwd = 1.75, lty = 2, col = get_palette('violet', .7))
lines(tex * tp_ks, cumsum(fpex_t), lwd = 1.75, lty = 2, col = get_palette('crimson', .7))
legend('topleft', legend = c('Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov',
'Gravels', 'Fines'),
col = get_palette(c('ocean', 'gold', 'violet', 'crimson', 'charcoal', 'charcoal'), .9),
lty = c(rep(NA, 4), 1, 2), pch = c(rep(20, 4), NA, NA))
dev.off()
# convert pmf to cdf and calculate weighted mean transit time
dft_ad <- df_transit_ad %>% cumsum
dft_ad_mn <- weighted.mean(0:10000, df_transit_ad)
dft_ch <- df_transit_ch %>% cumsum
dft_ch_mn <- weighted.mean(0:10000, df_transit_ch)
dft_kp <- df_transit_kp %>% cumsum
dft_kp_mn <- weighted.mean(0:10000, df_transit_kp)
dft_ks <- df_transit_ks %>% cumsum
dft_ks_mn <- weighted.mean(0:10000, df_transit_ks)
#medians
sum((dft_ad > 0.5 & dft_ad < 0.501) * c(0:10000))
sum((dft_ch > 0.5 & dft_ch < 0.501) * c(0:10000))
sum((dft_kp > 0.5 & dft_kp < 0.501) * c(0:10000))
sum((dft_ks > 0.5 & dft_ks < 0.501) * c(0:10000))
png('df_transit_times.png', height = 17, width = 21, units = 'cm', res = 300)
magplot(dft_ad, type = 'l', lwd = 2, col = get_palette('ocean'), xlim = c(1, 3000),
xlab = 'transit time [y]', ylab = 'CDF of deposits', log = 'x')
abline(v = dft_ad_mn, lwd = 2, lty = 2, col = get_palette('ocean'))
lines(dft_ch, type = 'l', lwd = 2, col = get_palette('gold'))
abline(v = dft_ch_mn, lwd = 2, lty = 2, col = get_palette('gold'))
lines(dft_kp, type = 'l', lwd = 2, col = get_palette('violet'))
abline(v = dft_kp_mn, lwd = 2, lty = 2, col = get_palette('violet'))
lines(dft_ks, type = 'l', lwd = 2, col = get_palette('crimson'))
abline(v = dft_ks_mn, lwd = 2, lty = 2, col = get_palette('crimson'))
legend('topleft', legend = c('anderson-darling', 'chi-squared', 'kuiper',
'kolmogorov-smirnov', 'mean'),
col = get_palette(c('ocean', 'gold', 'violet', 'crimson', 'charcoal'), .8),
lty = c(rep(1, 4), 2), lwd = 2)
text(500, 0.07, labels = '191', col = get_palette('violet', .7))
text(500, 0.14, labels = '208', col = get_palette('crimson', .7))
text(500, 0.21, labels = '293', col = get_palette('gold', .7))
text(500, 0.28, labels = '318', col = get_palette('ocean', .7))
dev.off()
plot(index, cumsum(fex_kn), log = 'x')
lines(index, cumsum(fex_br))
lines(index, cumsum(fex_cd))
lines(index, cumsum(fex_gr))
sample(c(gct_kn, gct_br, gct_cd, gct_gr), 10, replace = T, prob = c(gct_kn, gct_br, gct_cd, gct_gr) / gct_tl)
sample(1:4, 20, replace = T, prob = c(gct_kn, gct_br, gct_cd, gct_gr) / gct_tl)
pr <- sample(list(pex_kn, pex_br, pex_cd, pex_gr), 20, replace = T, prob = c(gct_kn, gct_br, gct_cd, gct_gr) / gct_tl)[[1]]
# bootstrap gravel ages
s1 <- sample(dfi, length(dfi), replace = T, prob = dfp)
s2 <- s1
altered <- 0
for (i in seq_along(s1)) {
if (runif(1) > .8) {
pr <- sample(list(pex_kn, pex_br, pex_cd, pex_gr), 1, replace = T, prob = c(gct_kn, gct_br, gct_cd, gct_gr) / gct_tl)[[1]]
s2[i] <- s1[i] + sample(index, 1, replace = T, prob = pr)
altered <- altered + 1
}
}
print(altered / length(s2))
plot(emp_cdf(s2))
lines(dfc)
lines(emp_cdf(charcoal$mn[charcoal$facies == 'FG']))
# bootstrap fines ages
s3 <- list(s1, s2)
altered <- 0
s4 <- 0
for (i in 1:length(s1)) {
s4[i] <- sample(sample(s3)[[1]], 1)
if (runif(1) > .8) {
pr <- sample(list(fex_kn, fex_br, fex_cd, fex_gr), 1, replace = T, prob = c(gct_kn, gct_br, gct_cd, gct_gr) / gct_tl)[[1]]
s4[i] <- s4[i] + sample(index, 1, replace = T, prob = pr)
altered <- altered + 1
}
}
print(altered / length(s4))
plot(emp_cdf(s4), type = 'l', lwd = 3, col = get_palette('gold'))
points(dfc, pch = 20, col = get_palette('hardwood'))
points(emp_cdf(charcoal$mn[charcoal$facies == 'FF']), pch = 20, col = get_palette('gold'))
points(emp_cdf(charcoal$mn[charcoal$facies == 'FG']), pch = 20, col = get_palette('ocean'))
lines(emp_cdf(s2), col = get_palette('ocean'), lwd = 3)
crks_so$creek_name %>% factor %>% levels
index <- char_pmfs %>% rownames %>% as.numeric %>% rev
plot(index, cumsum(pex_kn), log = 'x')
lines(index, cumsum(pex_br))
lines(index, cumsum(pex_cd))
lines(index, cumsum(pex_gr))
cfl <- convo_add(pex_pmf, df_pmf, index)
tfl <- df_pmf * (te/(te+tr)) + cfl * (tr/(te+tr))
png('predicted_fluvial_age.png', height = 20, width = 24, units = 'cm', res = 300)
plot(index, tfl %>% to_cdf, type = 'l', col = get_palette('crimson'), lwd = 3,
xlab = 'charcoal age [years]',
ylab = 'CDF', log = 'x', ylim = c(0,1))
lines(emp_cdf(charcoal$mn[charcoal$facies == 'FF']), col = get_palette('sky'), lwd = 3)
lines(emp_cdf(charcoal$mn[charcoal$facies == 'FG']), col = get_palette('ocean'), lwd = 3)
lines(emp_cdf(charcoal$mn[charcoal$facies == 'DF']), col = get_palette('hardwood'), lwd = 3)
lines(emp_cdf(df_stereo), col = get_palette('crimson'), lwd = 3)
legend('bottomright', legend = c('gravels', 'fines', 'predicted'),
fill = get_palette(c('ocean', 'sky', 'crimson'), .8))
dev.off()
# probability of exit before turnover period
tb <- seq(0, 205, length.out = 4430)
pex_b <- (fish(pf/tp, tb, 1)/sum(fish(pf/tp,tb,1)))
plot(tb , pex_b)
plot(tb , cumsum(pex_b))
plot(t * tp, pex_pmf)
lines(tb * tp, pex_b)
sum(pex_b)
bpex <- sum(pex_b[tb < dfi[1]])
for (i in 2:length(dfi)) {
bpex[i] <- sum(pex_b[tb > dfi[i-1] & pex_b <= dfi[i]])
}
bpex <- bpex / sum(bpex)
plot(dfi, bpex, log = 'x')
sample(dfi, 10, prob = bpex)
# probability of exit before turnover period
fex_b <- (fish(fep/tp, tb, 1)/sum(fish(fep/tp,tb,1)))
bfex <- sum(fex_b[tb < dfi[1]])
for (i in 2:length(dfi)) {
bfex[i] <- sum(fex_b[tb > dfi[i-1] & fex_b <= dfi[i]])
}
bfex <- bfex / sum(bfex)
plot(dfi, bfex, log = 'x')
sample(dfi, 10, prob = bfex)
# fluvial inheritance at select rates
pf_ad <- 0.7227464
pf_ch <- 0.6812836
pf_kp <- 0.4243889
pf_ks <- 0.5187506
# ad = 0.7227464
# ch = 0.6812836
# kp = 0.4243889
# ks = 0.5187506
# fit select flux rates to study area contr area
# fluvial gravel observations at each study area (for selection probability)
gct_kn <- nrow(crks[crks$creek_name == 'knowles' & crks$type == 'FG', ])
gct_br <- nrow(crks[crks$creek_name == 'bear' & crks$type == 'FG', ])
gct_cd <- 10
gct_gr <- 36
gct_tl <- sum(gct_kn, gct_br, gct_cd, gct_gr)
gct_p <- c(gct_kn, gct_br, gct_cd, gct_gr) / gct_tl
fct_kn <- nrow(crks[crks$creek_name == 'knowles' & crks$type == 'FF', ])
fct_br <- nrow(crks[crks$creek_name == 'bear' & crks$type == 'FF', ])
# contributing area weight for selection probability
caw_kn <- mean(kn$hp) / mn_ln
caw_br <- mean(br$hp) / mn_ln
caw_cd <- mean(crks_so$ToMouth_km[crks_so$creek_name == 'cedar']) * 1000 / mn_ln
caw_gr <- 500 / mn_ln
# anderson-darling
# fines exit pmfs (slow fraction)
fex_ad_kn <- fish(1-(pf_ad * caw_kn), t, 1) / sum(fish(1-(pf_ad * caw_kn), t, 1))
fex_ad_br <- fish(1-(pf_ad * caw_br), t, 1) / sum(fish(1-(pf_ad * caw_br), t, 1))
fex_ad_cd <- fish(1-(pf_ad * caw_cd), t, 1) / sum(fish(1-(pf_ad * caw_cd), t, 1))
fex_ad_gr <- fish(1-(pf_ad * caw_gr), t, 1) / sum(fish(1-(pf_ad * caw_gr), t, 1))
# gravels (slow fraction)
gex_ad_kn <- fish((pf_ad * caw_kn), t, 1) / sum(fish((pf_ad * caw_kn), t, 1))
gex_ad_br <- fish((pf_ad * caw_br), t, 1) / sum(fish((pf_ad * caw_br), t, 1))
gex_ad_cd <- fish((pf_ad * caw_cd), t, 1) / sum(fish((pf_ad * caw_cd), t, 1))
gex_ad_gr <- fish((pf_ad * caw_gr), t, 1) / sum(fish((pf_ad * caw_gr), t, 1))
fex_ad_p <- list(fex_ad_kn, fex_ad_br, fex_ad_cd, fex_ad_gr)
gex_ad_p <- list(gex_ad_kn, gex_ad_br, gex_ad_cd, gex_ad_gr)
# chi-squared
# fines exit pmfs (slow fraction)
fex_ch_kn <- fish(1-(pf_ad * caw_kn), t, 1) / sum(fish(1-(pf_ad * caw_kn), t, 1))
fex_ch_br <- fish(1-(pf_ad * caw_br), t, 1) / sum(fish(1-(pf_ad * caw_br), t, 1))
fex_ch_cd <- fish(1-(pf_ad * caw_cd), t, 1) / sum(fish(1-(pf_ad * caw_cd), t, 1))
fex_ch_gr <- fish(1-(pf_ad * caw_gr), t, 1) / sum(fish(1-(pf_ad * caw_gr), t, 1))
# gravels (slow fraction)
gex_ch_kn <- fish((pf_ch * caw_kn), t, 1) / sum(fish((pf_ch * caw_kn), t, 1))
gex_ch_br <- fish((pf_ch * caw_br), t, 1) / sum(fish((pf_ch * caw_br), t, 1))
gex_ch_cd <- fish((pf_ch * caw_cd), t, 1) / sum(fish((pf_ch * caw_cd), t, 1))
gex_ch_gr <- fish((pf_ch * caw_gr), t, 1) / sum(fish((pf_ch * caw_gr), t, 1))
fex_ch_p <- list(fex_ch_kn, fex_ch_br, fex_ch_cd, fex_ch_gr)
gex_ch_p <- list(gex_ch_kn, gex_ch_br, gex_ch_cd, gex_ch_gr)
# kuiper
# fines exit pmfs (slow fraction)
fex_kp_kn <- fish(1-(pf_kp * caw_kn), t, 1) / sum(fish(1-(pf_kp * caw_kn), t, 1))
fex_kp_br <- fish(1-(pf_kp * caw_br), t, 1) / sum(fish(1-(pf_kp * caw_br), t, 1))
fex_kp_cd <- fish(1-(pf_kp * caw_cd), t, 1) / sum(fish(1-(pf_kp * caw_cd), t, 1))
fex_kp_gr <- fish(1-(pf_kp * caw_gr), t, 1) / sum(fish(1-(pf_kp * caw_gr), t, 1))
# gravels (slow fraction)
gex_kp_kn <- fish((pf_kp * caw_kn), t, 1) / sum(fish((pf_kp * caw_kn), t, 1))
gex_kp_br <- fish((pf_kp * caw_br), t, 1) / sum(fish((pf_kp * caw_br), t, 1))
gex_kp_cd <- fish((pf_kp * caw_cd), t, 1) / sum(fish((pf_kp * caw_cd), t, 1))
gex_kp_gr <- fish((pf_kp * caw_gr), t, 1) / sum(fish((pf_kp * caw_gr), t, 1))
fex_kp_p <- list(fex_kp_kn, fex_kp_br, fex_kp_cd, fex_kp_gr)
gex_kp_p <- list(gex_kp_kn, gex_kp_br, gex_kp_cd, gex_kp_gr)
# kolmogorov-smirnov
# fines exit pmfs (slow fraction)
fex_ks_kn <- fish(1-(pf_ks * caw_kn), t, 1) / sum(fish(1-(pf_ks * caw_kn), t, 1))
fex_ks_br <- fish(1-(pf_ks * caw_br), t, 1) / sum(fish(1-(pf_ks * caw_br), t, 1))
fex_ks_cd <- fish(1-(pf_ks * caw_cd), t, 1) / sum(fish(1-(pf_ks * caw_cd), t, 1))
fex_ks_gr <- fish(1-(pf_ks * caw_gr), t, 1) / sum(fish(1-(pf_ks * caw_gr), t, 1))
# gravels (slow fraction)
gex_ks_kn <- fish((pf_ks * caw_kn), t, 1) / sum(fish((pf_ks * caw_kn), t, 1))
gex_ks_br <- fish((pf_ks * caw_br), t, 1) / sum(fish((pf_ks * caw_br), t, 1))
gex_ks_cd <- fish((pf_ks * caw_cd), t, 1) / sum(fish((pf_ks * caw_cd), t, 1))
gex_ks_gr <- fish((pf_ks * caw_gr), t, 1) / sum(fish((pf_ks * caw_gr), t, 1))
fex_ks_p <- list(fex_ks_kn, fex_ks_br, fex_ks_cd, fex_ks_gr)
gex_ks_p <- list(gex_ks_kn, gex_ks_br, gex_ks_cd, gex_ks_gr)
# bootstrap gravel ages 2
gravel_synth <- function(window = .25) {
gad <- 0
gch <- 0
gkp <- 0
gks <- 0
for (i in 1:length(dfi)) {
gad[i] <- sample(dfi, 1, prob = dfp)
gch[i] <- sample(dfi, 1, prob = dfp)
gkp[i] <- sample(dfi, 1, prob = dfp)
gks[i] <- sample(dfi, 1, prob = dfp)
rd <- runif(1)
if (rd <= 0.5 - window) {
gad[i] <- gad[i] - sample(tad, 1, prob = pexb_ad)
gch[i] <- gch[i] - sample(tch, 1, prob = pexb_ch)
gkp[i] <- gkp[i] - sample(tkp, 1, prob = pexb_kp)
gks[i] <- gks[i] - sample(tks, 1, prob = pexb_ks)
}
if (rd > 0.5 + window) {
pr <- sample(list(pex_kn, pex_br, pex_cd, pex_gr), 1, replace = T, prob = c(gct_kn, gct_br, gct_cd, gct_gr) / gct_tl)[[1]]
pad <- sample(gex_ad_p, 1, replace = T, prob = gct_p)[[1]]
pch <- sample(gex_ch_p, 1, replace = T, prob = gct_p)[[1]]
pkp <- sample(gex_kp_p, 1, replace = T, prob = gct_p)[[1]]
pks <- sample(gex_ks_p, 1, replace = T, prob = gct_p)[[1]]
gad[i] <- gad[i] + sample(index, 1, replace = T, prob = pad)
gch[i] <- gch[i] + sample(index, 1, replace = T, prob = pch)
gkp[i] <- gkp[i] + sample(index, 1, replace = T, prob = pkp)
gks[i] <- gks[i] + sample(index, 1, replace = T, prob = pks)
}
}
list(gad, gch, gkp, gks)
}
gravel_fit <- function(n = 10, window = .25) {
fits <- gravel_synth(window)
gad <- fits[[1]]
gch <- fits[[2]]
gkp <- fits[[3]]
gks <- fits[[4]]
for (i in 2:n) {
fits <- gravel_synth()
gad <- c(gad, fits[[1]])
gch <- c(gch, fits[[2]])
gkp <- c(gkp, fits[[3]])
gks <- c(gks, fits[[4]])
}
list(emp_cdf(gad), emp_cdf(gch), emp_cdf(gkp), emp_cdf(gks))
}
gf <- gravel_fit()
lines(gf[[1]])
lines(gf[[2]])
lines(gf[[3]])
lines(gf[[4]])
# bootstrap fines ages 2
fines_synth <- function(gf, # element from list output by gravel_synth (match to test)
prs, # probability list for slow fraction (match to test)
prf, # prob (fast fraction) (match to test)
prfi, # index for fast fraction probs
gcp = gct_p, # reach length selection probability
window = .25) {
df <- charcoal$mn[charcoal$facies == 'DF'] # debris flow age obs
dfc <- emp_cdf(df) # cdf of ages
dfi <- dfc[ , 1] # index of cdf ages
dfp <- to_pmf(dfc[ , 2]) # pmf of index ages
s <- 0 # synth deposits
for (i in 1:length(dfi)) {
# pull from debris-flow or gravel distribution
s[i] <- sample(sample(list(df, gf), 1)[[1]], 1)
rd <- runif(1)
if (rd <= 0.5 - window) { # fast fraction
s[i] <- s[i] - sample(prfi, 1, prob = prf)
}
if (rd > 0.5 + window) { # slow fraction
p <- sample(prs, 1, replace = T, prob = gcp)[[1]]
s[i] <- s[i] + sample(index, 1, replace = T, prob = p)
}
}
s
}
fines_fit <- function(gf, # element from list output by gravel_synth (match to test)
prs, # probability list for slow fraction (match to test)
prf, # prob (fast fraction) (match to test)
prfi, # index for fast fraction probs
gcp = gct_p, # reach length selection probability
n = 10, # number of times run simulation
window = .25) {
s <- 0
for (i in 1:n) {
if (i == 1) {
s <- fines_synth(gf, prs, prf, prfi, gcp, window)
} else {
s <- c(s, fines_synth(gf, prs, prf, prfi, gcp, window))
}
}
emp_cdf(s)
}
gravel_synth <- function(window = .25) {
df <- charcoal$mn[charcoal$facies == 'DF'] # debris flow age obs
dfc <- emp_cdf(df) # cdf of ages
dfi <- dfc[ , 1] # index of cdf ages
dfp <- to_pmf(dfc[ , 2]) # pmf of index ages
s <- 0 # synth deposits
for (i in 1:length(dfi)) {
s[i] <- sample(dfi, 1, prob = dfp)
rd <- runif(1)
if (rd <= 0.5 - window) {
s[i] <- s[i] - sample(prfi, 1, prob = prf)
}
if (rd > 0.5 + window) {
p <- sample(prs, 1, replace = T, prob = gcp)[[1]]
s[i] <- s[i] + sample(index, 1, replace = T, prob = p)
}
}
list(gad, gch, gkp, gks)
}
gravel_fit <- function(n = 10, window = .25) {
fits <- gravel_synth(window)
gad <- fits[[1]]
gch <- fits[[2]]
gkp <- fits[[3]]
gks <- fits[[4]]
for (i in 2:n) {
fits <- gravel_synth()
gad <- c(gad, fits[[1]])
gch <- c(gch, fits[[2]])
gkp <- c(gkp, fits[[3]])
gks <- c(gks, fits[[4]])
}
list(emp_cdf(gad), emp_cdf(gch), emp_cdf(gkp), emp_cdf(gks))
}
# bootstrap gravels for plotting
gr_ad <- fines_fit(charcoal$mn[charcoal$facies == 'DF'], gex_ad_p, fexb_ad, tad, n = 1, window = .25)
gr_ch <- fines_fit(charcoal$mn[charcoal$facies == 'DF'], gex_ch_p, fexb_ch, tch, n = 1, window = .25)
gr_kp <- fines_fit(charcoal$mn[charcoal$facies == 'DF'], gex_kp_p, fexb_kp, tkp, n = 1, window = .25)
gr_ks <- fines_fit(charcoal$mn[charcoal$facies == 'DF'], gex_ks_p, fexb_ks, tks, n = 1, window = .25)
gr_fit <- gravel_fit(n = 10, win = fep^3)
gr_ad <- gr_fit[[1]]
gr_ch <- gr_fit[[2]]
gr_kp <- gr_fit[[3]]
gr_ks <- gr_fit[[4]]
png('gravel_fits.png', height = 17, width = 21, units = 'cm', res = 300)
magplot(emp_cdf(charcoal$mn[charcoal$facies == 'FF']), pch = 20, col = get_palette('coral'),
xlab = 'Charcoal Age [y]', ylab = 'CDF', xlim = c(0, 17000))
points(dfc, pch = 20, col = get_palette('hardwood'))
points(emp_cdf(charcoal$mn[charcoal$facies == 'FG']), pch = 20, col = get_palette('charcoal'))
lines(gr_ad, lwd = 2.5, col = get_palette('ocean'))
lines(gr_ch, lwd = 2.5, col = get_palette('gold'))
lines(gr_kp, lwd = 2.5, col = get_palette('violet'))
lines(gr_ks, lwd = 2.5, col = get_palette('crimson'))
# lines(gf[[1]], lwd = 2.5, col = get_palette('ocean'))
# lines(gf[[2]], lwd = 2.5, col = get_palette('gold'))
# lines(gf[[3]], lwd = 2.5, col = get_palette('violet'))
# lines(gf[[4]], lwd = 2.5, col = get_palette('crimson'))
legend('bottomright', legend = c('Anderson-Darling', 'Chi-squared', 'Kuiper', 'Kolmogorov-Smirnov', 'Debris Flows', 'Gravels', 'Fines'),
pch = c(rep(NA, 4), rep(20, 3)), lty = c(rep(1, 4), rep(NA, 3)),
col = get_palette(c('ocean', 'gold', 'violet', 'crimson', 'hardwood', 'charcoal', 'coral'), .77))
dev.off()
# bootstrap fines for plotting
win = .12
fn_ad <- fines_fit(gf[[1]], fex_ad_p, fexb_ad, tad, n = 1, window = .12)
fn_ch <- fines_fit(gf[[2]], fex_ch_p, fexb_ch, tch, n = 1, window = .12)
fn_kp <- fines_fit(gf[[3]], fex_kp_p, fexb_kp, tkp, n = 1, window = .09)
fn_ks <- fines_fit(gf[[4]], fex_ks_p, fexb_ks, tks, n = 1, window = .09)
fn_fit <- fine_fit(mod = ffep^2)
fn_ad <- fn_fit[[1]]
fn_ch <- fn_fit[[2]]
fn_kp <- fn_fit[[3]]
fn_ks <- fn_fit[[4]]
png('fines_fits.png', height = 17, width = 21, units = 'cm', res = 300)
magplot(emp_cdf(charcoal$mn[charcoal$facies == 'FF']), pch = 20, col = get_palette('coral'),
xlab = 'charcoal age', ylab = 'CDF of samples', xlim = c(0, 17000))
points(dfc, pch = 20, col = get_palette('hardwood'))
points(emp_cdf(charcoal$mn[charcoal$facies == 'FG']), pch = 20, col = get_palette('charcoal'))
lines(fn_ad, lwd = 2.5, col = get_palette('ocean'))
lines(fn_ch, lwd = 2.5, col = get_palette('gold'))
lines(fn_kp, lwd = 2.5, col = get_palette('violet'))
lines(fn_ks, lwd = 2.5, col = get_palette('crimson'))
legend('bottomright', legend = c('anderson-darling', 'chi-squared', 'kuiper', 'kolmogorov-smirnov', 'debris flows', 'gravels', 'fines'),
pch = c(rep(NA, 4), rep(20, 3)), lty = c(rep(1, 4), rep(NA, 3)),
col = get_palette(c('ocean', 'gold', 'violet', 'crimson', 'hardwood', 'charcoal', 'coral'), .77))
dev.off()
gvl <- data.table::fread('/home/erik/output/gravels_test.csv')
gvl <- unlist(gvl)
magplot(emp_cdf(charcoal$mn[charcoal$facies == 'FF']), pch = 20, col = get_palette('coral'),
xlab = 'charcoal age', ylab = 'CDF of samples', xlim = c(0, 17000))
points(dfc, pch = 20, col = get_palette('hardwood'))
points(emp_cdf(charcoal$mn[charcoal$facies == 'FG']), pch = 20, col = get_palette('charcoal'))
lines(emp_cdf(gvl))
hplot(emp_cdf(pebs$b), log = 'x', xlim = c(4.5, 7.5))
b4m$coefficients[1] + (b4m$coefficients[2] * log(7.4))
tc <- dfi[dfc[, 2] > (1 - te / (te + tr))]
df_tc <- dfp[dfc[, 2] > (1 - te / (te + tr))]
cpex <- pex_pmf[index >= min(tc)]
cpexi <- index[index >= min(tc)]
cfl <- rep(0, length(tc))
cfl[1] <- sum(cpex[cpexi < tc[1]])
for (i in 2:length(tc)) {
cfl[i] <- sum(cpex[cpexi > tc[i-1] & cpexi <= tc[i]])
}
cfl <- c(rep(0,length(dfi)-length(tc)), cfl)
cfl <- convo_add(cfl, df_tc, tc)
tfl <- c(dfp[dfc[, 2] <= (1 - te / (te + tr))], cfl)
plot(dfi, cumsum(tfl))
plot(tc, cumsum(cfl))
cfl <- rep(0, length(dfi))
cfl[1] <- sum(pex_pmf[index < dfi[1]])
for (i in 2:length(dfi)) {
cfl[i] <- sum(pex_pmf[index > dfi[i-1] & index <= tc[i]])
}
# cfl <- convo_add(cfl * (tr/(te+tr)), dfp, dfi)
cfl <- convo_add(dfp, cfl, dfi)
cfl[is.na(cfl)] <- 0
cfl <- cfl / sum(cfl)
tfl <- cfl * 0.5 * tr/(te+tr) + dfp * te/(te+tr)
tfl <- tfl / sum(tfl)
plot(dfi, cumsum(cfl))
plot(dfi, cumsum(tfl))
lines(emp_cdf(charcoal$mn[charcoal$facies == 'DF']))
lines(emp_cdf(charcoal$mn[charcoal$facies == 'FG']))
cflb <- rep(0, length(dfi))
cflb[1] <- sum(pex_b[t * tp < dfi[1]])
for (i in 2:length(dfi)) {
cflb[i] <- sum(pex_b[(t * tp) > dfi[i-1] & (t * tp) <= dfi[i]])
}
cflb <- convo(cfl, cflb, dfi)
cflb <- cflb / sum(cflb)
tfl <- convo_add(cfl, cflb, dfi)
tfl <- tfl / sum(tfl)
plot(dfi, cumsum(tfl))
plot(index, pex_pmf)
plot(dfi, dfp, log = 'y')
plot(dfc)
lines(index, pex_pmf)
lines(index, cumsum(df_pmf))
plot(dfi, cumsum(tfl))
lines(dfc)
lines(emp_cdf(charcoal$mn[charcoal$facies == 'FG']))
plot(dfi, cumsum(cflb))
plot(index, cumsum(df_pmf))
plot(index, cumsum(pex_b))
lines(index, cumsum(df_pmf))
lines(dfi, cumsum(dfp), col = 'red', lwd = 3)
lines(emp_cdf(charcoal$mn[charcoal$facies == 'DF']))
png('predicted_fluvial_age.png', height = 20, width = 24, units = 'cm', res = 300)
plot(dfi, tfl %>% to_cdf, type = 'l', col = get_palette('crimson'), lwd = 3,
xlab = 'charcoal age [years]',
ylab = 'CDF', log = 'x', ylim = c(0,1))
lines(emp_cdf(charcoal$mn[charcoal$facies == 'FF']), col = get_palette('sky'), lwd = 3)
lines(emp_cdf(charcoal$mn[charcoal$facies == 'FG']), col = get_palette('ocean'), lwd = 3)
lines(emp_cdf(charcoal$mn[charcoal$facies == 'DF']), col = get_palette('hardwood'), lwd = 3)
lines(emp_cdf(df_stereo), col = get_palette('crimson'), lwd = 3)
legend('bottomright', legend = c('gravels', 'fines', 'predicted'),
fill = get_palette(c('ocean', 'sky', 'crimson'), .8))
dev.off()
# average traversal distance, including tribs
knsa <- sf::st_read("/media/erik/catacomb/gis/creeks/knowles_sa.shp")
brsa <- sf::st_read("/media/erik/catacomb/gis/creeks/bear_sa.shp")
plot(brsa)
# add main stem to travel distance of tribs
# from headwater
# k1 node id: 384365-384391, junction id: 384327
knsa$ToMouth_km[knsa$NODE_ID %in% 384365:384391] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384365:384391] + knsa$ToMouth_km[knsa$NODE_ID == 384327]
# k2 node id: 3843392-384395, junction id: 384228
knsa$ToMouth_km[knsa$NODE_ID %in% 384392:384395] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384392:384395] + knsa$ToMouth_km[knsa$NODE_ID == 384228]
# k3 node id: 3843396-384405, junction id: 384214
knsa$ToMouth_km[knsa$NODE_ID %in% 384396:384405] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384396:384405] + knsa$ToMouth_km[knsa$NODE_ID == 384214]
# k4 node id: 384406-384481, junction id: 384190
knsa$ToMouth_km[knsa$NODE_ID %in% 384406:384481] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384406:384481] + knsa$ToMouth_km[knsa$NODE_ID == 384190]
# k4a node id: 384482-384509, junction id: 384454
knsa$ToMouth_km[knsa$NODE_ID %in% 384482:384509] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384482:384509] + knsa$ToMouth_km[knsa$NODE_ID == 384454]
# k4b node id: 384510-384527, junction id: 384430
knsa$ToMouth_km[knsa$NODE_ID %in% 384510:384527] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384510:384527] + knsa$ToMouth_km[knsa$NODE_ID == 384430]
# k5 node id: 384528:384536, junction id: 384162
knsa$ToMouth_km[knsa$NODE_ID %in% 384528:384536] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384528:384536] + knsa$ToMouth_km[knsa$NODE_ID == 384162]
# k6 node id: 384537:384657, junction id: 384145
knsa$ToMouth_km[knsa$NODE_ID %in% 384537:384657] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384537:384657] + knsa$ToMouth_km[knsa$NODE_ID == 384145]
# k6a node id: 384658:384668, junction id: 384647
knsa$ToMouth_km[knsa$NODE_ID %in% 384658:384668] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384658:384668] + knsa$ToMouth_km[knsa$NODE_ID == 384647]
# k6b node id: 384669:384684, junction id: 384635
knsa$ToMouth_km[knsa$NODE_ID %in% 384669:384684] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384669:384684] + knsa$ToMouth_km[knsa$NODE_ID == 384635]
# k6c node id: 384685:384721, junction id: 384615
knsa$ToMouth_km[knsa$NODE_ID %in% 384685:384721] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384685:384721] + knsa$ToMouth_km[knsa$NODE_ID == 384615]
# k6d node id: 384722:384738, junction id: 384614
knsa$ToMouth_km[knsa$NODE_ID %in% 384722:384738] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384722:384738] + knsa$ToMouth_km[knsa$NODE_ID == 384614]
# k6e node id: 384739:384758, junction id: 384577
knsa$ToMouth_km[knsa$NODE_ID %in% 384739:384758] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384739:384758] + knsa$ToMouth_km[knsa$NODE_ID == 384577]
# k7 node id: 384759:384782, junction id: 384111
knsa$ToMouth_km[knsa$NODE_ID %in% 384759:384782] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384759:384782] + knsa$ToMouth_km[knsa$NODE_ID == 384111]
# k8 node id: 384783:384806, junction id: 384111
knsa$ToMouth_km[knsa$NODE_ID %in% 384783:384806] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384783:384806] + knsa$ToMouth_km[knsa$NODE_ID == 384111]
# k8 node id: 384807:384941, junction id: 384041
knsa$ToMouth_km[knsa$NODE_ID %in% 384807:384941] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384807:384941] + knsa$ToMouth_km[knsa$NODE_ID == 384041]
# k8a node id: 384942:384947, junction id: 384871
knsa$ToMouth_km[knsa$NODE_ID %in% 384942:384947] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384942:384947] + knsa$ToMouth_km[knsa$NODE_ID == 384871]
# k9 node id: 384948:384964, junction id: 384024
knsa$ToMouth_km[knsa$NODE_ID %in% 384948:384964] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384948:384964] + knsa$ToMouth_km[knsa$NODE_ID == 384024]
# k10 node id: 384965:385004, junction id: 384009
knsa$ToMouth_km[knsa$NODE_ID %in% 384965:385004] <- knsa$ToMouth_km[knsa$NODE_ID %in% 384965:385004] + knsa$ToMouth_km[knsa$NODE_ID == 384009]
# k11 node id: 385005:385070, junction id: 384004
knsa$ToMouth_km[knsa$NODE_ID %in% 385005:385070] <- knsa$ToMouth_km[knsa$NODE_ID %in% 385005:385070] + knsa$ToMouth_km[knsa$NODE_ID == 384004]
# k11a node id: 385071:385082, junction id: 385045
knsa$ToMouth_km[knsa$NODE_ID %in% 385071:385082] <- knsa$ToMouth_km[knsa$NODE_ID %in% 385071:385082] + knsa$ToMouth_km[knsa$NODE_ID == 385045]
# adjust starting distance to beginning of study area
knsa <- knsa[knsa$NODE_ID >= min(creeks$NODE_ID[creeks$creek_name == 'knowles']) &
knsa$NODE_ID < 385082, ]
knsa$dist <- knsa$ToMouth_km - min(knsa$ToMouth_km)
# travel distance for bear creek
# b1 node id: 386453:386459, junction id: 386440
brsa$ToMouth_km[brsa$NODE_ID %in% 386453:386459] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386453:386459] + brsa$ToMouth_km[brsa$NODE_ID == 386440]
# b2 node id: 386460:386489, junction id: 386409
brsa$ToMouth_km[brsa$NODE_ID %in% 386460:386489] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386460:386489] + brsa$ToMouth_km[brsa$NODE_ID == 386409]
# b3 node id: 386490:386503, junction id: 386389
brsa$ToMouth_km[brsa$NODE_ID %in% 386490:386503] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386490:386503] + brsa$ToMouth_km[brsa$NODE_ID == 386389]
# b4 node id: 386504:386553, junction id: 386378
brsa$ToMouth_km[brsa$NODE_ID %in% 386504:386553] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386504:386553] + brsa$ToMouth_km[brsa$NODE_ID == 386378]
# b5 node id: 386554:386610, junction id: 386359
brsa$ToMouth_km[brsa$NODE_ID %in% 386554:386610] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386554:386610] + brsa$ToMouth_km[brsa$NODE_ID == 386359]
# b5a node id: 386611:386645, junction id: 386574
brsa$ToMouth_km[brsa$NODE_ID %in% 386611:386645] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386611:386645] + brsa$ToMouth_km[brsa$NODE_ID == 386574]
# b6 node id: 386646:386659, junction id: 386348
brsa$ToMouth_km[brsa$NODE_ID %in% 386646:386659] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386646:386659] + brsa$ToMouth_km[brsa$NODE_ID == 386348]
# b7 node id: 386660:386693, junction id: 386331
brsa$ToMouth_km[brsa$NODE_ID %in% 386660:386693] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386660:386693] + brsa$ToMouth_km[brsa$NODE_ID == 386331]
# b8 node id: 386694:386713, junction id: 386314
brsa$ToMouth_km[brsa$NODE_ID %in% 386694:386713] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386694:386713] + brsa$ToMouth_km[brsa$NODE_ID == 386314]
# b9 node id: 386714:386727, junction id: 386299
brsa$ToMouth_km[brsa$NODE_ID %in% 386714:386727] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386714:386727] + brsa$ToMouth_km[brsa$NODE_ID == 386299]
# b10 node id: 386728:386744, junction id: 386278
brsa$ToMouth_km[brsa$NODE_ID %in% 386728:386744] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386728:386744] + brsa$ToMouth_km[brsa$NODE_ID == 386278]
# b11 node id: 386745:386762, junction id: 386269
brsa$ToMouth_km[brsa$NODE_ID %in% 386745:386762] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386745:386762] + brsa$ToMouth_km[brsa$NODE_ID == 386269]
# b12 node id: 386763:386777, junction id: 386258
brsa$ToMouth_km[brsa$NODE_ID %in% 386763:386777] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386763:386777] + brsa$ToMouth_km[brsa$NODE_ID == 386258]
# b13 node id: 386778:386796, junction id: 386243
brsa$ToMouth_km[brsa$NODE_ID %in% 386778:386796] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386778:386796] + brsa$ToMouth_km[brsa$NODE_ID == 386243]
# b14 node id: 386797:386814, junction id: 386239
brsa$ToMouth_km[brsa$NODE_ID %in% 386797:386814] <- brsa$ToMouth_km[brsa$NODE_ID %in% 386797:386814] + brsa$ToMouth_km[brsa$NODE_ID == 386239]
plot(emp_cdf(knsa$dist))
setwd('/media/erik/catacomb/research/')
png('travel_dist.png', height = 17, width = 21, units = 'cm', res = 300)
plot(density(knsa$dist),
xlab = 'Travel Distance [km]',
main = '', ylim = c(0, .7), col = get_palette('crimson', .7), lwd = 2.5)
lines(density(brsa$ToMouth_km), col = get_palette('ocean', 0.7), lwd = 2.5)
lines(density(c(brsa$ToMouth_km, knsa$dist)), col = get_palette('charcoal', 0.7), lwd = 2.5)
abline(v = mean(c(brsa$ToMouth_km, knsa$dist)), col = get_palette('charcoal', .7), lty = 2, lwd = 1.5)
abline(v = mean(c(brsa$ToMouth_km)), lty = 2, col = get_palette('ocean', .7), lwd = 1.5)
abline(v = mean(c(knsa$dist)), lty = 2, col = get_palette('crimson', .7), lwd = 1.5)
legend('topright', legend = c('Bear Creek', 'Knowles Creek', 'Both Creeks', 'Mean'),
col = get_palette(c('ocean', 'crimson', 'charcoal', 'charcoal'), 0.7), lty = c(1, 1, 1, 2))
dev.off()
mn_d <- mean(c(brsa$ToMouth_km, knsa$dist))
mn_dkn <- mean(knsa$dist)
pcdf <- emp_cdf(pebs$b)
d90s <- pcdf[pcdf[,2] > .9,1] %>% min
d90s_mass <- exp(predict(gmod, newdata = data.frame(b = d90s)))
st_d90 <- -(log(d2_mass) - log(d90s_mass)) / mn_dkn
st_d90s <- -(log(d2_mass) - log(d50s_mass)) / mn_dkn
st_dst <- -(log(d2_mass) - log(.1)) / mn_dkn
plot(emp_cdf(surf))
plot(emp_cdf(exp(predict(gmod, newdata = data.frame(b = surf)))))
plot(emp_cdf(exp(predict(gmod, newdata = data.frame(b = surf)) * exp(-stm * mn_dkn))))
mass_rem <- -(log(d2_mass) - predict(gmod, newdata = data.frame(b = surf))) - stm * mn_dkn
mass_rem[mass_rem < 0] <- 0
sum(mass_rem)
sum(exp(predict(gmod, newdata = data.frame(b = surf))))
plot(emp_cdf(exp(predict(gmod, newdata = data.frame(b = surf)))))
lines(emp_cdf(exp(mass_rem)))
plot(emp_cdf(predict(gmod, newdata = data.frame(b = surf)) - mass_rem))
st_st <- pcdf[pcdf[,1] <= 4.69, ]
st_st[st_st[,1] > 4.68, 2]
df_trans_ks <- data.table::fread('/home/erik/output/transits_cdf_gr_kp.csv')
gr_trans_ks <- data.table::fread('/home/erik/output/transits_cdf_gr_ks.csv')
gr_trans_ks <- data.table::fread('/home/erik/output/gravels_transits_ks.csv')
gr_trans_ks <- data.table::fread('/home/erik/output/gravels_transits_kp.csv')
gr_trans_kp <- data.table::fread('/home/erik/output/transits_cdf_gr_kp.csv')
gr_trans_ch <- data.table::fread('/home/erik/output/transits_cdf_gr_ch.csv')
gr_trans_ks <- data.table::fread('/home/erik/output/transits_cdf_fn_ks.csv')
gr_trans_kp <- data.table::fread('/home/erik/output/transits_cdf_fn_kp.csv')
df_trans_ks <- data.table::fread('/home/erik/output/debris_flow_deposits_cdf.csv')
png('gravels_fit.png', height = 17, width = 21, units = 'cm', res = 300)
magicaxis::magplot(emp_cdf(charcoal$mn[charcoal$facies == 'FF'] + 50), pch = 20, col = get_palette('coral'),
xlab = 'Charcoal Age [y]', ylab = 'CDF of samples', xlim = c(0, 17000))
points(emp_cdf(debris_flows), pch = 20, col = get_palette('hardwood'))
points(emp_cdf(charcoal$mn[charcoal$facies == 'FG'] + 50), pch = 20, col = get_palette('charcoal'))
lines(0:20000, cumsum(unlist(gr_trans_ks)), lwd = 2.5, col = get_palette('crimson', .7))
lines(0:20000, cumsum(unlist(gr_trans_kp)), lwd = 2.5, col = get_palette('violet', .7))
# lines(0:20000, cumsum(unlist(gr_trans_ch)), lwd = 2.5, col = get_palette('gold', .7))
legend('bottomright', legend = c('Debris-Flows', 'Gravels', 'Fines', 'Kolmogorov-Smirnov', 'Kuiper'),
lty = c(NA, NA, NA, 1, 1), lwd = c(NA, NA, NA, 2, 2),
pch = c(20, 20, 20, NA, NA), col = get_palette(c('hardwood', 'charcoal', 'coral', 'crimson', 'violet'), .9))
dev.off()
head(df_trans_ks)
df_trans_ks[df_trans_ks < 0] <- 0
write.csv(df_trans_ks, 'gravels_transits_kp.csv', row.names = F)
png('pebble_counts.png', height = 17, width = 21, units = 'cm', res = 300)
magicaxis::magplot(emp_cdf(pebs$b), log = 'x', pch = 20,
col = get_palette('ocean'), xlim = c(min(pebs$b), max(surf)),
xlab = 'b-axis width [mm]',
ylab = 'CDF of samples')
points(emp_cdf(surf), pch = 20, col = get_palette('crimson'))
abline(v = median(pebs$b), lty = 2)
text(9.5, 0.45, labels = paste0('D50s = ', round(median(pebs$b), 2), ' g'))
abline(v = median(surf), lty = 2)
text(65, 0.45, labels = paste0('D50 = ', round(median(surf), 2), ' g'))
legend('bottomright', legend = c('Surface', 'Subsurface', 'Median'),
pch = c(20, 20, NA), lty = c(NA, NA, 2), lwd = c(NA, NA, 1),
col = get_palette(c('crimson', 'ocean', 'charcoal'), .9))
dev.off()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.