How to obtain Cytoband and Stain Information

#if (!requireNamespace("BiocManager", quietly=TRUE))
    #install.packages("BiocManager")

library(GenomicRanges)
library(rtracklayer)
library(biovizBase) #needed for stain information
library(IRanges)
library(R.utils)
library(TxDb.Hsapiens.UCSC.hg18.knownGene)

Introduction

This document explains how to obtain the cytoband and stain information. The user must ensure that the input object is a GRanges object

Method 1 - Using rtracklayer package

# create a query against a UCSC Table browser
query <- rtracklayer::ucscTableQuery("hg18", "cytoBandIdeo")
table1 <- rtracklayer::getTable(query) # retrieve table
head(table1)

#Add an extra column with strand information
table1$Strand <- c("*") 

## Convert object into GRanges object
table1.gr <- GRanges(table1$chrom, 
                    IRanges(table1$chromStart, table1$chromEnd),
                    table1$Strand,
                    table1$name, table1$gieStain)

head(table1.gr, n = 3)

#Save this object for future use 
save(table1.gr, file = "hg18.ucsctrack.RData")

#NOTE : For hg19, simply use "hg19" in query instead of "hg18"

Method 2 - directly from UCSC Genome Browser

This example shows how to download cytoband and stain information for hg18, and hg19 genomes from the UCSC Genome Browser

# URL for hg18
url <- "http://hgdownload.soe.ucsc.edu/goldenPath/hg18/database/cytoBand.txt.gz"

#Download file and un-compress it
download.file(url, destfile = "cyto.txt.gz")
R.utils::gunzip("cyto.txt.gz")

#Read in the downloaded cytoband ideogram txt file
cyto1 <- read.table(file = "cyto.txt", 
                    header = FALSE, sep = "\t")

#Adding column names
colnames(cyto1) <- c("Chrom", "Start", "End", "CytobandName", "Stain")

#Add an extra column with strand information
cyto1$Strand <- c("*")

#The user must ensure that the input object is a GRanges object

## Convert object into GRanges object
cyto1.gr <- GRanges(cyto1$Chrom, 
                    IRanges(cyto1$Start, cyto1$End),
                    cyto1$Strand,
                    cyto1$CytobandName, cyto1$Stain)

head(cyto1.gr, n = 3)

#The user must ensure that the input object is a GRanges object

#Save this object for future use 
save(cyto1.gr, file = "hg18.ucsctrack.RData")

#NOTE : URL for hg19
#url <- "http://hgdownload.soe.ucsc.edu/goldenPath/hg19/database/cytoBand.txt.gz"

# URL FOR hg38
#url <- "http://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/cytoBand.txt.gz"

Method 3 - Using biovizBase package

hg18.ucsctrack <- biovizBase::getIdeogram("hg18", cytoband = TRUE) 

head(hg18.ucsctrack, n=3)
#The user must ensure that the input object is a GRanges object

#Save this object for future use 
save(hg18.ucsctrack, file = "hg18.ucsctrack.RData")