Skip to content

Instantly share code, notes, and snippets.

@jmickey
Last active February 7, 2018 16:35
Show Gist options
  • Select an option

  • Save jmickey/62fe64010923868d8df22b9ff9da6f14 to your computer and use it in GitHub Desktop.

Select an option

Save jmickey/62fe64010923868d8df22b9ff9da6f14 to your computer and use it in GitHub Desktop.
R code for cleaning gRNA vs Empty Vector dataset and creating a volcano plot
# To download & install BiomaRt package if not previously done
# source("https://bioconductor.org/biocLite.R")
# biocLite("biomaRt")
# Import required packages
require(ggplot2)
require(biomaRt)
require(ggrepel)
# Import the data
rna <- read.csv("data/AllgRNAvsEmptyVector.csv")
# Remove NA values
rna <- na.omit(rna)
# Print first 6 lines
head(rna)
# Reset row numbers
rownames(rna) <- NULL
# Retreive BioMart database
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
# Searching BioMart database
genes <- getBM(filters="ensembl_gene_id",
attributes=c("ensembl_gene_id", "hgnc_symbol"),
values=rna$X,
mart=mart)
# Rename "X" column to "ensembl_gene_id"
colnames(rna)[1] <- "ensembl_gene_id"
# Merging datasets based on ensembl_gene_id
rna_genes <- merge(rna, genes, by="ensembl_gene_id")
# Create plot. Filter out pvalues greater than 0.05, and where -log10(pavlue) greater than 300
ggplot(data=subset(rna_genes, pvalue < 0.05 & -log10(pvalue) <= 300),
aes(x=log2FoldChange, y=-log10(pvalue))) +
xlim(c(-6, 6)) + ylim(c(0, 300)) + # Set axis limits
geom_point(aes(colour=-log10(pvalue)), size = 3) + # Scatter plot
scale_color_gradient(low="black", high="red", guide = FALSE) + # Set colour gradient
geom_label_repel(data=subset(rna_genes, -log10(pvalue) > 180 & -log10(pvalue) < 300), # Add gene name labels and arrows
aes(label = hgnc_symbol),
box.padding = 0.5,
size=4,
force = 2,
max.iter = 3e3,
point.padding = 1.2,
arrow = arrow(length = unit(0.01, "npc"), type="open"), # Add arrows
segment.size=0.5) +
ggtitle("All gRNA vs Empty Vector") + # Set the title for the plot
ylab(expression(paste("-log"[10], "(", italic("p"), "-value)"))) + # Y-axis label
xlab(expression(paste("log"[2], "(fold change)"))) + # X-axis label
theme_classic() +
theme(plot.title=element_text(hjust=0.5)) # Center the title
# To download & install BiomaRt package if not previously done
# source("https://bioconductor.org/biocLite.R")
# biocLite("biomaRt")
# Import required packages
require(ggplot2)
require(biomaRt)
require(ggrepel)
# Import the data
rna <- read.csv("data/AllgRNAvsEmptyVector.csv")
# Remove NA values
rna <- na.omit(rna)
# Print first 6 lines
head(rna)
# Reset row numbers
rownames(rna) <- NULL
# Retreive BioMart database
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
# Searching BioMart database
genes <- getBM(filters="ensembl_gene_id",
attributes=c("ensembl_gene_id", "hgnc_symbol"),
values=rna$X,
mart=mart)
# Rename "X" column to "ensembl_gene_id"
colnames(rna)[1] <- "ensembl_gene_id"
# Merging datasets based on ensembl_gene_id
rna_genes <- merge(rna, genes, by="ensembl_gene_id")
# Create plot. Filter out pvalues greater than 0.05, and where -log10(pavlue) greater than 300
ggplot(data=subset(rna_genes, pvalue < 0.05 & -log10(pvalue) <= 300),
aes(x=log2FoldChange, y=-log10(pvalue))) +
xlim(c(-6, 6)) + ylim(c(0, 300)) + # Set axis limits
geom_point(aes(colour=-log10(pvalue)), size = 3) + # Scatter plot
scale_color_gradient(low="black", high="red", guide = FALSE) + # Set colour gradient
geom_text_repel(data=subset(rna_genes, hgnc_symbol %in% c("ZEB1")), # Add gene name labels and arrows
aes(label = hgnc_symbol),
size=4,
point.padding = 1.5,
arrow = arrow(length = unit(0.01, "npc"), type="open"), # Add arrows
segment.size=0.5) +
ggtitle("All gRNA vs Empty Vector") + # Set the title for the plot
ylab(expression(paste("-log"[10], "(", italic("p"), "-value)"))) + # Y-axis label
xlab(expression(paste("log"[2], "(fold change)"))) + # X-axis label
theme_classic() +
theme(plot.title=element_text(hjust=0.5)) # Center the title
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment