Counting the sgRNAs with RSubread
To count the sgRNAs, we must first load the human GeCKO sgRNA library, and subsequently, convert it into the FASTA format to construct an index for alignment. To do that we use DNAStringSet and writeXStringSet functions from GenomicAlignments Bioconductor package.
  gene_id          UID                  seq
1    A1BG HGLibA_00001 GTCGCTGAGCTCCGATTCGA
2    A1BG HGLibA_00002 ACCTGTAGTTGCCGGCGTGC
DNAStringSet object of length 122411:
         width seq                                        names               
     [1]    20 [48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;217m[30mA[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;217m[30mA[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;217m[30mA[39m[49m                       HGLibA_00001
     [2]    20 [48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;217m[30mA[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m                       HGLibA_00002
     [3]    20 [48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m                       HGLibA_00003
     [4]    20 [48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m                       HGLibA_00004
     [5]    20 [48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;217m[30mA[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;217m[30mA[39m[49m[48;5;223m[30mT[39m[49m[48;5;217m[30mA[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m                       HGLibA_00005
     ...   ... ...
[122407]    20 [48;5;159m[30mG[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;217m[30mA[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;217m[30mA[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m                       HGLibB_57024
[122408]    20 [48;5;159m[30mG[39m[49m[48;5;217m[30mA[39m[49m[48;5;159m[30mG[39m[49m[48;5;159m[30mG[39m[49m[48;5;159m[30mG[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m                       HGLibB_57025
[122409]    20 [48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m                       HGLibB_57026
[122410]    20 [48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;159m[30mG[39m[49m[48;5;217m[30mA[39m[49m[48;5;159m[30mG[39m[49m[48;5;217m[30mA[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;157m[30mC[39m[49m                       HGLibB_57027
[122411]    20 [48;5;157m[30mC[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m[48;5;217m[30mA[39m[49m[48;5;217m[30mA[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;217m[30mA[39m[49m[48;5;217m[30mA[39m[49m[48;5;157m[30mC[39m[49m[48;5;157m[30mC[39m[49m[48;5;217m[30mA[39m[49m[48;5;159m[30mG[39m[49m[48;5;223m[30mT[39m[49m[48;5;223m[30mT[39m[49m[48;5;159m[30mG[39m[49m                       HGLibB_57028
Build an index
Then we build an index of sgRNA library with buildindex function from RSubread package.
Align the FASTQ files
Next step is to align the sequencing files with align function from RSubread and count the reads with readGAlignments function in GenomicAlignments.
The subsequent phase involves aligning the sequencing files (FASTQ files) using the align function from RSubread and counting the reads for each sgRNA using the readGAlignments function in GenomicAlignments.
fastqs <- dir(path = "./fastq_files", pattern = "*.fastq.gz", full.names = TRUE)
counts <- list()
mapping_results <- list()
for (i in 1:length(fastqs)) {
    mapping_results[[i]] <- align("./index/GeCKO", fastqs[i], output_file = gsub(".fastq.gz",
        ".bam", fastqs[i]), nthreads = 4, unique = TRUE, nBestLocations = 1, type = "DNA",
        TH1 = 1, maxMismatches = 0, indels = 0)
    temp <- readGAlignments(gsub(".fastq.gz", ".bam", fastqs[i]))
    counts[[i]] <- data.frame(table(seqnames(temp[width(temp) == "20"])), row.names = "Var1")
}
my_counts <- do.call(cbind, counts)
colnames(my_counts) <- c("Control_1", "Control_2", "ToxA_1", "ToxA_2", "ToxB_1",
    "ToxB_2")
write.table(my_counts, "my_counts.txt")Create a DGEList object
For downstream analysis, here we are going to convert count matrix obtained in the previous section into a DGEList object using the DGEList function from edgeR package. The DGEList object consists of three components: counts, information about samples and gene annotations.
counts <- read.table("my_counts.txt", header = TRUE)
group <- factor(c("Control", "Control", "ToxA", "ToxA", "ToxB", "ToxB"), levels = c("Control",
    "ToxA", "ToxB"))
samples <- data.frame(group = group, sampleName = colnames(counts), biorep = rep(c(1,
    2), 3))
genes <- GeCKO
names(genes)[names(genes) == "gene_id"] <- "Symbol"
d <- DGEList(counts = counts, samples = samples, genes = genes)
dAn object of class "DGEList"
$counts
             Control_1 Control_2 ToxA_1 ToxA_2 ToxB_1 ToxB_2
HGLibA_00001         0         7      3      2      2      8
HGLibA_00002         0         0      0      0      0      0
HGLibA_00003         1         0      0      0      0      0
HGLibA_00004         9         0      0      0      0      1
HGLibA_00005         1         8      1      0      1      1
122406 more rows ...
$samples
            group lib.size norm.factors sampleName biorep
Control_1 Control   338214            1  Control_1      1
Control_2 Control   337711            1  Control_2      2
ToxA_1       ToxA   344188            1     ToxA_1      1
ToxA_2       ToxA   335848            1     ToxA_2      2
ToxB_1       ToxB   356569            1     ToxB_1      1
ToxB_2       ToxB   355131            1     ToxB_2      2
$genes
             Symbol          UID                  seq
HGLibA_00001   A1BG HGLibA_00001 GTCGCTGAGCTCCGATTCGA
HGLibA_00002   A1BG HGLibA_00002 ACCTGTAGTTGCCGGCGTGC
HGLibA_00003   A1BG HGLibA_00003 CGTCAGCGTCACATTGGCCA
HGLibA_00004   A1CF HGLibA_00004 CGCGCACTGGTCCAGCGCAC
HGLibA_00005   A1CF HGLibA_00005 CCAAGCTATATCCTGTGCGC
122406 more rows ...