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)

Get the O12 RAD data and extract just the 179 Fluidigm-typed SNPs we are using

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)
  )

Reconstitute the allelic types from the meta data about the SNPs

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"
)

Confirm that this is the same as appears in Appendix 1 supplement data

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"

Create a STRUCTURE input file

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).

Making 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"
)

Getting the populations/sampling locations in the right order

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")

Get the order that we want to have the loci in for later processing, etc.

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")

Running STRUCTURE via slg_pipe

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 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/004.rds")
tdf
## 00:00:12

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-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

Literature Cited