mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-13 00:44:55 +08:00
More support for genomes as first-class objects: (a) add genomes API; (b) fix bugs in providing genome data.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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 )
|
||||
@@ -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' )
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user