More support for genomes as first-class objects: (a) add genomes API; (b) fix bugs in providing genome data.

This commit is contained in:
Jeremy Goecks
2012-06-03 12:19:30 -04:00
parent 55a1ccb01c
commit bb7c69f247
4 changed files with 34 additions and 5 deletions
+5 -2
View File
@@ -107,6 +107,8 @@ class Genomes( object ):
#
# Get len file.
#
# Look first in user's custom builds.
len_file = None
len_ds = None
user_keys = {}
@@ -121,10 +123,11 @@ class Genomes( object ):
elif 'len' in dbkey_attributes:
len_file = trans.sa_session.query( trans.app.model.HistoryDatasetAssociation ).get( user_keys[ dbkey ][ 'len' ] ).file_name
# Look in system builds.
if not len_file:
len_ds = trans.db_dataset_for( dbkey )
if not len_ds:
len_file = os.path.join( trans.app.config.len_file_path, "%s.len" % dbkey )
len_file = self.genomes[ dbkey ].len_file
else:
len_file = len_ds.file_name
@@ -203,7 +206,7 @@ class Genomes( object ):
dbkey_owner is needed to determine if there is reference data.
"""
# Look for key in built-in builds.
if dbkey in self.available_genomes:
if dbkey in self.genomes and self.genomes[ dbkey ].twobit_file:
# There is built-in reference data.
return True
+25
View File
@@ -0,0 +1,25 @@
from galaxy import config, tools, web, util
from galaxy.web.base.controller import BaseController, BaseAPIController
from galaxy.util.bunch import Bunch
class GenomesController( BaseAPIController ):
"""
RESTful controller for interactions with genome data.
"""
@web.expose_api
def index( self, trans, **kwds ):
"""
GET /api/genomes: returns a list of installed genomes
"""
return []
@web.json
def show( self, trans, id, num=None, chrom=None, low=None ):
"""
GET /api/genomes/{id}
Returns information about build <id>
"""
return self.app.genomes.chroms( trans, dbkey=id, num=num, chrom=chrom, low=low )
+1
View File
@@ -132,6 +132,7 @@ def app_factory( global_conf, **kwargs ):
webapp.api_mapper.resource_with_deleted( 'quota', 'quotas', path_prefix='/api' )
webapp.api_mapper.resource( 'tool', 'tools', path_prefix='/api' )
webapp.api_mapper.resource_with_deleted( 'user', 'users', path_prefix='/api' )
webapp.api_mapper.resource( 'genome', 'genomes', path_prefix='/api' )
webapp.api_mapper.resource( 'visualization', 'visualizations', path_prefix='/api' )
webapp.api_mapper.resource( 'workflow', 'workflows', path_prefix='/api' )
webapp.api_mapper.resource_with_deleted( 'history', 'histories', path_prefix='/api' )
+3 -3
View File
@@ -268,11 +268,11 @@ class TracksController( BaseUIController, UsesVisualizationMixin, UsesHistoryMix
@web.json
def chroms( self, trans, dbkey=None, num=None, chrom=None, low=None ):
return self.genomes.chroms( trans, dbkey=dbkey, num=num, chrom=chrom, low=low )
return self.app.genomes.chroms( trans, dbkey=dbkey, num=num, chrom=chrom, low=low )
@web.json
def reference( self, trans, dbkey, chrom, low, high, **kwargs ):
return self.genomes.reference( trans, dbkey, chrom, low, high, **kwargs )
return self.app.genomes.reference( trans, dbkey, chrom, low, high, **kwargs )
@web.json
def raw_data( self, trans, dataset_id, chrom, low, high, **kwargs ):
@@ -771,7 +771,7 @@ class TracksController( BaseUIController, UsesVisualizationMixin, UsesHistoryMix
# Get genome info.
dbkey = dataset.dbkey
chroms_info = self.genomes.chroms( trans, dbkey=dbkey )
chroms_info = self.app.genomes.chroms( trans, dbkey=dbkey )
genome = { 'dbkey': dbkey, 'chroms_info': chroms_info }
# Get summary tree data for dataset.