From 97532515ea24325ba26877696991b24401733ee6 Mon Sep 17 00:00:00 2001 From: Jim Johnson Date: Tue, 20 Sep 2016 10:17:14 -0500 Subject: [PATCH 1/2] API access to genome fasta index and sequence Allows visualization components, e.g. IGV.js, to incrementally retrieve sequence as needed. --- lib/galaxy/webapps/galaxy/api/genomes.py | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/lib/galaxy/webapps/galaxy/api/genomes.py b/lib/galaxy/webapps/galaxy/api/genomes.py index ae62ad905ec..d09a7e70c41 100644 --- a/lib/galaxy/webapps/galaxy/api/genomes.py +++ b/lib/galaxy/webapps/galaxy/api/genomes.py @@ -43,3 +43,39 @@ class GenomesController( BaseAPIController ): else: rval = self.app.genomes.chroms( trans, dbkey=id, num=num, chrom=chrom, low=low ) return rval + + @web.expose_api_raw_anonymous + def indexes(self, trans, id, **kwd): + """ + GET /api/genomes/{id}/indexes?type={table name} + + Returns all available indexes for a genome id for type={table name} + For instance, /api/genomes/hg19/indexes?type=fasta_indexes + """ + index_extensions = {'fasta_indexes': '.fai'} + id = get_id( id, kwd.get( 'format', None ) ) + index_type = kwd.get('type', None) + + tbl_entries = self.app.tool_data_tables.data_tables[index_type].data + index_file_name = [x[-1] for x in tbl_entries if id in x].pop() + + if_open = open(index_file_name + index_extensions[index_type], mode='r') + return if_open.read() + + @web.expose_api_raw_anonymous + def sequences(self, trans, id, num=None, chrom=None, low=None, high=None, **kwd ): + """ + GET /api/genomes/{id}/sequences + + This is a wrapper for accepting sequence requests that + want a raw return, not json + """ + # import pdb + # pdb.set_trace() + + id = get_id( id, kwd.get( 'format', None ) ) + reference = is_true( kwd.get( 'reference', False ) ) + if reference: + region = self.app.genomes.reference( trans, dbkey=id, chrom=chrom, low=low, high=high ) + rval = { 'dataset_type': 'refseq', 'data': region.sequence } + return rval['data'] From efbc06eb0178f495d1581aec7a8c1467af93f2d7 Mon Sep 17 00:00:00 2001 From: John Chilton Date: Wed, 28 Sep 2016 11:29:34 -0400 Subject: [PATCH 2/2] Cleanup 97532515ea24325ba26877696991b24401733ee6. --- lib/galaxy/webapps/galaxy/api/genomes.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/genomes.py b/lib/galaxy/webapps/galaxy/api/genomes.py index d09a7e70c41..ba525dbb49a 100644 --- a/lib/galaxy/webapps/galaxy/api/genomes.py +++ b/lib/galaxy/webapps/galaxy/api/genomes.py @@ -70,12 +70,8 @@ class GenomesController( BaseAPIController ): This is a wrapper for accepting sequence requests that want a raw return, not json """ - # import pdb - # pdb.set_trace() - id = get_id( id, kwd.get( 'format', None ) ) reference = is_true( kwd.get( 'reference', False ) ) - if reference: - region = self.app.genomes.reference( trans, dbkey=id, chrom=chrom, low=low, high=high ) - rval = { 'dataset_type': 'refseq', 'data': region.sequence } - return rval['data'] + assert reference + region = self.app.genomes.reference( trans, dbkey=id, chrom=chrom, low=low, high=high ) + return region.sequence