## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup--------------------------------------------------------------------
library(StratPal)
library(admtools)
## ----fig.alt="histogram of fossil occurrences appearing at a constant rate."----
# simulate fossil occurrences over one Myr with an average of 15 occurrences per Myr
p3(rate = 15, from = 0, to = 1) |>
hist(main = "Fossil abundance",
xlab = "Time [Myr]",
ylab = "# Specimens")
## ----fig.alt = "histogram of fossil occurrences appearing at a sinusoidal rate."----
# return 100 occurrences by setting n parameter
# note that negative rates (where sin < 0) are ignored
p3_var_rate(x = sin, from = 0, to = 9, n = 100) |>
hist(xlab = "Time [Myr]",
ylab= "# Specimens",
main = "Fossil abundance")
## ----fig.alt = "histogram of fossil occurrences droping to 0."----------------
# decline in last occurrences from 50 to 0 over 1 Myr
p3_var_rate(x = c(0,1), y = c(50, 0), from = 0, to = 1, f_max = 50) |>
hist(xlab = "Time [Myr]",
main = "Last occurrences",
ylab = "# Last occurrences")
## ----figures-side, fig.show="hold", out.width="50%", fig.alt="2 plots of age-depth models, one 2 km from shore and one 12 km from shore."----
adm_2km = tp_to_adm(t = scenarioA$t_myr, # 2 km from shore
h = scenarioA$h_m[,"2km"],
T_unit = "Myr",
L_unit = "m")
adm_12km = tp_to_adm(t = scenarioA$t_myr, # 12 km from shore
h = scenarioA$h_m[,"12km"],
T_unit = "Myr",
L_unit = "m")
plot(adm_2km, # plot age-depth model 2 km from shore
lwd_acc = 2, # plot thicker lines for intervals with sediment accumulation (lwd = line width)
lty_destr = 0) # don't plot destructive intervals/gaps (lty = line type)
T_axis_lab() # add time axis label
L_axis_lab() # add length axis label
title("Age-depth model 2 km from shore")
plot(adm_12km, # plot age-depth model 12 km from shore
lwd_acc = 2,
lty_destr = 0)
T_axis_lab()
L_axis_lab()
title("Age-depth model 12 km from shore")
## ----fig.alt="stratigraphic expression of fossil occurrences 2 km from shore."----
p3(rate = 200, from = min_time(adm_2km), to = max_time(adm_2km)) |> # constant rate in time domain
time_to_strat(adm_2km, destructive = TRUE) |> # transform into depth domain
hist(xlab = "Stratigraphic height [m]", # plot
main = "Fossil abundance 2 km offshore",
ylab = "# Fossils",
breaks = seq(from = min_height(adm_2km), to = max_height(adm_2km), length.out = 20))
## ----fig.alt="stratigraphic occurrence of fossil occurrences 12 km from shore."----
p3(rate = 200, from = min_time(adm_12km), to = max_time(adm_12km)) |> # same rate as 2 km from shore
time_to_strat(adm_12km, destructive = TRUE) |> # use different adm for transformation
hist(xlab = "Stratigraphic height [m]", # plot histogram
main = "Fossil abundance 12 km offshore",
ylab = "# Fossils",
breaks = seq(from = min_height(adm_12km), to = max_height(adm_12km), length.out = 20))
## ----fig.alt="stratigraphic expression of last occurrences 2 km from shore."----
p3(rate = 200, from = min_time(adm_2km), to = max_time(adm_2km)) |> # constant rate of last occ
time_to_strat(adm_2km, destructive = FALSE) |> # non-destructive transformation!
hist(xlab = "Stratigraphic height [m]", # plot histogram
main = "Last occurrences 2 km offshore",
ylab = "# Last occurrences",
breaks = seq(from = min_height(adm_2km), to = max_height(adm_2km), length.out = 20))
## ----fig.alt="stratigraphic expression of last occurrences 12 km from shore."----
p3(rate = 200, from = min_time(adm_12km), to = max_time(adm_12km)) |>
time_to_strat(adm_12km, destructive = TRUE) |>
hist(xlab = "Stratigraphic height [m]",
main = "Last occurrences 12 km offshore",
ylab = "# Last occurrences",
breaks = seq(from = min_height(adm_12km), to = max_height(adm_12km), length.out = 20))
## ----fig.alt="fossil occurrences in the time domain."-------------------------
t_ext = 1.5 # time of "true" extinction
r = 30 # rate of fossil occurrences
# simulate rate fossil occurrences of taxon
f_occ = p3(r, from = min_time(adm_2km), to = t_ext)
hist(f_occ,
xlab = "Time [Myr]",
ylab = "# Fossils",
main = "Fossil abundance",
breaks = seq(from = min_time(adm_2km), to = max_time(adm_2km), length.out = 20))
## -----------------------------------------------------------------------------
highest_occ = f_occ |> # take fossil occ. in time domain
time_to_strat(adm_2km, destructive = TRUE) |> # transform into stratigraphic domain, destroying fossils that coincide with hiatuses
max(na.rm = TRUE) # find highest preserved fossil (destroyed fossils are NA)
## -----------------------------------------------------------------------------
h_true_ext = t_ext |> # stratigraphic position of "true" extinction
time_to_strat(adm_2km, destructive = FALSE)
# distance between last occurrence of taxon and location where they actually go extinct
strat_range_offset_m = h_true_ext - highest_occ
## -----------------------------------------------------------------------------
t_last_occ = highest_occ |> # time when last preserved fossil lived
strat_to_time(adm_2km)
# time offset between true extinction and time when last fossil lived.
time_range_offset_myr = t_ext - t_last_occ
## ----fig.alt="water depth 2 km from shore in scenario A."---------------------
t = scenarioA$t_myr # time steps of the model
wd = scenarioA$wd_m[,"2km"] # water depth 2 km offshore at model time steps
gc = approxfun(t, wd) # define function that defines how the gradient changes with time (gc = *G*radient *C*hange)
plot(t, gc(t),
type = "l",
xlab = "Time [Myr]",
ylab = "Water depth [m]",
main = "Water depth 2 km offshore")
## ----fig.alt="collection probability of a taxon along water depth."-----------
my_niche = snd_niche(opt = 10, # preferred water depth
tol = 5, # tolerance to water depth fluctuations
cutoff_val = 0) # cut off negative values - the taxon does not survive on land
x = seq(-2, 30, by = 0.1)
plot(x, my_niche(x),
type = "l",
xlab = "Water depth [m]",
ylab = "Collection probability",
main = "Collection probability of taxon")
## ----fig.alt="fossil abundance in the time domain, with incorporation of niche modeling."----
p3(rate = 300, from = min_time(adm_2km), to = max_time(adm_2km)) |> # model occurrences of taxon based on a constant rate
apply_niche(niche_def = my_niche, gc = gc) |> # apply the niche model
hist(xlab = "Time [Myr]",
main = "Fossil abundance",
ylab = "# Fossils",
breaks = seq(from = min_time(adm_2km), to = max_time(adm_2km), length.out = 40))
## ----fig.alt="fossil abundance in the stratigraphic domain, with incorporation of niche modeling."----
p3(rate = 300, from = min_time(adm_2km), to = max_time(adm_2km)) |> # model occurrences based on constant rate
apply_niche(niche_def = my_niche, gc = gc) |> # apply niche model
time_to_strat(adm_2km, destructive = TRUE) |> # transform into strat. domain, destroy fossils that coincide with hiatuses
hist(xlab = "Stratigraphic height [m]", # plot results
main = "Fossil abundance 2 km from shore",
ylab = "# Fossils",
breaks = seq(from = min_height(adm_2km), to = max_height(adm_2km), length.out = 40))
## ----fig.alt="water depth 2 km from shore expressed in the stratigraphic domain."----
list("t" = t, "y" = wd) |> # create list with time - water depth information
time_to_strat(adm_2km) |> # transform into the strat. domain
plot(orientation = "lr", # plot water depth information in the stratigraphic domain
type = "l",
xlab = "Stratigraphic position [m]",
ylab = "Water depth [m]",
main = "Water depth in section 2 km from shore")
## ----eval=FALSE---------------------------------------------------------------
# vignette("phenotypic_evolution")
# vignette("paleoTS_functionality")
## ----eval=FALSE---------------------------------------------------------------
# vignette("advanced_functionality")