-
-
Save FloWuenne/f8fc922477df04c1642e9d8945c48d47 to your computer and use it in GitHub Desktop.
# Basic function to convert human to mouse gene names | |
convertHumanGeneList <- function(x){ | |
require("biomaRt") | |
human = useMart("ensembl", dataset = "hsapiens_gene_ensembl") | |
mouse = useMart("ensembl", dataset = "mmusculus_gene_ensembl") | |
genesV2 = getLDS(attributes = c("hgnc_symbol"), filters = "hgnc_symbol", values = x , mart = human, attributesL = c("mgi_symbol"), martL = mouse, uniqueRows=T) | |
humanx <- unique(genesV2[, 2]) | |
no_mouse_genes <- length(x) | |
no_human_genes <- length(humanx) | |
if(no_human_genes != no_mouse_genes){ | |
print("Some genes could not be translated!") | |
genes_not_trans <- setdiff(x,genesV2$HGNC.symbol) | |
print("These genes could not be translated:") | |
print(genes_not_trans) | |
print(paste("A total number of ",length(genes_not_trans),"genes could not be translated!"),sep=" ") | |
}else{ | |
print("All genes were translated successfully!") | |
} | |
# Print all gene names that could not be translated and the number of genes that were not translated | |
return(humanx) | |
} |
Need to still add method to transform the gene names that could not be translated to their current ID if they do have orthologs in mouse!
Indeed, the function must return something, if only a NA. Otherwise, one cannot use it to convert a list of gene symbols and append them to a data-frame or replace the initial list of human genes.
convert human to mouse gene names (https://gist.github.com/FloWuenne/f8fc922477df04c1642e9d8945c48d47)
humGenes <- c("HMMR", "TLX3", "CPEB4") # prepare a list of human genes needs to be converted
convertHumantoMouse <- function(x){
require("biomaRt")
human = useEnsembl(biomart = "genes", dataset = "hsapiens_gene_ensembl")
mouse = useEnsembl(biomart = "genes", dataset = "mmusculus_gene_ensembl")
genesV2 = getLDS(attributes = c("hgnc_symbol"), filters = "hgnc_symbol", values = x , mart = human, attributesL = c("mgi_symbol"), martL = mouse, uniqueRows=T)
mousex <- unique(genesV2[, 2]) # unique the 2nd column values
human_genes_number <- length(x)
mouse_genes_number <- length(mousex)
if(human_genes_number != mouse_genes_number){
genes_not_trans <- setdiff(x, genesV2$HGNC.symbol)
print("These genes could not be translated:")
print(genes_not_trans)
print(paste("A total number of ",length(genes_not_trans),"genes could not be translated!"),sep=" ")
}else{
print("All genes were translated successfully!")
}
return(mousex)
}
ConvertedGenes <- convertHumantoMouse(humGenes)
convert mouse gene to human gene (https://rjbioinformatics.com/2016/10/14/converting-mouse-to-human-gene-names-with-biomart-package/)
musGenes <- c("Hmmr", "Tlx3", "Cpeb4")
convertMousetohuman <- function(x){
require("biomaRt")
human = useEnsembl(biomart = "genes", dataset = "hsapiens_gene_ensembl")
mouse = useEnsembl(biomart = "genes", dataset = "mmusculus_gene_ensembl")
genesV2 = getLDS(attributes = c("mgi_symbol"), filters = "mgi_symbol", values = x , mart = mouse, attributesL = c("hgnc_symbol"), martL = human, uniqueRows=T)
humanx <- unique(genesV2[, 2])
mouse_genes_number <- length(x)
human_genes_number <- length(humanx)
if(mouse_genes_number != human_genes_number){
genes_not_trans <- setdiff(x, genesV2$MGI.symbol)
print("These genes could not be translated:")
print(genes_not_trans)
print(paste("A total number of ",length(genes_not_trans),"genes could not be translated!"),sep=" ")
}else{
print("All genes were translated successfully!")
}
return(humanx)
}
ConvertedGenes <- convertMousetohuman(musGenes)
This code is adapted from RadiaJ
A nice complete tutorial can be found here:
https://rjbioinformatics.com/2016/10/14/converting-mouse-to-human-gene-names-with-biomart-package/