mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge with -central
This commit is contained in:
@@ -31,21 +31,38 @@ class GenomeRegion( object ):
|
||||
A genomic region on an individual chromosome.
|
||||
"""
|
||||
|
||||
def __init__( self, chrom=None, start=None, end=None ):
|
||||
def __init__( self, chrom = None, start = 0, end = 0 ):
|
||||
self.chrom = chrom
|
||||
self.start = int( start )
|
||||
self.end = int( end )
|
||||
|
||||
def __str__( self ):
|
||||
return self.chrom + ":" + str( self.start ) + "-" + str( self.end )
|
||||
|
||||
|
||||
@staticmethod
|
||||
def from_dict( obj_dict ):
|
||||
return GenomeRegion( chrom=obj_dict[ 'chrom' ],
|
||||
start=obj_dict[ 'start' ],
|
||||
end=obj_dict[ 'end' ] )
|
||||
|
||||
return GenomeRegion( chrom = obj_dict[ 'chrom' ],
|
||||
start = obj_dict[ 'start' ],
|
||||
end = obj_dict[ 'end' ] )
|
||||
|
||||
@staticmethod
|
||||
def from_str( obj_str ):
|
||||
# check for gene region
|
||||
gene_region = obj_str.split(':')
|
||||
|
||||
# split gene region into components
|
||||
if (len(gene_region) == 2):
|
||||
gene_interval = gene_region[1].split('-')
|
||||
|
||||
# check length
|
||||
if (len(gene_interval) == 2):
|
||||
return GenomeRegion(chrom = gene_region[0],
|
||||
start = gene_interval[0],
|
||||
end = gene_interval[1])
|
||||
|
||||
# return genome region instance
|
||||
return GenomeRegion()
|
||||
|
||||
class Genome( object ):
|
||||
"""
|
||||
Encapsulates information about a known genome/dbkey.
|
||||
|
||||
@@ -12,6 +12,7 @@ from galaxy.util.sanitize_html import sanitize_html
|
||||
from galaxy.visualization.genomes import decode_dbkey
|
||||
from galaxy.visualization.genome.visual_analytics import get_dataset_job
|
||||
from galaxy.visualization.data_providers.phyloviz import PhylovizDataProvider
|
||||
from galaxy.visualization.genomes import GenomeRegion
|
||||
|
||||
from .library import LibraryListGrid
|
||||
|
||||
@@ -697,22 +698,8 @@ class VisualizationController( BaseUIController, SharableMixin, UsesAnnotations,
|
||||
# Get dataset to add.
|
||||
new_dataset_id = kwargs.get( "dataset_id", None )
|
||||
|
||||
# viewport configuration
|
||||
gene_region_config = {"chrom" : None, "start" : 0, "end" : 0}
|
||||
|
||||
# Check for gene region
|
||||
gene_region = kwargs.get("gene_region", "").split(':')
|
||||
|
||||
# Split gene region into components
|
||||
if (len(gene_region) == 2):
|
||||
gene_chrom = gene_region[0];
|
||||
gene_interval = gene_region[1].split('-')
|
||||
|
||||
# Check length
|
||||
if (len(gene_interval) == 2):
|
||||
gene_region_config['chrom'] = gene_chrom
|
||||
gene_region_config['start'] = int(gene_interval[0])
|
||||
gene_region_config['end'] = int(gene_interval[1])
|
||||
gene_region = GenomeRegion.from_str(kwargs.get("gene_region", ""))
|
||||
|
||||
# Set up new browser if no id provided.
|
||||
if not id:
|
||||
@@ -722,18 +709,19 @@ class VisualizationController( BaseUIController, SharableMixin, UsesAnnotations,
|
||||
dbkey = self.get_dataset( trans, new_dataset_id ).dbkey
|
||||
if dbkey == '?':
|
||||
dbkey = kwargs.get( "dbkey", None )
|
||||
|
||||
return trans.fill_template( "tracks/browser.mako", viewport_config=gene_region_config, add_dataset=new_dataset_id, default_dbkey=dbkey )
|
||||
|
||||
# fill template
|
||||
return trans.fill_template( "tracks/browser.mako", viewport_config=gene_region.__dict__, add_dataset=new_dataset_id, default_dbkey=dbkey )
|
||||
|
||||
# Display saved visualization.
|
||||
vis = self.get_visualization( trans, id, check_ownership=False, check_accessible=True )
|
||||
viz_config = self.get_visualization_config( trans, vis )
|
||||
|
||||
# Update gene region of saved visualization if user parses a new gene region in the url
|
||||
if gene_region_config['chrom'] is not None:
|
||||
viz_config['viewport']['chrom'] = gene_region_config['chrom']
|
||||
viz_config['viewport']['start'] = gene_region_config['start']
|
||||
viz_config['viewport']['end'] = gene_region_config['end']
|
||||
if gene_region.chrom is not None:
|
||||
viz_config['viewport']['chrom'] = gene_region.chrom
|
||||
viz_config['viewport']['start'] = gene_region.start
|
||||
viz_config['viewport']['end'] = gene_region.end
|
||||
|
||||
'''
|
||||
FIXME:
|
||||
@@ -741,6 +729,7 @@ class VisualizationController( BaseUIController, SharableMixin, UsesAnnotations,
|
||||
if trans.security.decode_id(new_dataset) in [ d["dataset_id"] for d in viz_config.get("tracks") ]:
|
||||
new_dataset = None # Already in browser, so don't add
|
||||
'''
|
||||
# fill template
|
||||
return trans.fill_template( 'tracks/browser.mako', config=viz_config, add_dataset=new_dataset_id )
|
||||
|
||||
@web.expose
|
||||
|
||||
+24
-29
@@ -109,7 +109,11 @@ var DatasetCollection = Backbone.Collection.extend({
|
||||
*/
|
||||
var TabularDatasetChunkedView = Backbone.View.extend({
|
||||
|
||||
initialize: function(options) {},
|
||||
initialize: function(options)
|
||||
{
|
||||
// load trackster button
|
||||
(new TabularButtonTrackster(options)).render();
|
||||
},
|
||||
|
||||
render: function()
|
||||
{
|
||||
@@ -221,13 +225,8 @@ var TabularDatasetChunkedView = Backbone.View.extend({
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Provides table-based, dynamic view of a bed dataset.
|
||||
* NOTE: view's el must be in DOM already and provided when
|
||||
* creating the view so that scrolling event can be attached
|
||||
* to the correct container.
|
||||
*/
|
||||
var TabularDatasetChunkedViewWithButton = TabularDatasetChunkedView.extend(
|
||||
// button for trackster visualization
|
||||
var TabularButtonTrackster = Backbone.View.extend(
|
||||
{
|
||||
// gene region columns
|
||||
col: {
|
||||
@@ -245,17 +244,13 @@ var TabularDatasetChunkedViewWithButton = TabularDatasetChunkedView.extend(
|
||||
// database key
|
||||
genome_build: null,
|
||||
|
||||
get_type : function(obj) {
|
||||
return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
|
||||
},
|
||||
|
||||
// backbone initialize
|
||||
initialize: function (options)
|
||||
{
|
||||
// verify that metadata exists
|
||||
var metadata = options.model.attributes.metadata.attributes;
|
||||
if (typeof metadata.chromCol === "undefined" || typeof metadata.startCol === "undefined" || typeof metadata.endCol === "undefined")
|
||||
console.log("TabularDatasetChunkedViewWithButton : Metadata for column identification is missing.");
|
||||
console.log("TabularButtonTrackster : Metadata for column identification is missing.");
|
||||
else
|
||||
{
|
||||
// read in columns
|
||||
@@ -270,13 +265,13 @@ var TabularDatasetChunkedViewWithButton = TabularDatasetChunkedView.extend(
|
||||
|
||||
// get dataset id
|
||||
if (typeof options.model.attributes.id === "undefined")
|
||||
console.log("TabularDatasetChunkedViewWithButton : Dataset identification is missing.");
|
||||
console.log("TabularButtonTrackster : Dataset identification is missing.");
|
||||
else
|
||||
this.dataset_id = options.model.attributes.id;
|
||||
|
||||
// get url
|
||||
if (typeof options.model.attributes.url_viz === "undefined")
|
||||
console.log("TabularDatasetChunkedViewWithButton : Url for visualization controller is missing.");
|
||||
console.log("TabularButtonTrackster : Url for visualization controller is missing.");
|
||||
else
|
||||
this.url_viz = options.model.attributes.url_viz;
|
||||
|
||||
@@ -301,20 +296,23 @@ var TabularDatasetChunkedViewWithButton = TabularDatasetChunkedView.extend(
|
||||
|
||||
// get selected data line
|
||||
var row = $(e.target).parent();
|
||||
|
||||
// get target gene region
|
||||
var btn_viz_pars = {
|
||||
dataset_id : this.dataset_id,
|
||||
gene_region : row.children().eq(this.col.chrom).html() + ":" + row.children().eq(this.col.start).html() + "-" + row.children().eq(this.col.end).html()
|
||||
};
|
||||
|
||||
// verify that location has been found
|
||||
if (row.children().eq(this.col.chrom).html() != "")
|
||||
var chrom = row.children().eq(this.col.chrom).html();
|
||||
var start = row.children().eq(this.col.start).html();
|
||||
var end = row.children().eq(this.col.end).html();
|
||||
if (chrom != "" && start != "" && end != "")
|
||||
{
|
||||
// get target gene region
|
||||
var btn_viz_pars = {
|
||||
dataset_id : this.dataset_id,
|
||||
gene_region : chrom + ":" + start + "-" + end
|
||||
};
|
||||
|
||||
// get button position
|
||||
var offset = row.offset();
|
||||
var left = offset.left - 10;
|
||||
var top = offset.top;
|
||||
var offset = row.offset();
|
||||
var left = offset.left - 10;
|
||||
var top = offset.top;
|
||||
|
||||
// update css
|
||||
$('#btn_viz').css({'position': 'fixed', 'top': top + 'px', 'left': left + 'px'});
|
||||
@@ -401,9 +399,6 @@ var TabularDatasetChunkedViewWithButton = TabularDatasetChunkedView.extend(
|
||||
|
||||
// hide the button
|
||||
$('#btn_viz').hide();
|
||||
|
||||
// call parent render
|
||||
TabularDatasetChunkedView.prototype.render.call(this);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -436,7 +431,7 @@ var createTabularDatasetChunkedView = function(dataset_config, parent_elt) {
|
||||
var view_div = $('<div/>').appendTo(parent_elt);
|
||||
|
||||
// default viewer
|
||||
return new TabularDatasetChunkedViewWithButton({
|
||||
return new TabularDatasetChunkedView({
|
||||
el: view_div,
|
||||
model: new TabularDataset(dataset_config)
|
||||
}).render();
|
||||
|
||||
Reference in New Issue
Block a user