In this notebook, we combine the breeding-bird Fluidigm data with breeding birds that were typed at the same markers using RAD. We put them all together in a common data set and then run it through STRUCTURE.
This requires a few steps because the RAD data are in 012 format, so we must add the allelic types back on there.
library(tidyverse)
dir.create("outputs/004", recursive = TRUE, showWarnings = FALSE)
rad_all <- read_rds("data/rad_wifl_clean_175_105000.rds")
fluidigm_long <- read_rds("outputs/003/final_fluidigm_breeders_179_loci_393_birds_long.rds")
target_snps <- unique(fluidigm_long$CHROMPOS)
rad_179 <- rad_all[, target_snps]
# rad_179 is a matrix. We will make a long tibble out of it
rad_long <- as_tibble(rad_179) %>%
mutate(Field_Number = rownames(rad_179)) %>%
select(Field_Number, everything()) %>%
pivot_longer(
cols = -Field_Number,
names_to = "CHROMPOS",
values_to = "geno012"
) %>%
mutate(
geno012 = ifelse(geno012 == -1, NA_integer_, geno012)
)
Ultimately, we want to get these in the same format as the variable fluidigm_long
, above.
First, expand the rad data to have alleles of 0 and 1
rad_01_alleles <- rad_long %>%
mutate(
`1` = case_when(
geno012 == 0 ~ 0L,
geno012 == 1 ~ 0L,
geno012 == 2 ~ 1L,
is.na(geno012) ~ NA_integer_,
TRUE ~ -999L
),
`2` = case_when(
geno012 == 0 ~ 0L,
geno012 == 1 ~ 1L,
geno012 == 2 ~ 1L,
is.na(geno012) ~ NA_integer_,
TRUE ~ -999L
)
) %>%
pivot_longer(
cols = c(`1`, `2`),
names_to = "gene_copy",
values_to = "allele_01"
)
Then join that with the SNP metadata in order to get the alternative SNP names and to get REF and ALT on it, and then create the allele and allele_ACGT columns:
assay_meta <- read_csv("data/WIFL_fluidigm_assay_info.csv") %>%
dplyr::select(SNP_Name, CHROM, REF, ALT) %>%
rename(
assay_name = SNP_Name,
CHROMPOS = CHROM
)
rad3 <- left_join(
rad_01_alleles,
assay_meta,
by = "CHROMPOS"
) %>%
mutate(
allele_ACGT = case_when(
allele_01 == 0 ~ REF,
allele_01 == 1 ~ ALT,
TRUE ~ NA_character_
),
allele = case_when(
allele_ACGT == "A" ~ 1,
allele_ACGT == "C" ~ 2,
allele_ACGT == "G" ~ 3,
allele_ACGT == "T" ~ 4,
TRUE ~ NA_real_
)
)
Now, get some meta data for these RAD-typed birds. And get the columns looking like fluidigm_long
so we can bind_rows() them.
bird_meta <- read_csv("data/appendices/app1-SITable1_Breed_IndvAssigwgenos.csv") %>%
select(c("Field_Number", "short_name", "group_af_short_name", "geno_method", "Stage"))
rad4 <- left_join(
rad3,
bird_meta,
by = "Field_Number"
) %>%
select(names(fluidigm_long))
Now, bind_rows() the fluidigm and rad data together, and write it out for downstream use.
rad_and_fluidigm_combined_568_breeders_at_179_snps <- bind_rows(
fluidigm_long,
rad4
) %>%
mutate(allele = ifelse(allele == 0, NA, allele)) # make sure that missing data in the alleles is reported as NA, consistently
write_rds(
rad_and_fluidigm_combined_568_breeders_at_179_snps,
file = "outputs/004/rad_and_fluidigm_combined_568_breeders_at_179_snps.rds",
compress = "xz"
)
This is just a check to make sure that Appendix 1 supplemental data is correct.
app1_genos <- read_csv("data/appendices/app1-SITable1_Breed_IndvAssigwgenos.csv") %>%
select(Field_Number, starts_with("scaffold"))
# put the rad+fluidigm data into wide format:
rf_wide <- rad_and_fluidigm_combined_568_breeders_at_179_snps %>%
group_by(Field_Number, CHROMPOS) %>%
summarise(geno012 = geno012[1]) %>%
ungroup() %>%
pivot_wider(
names_from = CHROMPOS,
values_from = geno012
)
# get the rad and fluidigm data sorted the same way as the appendix 1 stuff
rf_bird_ord <- left_join(
app1_genos %>% select(Field_Number),
rf_wide
)
# there are some issues here with non-overlapping locus names
mismatch <- c(
setdiff(names(rf_bird_ord), names(app1_genos)),
setdiff(names(app1_genos), names(rf_bird_ord))
)
# let's drop those from both and compare them
from_app <- app1_genos[, !(names(app1_genos) %in% mismatch) ]
from_this <- rf_bird_ord[, !(names(rf_bird_ord) %in% mismatch) ]
from_this <- from_this[, names(from_app)]
all.equal(from_this, from_app)
## [1] "Component \"scaffold1006|size252274--136397\": Modes: numeric, character"
## [2] "Component \"scaffold1006|size252274--136397\": target is numeric, current is character"
## [3] "Component \"scaffold101|size1699134--364887\": Modes: numeric, character"
## [4] "Component \"scaffold101|size1699134--364887\": target is numeric, current is character"
## [5] "Component \"scaffold1035|size206130--110619\": Modes: numeric, character"
## [6] "Component \"scaffold1035|size206130--110619\": target is numeric, current is character"
## [7] "Component \"scaffold1060|size1239554--1066336\": Modes: numeric, character"
## [8] "Component \"scaffold1060|size1239554--1066336\": target is numeric, current is character"
## [9] "Component \"scaffold1102|size184380--125163\": Modes: numeric, character"
## [10] "Component \"scaffold1102|size184380--125163\": target is numeric, current is character"
## [11] "Component \"scaffold1129|size175808--57771\": Modes: numeric, character"
## [12] "Component \"scaffold1129|size175808--57771\": target is numeric, current is character"
## [13] "Component \"scaffold1129|size175808--76074\": Modes: numeric, character"
## [14] "Component \"scaffold1129|size175808--76074\": target is numeric, current is character"
## [15] "Component \"scaffold113|size1526484--1253923\": Modes: numeric, character"
## [16] "Component \"scaffold113|size1526484--1253923\": target is numeric, current is character"
## [17] "Component \"scaffold1132|size609636--154102\": Modes: numeric, character"
## [18] "Component \"scaffold1132|size609636--154102\": target is numeric, current is character"
## [19] "Component \"scaffold12|size2584012--1685287\": Modes: numeric, character"
## [20] "Component \"scaffold12|size2584012--1685287\": target is numeric, current is character"
## [21] "Component \"scaffold122|size1458747--139274\": Modes: numeric, character"
## [22] "Component \"scaffold122|size1458747--139274\": target is numeric, current is character"
## [23] "Component \"scaffold1222|size288430--119038\": Modes: numeric, character"
## [24] "Component \"scaffold1222|size288430--119038\": target is numeric, current is character"
## [25] "Component \"scaffold1273|size490713--162253\": Modes: numeric, character"
## [26] "Component \"scaffold1273|size490713--162253\": target is numeric, current is character"
## [27] "Component \"scaffold1283|size300302--205703\": Modes: numeric, character"
## [28] "Component \"scaffold1283|size300302--205703\": target is numeric, current is character"
## [29] "Component \"scaffold1296|size145063--76502\": Modes: numeric, character"
## [30] "Component \"scaffold1296|size145063--76502\": target is numeric, current is character"
## [31] "Component \"scaffold13|size3042203--2494470\": Modes: numeric, character"
## [32] "Component \"scaffold13|size3042203--2494470\": target is numeric, current is character"
## [33] "Component \"scaffold13|size3042203--631407\": Modes: numeric, character"
## [34] "Component \"scaffold13|size3042203--631407\": target is numeric, current is character"
## [35] "Component \"scaffold1310|size247655--42098\": Modes: numeric, character"
## [36] "Component \"scaffold1310|size247655--42098\": target is numeric, current is character"
## [37] "Component \"scaffold1319|size131266--107716\": Modes: numeric, character"
## [38] "Component \"scaffold1319|size131266--107716\": target is numeric, current is character"
## [39] "Component \"scaffold135|size1941959--1831306\": Modes: numeric, character"
## [40] "Component \"scaffold135|size1941959--1831306\": target is numeric, current is character"
## [41] "Component \"scaffold135|size1941959--97064\": Modes: numeric, character"
## [42] "Component \"scaffold135|size1941959--97064\": target is numeric, current is character"
## [43] "Component \"scaffold1387|size224635--211516\": Modes: numeric, character"
## [44] "Component \"scaffold1387|size224635--211516\": target is numeric, current is character"
## [45] "Component \"scaffold139|size1643147--1515913\": Modes: numeric, character"
## [46] "Component \"scaffold139|size1643147--1515913\": target is numeric, current is character"
## [47] "Component \"scaffold1392|size131462--122932\": Modes: numeric, character"
## [48] "Component \"scaffold1392|size131462--122932\": target is numeric, current is character"
## [49] "Component \"scaffold14|size4059594--3671420\": Modes: numeric, character"
## [50] "Component \"scaffold14|size4059594--3671420\": target is numeric, current is character"
## [51] "Component \"scaffold140|size1466565--406249\": Modes: numeric, character"
## [52] "Component \"scaffold140|size1466565--406249\": target is numeric, current is character"
## [53] "Component \"scaffold1429|size110221--29745\": Modes: numeric, character"
## [54] "Component \"scaffold1429|size110221--29745\": target is numeric, current is character"
## [55] "Component \"scaffold1433|size205388--71220\": Modes: numeric, character"
## [56] "Component \"scaffold1433|size205388--71220\": target is numeric, current is character"
## [57] "Component \"scaffold144|size1428860--412887\": Modes: numeric, character"
## [58] "Component \"scaffold144|size1428860--412887\": target is numeric, current is character"
## [59] "Component \"scaffold144|size1428860--443836\": Modes: numeric, character"
## [60] "Component \"scaffold144|size1428860--443836\": target is numeric, current is character"
## [61] "Component \"scaffold1448|size107159--55882\": Modes: numeric, character"
## [62] "Component \"scaffold1448|size107159--55882\": target is numeric, current is character"
## [63] "Component \"scaffold1476|size153177--25433\": Modes: numeric, character"
## [64] "Component \"scaffold1476|size153177--25433\": target is numeric, current is character"
## [65] "Component \"scaffold149|size904812--428419\": Modes: numeric, character"
## [66] "Component \"scaffold149|size904812--428419\": target is numeric, current is character"
## [67] "Component \"scaffold15|size5535645--274256\": Modes: numeric, character"
## [68] "Component \"scaffold15|size5535645--274256\": target is numeric, current is character"
## [69] "Component \"scaffold155|size2260171--712214\": Modes: numeric, character"
## [70] "Component \"scaffold155|size2260171--712214\": target is numeric, current is character"
## [71] "Component \"scaffold155|size2260171--960750\": Modes: numeric, character"
## [72] "Component \"scaffold155|size2260171--960750\": target is numeric, current is character"
## [73] "Component \"scaffold1568|size97190--90156\": Modes: numeric, character"
## [74] "Component \"scaffold1568|size97190--90156\": target is numeric, current is character"
## [75] "Component \"scaffold157|size2224338--320091\": Modes: numeric, character"
## [76] "Component \"scaffold157|size2224338--320091\": target is numeric, current is character"
## [77] "Component \"scaffold1591|size132724--55797\": Modes: numeric, character"
## [78] "Component \"scaffold1591|size132724--55797\": target is numeric, current is character"
## [79] "Component \"scaffold16|size2589160--1281537\": Modes: numeric, character"
## [80] "Component \"scaffold16|size2589160--1281537\": target is numeric, current is character"
## [81] "Component \"scaffold16|size2589160--248135\": Modes: numeric, character"
## [82] "Component \"scaffold16|size2589160--248135\": target is numeric, current is character"
## [83] "Component \"scaffold1606|size84157--26684\": Modes: numeric, character"
## [84] "Component \"scaffold1606|size84157--26684\": target is numeric, current is character"
## [85] "Component \"scaffold1615|size88005--63016\": Modes: numeric, character"
## [86] "Component \"scaffold1615|size88005--63016\": target is numeric, current is character"
## [87] "Component \"scaffold1655|size138967--68765\": Modes: numeric, character"
## [88] "Component \"scaffold1655|size138967--68765\": target is numeric, current is character"
## [89] "Component \"scaffold168|size1726349--1229973\": Modes: numeric, character"
## [90] "Component \"scaffold168|size1726349--1229973\": target is numeric, current is character"
## [91] "Component \"scaffold1713|size83011--50318\": Modes: numeric, character"
## [92] "Component \"scaffold1713|size83011--50318\": target is numeric, current is character"
## [93] "Component \"scaffold1727|size69669--5290\": Modes: numeric, character"
## [94] "Component \"scaffold1727|size69669--5290\": target is numeric, current is character"
## [95] "Component \"scaffold1743|size121722--92236\": Modes: numeric, character"
## [96] "Component \"scaffold1743|size121722--92236\": target is numeric, current is character"
## [97] "Component \"scaffold1764|size158975--91890\": Modes: numeric, character"
## [98] "Component \"scaffold1764|size158975--91890\": target is numeric, current is character"
## [99] "Component \"scaffold177|size1754471--1271391\": Modes: numeric, character"
## [100] "Component \"scaffold177|size1754471--1271391\": target is numeric, current is character"
## [101] "Component \"scaffold182|size1009393--179491\": Modes: numeric, character"
## [102] "Component \"scaffold182|size1009393--179491\": target is numeric, current is character"
## [103] "Component \"scaffold184|size927826--205066\": Modes: numeric, character"
## [104] "Component \"scaffold184|size927826--205066\": target is numeric, current is character"
## [105] "Component \"scaffold184|size927826--39400\": Modes: numeric, character"
## [106] "Component \"scaffold184|size927826--39400\": target is numeric, current is character"
## [107] "Component \"scaffold186|size1492175--406729\": Modes: numeric, character"
## [108] "Component \"scaffold186|size1492175--406729\": target is numeric, current is character"
## [109] "Component \"scaffold187|size1931383--747380\": Modes: numeric, character"
## [110] "Component \"scaffold187|size1931383--747380\": target is numeric, current is character"
## [111] "Component \"scaffold189|size1549363--92467\": Modes: numeric, character"
## [112] "Component \"scaffold189|size1549363--92467\": target is numeric, current is character"
## [113] "Component \"scaffold194|size798623--243164\": Modes: numeric, character"
## [114] "Component \"scaffold194|size798623--243164\": target is numeric, current is character"
## [115] "Component \"scaffold195|size1760703--729161\": Modes: numeric, character"
## [116] "Component \"scaffold195|size1760703--729161\": target is numeric, current is character"
## [117] "Component \"scaffold2|size4533513--2574844\": Modes: numeric, character"
## [118] "Component \"scaffold2|size4533513--2574844\": target is numeric, current is character"
## [119] "Component \"scaffold2|size4533513--4036677\": Modes: numeric, character"
## [120] "Component \"scaffold2|size4533513--4036677\": target is numeric, current is character"
## [121] "Component \"scaffold2|size4533513--4521962\": Modes: numeric, character"
## [122] "Component \"scaffold2|size4533513--4521962\": target is numeric, current is character"
## [123] "Component \"scaffold2|size4533513--483049\": Modes: numeric, character"
## [124] "Component \"scaffold2|size4533513--483049\": target is numeric, current is character"
## [125] "Component \"scaffold2016|size42655--28604\": Modes: numeric, character"
## [126] "Component \"scaffold2016|size42655--28604\": target is numeric, current is character"
## [127] "Component \"scaffold2107|size41527--33509\": Modes: numeric, character"
## [128] "Component \"scaffold2107|size41527--33509\": target is numeric, current is character"
## [129] "Component \"scaffold212|size762246--508412\": Modes: numeric, character"
## [130] "Component \"scaffold212|size762246--508412\": target is numeric, current is character"
## [131] "Component \"scaffold212|size762246--758183\": Modes: numeric, character"
## [132] "Component \"scaffold212|size762246--758183\": target is numeric, current is character"
## [133] "Component \"scaffold217|size1918799--290377\": Modes: numeric, character"
## [134] "Component \"scaffold217|size1918799--290377\": target is numeric, current is character"
## [135] "Component \"scaffold219|size747757--300501\": Modes: numeric, character"
## [136] "Component \"scaffold219|size747757--300501\": target is numeric, current is character"
## [137] "Component \"scaffold22|size5013007--3160995\": Modes: numeric, character"
## [138] "Component \"scaffold22|size5013007--3160995\": target is numeric, current is character"
## [139] "Component \"scaffold22|size5013007--4313412\": Modes: numeric, character"
## [140] "Component \"scaffold22|size5013007--4313412\": target is numeric, current is character"
## [141] "Component \"scaffold22|size5013007--676086\": Modes: numeric, character"
## [142] "Component \"scaffold22|size5013007--676086\": target is numeric, current is character"
## [143] "Component \"scaffold221|size740363--444937\": Modes: numeric, character"
## [144] "Component \"scaffold221|size740363--444937\": target is numeric, current is character"
## [145] "Component \"scaffold226|size936269--367188\": Modes: numeric, character"
## [146] "Component \"scaffold226|size936269--367188\": target is numeric, current is character"
## [147] "Component \"scaffold226|size936269--649314\": Modes: numeric, character"
## [148] "Component \"scaffold226|size936269--649314\": target is numeric, current is character"
## [149] "Component \"scaffold23|size2178997--1730814\": Modes: numeric, character"
## [150] "Component \"scaffold23|size2178997--1730814\": target is numeric, current is character"
## [151] "Component \"scaffold23|size2178997--1748592\": Modes: numeric, character"
## [152] "Component \"scaffold23|size2178997--1748592\": target is numeric, current is character"
## [153] "Component \"scaffold235|size1242204--446098\": Modes: numeric, character"
## [154] "Component \"scaffold235|size1242204--446098\": target is numeric, current is character"
## [155] "Component \"scaffold236|size2090792--1889654\": Modes: numeric, character"
## [156] "Component \"scaffold236|size2090792--1889654\": target is numeric, current is character"
## [157] "Component \"scaffold236|size2090792--381638\": Modes: numeric, character"
## [158] "Component \"scaffold236|size2090792--381638\": target is numeric, current is character"
## [159] "Component \"scaffold240|size1935192--1665156\": Modes: numeric, character"
## [160] "Component \"scaffold240|size1935192--1665156\": target is numeric, current is character"
## [161] "Component \"scaffold248|size1534464--922359\": Modes: numeric, character"
## [162] "Component \"scaffold248|size1534464--922359\": target is numeric, current is character"
## [163] "Component \"scaffold2526|size41326--20840\": Modes: numeric, character"
## [164] "Component \"scaffold2526|size41326--20840\": target is numeric, current is character"
## [165] "Component \"scaffold26|size2357266--1831784\": Modes: numeric, character"
## [166] "Component \"scaffold26|size2357266--1831784\": target is numeric, current is character"
## [167] "Component \"scaffold262|size680716--544307\": Modes: numeric, character"
## [168] "Component \"scaffold262|size680716--544307\": target is numeric, current is character"
## [169] "Component \"scaffold272|size679582--355362\": Modes: numeric, character"
## [170] "Component \"scaffold272|size679582--355362\": target is numeric, current is character"
## [171] "Component \"scaffold28|size2823434--1892394\": Modes: numeric, character"
## [172] "Component \"scaffold28|size2823434--1892394\": target is numeric, current is character"
## [173] "Component \"scaffold282|size975252--798925\": Modes: numeric, character"
## [174] "Component \"scaffold282|size975252--798925\": target is numeric, current is character"
## [175] "Component \"scaffold284|size1552100--1143269\": Modes: numeric, character"
## [176] "Component \"scaffold284|size1552100--1143269\": target is numeric, current is character"
## [177] "Component \"scaffold292|size1342341--678398\": Modes: numeric, character"
## [178] "Component \"scaffold292|size1342341--678398\": target is numeric, current is character"
## [179] "Component \"scaffold298|size702513--685144\": Modes: numeric, character"
## [180] "Component \"scaffold298|size702513--685144\": target is numeric, current is character"
## [181] "Component \"scaffold31|size1920502--974288\": Modes: numeric, character"
## [182] "Component \"scaffold31|size1920502--974288\": target is numeric, current is character"
## [183] "Component \"scaffold321|size1084243--40283\": Modes: numeric, character"
## [184] "Component \"scaffold321|size1084243--40283\": target is numeric, current is character"
## [185] "Component \"scaffold334|size599637--389006\": Modes: numeric, character"
## [186] "Component \"scaffold334|size599637--389006\": target is numeric, current is character"
## [187] "Component \"scaffold34|size3740991--1438630\": Modes: numeric, character"
## [188] "Component \"scaffold34|size3740991--1438630\": target is numeric, current is character"
## [189] "Component \"scaffold342|size1861417--1191331\": Modes: numeric, character"
## [190] "Component \"scaffold342|size1861417--1191331\": target is numeric, current is character"
## [191] "Component \"scaffold343|size799674--749023\": Modes: numeric, character"
## [192] "Component \"scaffold343|size799674--749023\": target is numeric, current is character"
## [193] "Component \"scaffold345|size607713--38773\": Modes: numeric, character"
## [194] "Component \"scaffold345|size607713--38773\": target is numeric, current is character"
## [195] "Component \"scaffold351|size1117198--103070\": Modes: numeric, character"
## [196] "Component \"scaffold351|size1117198--103070\": target is numeric, current is character"
## [197] "Component \"scaffold363|size828163--277380\": Modes: numeric, character"
## [198] "Component \"scaffold363|size828163--277380\": target is numeric, current is character"
## [199] "Component \"scaffold37|size1818073--714564\": Modes: numeric, character"
## [200] "Component \"scaffold37|size1818073--714564\": target is numeric, current is character"
## [201] "Component \"scaffold383|size710549--445834\": Modes: numeric, character"
## [202] "Component \"scaffold383|size710549--445834\": target is numeric, current is character"
## [203] "Component \"scaffold383|size710549--704656\": Modes: numeric, character"
## [204] "Component \"scaffold383|size710549--704656\": target is numeric, current is character"
## [205] "Component \"scaffold39|size2480183--806553\": Modes: numeric, character"
## [206] "Component \"scaffold39|size2480183--806553\": target is numeric, current is character"
## [207] "Component \"scaffold39|size2480183--984988\": Modes: numeric, character"
## [208] "Component \"scaffold39|size2480183--984988\": target is numeric, current is character"
## [209] "Component \"scaffold398|size1781980--414888\": Modes: numeric, character"
## [210] "Component \"scaffold398|size1781980--414888\": target is numeric, current is character"
## [211] "Component \"scaffold4|size3804566--2965194\": Modes: numeric, character"
## [212] "Component \"scaffold4|size3804566--2965194\": target is numeric, current is character"
## [213] "Component \"scaffold40|size2234952--2074017\": Modes: numeric, character"
## [214] "Component \"scaffold40|size2234952--2074017\": target is numeric, current is character"
## [215] "Component \"scaffold405|size801240--146251\": Modes: numeric, character"
## [216] "Component \"scaffold405|size801240--146251\": target is numeric, current is character"
## [217] "Component \"scaffold406|size580191--218897\": Modes: numeric, character"
## [218] "Component \"scaffold406|size580191--218897\": target is numeric, current is character"
## [219] "Component \"scaffold415|size763157--100919\": Modes: numeric, character"
## [220] "Component \"scaffold415|size763157--100919\": target is numeric, current is character"
## [221] "Component \"scaffold415|size763157--593508\": Modes: numeric, character"
## [222] "Component \"scaffold415|size763157--593508\": target is numeric, current is character"
## [223] "Component \"scaffold426|size1138770--614609\": Modes: numeric, character"
## [224] "Component \"scaffold426|size1138770--614609\": target is numeric, current is character"
## [225] "Component \"scaffold43|size1863611--234469\": Modes: numeric, character"
## [226] "Component \"scaffold43|size1863611--234469\": target is numeric, current is character"
## [227] "Component \"scaffold432|size744455--438775\": Modes: numeric, character"
## [228] "Component \"scaffold432|size744455--438775\": target is numeric, current is character"
## [229] "Component \"scaffold434|size946695--360533\": Modes: numeric, character"
## [230] "Component \"scaffold434|size946695--360533\": target is numeric, current is character"
## [231] "Component \"scaffold44|size1908036--1365854\": Modes: numeric, character"
## [232] "Component \"scaffold44|size1908036--1365854\": target is numeric, current is character"
## [233] "Component \"scaffold449|size826340--787269\": Modes: numeric, character"
## [234] "Component \"scaffold449|size826340--787269\": target is numeric, current is character"
## [235] "Component \"scaffold455|size476776--23457\": Modes: numeric, character"
## [236] "Component \"scaffold455|size476776--23457\": target is numeric, current is character"
## [237] "Component \"scaffold47|size1546949--553028\": Modes: numeric, character"
## [238] "Component \"scaffold47|size1546949--553028\": target is numeric, current is character"
## [239] "Component \"scaffold47|size1546949--597528\": Modes: numeric, character"
## [240] "Component \"scaffold47|size1546949--597528\": target is numeric, current is character"
## [241] "Component \"scaffold471|size1368335--421209\": Modes: numeric, character"
## [242] "Component \"scaffold471|size1368335--421209\": target is numeric, current is character"
## [243] "Component \"scaffold483|size1218004--935479\": Modes: numeric, character"
## [244] "Component \"scaffold483|size1218004--935479\": target is numeric, current is character"
## [245] "Component \"scaffold487|size479533--372024\": Modes: numeric, character"
## [246] "Component \"scaffold487|size479533--372024\": target is numeric, current is character"
## [247] "Component \"scaffold491|size805508--114374\": Modes: numeric, character"
## [248] "Component \"scaffold491|size805508--114374\": target is numeric, current is character"
## [249] "Component \"scaffold50|size1795014--436969\": Modes: numeric, character"
## [250] "Component \"scaffold50|size1795014--436969\": target is numeric, current is character"
## [251] "Component \"scaffold518|size600044--5351\": Modes: numeric, character"
## [252] "Component \"scaffold518|size600044--5351\": target is numeric, current is character"
## [253] "Component \"scaffold520|size1094406--1062981\": Modes: numeric, character"
## [254] "Component \"scaffold520|size1094406--1062981\": target is numeric, current is character"
## [255] "Component \"scaffold520|size1094406--1090372\": Modes: numeric, character"
## [256] "Component \"scaffold520|size1094406--1090372\": target is numeric, current is character"
## [257] "Component \"scaffold526|size440949--275866\": Modes: numeric, character"
## [258] "Component \"scaffold526|size440949--275866\": target is numeric, current is character"
## [259] "Component \"scaffold527|size1067160--420557\": Modes: numeric, character"
## [260] "Component \"scaffold527|size1067160--420557\": target is numeric, current is character"
## [261] "Component \"scaffold527|size1067160--540742\": Modes: numeric, character"
## [262] "Component \"scaffold527|size1067160--540742\": target is numeric, current is character"
## [263] "Component \"scaffold550|size796879--550473\": Modes: numeric, character"
## [264] "Component \"scaffold550|size796879--550473\": target is numeric, current is character"
## [265] "Component \"scaffold560|size1140492--330298\": Modes: numeric, character"
## [266] "Component \"scaffold560|size1140492--330298\": target is numeric, current is character"
## [267] "Component \"scaffold565|size409173--145037\": Modes: numeric, character"
## [268] "Component \"scaffold565|size409173--145037\": target is numeric, current is character"
## [269] "Component \"scaffold579|size954524--827611\": Modes: numeric, character"
## [270] "Component \"scaffold579|size954524--827611\": target is numeric, current is character"
## [271] "Component \"scaffold59|size1551110--1054102\": Modes: numeric, character"
## [272] "Component \"scaffold59|size1551110--1054102\": target is numeric, current is character"
## [273] "Component \"scaffold597|size822913--520870\": Modes: numeric, character"
## [274] "Component \"scaffold597|size822913--520870\": target is numeric, current is character"
## [275] "Component \"scaffold6|size4315531--3315819\": Modes: numeric, character"
## [276] "Component \"scaffold6|size4315531--3315819\": target is numeric, current is character"
## [277] "Component \"scaffold605|size788243--114130\": Modes: numeric, character"
## [278] "Component \"scaffold605|size788243--114130\": target is numeric, current is character"
## [279] "Component \"scaffold616|size383281--375887\": Modes: numeric, character"
## [280] "Component \"scaffold616|size383281--375887\": target is numeric, current is character"
## [281] "Component \"scaffold619|size634076--330068\": Modes: numeric, character"
## [282] "Component \"scaffold619|size634076--330068\": target is numeric, current is character"
## [283] "Component \"scaffold630|size906685--889286\": Modes: numeric, character"
## [284] "Component \"scaffold630|size906685--889286\": target is numeric, current is character"
## [285] "Component \"scaffold631|size1259156--1062623\": Modes: numeric, character"
## [286] "Component \"scaffold631|size1259156--1062623\": target is numeric, current is character"
## [287] "Component \"scaffold633|size372093--321811\": Modes: numeric, character"
## [288] "Component \"scaffold633|size372093--321811\": target is numeric, current is character"
## [289] "Component \"scaffold64|size1360303--1226680\": Modes: numeric, character"
## [290] "Component \"scaffold64|size1360303--1226680\": target is numeric, current is character"
## [291] "Component \"scaffold642|size393756--285208\": Modes: numeric, character"
## [292] "Component \"scaffold642|size393756--285208\": target is numeric, current is character"
## [293] "Component \"scaffold65|size4453928--4163492\": Modes: numeric, character"
## [294] "Component \"scaffold65|size4453928--4163492\": target is numeric, current is character"
## [295] "Component \"scaffold65|size4453928--825590\": Modes: numeric, character"
## [296] "Component \"scaffold65|size4453928--825590\": target is numeric, current is character"
## [297] "Component \"scaffold657|size717538--177254\": Modes: numeric, character"
## [298] "Component \"scaffold657|size717538--177254\": target is numeric, current is character"
## [299] "Component \"scaffold683|size364172--9404\": Modes: numeric, character"
## [300] "Component \"scaffold683|size364172--9404\": target is numeric, current is character"
## [301] "Component \"scaffold685|size505991--222672\": Modes: numeric, character"
## [302] "Component \"scaffold685|size505991--222672\": target is numeric, current is character"
## [303] "Component \"scaffold685|size505991--339711\": Modes: numeric, character"
## [304] "Component \"scaffold685|size505991--339711\": target is numeric, current is character"
## [305] "Component \"scaffold685|size505991--43776\": Modes: numeric, character"
## [306] "Component \"scaffold685|size505991--43776\": target is numeric, current is character"
## [307] "Component \"scaffold70|size1330859--250988\": Modes: numeric, character"
## [308] "Component \"scaffold70|size1330859--250988\": target is numeric, current is character"
## [309] "Component \"scaffold722|size395592--196856\": Modes: numeric, character"
## [310] "Component \"scaffold722|size395592--196856\": target is numeric, current is character"
## [311] "Component \"scaffold733|size745334--542930\": Modes: numeric, character"
## [312] "Component \"scaffold733|size745334--542930\": target is numeric, current is character"
## [313] "Component \"scaffold74|size2480735--258173\": Modes: numeric, character"
## [314] "Component \"scaffold74|size2480735--258173\": target is numeric, current is character"
## [315] "Component \"scaffold740|size344948--327669\": Modes: numeric, character"
## [316] "Component \"scaffold740|size344948--327669\": target is numeric, current is character"
## [317] "Component \"scaffold745|size721762--205303\": Modes: numeric, character"
## [318] "Component \"scaffold745|size721762--205303\": target is numeric, current is character"
## [319] "Component \"scaffold748|size532870--327124\": Modes: numeric, character"
## [320] "Component \"scaffold748|size532870--327124\": target is numeric, current is character"
## [321] "Component \"scaffold763|size302500--121873\": Modes: numeric, character"
## [322] "Component \"scaffold763|size302500--121873\": target is numeric, current is character"
## [323] "Component \"scaffold767|size301186--281840\": Modes: numeric, character"
## [324] "Component \"scaffold767|size301186--281840\": target is numeric, current is character"
## [325] "Component \"scaffold780|size295419--41185\": Modes: numeric, character"
## [326] "Component \"scaffold780|size295419--41185\": target is numeric, current is character"
## [327] "Component \"scaffold79|size2606397--333804\": Modes: numeric, character"
## [328] "Component \"scaffold79|size2606397--333804\": target is numeric, current is character"
## [329] "Component \"scaffold81|size2596050--1038155\": Modes: numeric, character"
## [330] "Component \"scaffold81|size2596050--1038155\": target is numeric, current is character"
## [331] "Component \"scaffold819|size405531--313357\": Modes: numeric, character"
## [332] "Component \"scaffold819|size405531--313357\": target is numeric, current is character"
## [333] "Component \"scaffold827|size534266--518899\": Modes: numeric, character"
## [334] "Component \"scaffold827|size534266--518899\": target is numeric, current is character"
## [335] "Component \"scaffold854|size264813--207700\": Modes: numeric, character"
## [336] "Component \"scaffold854|size264813--207700\": target is numeric, current is character"
## [337] "Component \"scaffold86|size2944007--1190580\": Modes: numeric, character"
## [338] "Component \"scaffold86|size2944007--1190580\": target is numeric, current is character"
## [339] "Component \"scaffold862|size387690--369878\": Modes: numeric, character"
## [340] "Component \"scaffold862|size387690--369878\": target is numeric, current is character"
## [341] "Component \"scaffold882|size376633--227365\": Modes: numeric, character"
## [342] "Component \"scaffold882|size376633--227365\": target is numeric, current is character"
## [343] "Component \"scaffold885|size433544--127878\": Modes: numeric, character"
## [344] "Component \"scaffold885|size433544--127878\": target is numeric, current is character"
## [345] "Component \"scaffold902|size247835--8382\": Modes: numeric, character"
## [346] "Component \"scaffold902|size247835--8382\": target is numeric, current is character"
## [347] "Component \"scaffold91|size2966241--1049941\": Modes: numeric, character"
## [348] "Component \"scaffold91|size2966241--1049941\": target is numeric, current is character"
## [349] "Component \"scaffold919|size245653--242852\": Modes: numeric, character"
## [350] "Component \"scaffold919|size245653--242852\": target is numeric, current is character"
## [351] "Component \"scaffold93|size1158651--797768\": Modes: numeric, character"
## [352] "Component \"scaffold93|size1158651--797768\": target is numeric, current is character"
## [353] "Component \"scaffold931|size327931--74348\": Modes: numeric, character"
## [354] "Component \"scaffold931|size327931--74348\": target is numeric, current is character"
## [355] "Component \"scaffold969|size425790--357236\": Modes: numeric, character"
## [356] "Component \"scaffold969|size425790--357236\": target is numeric, current is character"
## [357] "Component \"scaffold974|size269015--155940\": Modes: numeric, character"
## [358] "Component \"scaffold974|size269015--155940\": target is numeric, current is character"
We run structure within the slg_pipe framework. This only runs on a Mac and takes a considerable amount of time to do all the runs that we did, so, here, we will only prepare the data inputs. Instructions on running the pipeline, clumping and distructing are given on the website. We include output files necessary for downstream analyses in the stored_results
directory.
The basic input format for slg_pipe is a tab delimited file of genotypes with short names of individuals and two columns for each locus, both named the same (we will name that slg_input.tsv
); a file of populations to use in the order desired (we will name this pops.txt
); and a file of loci in the order desired (we will name this locs.txt
).
slg_input.tsv
slg_pipe1 <- rad_and_fluidigm_combined_568_breeders_at_179_snps %>%
select(group_af_short_name, assay_name, gene_copy, allele) %>%
mutate(allele = ifelse(is.na(allele), 0, allele)) %>% # denote missing alleles as 0 for slg_pipe
pivot_wider(
names_from = c(assay_name, gene_copy),
values_from = allele,
names_sep = "."
) %>%
as.data.frame()
# now adjust the names as required for slg_pipe format
names(slg_pipe1) <- str_replace(names(slg_pipe1), "\\.[12]$", "")
names(slg_pipe1)[1] <- ""
# write it out
write.table(
slg_pipe1,
file = "outputs/004/slg_input.tsv",
quote = FALSE,
row.names = FALSE,
sep = "\t"
)
We want the order in which these are in the appendix 1 supplement. So, we can use that
pop_ord <- bird_meta$group_af_short_name %>%
str_replace_all("[0-9]*$", "") %>%
unique()
pop_ord
## [1] "w_WAf" "w_WAr" "w_ORf" "w_ORr" "n_CAf" "n_CAr" "KECAf" "KECAr" "BICAf"
## [10] "SYCAf" "SDCAf" "SDCAr" "MTMTf" "MTMTr" "IDIDr" "e_ORr" "WYWYf" "NMADf"
## [19] "ncUTf" "neUTf" "neUTr" "SLUTf" "SLUTr" "scUTf" "nwCOf" "swCOf" "AZAZf"
## [28] "AZAZr" "NMEXf" "NVNVf" "UTEXf" "WMAZf" "WMAZr" "SDSDf" "SDSDr" "NDNDf"
## [37] "MNMNf" "MNMNr" "ININr" "MIMIf" "MIMIr" "TNTNf" "MDMDf" "PAPAr" "NYNYf"
## [46] "NYNYr"
cat(pop_ord, file = "outputs/004/pops.txt", sep = "\n")
We have just saved this in the repo:
slg_loci <- read_rds(file = "inputs/004/slg-pipe-locus-order.rds")
cat(slg_loci, file = "outputs/004/locs.txt", sep = "\n")
This is not executed by default, but here is the shell code for how you would do it on the Mac Unix command line:
#### Get slg_pipe. You might need to install wget...####
# First, get it:
git clone https://github.com/eriqande/slg_pipe.git
# then get the external binaries that need to go with it
# For now just download them in a tarball from here:
wget --output-document=slg_pipe_binaries.tar.gz https://www.dropbox.com/s/xf9gjqdrvosdj8k/slg_pipe_binaries-2016-04-21.tar.gz?dl=1
# extract the tarball
gunzip slg_pipe_binaries.tar.gz
tar -xvf slg_pipe_binaries.tar
# now copy the binaries into the directory tree of the
# repository using rsync
rsync -avh slg_pipe_binaries/* slg_pipe
#### Change directories into slg_pipe arena and run it ####
cd slg_pipe/arena/
../script/Do_standard_analyses.sh \
../../outputs/004/slg_input.tsv \
../../outputs/004/pops.txt \
../../outputs/004/locs.txt \
WIFL_PIPE \
../../inputs/004/slg-pipe-settings.sh
# That produces a directory called WIFL_PIPE/StructureArea with everything needed to
# launch all the structure runs across multiple cores
#### Enter the StructureArea and launch the Runs ####
# Shown here, is what we would do for running it on 18 cores of
# our big machine
cd WIFL_PIPE/StructureArea/arena
nohup ../script/ExecuteStructureRuns.sh 18 > BIG_LOG.txt 2>&1 &
#### Once the Above is Done...make distruct plots like this... ####
cd ../clump_and_distruct
# create all the distruct plots
./script/ClumpAndDistructAll.sh 6.5
# compile the plots into single document:
LaTeXify.sh ./final_pdf "2 3 4 5" > plots.tex
pdflatex plots.tex
The end result of all that would be the distruct plots in SI_Figure2.pdf.
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/004.rds")
tdf
## 00:00:12
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-03-04
##
## ─ 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)
## 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)
## 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)
## 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)
## 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.0 2020-06-16 [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)
## 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)
## ps 1.5.0 2020-12-05 [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)
## 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)
## 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)
## 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)
## 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