Introduction

We use the spatial groups determined in 006 as the reporting units (repunits) for genetic stock identification using rubias.

library(tidyverse)
library(rubias)
library(sf)
library(ggspatial)

dir.create("outputs/008", recursive = TRUE, showWarnings = FALSE)

Getting the data

Get the meta data for the breeding birds

breeding_meta <- read_csv("data/appendices/app1-SITable1_Breed_IndvAssigwgenos.csv")

Get the meta data for the wintering birds

winter_meta <- read_csv("data/appendices/app1-winter-indivs-assignments-and-genos.csv")

Data in rubias format for the wintering birds

This was produced in 007. We get it here:

winter_rubias <- read_rds(file = "outputs/007/winter_rubias.rds")

locus_names <- names(winter_rubias)[seq(5, ncol(winter_rubias), by = 2)]

Data for the breeding sample reference populations

First get the meta data for them and, most importantly the repunit of each. We drop the 12 birds from Bishop (BIS) in the reference because they are indeterminate and appear to a mixed population. See 006 for an expanded explanation of this.

breeder_meta <- read_csv("data/appendices/app1-SITable1_Breed_IndvAssigwgenos.csv") %>%
  select(Field_Number, repunit)  %>%
  filter(repunit != "BIS")

Now, retrieve the genetic data from the output of 004.

breeder_geno_long <- read_rds(
  file = "outputs/004/rad_and_fluidigm_combined_568_breeders_at_179_snps.rds"
) %>%
  select(Field_Number, CHROMPOS, gene_copy, allele_ACGT)

# filter it down to the 96 loci and pivot it wider an put it into rubias format
breeder96_wide <- breeder_geno_long %>%
  filter(CHROMPOS %in% locus_names) %>%
  pivot_wider(
    names_from = c(CHROMPOS, gene_copy),
    names_sep = ".",
    values_from = allele_ACGT
  )

fni <- seq(2, ncol(breeder96_wide), by = 2)

names(breeder96_wide)[fni] <- str_replace(
  names(breeder96_wide)[fni],
  "\\.1$",
  ""
) 

And join the genos onto the meta data and add the columns needed to put it in rubias format.

breeder_rubias <- breeder_meta %>%
  left_join(breeder96_wide, by = "Field_Number") %>%
  rename(indiv = Field_Number) %>%
  mutate(
    sample_type = "reference",
    collection = repunit
  ) %>%
  select(sample_type, repunit, collection, indiv, everything())

# finally, get the columns in the same order as winter_rubias
breeder_rubias <- breeder_rubias[, names(winter_rubias)]

Also, get the reference birds at the full 179 loci

breeder179_wide <- breeder_geno_long %>%
  pivot_wider(
    names_from = c(CHROMPOS, gene_copy),
    names_sep = ".",
    values_from = allele_ACGT
  )

fni <- seq(2, ncol(breeder179_wide), by = 2)

names(breeder179_wide)[fni] <- str_replace(
  names(breeder179_wide)[fni],
  "\\.1$",
  ""
) 

breeder179_rubias <- breeder_meta %>%
  left_join(breeder179_wide, by = "Field_Number") %>%
  rename(indiv = Field_Number) %>%
  mutate(
    sample_type = "reference",
    collection = repunit
  ) %>%
  select(sample_type, repunit, collection, indiv, everything())

Leave-one-out cross validation

With the full 179 loci

First, look at how we might have done with the full 179 markers:

breed179_sa <- self_assign(breeder179_rubias, 5, alle_freq_prior = list(const = 0.5))
## Summary Statistics:
## 
## 556 Individuals in Sample
## 
## 179 Loci: scaffold1006|size252274--136397, scaffold101|size1699134--364887, scaffold1035|size206130--110619, scaffold1060|size1239554--1066336, scaffold1102|size184380--125163, scaffold1129|size175808--57771, scaffold1129|size175808--76074, scaffold113|size1526484--1253923, scaffold1132|size609636--154102, scaffold12|size2584012--1685287, scaffold122|size1458747--139274, scaffold1222|size288430--119038, scaffold1273|size490713--162253, scaffold1283|size300302--205703, scaffold1296|size145063--76502, scaffold13|size3042203--2494470, scaffold13|size3042203--631407, scaffold1310|size247655--42098, scaffold1319|size131266--107716, scaffold135|size1941959--1831306, scaffold135|size1941959--97064, scaffold1387|size224635--211516, scaffold139|size1643147--1515913, scaffold1392|size131462--122932, scaffold14|size4059594--3671420, scaffold140|size1466565--406249, scaffold1429|size110221--29745, scaffold1433|size205388--71220, scaffold144|size1428860--412887, scaffold144|size1428860--443836, scaffold1448|size107159--55882, scaffold1476|size153177--25433, scaffold149|size904812--428419, scaffold15|size5535645--274256, scaffold155|size2260171--712214, scaffold155|size2260171--960750, scaffold1568|size97190--90156, scaffold157|size2224338--320091, scaffold1591|size132724--55797, scaffold16|size2589160--1281537, scaffold16|size2589160--248135, scaffold1606|size84157--26684, scaffold1615|size88005--63016, scaffold1655|size138967--68765, scaffold168|size1726349--1229973, scaffold1713|size83011--50318, scaffold1727|size69669--5290, scaffold1743|size121722--92236, scaffold1764|size158975--91890, scaffold177|size1754471--1271391, scaffold182|size1009393--179491, scaffold184|size927826--205066, scaffold184|size927826--39400, scaffold186|size1492175--406729, scaffold187|size1931383--747380, scaffold189|size1549363--92467, scaffold194|size798623--243164, scaffold195|size1760703--729161, scaffold2|size4533513--2574844, scaffold2|size4533513--4036677, scaffold2|size4533513--4521962, scaffold2|size4533513--483049, scaffold2016|size42655--28604, scaffold2107|size41527--33509, scaffold212|size762246--508412, scaffold212|size762246--758183, scaffold217|size1918799--290377, scaffold219|size747757--300501, scaffold22|size5013007--3160995, scaffold22|size5013007--4313412, scaffold22|size5013007--676086, scaffold221|size740363--444937, scaffold226|size936269--367188, scaffold226|size936269--649314, scaffold23|size2178997--1730814, scaffold23|size2178997--1748592, scaffold235|size1242204--446098, scaffold236|size2090792--1889654, scaffold236|size2090792--381638, scaffold240|size1935192--1665156, scaffold248|size1534464--922359, scaffold2526|size41326--20840, scaffold26|size2357266--1831784, scaffold262|size680716--544307, scaffold272|size679582--355362, scaffold28|size2823434--1892394, scaffold282|size975252--798925, scaffold284|size1552100--1143269, scaffold292|size1342341--678398, scaffold298|size702513--685144, scaffold31|size1920502--974288, scaffold321|size1084243--40283, scaffold334|size599637--389006, scaffold34|size3740991--1438630, scaffold342|size1861417--1191331, scaffold343|size799674--749023, scaffold345|size607713--38773, scaffold351|size1117198--103070, scaffold363|size828163--277380, scaffold37|size1818073--714564, scaffold383|size710549--445834, scaffold383|size710549--704656, scaffold39|size2480183--806553, scaffold39|size2480183--984988, scaffold398|size1781980--414888, scaffold4|size3804566--2965194, scaffold40|size2234952--2074017, scaffold405|size801240--146251, scaffold406|size580191--218897, scaffold415|size763157--100919, scaffold415|size763157--593508, scaffold426|size1138770--614609, scaffold43|size1863611--234469, scaffold432|size744455--438775, scaffold434|size946695--360533, scaffold44|size1908036--1365854, scaffold449|size826340--787269, scaffold455|size476776--23457, scaffold47|size1546949--553028, scaffold47|size1546949--597528, scaffold471|size1368335--421209, scaffold483|size1218004--935479, scaffold487|size479533--372024, scaffold491|size805508--114374, scaffold50|size1795014--436969, scaffold518|size600044--5351, scaffold520|size1094406--1062981, scaffold520|size1094406--1090372, scaffold526|size440949--275866, scaffold527|size1067160--420557, scaffold527|size1067160--540742, scaffold550|size796879--550473, scaffold560|size1140492--330298, scaffold565|size409173--145037, scaffold579|size954524--827611, scaffold59|size1551110--1054102, scaffold597|size822913--520870, scaffold6|size4315531--3315819, scaffold605|size788243--114130, scaffold616|size383281--375887, scaffold619|size634076--330068, scaffold630|size906685--889286, scaffold631|size1259156--1062623, scaffold633|size372093--321811, scaffold64|size1360303--1226680, scaffold642|size393756--285208, scaffold65|size4453928--4163492, scaffold65|size4453928--825590, scaffold657|size717538--177254, scaffold683|size364172--9404, scaffold685|size505991--222672, scaffold685|size505991--339711, scaffold685|size505991--43776, scaffold70|size1330859--250988, scaffold722|size395592--196856, scaffold733|size745334--542930, scaffold74|size2480735--258173, scaffold740|size344948--327669, scaffold745|size721762--205303, scaffold748|size532870--327124, scaffold763|size302500--121873, scaffold767|size301186--281840, scaffold780|size295419--41185, scaffold79|size2606397--333804, scaffold81|size2596050--1038155, scaffold819|size405531--313357, scaffold827|size534266--518899, scaffold854|size264813--207700, scaffold86|size2944007--1190580, scaffold862|size387690--369878, scaffold882|size376633--227365, scaffold885|size433544--127878, scaffold902|size247835--8382, scaffold91|size2966241--1049941, scaffold919|size245653--242852, scaffold93|size1158651--797768, scaffold931|size327931--74348, scaffold969|size425790--357236, scaffold974|size269015--155940
## 
## 7 Reporting Units: PNW, KER, SCC, INW, SSW, WMT, EST
## 
## 7 Collections: PNW, KER, SCC, INW, SSW, WMT, EST
## 
## 1.16% of allelic data identified as missing

Make a table:

breeding_meta %>%
  select(`final-map-label`, Field_Number) %>%
  left_join(breed179_sa, ., by = c("indiv" = "Field_Number")) %>%
  group_by(`final-map-label`, indiv) %>%
  slice(1) %>%
  ungroup() %>%
  count(`final-map-label`, inferred_repunit) %>%
  pivot_wider(
    names_from = inferred_repunit,
    values_from = n,
    values_fill = list(n = 0L)
  ) %>% 
  select(
    `final-map-label`,
    PNW,
    KER,
    SCC,
    INW,
    SSW,
    WMT,
    EST
  )

The same with the 96 SNPs

We want to assess how accurately we can assign individuals to their genoscape repunit of origin.

breed_sa <- self_assign(breeder_rubias, 5)
## Summary Statistics:
## 
## 556 Individuals in Sample
## 
## 96 Loci: scaffold101|size1699134--364887, scaffold1035|size206130--110619, scaffold1102|size184380--125163, scaffold1129|size175808--57771, scaffold1129|size175808--76074, scaffold113|size1526484--1253923, scaffold12|size2584012--1685287, scaffold1296|size145063--76502, scaffold1310|size247655--42098, scaffold1319|size131266--107716, scaffold135|size1941959--97064, scaffold139|size1643147--1515913, scaffold1392|size131462--122932, scaffold1429|size110221--29745, scaffold144|size1428860--412887, scaffold144|size1428860--443836, scaffold1448|size107159--55882, scaffold1568|size97190--90156, scaffold1606|size84157--26684, scaffold1764|size158975--91890, scaffold177|size1754471--1271391, scaffold186|size1492175--406729, scaffold189|size1549363--92467, scaffold2|size4533513--4036677, scaffold2|size4533513--4521962, scaffold2|size4533513--483049, scaffold2016|size42655--28604, scaffold2107|size41527--33509, scaffold217|size1918799--290377, scaffold219|size747757--300501, scaffold22|size5013007--3160995, scaffold22|size5013007--4313412, scaffold22|size5013007--676086, scaffold226|size936269--367188, scaffold23|size2178997--1730814, scaffold23|size2178997--1748592, scaffold248|size1534464--922359, scaffold26|size2357266--1831784, scaffold262|size680716--544307, scaffold28|size2823434--1892394, scaffold292|size1342341--678398, scaffold298|size702513--685144, scaffold31|size1920502--974288, scaffold321|size1084243--40283, scaffold342|size1861417--1191331, scaffold343|size799674--749023, scaffold363|size828163--277380, scaffold37|size1818073--714564, scaffold383|size710549--445834, scaffold383|size710549--704656, scaffold39|size2480183--806553, scaffold39|size2480183--984988, scaffold398|size1781980--414888, scaffold4|size3804566--2965194, scaffold40|size2234952--2074017, scaffold406|size580191--218897, scaffold415|size763157--100919, scaffold43|size1863611--234469, scaffold434|size946695--360533, scaffold44|size1908036--1365854, scaffold449|size826340--787269, scaffold455|size476776--23457, scaffold47|size1546949--553028, scaffold47|size1546949--597528, scaffold471|size1368335--421209, scaffold483|size1218004--935479, scaffold50|size1795014--436969, scaffold518|size600044--5351, scaffold520|size1094406--1062981, scaffold520|size1094406--1090372, scaffold560|size1140492--330298, scaffold59|size1551110--1054102, scaffold6|size4315531--3315819, scaffold619|size634076--330068, scaffold631|size1259156--1062623, scaffold657|size717538--177254, scaffold683|size364172--9404, scaffold685|size505991--222672, scaffold685|size505991--339711, scaffold685|size505991--43776, scaffold70|size1330859--250988, scaffold740|size344948--327669, scaffold745|size721762--205303, scaffold748|size532870--327124, scaffold763|size302500--121873, scaffold767|size301186--281840, scaffold780|size295419--41185, scaffold79|size2606397--333804, scaffold819|size405531--313357, scaffold827|size534266--518899, scaffold854|size264813--207700, scaffold862|size387690--369878, scaffold902|size247835--8382, scaffold919|size245653--242852, scaffold93|size1158651--797768, scaffold974|size269015--155940
## 
## 7 Reporting Units: PNW, KER, SCC, INW, SSW, WMT, EST
## 
## 7 Collections: PNW, KER, SCC, INW, SSW, WMT, EST
## 
## 0.96% of allelic data identified as missing

Now, look at numbers of correct/incorrect assignment. For this we want to join the population number to each individual.

breeding_meta %>%
  select(`final-map-label`, Field_Number) %>%
  left_join(breed_sa, ., by = c("indiv" = "Field_Number")) %>%
  group_by(`final-map-label`, indiv) %>%
  slice(1) %>%
  ungroup() %>%
  count(`final-map-label`, inferred_repunit) %>%
  pivot_wider(
    names_from = inferred_repunit,
    values_from = n,
    values_fill = list(n = 0L)
  ) %>% 
  select(
    `final-map-label`,
    PNW,
    KER,
    SCC,
    INW,
    SSW,
    WMT,
    EST
  )

That is the result that is in S1-Table 1.

Now assign the wintering birds

set.seed(15)
winter_assig <- infer_mixture(
  reference = breeder_rubias,
  mixture = winter_rubias,
  gen_start_col = 5
)

# get the maximum a-posterior (MAP) assignments
winter_MAP <- winter_assig$indiv_posteriors %>%
  arrange(indiv, desc(PofZ)) %>%
  group_by(indiv) %>%
  slice(1)

Check that this is congruent with the appendix:

winter_MAP %>%
  left_join(
    winter_meta %>% select(Field_Number, Assignment),
    by = c("indiv" = "Field_Number")
    ) %>% 
  ungroup() %>%
  count(repunit == Assignment)

As it is showing 363 TRUEs, that means that the assignments listed in appendix S1 are correct.

finally, put those points on a map

# get assignments and add Lat-Longs and then jitter them a little
set.seed(100)
winter_points <- winter_MAP %>%
  select(indiv, repunit) %>%
  left_join(
    winter_meta %>% select(Field_Number, Lat, Long),
    by = c("indiv" = "Field_Number")
  ) %>%
  mutate(
    jitLat = Lat + runif(n(), min = -0.5, max = 0.5 ),
    jitLong = Long + runif(n(), min = -0.5, max = 0.5 )
  ) %>%
  group_by(repunit) %>%
  mutate(n_in_repu = n()) %>%
  arrange(desc(n_in_repu))

# note that we arranged these so the last ones (and hopefully, thus, the
# ones plotted on top) are from the least frequent repunits.

Make a simple basemap with Natural Earth data:

domain <- c(
  xmin = -125,
  xmax = -60,
  ymin = -2,
  ymax = 30
)
coast_cropped <- st_read("geo-spatial/ne_10m_coastline/ne_10m_coastline.shp") %>%
  st_crop(domain)
## Reading layer `ne_10m_coastline' from data source `/Users/eriq/Documents/git-repos/ruegg-et-al-wifl-genoscape/geo-spatial/ne_10m_coastline/ne_10m_coastline.shp' using driver `ESRI Shapefile'
## Simple feature collection with 4133 features and 3 fields
## geometry type:  LINESTRING
## dimension:      XY
## bbox:           xmin: -180 ymin: -85.22194 xmax: 180 ymax: 83.6341
## geographic CRS: WGS 84
## Warning: attribute variables are assumed to be spatially constant throughout all
## geometries
countries_cropped <-  st_read("geo-spatial/ne_10m_admin_0_boundary_lines_land/ne_10m_admin_0_boundary_lines_land.shp") %>%
  st_crop(domain)
## Reading layer `ne_10m_admin_0_boundary_lines_land' from data source `/Users/eriq/Documents/git-repos/ruegg-et-al-wifl-genoscape/geo-spatial/ne_10m_admin_0_boundary_lines_land/ne_10m_admin_0_boundary_lines_land.shp' using driver `ESRI Shapefile'
## Simple feature collection with 462 features and 18 fields
## geometry type:  MULTILINESTRING
## dimension:      XY
## bbox:           xmin: -141.0055 ymin: -55.12092 xmax: 140.9776 ymax: 70.07531
## geographic CRS: WGS 84
## Warning: attribute variables are assumed to be spatially constant throughout all
## geometries
states_cropped <- st_read("geo-spatial/ne_10m_admin_1_states_provinces_lines/ne_10m_admin_1_states_provinces_lines.shp") %>%
  st_crop(domain)
## Reading layer `ne_10m_admin_1_states_provinces_lines' from data source `/Users/eriq/Documents/git-repos/ruegg-et-al-wifl-genoscape/geo-spatial/ne_10m_admin_1_states_provinces_lines/ne_10m_admin_1_states_provinces_lines.shp' using driver `ESRI Shapefile'
## Simple feature collection with 10114 features and 21 fields
## geometry type:  MULTILINESTRING
## dimension:      XY
## bbox:           xmin: -178.1371 ymin: -49.25087 xmax: 178.4486 ymax: 81.12853
## geographic CRS: WGS 84
## Warning: attribute variables are assumed to be spatially constant throughout all
## geometries
basemap <- ggplot() +
  geom_sf(data = coast_cropped, colour = "gray") +
  geom_sf(data = countries_cropped, colour = "gray", fill = NA) +
  geom_sf(data = states_cropped, colour = "gray", fill = NA, size = 0.1) +
  theme_bw()

basemap

Then add some points to that

source("R/colors.R")
basemap + geom_spatial_point(
    data = winter_points, 
    mapping = aes(x = jitLong, y = jitLat, fill = repunit), 
    size = 1,
    shape = 21,
  ) +
  scale_fill_manual(values = cluster_colors)

That gives a nice picture. For the final figure in the paper, the points were moved around by hand so that each was was maximally visible, and, of course, the Natural Earth rasters were used as a background as described in 006.

Running Time

Running the code and rendering this notebook required approximately this much time on a Mac laptop of middling speed, listed in HH:MM:SS.

td <- Sys.time() - start_time
tdf <- hms::as_hms(ceiling(hms::as_hms(td)))
dir.create("stored_run_times", showWarnings = FALSE, recursive = TRUE)
write_rds(tdf, "stored_run_times/008.rds")
tdf
## 00:00:11

A quick note about the repository. The the output from this just gets stored in ./data/appendices/app1-winter-indivs-assignments-and-genos.csv as it is more accessible to users that way (and it can be part of the supp info, if desired).

For the final analysis (101) the results of data/appendices/app1-winter-indivs-assignments-and-genos.csv and of the breeding area analyses, data/appendices/app1-Individual_Assignment_All.csv, were combined into data/appendices/app1-SITable1_Breed_IndvAssigwgenos.csv, which was used. That last file also includes the assignments of migrants that were typed, but not used in the analysis. # Session Info

sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value                       
##  version  R version 4.0.3 (2020-10-10)
##  os       macOS Mojave 10.14.6        
##  system   x86_64, darwin17.0          
##  ui       X11                         
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  ctype    en_US.UTF-8                 
##  tz       America/Denver              
##  date     2021-04-01                  
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package      * version date       lib source        
##  assertthat     0.2.1   2019-03-21 [1] CRAN (R 4.0.2)
##  backports      1.2.1   2020-12-09 [1] CRAN (R 4.0.2)
##  broom          0.7.3   2020-12-16 [1] CRAN (R 4.0.2)
##  cellranger     1.1.0   2016-07-27 [1] CRAN (R 4.0.2)
##  class          7.3-17  2020-04-26 [2] CRAN (R 4.0.3)
##  classInt       0.4-3   2020-04-07 [1] CRAN (R 4.0.2)
##  cli            2.2.0   2020-11-20 [1] CRAN (R 4.0.2)
##  colorspace     2.0-0   2020-11-11 [1] CRAN (R 4.0.2)
##  crayon         1.3.4   2017-09-16 [1] CRAN (R 4.0.2)
##  DBI            1.1.0   2019-12-15 [1] CRAN (R 4.0.2)
##  dbplyr         2.0.0   2020-11-03 [1] CRAN (R 4.0.2)
##  digest         0.6.27  2020-10-24 [1] CRAN (R 4.0.2)
##  dplyr        * 1.0.2   2020-08-18 [1] CRAN (R 4.0.2)
##  e1071          1.7-4   2020-10-14 [1] CRAN (R 4.0.2)
##  ellipsis       0.3.1   2020-05-15 [1] CRAN (R 4.0.2)
##  evaluate       0.14    2019-05-28 [1] CRAN (R 4.0.1)
##  fansi          0.4.1   2020-01-08 [1] CRAN (R 4.0.2)
##  farver         2.0.3   2020-01-16 [1] CRAN (R 4.0.2)
##  forcats      * 0.5.0   2020-03-01 [1] CRAN (R 4.0.2)
##  fs             1.5.0   2020-07-31 [1] CRAN (R 4.0.2)
##  generics       0.1.0   2020-10-31 [1] CRAN (R 4.0.2)
##  ggplot2      * 3.3.2   2020-06-19 [1] CRAN (R 4.0.2)
##  ggspatial    * 1.1.5   2021-01-04 [1] CRAN (R 4.0.2)
##  glue           1.4.2   2020-08-27 [1] CRAN (R 4.0.2)
##  gtable         0.3.0   2019-03-25 [1] CRAN (R 4.0.2)
##  haven          2.3.1   2020-06-01 [1] CRAN (R 4.0.2)
##  hms            0.5.3   2020-01-08 [1] CRAN (R 4.0.2)
##  htmltools      0.5.1.1 2021-01-22 [1] CRAN (R 4.0.2)
##  httr           1.4.2   2020-07-20 [1] CRAN (R 4.0.2)
##  jsonlite       1.7.2   2020-12-09 [1] CRAN (R 4.0.2)
##  KernSmooth     2.23-17 2020-04-26 [2] CRAN (R 4.0.3)
##  knitr          1.30    2020-09-22 [1] CRAN (R 4.0.2)
##  lifecycle      0.2.0   2020-03-06 [1] CRAN (R 4.0.2)
##  lubridate      1.7.9.2 2020-11-13 [1] CRAN (R 4.0.2)
##  magrittr       2.0.1   2020-11-17 [1] CRAN (R 4.0.2)
##  modelr         0.1.8   2020-05-19 [1] CRAN (R 4.0.2)
##  munsell        0.5.0   2018-06-12 [1] CRAN (R 4.0.2)
##  pillar         1.4.7   2020-11-20 [1] CRAN (R 4.0.2)
##  pkgconfig      2.0.3   2019-09-22 [1] CRAN (R 4.0.2)
##  purrr        * 0.3.4   2020-04-17 [1] CRAN (R 4.0.2)
##  R6             2.5.0   2020-10-28 [1] CRAN (R 4.0.2)
##  Rcpp           1.0.5   2020-07-06 [1] CRAN (R 4.0.2)
##  RcppParallel   5.0.2   2020-06-24 [1] CRAN (R 4.0.2)
##  readr        * 1.4.0   2020-10-05 [1] CRAN (R 4.0.2)
##  readxl         1.3.1   2019-03-13 [1] CRAN (R 4.0.2)
##  reprex         0.3.0   2019-05-16 [1] CRAN (R 4.0.2)
##  rlang          0.4.9   2020-11-26 [1] CRAN (R 4.0.2)
##  rmarkdown      2.6     2020-12-14 [1] CRAN (R 4.0.2)
##  rstudioapi     0.13    2020-11-12 [1] CRAN (R 4.0.2)
##  rubias       * 0.3.2   2021-01-15 [1] CRAN (R 4.0.2)
##  rvest          0.3.6   2020-07-25 [1] CRAN (R 4.0.2)
##  scales         1.1.1   2020-05-11 [1] CRAN (R 4.0.2)
##  sessioninfo    1.1.1   2018-11-05 [1] CRAN (R 4.0.2)
##  sf           * 0.9-6   2020-09-13 [1] CRAN (R 4.0.2)
##  stringi        1.5.3   2020-09-09 [1] CRAN (R 4.0.2)
##  stringr      * 1.4.0   2019-02-10 [1] CRAN (R 4.0.2)
##  tibble       * 3.0.4   2020-10-12 [1] CRAN (R 4.0.2)
##  tidyr        * 1.1.2   2020-08-27 [1] CRAN (R 4.0.2)
##  tidyselect     1.1.0   2020-05-11 [1] CRAN (R 4.0.2)
##  tidyverse    * 1.3.0   2019-11-21 [1] CRAN (R 4.0.2)
##  units          0.6-7   2020-06-13 [1] CRAN (R 4.0.2)
##  vctrs          0.3.6   2020-12-17 [1] CRAN (R 4.0.2)
##  withr          2.3.0   2020-09-22 [1] CRAN (R 4.0.2)
##  xfun           0.19    2020-10-30 [1] CRAN (R 4.0.2)
##  xml2           1.3.2   2020-04-23 [1] CRAN (R 4.0.2)
##  yaml           2.2.1   2020-02-01 [1] CRAN (R 4.0.2)
## 
## [1] /Users/eriq/Library/R/4.0/library
## [2] /Library/Frameworks/R.framework/Versions/4.0/Resources/library