#' @title offtargets_read
#' @export
#' @description Read file containing offtarget information for sgRNA targets
#' @param path Path to file with offtarget information
#' @return Data.frame with offtarget information
offtargets_read = function(path) {
offtargets_ranges = bed_read(path)
as.data.frame(offtargets_ranges) %>%
dplyr::select(offtarget_chrom=seqnames, offtarget_start=start, offtarget_end=end, offtarget_strand=strand)
}
#' @export
join_offtarget2bait = function(offtargets_df, baits_df, genome_path) {
baits_ranges = GenomicRanges::makeGRangesFromDataFrame(baits_df %>% dplyr::mutate(seqnames=bait_chrom, start=bait_start, end=bait_end, strand=bait_strand))
offtargets_ranges = GenomicRanges::makeGRangesFromDataFrame(offtargets_df %>% dplyr::mutate(seqnames=offtarget_chrom, start=offtarget_start, end=offtarget_end, strand=offtarget_strand))
# Combine baits and offtarget ranges so that sequences can be retrieve in a single call to bedtools (performance optimization)
ranges_seq = get_seq(fasta=genome_path, ranges=BiocGenerics::append(baits_ranges, offtargets_ranges))
baits_df$bait_sequence = ranges_seq$sequence[1:length(baits_ranges)]
offtargets_df$offtarget_sequence = ranges_seq$sequence[-(1:length(baits_ranges))]
offtarget2bait_df = offtargets_df %>%
tidyr::crossing(baits_df) %>%
dplyr::mutate(bait2offtarget_alignment=Biostrings::pairwiseAlignment(offtarget_sequence, bait_sequence, type="global", scoreOnly=T)) %>%
dplyr::arrange(bait2offtarget_alignment) %>%
dplyr::distinct(bait_sample, offtarget_chrom, offtarget_start, offtarget_end, offtarget_strand, .keep_all=T) %>%
data.frame()
offtarget2bait_df
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.