#' 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)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.