Tralala ...

This commit is contained in:
2007-11-07 12:34:13 +00:00
parent ca51a0b382
commit aef2e1daf0
11 changed files with 316 additions and 121 deletions

View File

@@ -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")