R/gene_anno.R

Defines functions gene_anno

Documented in gene_anno

#' Gene Annotation
#'
#' @param gene_list
#' @param remove_Y
#' @param bins_in_cna_pipeline
#'
#' @return
#' @export
#'
#' @examples
gene_anno <- function(gene_list, bins_in_cna_pipeline, remove_Y = TRUE) {
  hg_genes_grange <- GenomicFeatures::genes(Homo.sapiens, columns = "SYMBOL")
  hg_genes_grange_df <- as.data.frame(hg_genes_grange)
  hg_genes_grange_df$SYMBOL <- unlist(unname(as.vector(hg_genes_grange_df$SYMBOL)))
  gene_anno_df <- hg_genes_grange_df %>% dplyr::filter(SYMBOL %in% gene_list)
  names(gene_anno_df)[6] <- "gene"

  if (remove_Y == TRUE){
    bins_in_cna_pipeline <- bins_in_cna_pipeline %>% dplyr::filter(chr != "chrY")
  }

  genes.annotation = character(length = nrow(bins_in_cna_pipeline))

  for (i in 1:nrow(bins_in_cna_pipeline)) {
    for (j in 1:nrow(gene_anno_df)) {
      if ((findInterval(
        gene_anno_df$start[j],
        c(bins_in_cna_pipeline$start[i], bins_in_cna_pipeline$end[i])
      ) == 1) &&
      (bins_in_cna_pipeline$chr[i] == gene_anno_df$seqnames[j]))  {
        genes.annotation[i] <- as.character(gene_anno_df$gene[j])

      }
    }
  }

  genes.annotation[genes.annotation == ""] <- NA

  labels <- genes.annotation[!is.na(genes.annotation)]
  positions <- which(!is.na(genes.annotation))
  padding = grid::unit.c(unit(2, "cm"), unit(2, "cm"),
                   unit(c(2, 1), "cm"))

  gene_anno_return <- ComplexHeatmap::HeatmapAnnotation(link = ComplexHeatmap::anno_mark(at = positions, labels = labels, labels_gp = grid::gpar(cex = .4, col = "black")), height = unit(1, "cm"), which = "column")

  return(gene_anno_return)

}
whtns/varbintools documentation built on Dec. 1, 2019, 5:15 a.m.