library(conflicted)
library(tidyverse)
library(fs)
source("setup/conflicted.R")
source("setup/knit_engines_simple.R")
The 16S Barcoding Kit 1-24 (SQK-16S024) offers a method of amplifying and barcoding the ~1500 bp 16S rRNA gene from multiple samples and sequencing them together. By narrowing down to a specific region of interest, a user can see all the organisms in the sample without sequencing unnecessary regions of the genome, making the identification quicker and more economical. There are up to 24 unique barcodes, allowing the user to pool up to 24 different samples in one sequencing experiment with 10 ng of high molecular weight gDNA per sample as input. The DNA is amplified by PCR using the specific 16S barcode primers (27F and 1492R) and 5’ tags which facilitate the ligase-free attachment of Rapid Sequencing Adapters.
Forward 16S primer: 5' - ATCGCCTACCGTGAC - barcode - AGAGTTTGATCMTGGCTCAG - 3'
Reverse 16S primer: 5' - ATCGCCTACCGTGAC - barcode - CGGTTACCTTGTTACGACTT - 3'
TTTCTGTTGGTGCTGATATTGC - barcode - AGRGTTYGATYMTGGCTCAG
TTTCTGTTGGTGCTGATATTGC - barcode - AGAGTTTGATCMTGGCTCAG
The 3’ flanking sequence of the forward primer contains a wobble base (denoted by M; in the primer the base is either an A or a C) in a variable region of the 16S gene.
Top strand: 5’-TTTTTTTTCCTGTACTTCGTTCAGTTACGTATTGCT-3’
This sequence should be removed when using the –trim ‘adapters’
flag during dorado basecaller
anchor <- "ATCGCCTACCGTGAC"
forward <- "AGAGTTTGATCMTGGCTCAG"
reverse <- "CGGTTACCTTGTTACGACTT"
sqk_16s114_24 <- tibble(
name = paste0("barcode", sprintf("%02d", 1:24)),
barcode_sequence = c(
"AAGAAAGTTGTCGGTGTCTTTGTG",
"TCGATTCCGTTTGTAGTCGTCTGT",
"GAGTCTTGTGTCCCAGTTACCAGG",
"TTCGGATTCTATCGTGTTTCCCTA",
"CTTGTCCAGGGTTTGTGTAACCTT",
"TTCTCGCAAAGGCAGAAAGTAGTC",
"GTGTTACCGTGGGAATGAATCCTT",
"TTCAGGGAACAAACCAAGTTACGT",
"AACTAGGCACAGCGAGTCTTGGTT",
"AAGCGTTGAAACCTTTGTCCTCTC",
"GTTTCATCTATCGGAGGGAATGGA",
"CAGGTAGAAAGAAGCAGAATCGGA",
"AGAACGACTTCCATACTCGTGTGA",
"AACGAGTCTCTTGGGACCCATAGA",
"AGGTCTACCTCGCTAACACCACTG",
"CGTCAACTGACAGTGGTTCGTACT",
"ACCCTCCAGGAAAGTACCTCTGAT",
"CCAAACCCAACAACCTAGATAGGC",
"GTTCCTCGTGCAGTGTCAAGAGAT",
"TTGCGTCCTGTTACGAGAACTCAT",
"GAGCCTCTCATTGTCCGTTCTCTA",
"ACCACTGCCATGTATCAAAGTACG",
"CTTACTACCCAGTGAACCTCCTCG",
"GCATAGTTCTGCATGATGGGTTAG"
)
) %>%
rowwise() %>%
mutate(forward = as.character(paste0(anchor, barcode_sequence, forward)),
reverse = as.character(paste0(anchor, barcode_sequence, reverse)),
kit = "16S")
write_csv(
sqk_16s114_24,
"primers/sqk_16s114_24.csv"
)
sqk_16s114_24
CONCOMPRA primer-chop
StepThe
primer_set.fafileCONCOMPRAexpects only one “head” and one “tail” entry in a FASTA file.
primers_16s <- sqk_16s114_24 %>%
select(name, head = forward, tail = reverse) %>%
pivot_longer(c("head", "tail"),
names_to = "heading",
values_to = "sequence") %>%
nest(.by = "name") %>%
deframe() %>%
map(\(x) as.list(deframe(x)))
primer_fasta <- function(x, idx) {
dir_path <- paste0("reads/barcodes/", idx)
dir_create(dir_path)
write_lines(
paste(
">head",
pluck(x, "head"),
">tail",
pluck(x, "tail"),
sep = "\n"
),
file = paste0(dir_path, "/primer_set.fa")
)
}
imap(primers_16s, \(x, idx) primer_fasta(x, idx))
primer_set.fa file (see below).
reads/barcodes/
├── barcode01
│ └── primer_set.fa
├── barcode02
│ └── primer_set.fa
├── barcode03
│ └── primer_set.fa
├── barcode04
│ └── primer_set.fa
├── barcode05
│ └── primer_set.fa
├── barcode06
│ └── primer_set.fa
├── barcode07
│ └── primer_set.fa
├── barcode08
│ └── primer_set.fa
├── barcode09
│ └── primer_set.fa
├── barcode10
│ └── primer_set.fa
├── barcode11
│ └── primer_set.fa
├── barcode12
│ └── primer_set.fa
├── barcode13
│ └── primer_set.fa
├── barcode14
│ └── primer_set.fa
├── barcode15
│ └── primer_set.fa
├── barcode16
│ └── primer_set.fa
├── barcode17
│ └── primer_set.fa
├── barcode18
│ └── primer_set.fa
├── barcode19
│ └── primer_set.fa
├── barcode20
│ └── primer_set.fa
├── barcode21
│ └── primer_set.fa
├── barcode22
│ └── primer_set.fa
├── barcode23
│ └── primer_set.fa
└── barcode24
└── primer_set.fa