R/ortholog.R
e69ebc9f
 # 
 initBiomart = function(filter, biomart = "ensembl", host) {
149e893b
 	requireNamespace("biomaRt")
e69ebc9f
 	if(missing(host)) host = "www.biomart.org"
 	
 	ds = list(
 		"human" = "hsapiens_gene_ensembl",
 		"mouse" = "mmusculus_gene_ensembl"
 	)
 	
 	if(! missing(filter))
 		ds = ds[filter]
 		
3c2a6b97
 	lapply(ds, function(d) biomaRt::useMart(biomart = biomart, dataset = d, host = host))
e69ebc9f
 }
 
 
889fd3fe
 .getMapFromOrg = function(org) {#, map = "SYMBOL") {
e69ebc9f
 	switch(org,
3903eb35
     human = {
149e893b
       if(requireNamespace("org.Hs.eg.db")) get("org.Hs.eg.db")
3903eb35
     },
     mouse = {
149e893b
       if(requireNamespace("org.Mm.eg.db")) get("org.Mm.eg.db")
3903eb35
     }
e69ebc9f
 	)
 }
 
 
 getOrthologsFromBiomart = function(eg, target_org, mart) {
 	org = list(
 		"human" = "hsapiens_homolog",
 		"mouse" = "mmusculus_homolog"
 	)
 	query = "ensembl_gene_id"
 	query = c(query, sapply(org[[target_org]], function(x) paste(x, c("ensembl_gene"), sep = "_")))
3c2a6b97
 	res = biomaRt::getBM(query, filters = "entrezgene", values = eg, mart = mart)
e69ebc9f
 	res = res[,2]
 	res = res[!is.na(res)]
 	res = unique(res[res != ""])
 	if(length(res) > 0) {
889fd3fe
     map=.getMapFromOrg(target_org)
     res=select(map,keys=res,columns="ENTREZID",keytype="ENSEMBL")
 		unique(na.omit(res$ENTREZID))
e69ebc9f
 	}
 }