R/tfclass.R

Defines functions getTFclassFromEntrezgene .getNode

Documented in getTFclassFromEntrezgene

.getNode = function(x, subset, tfclass, dbname = NULL) {
	if(missing(tfclass)) {
		sql = "SELECT * FROM tfclass"
		tfclass = .getSQLresult(sql, dbname = dbname)
	}
  
  if(! x %in% tfclass$id) return(NULL)
  
  new_ids = tfclass$is_a[tfclass$id == x]
  unique(sapply(new_ids, function(id) {
    if(tfclass$subset[tfclass$id == id] == subset)
      id
    else
      .getNode(id, subset, tfclass)
  }))
}

# TODO: rename getTFclassFromEntrezgene() and integrate with the one at database.R.
getTFclassFromEntrezgene = function(x, subset = "Class", tfclass, dbname = NULL) {
  if(missing(tfclass)) {
    sql = paste("SELECT * FROM tfclass")
    tfclass = .getSQLresult(sql, dbname = dbname) 
  }
  
  if(length(x) > 1)
    lapply(x, function(xx) unique(getTFclassFromEntrezgene(xx, subset, tfclass)))
  else {
    # check if there is a node
    if(! any(tfclass$id == x)) {
      o_o = getOrthologs()
      e_map = o_o$entrezgene[o_o$map_entrezgene %in% x]
      x = getOrthologs(e_map, "human")$map_entrezgene
    }
    
    # remove those not in d:
    x = x[x %in% tfclass$id]
    
    if(length(x)>0)
      c(unique(sapply(x, function(xx) {
        tmp = .getNode(xx, subset, tfclass)
        tfclass$name[ tfclass$id %in% tmp ]
      })))
    else NULL
  }
}

getTFterms = function (subset = "Class", dbname = NULL) {
	sql = paste("SELECT * FROM tfclass")
	d = .getSQLresult(sql, dbname = dbname)
	d$name[d$subset == subset]
}

### tests:
# getEntrezgeneByClass = function(subset = "Class") {
#   # load tfclass_g
#   if(! exists("tfclass", envir = .datacache))
#     load(system.file("db/tfclass.rda", package = "rTRM"), envir = .datacache)
#   g = get("tfclass_g", envir = .datacache)
#   
#   genes = V(g)[ subset == "Map"]$name
#   lapply(genes, function(gene) {
#     message(gene)
#     .getNode(gene, g, subset)
#   })
# }

Try the rTRM package in your browser

Any scripts or data that you put into this service are public.

rTRM documentation built on Nov. 8, 2020, 5:52 p.m.