Tralala ...
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import sys,os
|
||||
import webbrowser
|
||||
import cPickle
|
||||
|
||||
from fluents import logger, plots,workflow,dataset,main
|
||||
from fluents.lib import blmfuncs,nx_utils,validation,engines,cx_stats,cx_utils
|
||||
@@ -57,6 +58,8 @@ class SmallTestWorkflow(workflow.Workflow):
|
||||
go.add_function(gobrowser.PlotDagFunction())
|
||||
go.add_function(GoEnrichment())
|
||||
go.add_function(GoEnrichmentCond())
|
||||
go.add_function(MapGO2Gene())
|
||||
go.add_function(MapGene2GO())
|
||||
self.add_stage(go)
|
||||
|
||||
# EXTRA PLOTS
|
||||
@@ -354,7 +357,7 @@ class GoEnrichment(workflow.Function):
|
||||
# Get universe
|
||||
# Here, we are using a defined dataset to represent the universe
|
||||
if not 'gene_ids' in data:
|
||||
logger.log('notice', 'No dimension called [gene_ids] in dataset: %s', data.get_name())
|
||||
logger.log('notice', 'No dimension called [gene_ids] in dataset: %s' %data.get_name())
|
||||
return
|
||||
universe = list(data.get_identifiers('gene_ids'))
|
||||
logger.log('notice', 'Universe consists of %s gene ids from %s' %(len(universe), data.get_name()))
|
||||
@@ -417,7 +420,7 @@ class GoEnrichmentCond(workflow.Function):
|
||||
return
|
||||
|
||||
# Hypergeometric parameter object
|
||||
pval_cutoff = 0.9999
|
||||
pval_cutoff = 1
|
||||
cond = True
|
||||
test_direction = 'over'
|
||||
params = rpy.r.new("GOHyperGParams",
|
||||
@@ -443,3 +446,65 @@ class GoEnrichmentCond(workflow.Function):
|
||||
name='P values (enrichment)')
|
||||
return [xout]
|
||||
|
||||
|
||||
class MapGene2GO(workflow.Function):
|
||||
def __init__(self, ont='bp', gene_id_name='gene_ids'):
|
||||
self._ont = ont
|
||||
self._gene_id_name = gene_id_name
|
||||
workflow.Function.__init__(self, 'gene2go', 'gene->GO')
|
||||
# load data at init
|
||||
try:
|
||||
fname = "/home/flatberg/fluents/data/gene2go.pcl"
|
||||
self._gene2go = cPickle.load(open(fname))
|
||||
except:
|
||||
logger.log("notice", "could not load mapping")
|
||||
|
||||
def run(self):
|
||||
selection = main.project.get_selection()
|
||||
if not selection.has_key(self._gene_id_name):
|
||||
logger.log("notice", "Expected gene ids: %s, but got. %s" %(self._gene_id_name, selection.keys()))
|
||||
return None
|
||||
if len(selection[self._gene_id_name])==0:
|
||||
logger.log("notice", "No selected genes to query")
|
||||
return None
|
||||
|
||||
gene_ids = selection[self._gene_id_name]
|
||||
go_ids = set()
|
||||
for gene in gene_ids:
|
||||
go_ids_new = self._gene2go.get(gene, [])
|
||||
if not go_ids_new:
|
||||
logger.log("notice", "Could not find any goterms for %s" %gene)
|
||||
go_ids.update(self._gene2go.get(gene, []))
|
||||
main.project.set_selection('go-terms', go_ids)
|
||||
logger.log("notice", "GO terms updated")
|
||||
|
||||
|
||||
class MapGO2Gene(workflow.Function):
|
||||
def __init__(self, ont='bp', gene_id_name='go-terms'):
|
||||
self._ont = ont
|
||||
self._gene_id_name = gene_id_name
|
||||
workflow.Function.__init__(self, 'go2gene', 'GO->gene')
|
||||
# load data at init
|
||||
try:
|
||||
fname = "/home/flatberg/fluents/data/go2gene.pcl"
|
||||
self._go2gene = cPickle.load(open(fname))
|
||||
except:
|
||||
logger.log("notice", "could not load mapping")
|
||||
|
||||
def run(self):
|
||||
selection = main.project.get_selection()
|
||||
if not selection.has_key(self._gene_id_name):
|
||||
logger.log("notice", "Expected gene ids: %s, but got. %s" %(self._gene_id_name, selection.keys()))
|
||||
return None
|
||||
if len(selection[self._gene_id_name])==0:
|
||||
logger.log("notice", "No selected genes to query")
|
||||
return None
|
||||
|
||||
go_ids = selection[self._gene_id_name]
|
||||
gene_ids = set()
|
||||
for go in go_ids:
|
||||
if not self._go2gene.get(go,[]):
|
||||
logger.log("notice", "Could not find any gene ids for %s" %go)
|
||||
gene_ids.update(self._go2gene.get(go,[]))
|
||||
main.project.set_selection('gene_ids', gene_ids)
|
||||
logger.log("notice", "GO terms updated")
|
||||
|
Reference in New Issue
Block a user