From 75ab206ca57da42582c0ac04dc903eb68c4824ab Mon Sep 17 00:00:00 2001 From: Jeremy Goecks Date: Thu, 9 Jul 2015 12:47:15 +0200 Subject: [PATCH] Trackster fixes: (a) close data provider files after reading from them (but there are some data providers that currently lack close functions so those files will remain open); (b) fix running tools by correcting HDA manager function call; (c) remove use of underscore template because uglify does not handle it well. --- client/galaxy/scripts/viz/trackster/tracks.js | 9 +- .../visualization/data_providers/genome.py | 129 ++++++++++-------- lib/galaxy/webapps/galaxy/api/tools.py | 2 +- static/maps/viz/trackster/tracks.js.map | 2 +- static/scripts/viz/trackster/tracks.js | 5 +- 5 files changed, 79 insertions(+), 68 deletions(-) diff --git a/client/galaxy/scripts/viz/trackster/tracks.js b/client/galaxy/scripts/viz/trackster/tracks.js index 5509e20740d..f3719d6c2ef 100644 --- a/client/galaxy/scripts/viz/trackster/tracks.js +++ b/client/galaxy/scripts/viz/trackster/tracks.js @@ -2209,15 +2209,14 @@ extend(Track.prototype, Drawable.prototype, { title: "Tool parameter space visualization", css_class: "arrow-split", on_click_fn: function(track) { - var template = - 'Tool: <%= track.tool.get("name") %>
' + - 'Dataset: <%= track.config.get_value("name") %>
' + + var html = + 'Tool:' + track.tool.get("name") + '
' + + 'Dataset:' + track.config.get_value("name") + '
' + 'Region(s): ', - html = _.template(template, { track: track }); + ''; var cancel_fn = function() { Galaxy.modal.hide(); $(window).unbind("keypress.check_enter_esc"); }, ok_fn = function() { var regions_to_use = $('select[name="regions"] option:selected').val(), diff --git a/lib/galaxy/visualization/data_providers/genome.py b/lib/galaxy/visualization/data_providers/genome.py index 4a36d3f26f3..e58836d7334 100644 --- a/lib/galaxy/visualization/data_providers/genome.py +++ b/lib/galaxy/visualization/data_providers/genome.py @@ -143,11 +143,6 @@ class GenomeDataProvider( BaseDataProvider ): dependencies=dependencies, error_max_vals=error_max_vals ) - # File/pointer where data is obtained from. It is useful to set this for repeated - # queries, such as is necessary for genome-wide data. - # TODO: add functions to (a) create data_file and (b) clean up data_file. - self.data_file = None - def write_data_to_file( self, regions, filename ): """ Write data in region defined by chrom, start, and end to a file. @@ -167,7 +162,13 @@ class GenomeDataProvider( BaseDataProvider ): """ raise Exception( "Unimplemented Function" ) - def get_iterator( self, chrom, start, end, **kwargs ): + def open_data_file( self ): + """ + Open data file for reading data. + """ + raise Exception( "Unimplemented Function" ) + + def get_iterator( self, data_file, chrom, start, end, **kwargs ): """ Returns an iterator that provides data in the region chrom:start-end """ @@ -189,8 +190,19 @@ class GenomeDataProvider( BaseDataProvider ): dataset_type, data """ start, end = int( low ), int( high ) - iterator = self.get_iterator( chrom, start, end, **kwargs ) - return self.process_data( iterator, start_val, max_vals, start=start, end=end, **kwargs ) + data_file = self.open_data_file() + iterator = self.get_iterator( data_file, chrom, start, end, **kwargs ) + data = self.process_data( iterator, start_val, max_vals, start=start, end=end, **kwargs ) + try: + data_file.close() + except AttributeError: + # FIXME: some data providers do not have a close function implemented. + # Providers without a close function include: + # pysam Tabixfile + # bx IntervalIndex + pass + + return data def get_genome_data( self, chroms_info, **kwargs ): """ @@ -335,40 +347,40 @@ class TabixDataProvider( FilterableMixin, GenomeDataProvider ): col_name_data_attr_mapping = { 4 : { 'index': 4 , 'name' : 'Score' } } - def get_iterator( self, chrom, start, end, **kwargs ): + def open_data_file( self ): + return ctabix.Tabixfile(self.dependencies['bgzip'].file_name, + index_filename=self.converted_dataset.file_name) + + def get_iterator( self, data_file, chrom, start, end, **kwargs ): start, end = int(start), int(end) if end >= (2 << 29): end = (2 << 29 - 1) # Tabix-enforced maximum - bgzip_fname = self.dependencies['bgzip'].file_name - - if not self.data_file: - self.data_file = ctabix.Tabixfile(bgzip_fname, index_filename=self.converted_dataset.file_name) - # Get iterator using either naming scheme. iterator = iter( [] ) - if chrom in self.data_file.contigs: - iterator = self.data_file.fetch(reference=chrom, start=start, end=end) + if chrom in data_file.contigs: + iterator = data_file.fetch(reference=chrom, start=start, end=end) else: # Try alternative naming scheme. chrom = _convert_between_ucsc_and_ensemble_naming( chrom ) - if chrom in self.data_file.contigs: - iterator = self.data_file.fetch(reference=chrom, start=start, end=end) + if chrom in data_file.contigs: + iterator = data_file.fetch(reference=chrom, start=start, end=end) return iterator def write_data_to_file( self, regions, filename ): out = open( filename, "w" ) + data_file = self.open_data_file() for region in regions: # Write data in region. - chrom = region.chrom - start = region.start - end = region.end - iterator = self.get_iterator( chrom, start, end ) + iterator = self.get_iterator( data_file, region.chrom, region.start, region.end ) for line in iterator: out.write( "%s\n" % line ) + # TODO: once Pysam is updated and Tabixfile has a close() method, + # data_file.close() + out.close() # @@ -385,7 +397,7 @@ class IntervalDataProvider( GenomeDataProvider ): Payload format: [ uid (offset), start, end, name, strand, thick_start, thick_end, blocks ] """ - def get_iterator( self, chrom, start, end, **kwargs ): + def get_iterator( self, data_file, chrom, start, end, **kwargs ): raise Exception( "Unimplemented Function" ) def process_data( self, iterator, start_val=0, max_vals=None, **kwargs ): @@ -470,7 +482,7 @@ class BedDataProvider( GenomeDataProvider ): dataset_type = 'interval_index' - def get_iterator( self, chrom, start, end, **kwargs ): + def get_iterator( self, data_file, chrom, start, end, **kwargs ): raise Exception( "Unimplemented Method" ) def process_data( self, iterator, start_val=0, max_vals=None, **kwargs ): @@ -545,9 +557,11 @@ class BedDataProvider( GenomeDataProvider ): chrom = region.chrom start = region.start end = region.end - iterator = self.get_iterator( chrom, start, end ) + data_file = self.open_data_file() + iterator = self.get_iterator( data_file, chrom, start, end ) for line in iterator: out.write( "%s\n" % line ) + data_file.close() out.close() @@ -567,14 +581,14 @@ class RawBedDataProvider( BedDataProvider ): for large datasets. """ - def get_iterator( self, source, chrom=None, start=None, end=None, **kwargs ): + def get_iterator( self, data_file, chrom=None, start=None, end=None, **kwargs ): # Read first line in order to match chrom naming format. - line = source.readline() + line = data_file.readline() dataset_chrom = line.split()[0] if not _chrom_naming_matches( chrom, dataset_chrom ): chrom = _convert_between_ucsc_and_ensemble_naming( chrom ) # Undo read. - source.seek( 0 ) + data_file.seek( 0 ) def line_filter_iter(): for line in open( self.original_dataset.file_name ): @@ -741,13 +755,11 @@ class VcfDataProvider( GenomeDataProvider ): def write_data_to_file( self, regions, filename ): out = open( filename, "w" ) + data_file = self.open_data_file() for region in regions: # Write data in region. - chrom = region.chrom - start = region.start - end = region.end - iterator = self.get_iterator( chrom, start, end ) + iterator = self.get_iterator( data_file, region.chrom, region.start, region.end ) for line in iterator: out.write( "%s\n" % line ) out.close() @@ -769,12 +781,13 @@ class RawVcfDataProvider( VcfDataProvider ): for large datasets. """ - def get_iterator( self, chrom, start, end, **kwargs ): - source = open( self.original_dataset.file_name ) + def open_data_file( self ): + return open( self.original_dataset.file_name ) + def get_iterator( self, data_file, chrom, start, end, **kwargs ): # Skip comments. line = None - for line in source: + for line in data_file: if not line.startswith("#"): break @@ -796,13 +809,13 @@ class RawVcfDataProvider( VcfDataProvider ): return variant_chrom == chrom and variant_start >= start and variant_start <= end def line_filter_iter(): - """ Yields lines in source that are in region chrom:start-end """ + """ Yields lines in data that are in region chrom:start-end """ # Yield data line read above. if line_in_region( line, chrom, start, end ): yield line # Search for and yield other data lines. - for data_line in source: + for data_line in data_file: if line_in_region( data_line, chrom, start, end ): yield data_line @@ -866,23 +879,24 @@ class BamDataProvider( GenomeDataProvider, FilterableMixin ): new_bamfile.close() bamfile.close() - def get_iterator( self, chrom, start, end, **kwargs ): + def open_data_file( self ): + # Attempt to open the BAM file with index + return csamtools.Samfile( filename=self.original_dataset.file_name, mode='rb', + index_filename=self.converted_dataset.file_name ) + + def get_iterator( self, data_file, chrom, start, end, **kwargs ): """ Returns an iterator that provides data in the region chrom:start-end """ - start, end = int( start ), int( end ) - orig_data_filename = self.original_dataset.file_name - index_filename = self.converted_dataset.file_name - # Attempt to open the BAM file with index - bamfile = csamtools.Samfile( filename=orig_data_filename, mode='rb', index_filename=index_filename ) + # Fetch and return data. try: - data = bamfile.fetch( start=start, end=end, reference=chrom ) + data = data_file.fetch( start=start, end=end, reference=chrom ) except ValueError: # Try alternative chrom naming. chrom = _convert_between_ucsc_and_ensemble_naming( chrom ) try: - data = bamfile.fetch( start=start, end=end, reference=chrom ) + data = data_file.fetch( start=start, end=end, reference=chrom ) except ValueError: return None return data @@ -1299,19 +1313,18 @@ class IntervalIndexDataProvider( FilterableMixin, GenomeDataProvider ): source.close() out.close() - def get_iterator( self, chrom, start, end, **kwargs ): - """ - Returns an array with values: (a) source file and (b) an iterator that - provides data in the region chrom:start-end - """ - start, end = int(start), int(end) - index = Indexes( self.converted_dataset.file_name ) + def open_data_file( self ): + return Indexes( self.converted_dataset.file_name ) - if chrom not in index.indexes: + def get_iterator( self, data_file, chrom, start, end, **kwargs ): + """ + Returns an iterator for data in data_file in chrom:start-end + """ + if chrom not in data_file.indexes: # Try alternative naming. chrom = _convert_between_ucsc_and_ensemble_naming( chrom ) - return index.find(chrom, start, end) + return data_file.find(chrom, start, end) def process_data( self, iterator, start_val=0, max_vals=None, **kwargs ): results = [] @@ -1358,7 +1371,7 @@ class RawGFFDataProvider( GenomeDataProvider ): dataset_type = 'interval_index' - def get_iterator( self, chrom, start, end, **kwargs ): + def get_iterator( self, data_file, chrom, start, end, **kwargs ): """ Returns an iterator that provides data in the region chrom:start-end as well as a file offset. @@ -1467,7 +1480,7 @@ class ENCODEPeakDataProvider( GenomeDataProvider ): Payload format: [ uid (offset), start, end, name, strand, thick_start, thick_end, blocks ] """ - def get_iterator( self, chrom, start, end, **kwargs ): + def get_iterator( self, data_file, chrom, start, end, **kwargs ): raise "Unimplemented Method" def process_data( self, iterator, start_val=0, max_vals=None, **kwargs ): @@ -1615,7 +1628,7 @@ class ChromatinInteractionsDataProvider( GenomeDataProvider ): class ChromatinInteractionsTabixDataProvider( TabixDataProvider, ChromatinInteractionsDataProvider ): - def get_iterator( self, chrom, start=0, end=sys.maxint, interchromosomal=False, **kwargs ): + def get_iterator( self, data_file, chrom, start=0, end=sys.maxint, interchromosomal=False, **kwargs ): """ """ # Modify start as needed to get earlier interactions with start region. @@ -1636,7 +1649,7 @@ class ChromatinInteractionsTabixDataProvider( TabixDataProvider, ChromatinIntera # Check for interchromosal interactions. if interchromosomal and c != chrom: yield line - return filter( TabixDataProvider.get_iterator( self, chrom, filter_start, end ) ) + return filter( TabixDataProvider.get_iterator( self, data_file, chrom, filter_start, end ) ) # # -- Helper methods. -- diff --git a/lib/galaxy/webapps/galaxy/api/tools.py b/lib/galaxy/webapps/galaxy/api/tools.py index ce3346c2fff..191e21b6073 100644 --- a/lib/galaxy/webapps/galaxy/api/tools.py +++ b/lib/galaxy/webapps/galaxy/api/tools.py @@ -387,7 +387,7 @@ class ToolsController( BaseAPIController, UsesVisualizationMixin ): # job's previous parameters and incoming parameters. Incoming parameters # have priority. # - original_job = self.hda_manager.creating_job( trans, original_dataset ) + original_job = self.hda_manager.creating_job( original_dataset ) tool = trans.app.toolbox.get_tool( original_job.tool_id ) if not tool or not tool.allow_user_access( trans.user ): return trans.app.model.Dataset.conversion_messages.NO_TOOL diff --git a/static/maps/viz/trackster/tracks.js.map b/static/maps/viz/trackster/tracks.js.map index 2cfddac75de..cb677c4141f 100644 --- a/static/maps/viz/trackster/tracks.js.map +++ b/static/maps/viz/trackster/tracks.js.map @@ -1 +1 @@ -{"version":3,"file":"tracks.js","sources":["../../../src/viz/trackster/tracks.js"],"names":["define","_","visualization","viz_views","util","slotting","painters","filters_mod","data","tools_mod","config_mod","extend","html_elt_js_obj_dict","is_container","element","obj","attr","moveable","handle_class","container_selector","element_js_obj","bind","handle","relative","e","d","child","container","top","bottom","i","parent","$","this","children","this_obj","parents","length","position","outerHeight","cur_container","offsetY","insertBefore","remove_drawable","add_drawable_before","insertAfter","add_drawable","get","is","find","prepend","append","hasClass","move_drawable","deltaY","addClass","removeClass","ERROR_PADDING","MAX_FEATURE_DEPTH","MIN_SQUISH_VIEW_WIDTH","TILE_SIZE","DEFAULT_DATA_QUERY_WAIT","MAX_CHROMS_SELECTABLE","DATA_ERROR","DATA_NOCONVERTER","DATA_NONE","DATA_PENDING","DATA_CANNOT_RUN_TOOL","DATA_OK","TILE_CACHE_SIZE","CONTINUOUS_DATA_MODES","Drawable","view","obj_dict","id_counter","id","drag_handle_class","is_overview","action_icons","config","ConfigSettingCollection","from_models_and_saved_values","config_params","prefs","get_value","set_value","name","config_onchange","on","container_div","build_container_div","header_div","header","header_view","TrackHeaderView","model","$el","icons_div","hover","show","hide","prototype","action_icons_def","title","css_class","on_click_fn","drawable","toggle_icon","hide_contents","show_contents","ConfigSettingCollectionView","collection","render_in_modal","remove","key","label","type","default_value","hidden","init","changed","can_draw","enabled","request_draw","_draw","to_dict","set_name","new_name","old_name","revert_name","update_intro_div","update_icons","get_drawables","DrawableCollection","call","obj_type","drawables","unpack_drawables","drawables_array","object_from_template","options","dictified_drawables","push","to_key_value_dict","other","index","indexOf","splice","replace_drawable","old_drawable","new_drawable","update_html","replaceWith","new_position","get_tracks","track_type","queue","slice","tracks","shift","concat","DrawableGroup","content_div","appendTo","filters_manager","FiltersManager","after","parent_div","saved_filters_managers","old_manager","filters","visible","setup_multitrack_filtering","group","show_composite_track","clear_filters","_restore_filter_managers","clear_tile_cache","toggle","tiles_div","num_drawables","composite_icon","filters_icon","CompositeTrack","j","same_type","a_type","get_type","num_feature_tracks","can_composite","FeatureTrack","LineTrack","filter","shared_filters","remove_all","new_filter","filter_name","NumberFilter","add_filter","init_filters","composite_track","each","TracksterView","Backbone","View","initialize","chrom","vis_id","dbkey","stand_alone","undefined","label_tracks","tracks_to_be_redrawn","max_low","max_high","zoom_factor","min_separation","has_changes","load_chroms_deferred","render","canvas_manager","CanvasManager","ownerDocument","reset","requested_redraw","parent_element","top_container","browser_content_div","bottom_container","top_labeltrack","viewport_container","intro_div","text","click","select_datasets","galaxy_config","root","f-dbkey","track","nav_container","prependTo","nav","overview","overview_viewport","overview_close","overview_highlight","overview_box_background","overview_box","default_overview_height","height","nav_controls","chrom_select","submit_nav","keyCode","which","go_to","val","location_span","stopPropagation","nav_input","tooltip","placement","low","high","css","select","focus","autocomplete","source","request","response","all_features","feature_search_deferreds","map","t","data_manager","search_features","term","success","dataset_features","when","apply","done","feature","value","minLength","hidden_input","zo_link","zoom_out","zi_link","zoom_in","load_chroms","change_chrom","trigger","pageX","current_x","offsetX","delta","delta_chrom","Math","round","width","move_delta","reset_overview","clientX","original_low","current_height","clientY","new_scroll","scrollTop","proxy","left","min","startX","offset","abs","max","span","update_location","old_low","request_redraw","add_label_track","LabelTrack","window","resize_timer","clearTimeout","setTimeout","resize_window","document","redraw","get_base_color","base","toLowerCase","trigger_navigate","new_chrom","new_low","new_high","delay","timer","self","commatize","url_parms","num","chrom_data","Deferred","ajax","url","dataType","result","chrom_info","reference","ref_track","ReferenceTrack","reference_track","chrom_options","len","prev_chroms","next_chroms","html","chrom_start_index","start_index","resolve","error","alert","then","found","grep","v","str","replace","chrom_pos","split","parseInt","move_fraction","fraction","current_chrom_span","data_fetch","redraw_on_move_fn","label_track","track_list","track_options","to","requestAnimationFrame","_redraw","floor","ceil","resolution_px_b","left_px","width_px","min_width_px","point","cur_center","new_half","resize_viewport","set_overview","overview_drawable","dataset","copy","postdraw_actions","TracksterTool","Tool","defaults","tool_state","set","remove_inputs","state_dict","get_inputs_dict","is_visible","ToolParameterView","events","change :input","param_div","param","html_div","update_value","update_event","target","TracksterToolView","set_visible","tool","keydown","param_view","run_tool_row","run_on_dataset_button","run_on_region_button","run_on_region","run_on_dataset","update_params","params","run","target_dataset_id","action","tool_id","Galaxy","modal","body","buttons","Close","region","GenomeRegion","start","end","url_params","regions","toJSON","current_track","track_name","tool_region_and_parameters_str","new_track","constructor","hda_ldda","init_for_tool_data","change_mode","mode","set_filters_manager","track_data","set_dataset","Dataset","success_callback","inputs","ss_deferred","ServerStateDeferred","ajax_settings","JSON","stringify","contentType","interval","success_fn","go","message","FilterScaler","default_val","Scaler","gen_val","feature_data","Number","MAX_VALUE","parseFloat","Tile","w_scale","canvas","html_elt","stale","predisplay_actions","LineTrackTile","FeatureTrackTile","all_slotted","feature_mapper","incomplete_features","seq_data","has_icons","other_tiles_features_drawn","Track","Model","dataset_check_type","data_url_extra_params","data_query_wait","GenomeDataManager","genome","Genome","chroms_info","data_mode_compatible","data_and_mode_compatible","can_subset","min_height_px","max_height_px","visible_height_px","resize","add_resize_handle","template","cancel_fn","unbind","ok_fn","regions_to_use","view_region","bookmarked_regions","elt","from_str","location","href","dataset_id","Collection","No","Yes","on_resize","in_handle","in_drag","drag_control","original_height","new_height","tile_cache","clear","ReadTrack","VariantTrack","show_message","msg_html","retry","init_deferred","data_type","getJSON","kind","status","valid_chroms","predraw_init","msg_elt","stats","min_value","max_value","mean","sd","set_default_value","TiledTrack","filters_available","Cache","left_offset","tool_view","dynamic_tool_div","overlay_div","slotters","max_rows","set_min_max","isNaN","new_mode","mode_icon","tools_icon","param_space_viz_icon","_gen_tile_cache_key","tile_region","before_draw","clear_after","resolution","tile_promise","tile_width","tile_index","tile_promises","tiles","draw_helper","tile","_add_yaxis_label","on_change","pref_name","make_text_editable","num_cols","on_finish","new_val","help_text","line_track_tiles","force","icons_present","get_mode","update_auto_mode","_get_drawables","is_tile","o","get_elt","show_tile","get_tile_data","data_mode","m","tile_data","get_data","tile_drawn","set_elt","tracks_data","is_deferred","subset_entry","pop","drawing_modes","drawing_heights","get_canvas_height","new_canvas","tile_low","tile_high","ctx","getContext","translate","globalAlpha","globalCompositeOperation","draw_tile","_draw_line_track_tile","painter","LinePainter","draw","tile_element","track_height","region_str","toString","param_str","values","join","dataset_type","extra_info","entry","range","tickDistance","pow","log","new_div","screenPosition","display_modes","union","show_group","visible_height","init_deferreds","update_all_min_max","max_height","char_width_px","data_url","GenomeReferenceDataManager","new_visible","cur_visible","subset","font","manager","default_font","textAlign","c","str_len","fillStyle","fillText","DiagonalHeatmapTrack","DiagonalHeatmapPainter","summary_draw_height","start_end_dct","set_painter_from_config","help","ArcLinkedFeaturePainter","LinkedFeaturePainter","all_incomplete_features","pluck","inc_features","tile_incomplete_features","omit","f","keys","size","features","new_canvas_ctx","drawImage","new_tile","update_ui_elt","example_feature","applies_to","show_more_rows_icon","incremental_slots","level","dummy_context","slotter","x","measureText","slot_features","canvas_width","rows_required","dummy_painter","get_required_height","ref_seq","cur_tile","filtered","slots","hide_feature","flen","update_attrs","keep","filter_alpha_scaler","alpha_filter","filter_height_scaler","height_filter","b","draw_results","translation","VariantPainter","num_samples","get_metadata","match","deferreds","fetch","sample_names","font_size","font-size","samples_div_html","line-height","ReadPainter","addable_objects","VcfTrack","drawable_type"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tracks.js","sources":["../../../src/viz/trackster/tracks.js"],"names":["define","_","visualization","viz_views","util","slotting","painters","filters_mod","data","tools_mod","config_mod","extend","html_elt_js_obj_dict","is_container","element","obj","attr","moveable","handle_class","container_selector","element_js_obj","bind","handle","relative","e","d","child","container","top","bottom","i","parent","$","this","children","this_obj","parents","length","position","outerHeight","cur_container","offsetY","insertBefore","remove_drawable","add_drawable_before","insertAfter","add_drawable","get","is","find","prepend","append","hasClass","move_drawable","deltaY","addClass","removeClass","ERROR_PADDING","MAX_FEATURE_DEPTH","MIN_SQUISH_VIEW_WIDTH","TILE_SIZE","DEFAULT_DATA_QUERY_WAIT","MAX_CHROMS_SELECTABLE","DATA_ERROR","DATA_NOCONVERTER","DATA_NONE","DATA_PENDING","DATA_CANNOT_RUN_TOOL","DATA_OK","TILE_CACHE_SIZE","CONTINUOUS_DATA_MODES","Drawable","view","obj_dict","id_counter","id","drag_handle_class","is_overview","action_icons","config","ConfigSettingCollection","from_models_and_saved_values","config_params","prefs","get_value","set_value","name","config_onchange","on","container_div","build_container_div","header_div","header","header_view","TrackHeaderView","model","$el","icons_div","hover","show","hide","prototype","action_icons_def","title","css_class","on_click_fn","drawable","toggle_icon","hide_contents","show_contents","ConfigSettingCollectionView","collection","render_in_modal","remove","key","label","type","default_value","hidden","init","changed","can_draw","enabled","request_draw","_draw","to_dict","set_name","new_name","old_name","revert_name","update_intro_div","update_icons","get_drawables","DrawableCollection","call","obj_type","drawables","unpack_drawables","drawables_array","object_from_template","options","dictified_drawables","push","to_key_value_dict","other","index","indexOf","splice","replace_drawable","old_drawable","new_drawable","update_html","replaceWith","new_position","get_tracks","track_type","queue","slice","tracks","shift","concat","DrawableGroup","content_div","appendTo","filters_manager","FiltersManager","after","parent_div","saved_filters_managers","old_manager","filters","visible","setup_multitrack_filtering","group","show_composite_track","clear_filters","_restore_filter_managers","clear_tile_cache","toggle","tiles_div","num_drawables","composite_icon","filters_icon","CompositeTrack","j","same_type","a_type","get_type","num_feature_tracks","can_composite","FeatureTrack","LineTrack","filter","shared_filters","remove_all","new_filter","filter_name","NumberFilter","add_filter","init_filters","composite_track","each","TracksterView","Backbone","View","initialize","chrom","vis_id","dbkey","stand_alone","undefined","label_tracks","tracks_to_be_redrawn","max_low","max_high","zoom_factor","min_separation","has_changes","load_chroms_deferred","render","canvas_manager","CanvasManager","ownerDocument","reset","requested_redraw","parent_element","top_container","browser_content_div","bottom_container","top_labeltrack","viewport_container","intro_div","text","click","select_datasets","galaxy_config","root","f-dbkey","track","nav_container","prependTo","nav","overview","overview_viewport","overview_close","overview_highlight","overview_box_background","overview_box","default_overview_height","height","nav_controls","chrom_select","submit_nav","keyCode","which","go_to","val","location_span","stopPropagation","nav_input","tooltip","placement","low","high","css","select","focus","autocomplete","source","request","response","all_features","feature_search_deferreds","map","t","data_manager","search_features","term","success","dataset_features","when","apply","done","feature","value","minLength","hidden_input","zo_link","zoom_out","zi_link","zoom_in","load_chroms","change_chrom","trigger","pageX","current_x","offsetX","delta","delta_chrom","Math","round","width","move_delta","reset_overview","clientX","original_low","current_height","clientY","new_scroll","scrollTop","proxy","left","min","startX","offset","abs","max","span","update_location","old_low","request_redraw","add_label_track","LabelTrack","window","resize_timer","clearTimeout","setTimeout","resize_window","document","redraw","get_base_color","base","toLowerCase","trigger_navigate","new_chrom","new_low","new_high","delay","timer","self","commatize","url_parms","num","chrom_data","Deferred","ajax","url","dataType","result","chrom_info","reference","ref_track","ReferenceTrack","reference_track","chrom_options","len","prev_chroms","next_chroms","html","chrom_start_index","start_index","resolve","error","alert","then","found","grep","v","str","replace","chrom_pos","split","parseInt","move_fraction","fraction","current_chrom_span","data_fetch","redraw_on_move_fn","label_track","track_list","track_options","to","requestAnimationFrame","_redraw","floor","ceil","resolution_px_b","left_px","width_px","min_width_px","point","cur_center","new_half","resize_viewport","set_overview","overview_drawable","dataset","copy","postdraw_actions","TracksterTool","Tool","defaults","tool_state","set","remove_inputs","state_dict","get_inputs_dict","is_visible","ToolParameterView","events","change :input","param_div","param","html_div","update_value","update_event","target","TracksterToolView","set_visible","tool","keydown","param_view","run_tool_row","run_on_dataset_button","run_on_region_button","run_on_region","run_on_dataset","update_params","params","run","target_dataset_id","action","tool_id","Galaxy","modal","body","buttons","Close","region","GenomeRegion","start","end","url_params","regions","toJSON","current_track","track_name","tool_region_and_parameters_str","new_track","constructor","hda_ldda","init_for_tool_data","change_mode","mode","set_filters_manager","track_data","set_dataset","Dataset","success_callback","inputs","ss_deferred","ServerStateDeferred","ajax_settings","JSON","stringify","contentType","interval","success_fn","go","message","FilterScaler","default_val","Scaler","gen_val","feature_data","Number","MAX_VALUE","parseFloat","Tile","w_scale","canvas","html_elt","stale","predisplay_actions","LineTrackTile","FeatureTrackTile","all_slotted","feature_mapper","incomplete_features","seq_data","has_icons","other_tiles_features_drawn","Track","Model","dataset_check_type","data_url_extra_params","data_query_wait","GenomeDataManager","genome","Genome","chroms_info","data_mode_compatible","data_and_mode_compatible","can_subset","min_height_px","max_height_px","visible_height_px","resize","add_resize_handle","cancel_fn","unbind","ok_fn","regions_to_use","view_region","bookmarked_regions","elt","from_str","location","href","dataset_id","Collection","No","Yes","on_resize","in_handle","in_drag","drag_control","original_height","new_height","tile_cache","clear","ReadTrack","VariantTrack","show_message","msg_html","retry","init_deferred","data_type","getJSON","kind","status","valid_chroms","predraw_init","msg_elt","stats","min_value","max_value","mean","sd","set_default_value","TiledTrack","filters_available","Cache","left_offset","tool_view","dynamic_tool_div","overlay_div","slotters","max_rows","set_min_max","isNaN","new_mode","mode_icon","tools_icon","param_space_viz_icon","_gen_tile_cache_key","tile_region","before_draw","clear_after","resolution","tile_promise","tile_width","tile_index","tile_promises","tiles","draw_helper","tile","_add_yaxis_label","on_change","pref_name","make_text_editable","num_cols","on_finish","new_val","help_text","line_track_tiles","force","icons_present","get_mode","update_auto_mode","_get_drawables","is_tile","o","get_elt","show_tile","get_tile_data","data_mode","m","tile_data","get_data","tile_drawn","set_elt","tracks_data","is_deferred","subset_entry","pop","drawing_modes","drawing_heights","get_canvas_height","new_canvas","tile_low","tile_high","ctx","getContext","translate","globalAlpha","globalCompositeOperation","draw_tile","_draw_line_track_tile","painter","LinePainter","draw","tile_element","track_height","region_str","toString","param_str","values","join","dataset_type","extra_info","entry","range","tickDistance","pow","log","new_div","screenPosition","display_modes","union","show_group","visible_height","init_deferreds","update_all_min_max","max_height","char_width_px","data_url","GenomeReferenceDataManager","new_visible","cur_visible","subset","font","manager","default_font","textAlign","c","str_len","fillStyle","fillText","DiagonalHeatmapTrack","DiagonalHeatmapPainter","summary_draw_height","start_end_dct","set_painter_from_config","help","ArcLinkedFeaturePainter","LinkedFeaturePainter","all_incomplete_features","pluck","inc_features","tile_incomplete_features","omit","f","keys","size","features","new_canvas_ctx","drawImage","new_tile","update_ui_elt","example_feature","applies_to","show_more_rows_icon","incremental_slots","level","dummy_context","slotter","x","measureText","slot_features","canvas_width","rows_required","dummy_painter","get_required_height","ref_seq","cur_tile","filtered","slots","hide_feature","flen","update_attrs","keep","filter_alpha_scaler","alpha_filter","filter_height_scaler","height_filter","b","draw_results","translation","VariantPainter","num_samples","get_metadata","match","deferreds","fetch","sample_names","font_size","font-size","samples_div_html","line-height","ReadPainter","addable_objects","VcfTrack","template","drawable_type"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/viz/trackster/tracks.js b/static/scripts/viz/trackster/tracks.js index bf72669f91d..5c1978f7195 100644 --- a/static/scripts/viz/trackster/tracks.js +++ b/static/scripts/viz/trackster/tracks.js @@ -1,4 +1,3 @@ -define(["libs/underscore","viz/visualization","viz/viz_views","viz/trackster/util","viz/trackster/slotting","viz/trackster/painters","viz/trackster/filters","mvc/data","mvc/tools","utils/config"],function(a,b,c,d,e,f,g,h,i,j){var k=a.extend,l={},m=function(a,b){l[a.attr("id")]=b},n=function(a,b,c,d){c=".group",l[a.attr("id")]=d,a.bind("drag",{handle:"."+b,relative:!0},function(a,b){var d,e,f,g,h,i=($(this),$(this).parent()),j=i.children(".track,.group"),k=l[$(this).attr("id")];if(e=$(this).parents(c),0!==e.length){f=e.position().top,g=f+e.outerHeight();var m=l[e.attr("id")];if(b.offsetYg)return $(this).insertAfter(e),m.remove_drawable(k),void m.container.add_drawable(k)}for(e=null,h=0;h=f&&b.offsetY<=g)return b.offsetY-f0?h-1:h))}).bind("dragstart",function(){$(this).addClass("dragging")}).bind("dragend",function(){$(this).removeClass("dragging")})},o=20,p=100,q=12e3,r=400,s=5e3,t=100,u="Cannot display dataset due to an error. ",v="A converter for this dataset is not installed. Please check your datatypes_conf.xml file.",w="No data for this chrom/contig.",x="Preparing data. This can take a while for a large dataset. If the visualization is saved and closed, preparation will continue in the background.",y="Tool cannot be rerun: ",z="Ready for display",A=10,B=["Histogram","Line","Filled","Intensity"],C=function(a,b,d){if(C.id_counter||(C.id_counter=0),this.id=C.id_counter++,this.view=a,this.container=b,this.drag_handle_class=d.drag_handle_class,this.is_overview=!1,this.action_icons={},this.config=j.ConfigSettingCollection.from_models_and_saved_values(this.config_params,d.prefs),this.config.get_value("name")||this.config.set_value("name",d.name),this.config_onchange&&this.config.on("change",this.config_onchange,this),this.container_div=this.build_container_div(),this.header_div=null,d.header!==!1){var e=new c.TrackHeaderView({model:this,id:this.id});this.header_div=e.$el,this.container_div.append(this.header_div);var f=e.icons_div;this.action_icons=e.action_icons,this.container_div.hover(function(){f.show()},function(){f.hide()})}};C.prototype.action_icons_def=[{name:"toggle_icon",title:"Hide/show content",css_class:"toggle",on_click_fn:function(a){a.config.get_value("content_visible")?(a.action_icons.toggle_icon.addClass("toggle-expand").removeClass("toggle"),a.hide_contents(),a.config.set_value("content_visible",!1)):(a.action_icons.toggle_icon.addClass("toggle").removeClass("toggle-expand"),a.config.set_value("content_visible",!0),a.show_contents())}},{name:"settings_icon",title:"Edit settings",css_class:"gear",on_click_fn:function(a){var b=new j.ConfigSettingCollectionView({collection:a.config});b.render_in_modal("Configure Track")}},{name:"remove_icon",title:"Remove",css_class:"remove-icon",on_click_fn:function(a){$(".tooltip").remove(),a.remove()}}],k(C.prototype,{config_params:[{key:"name",label:"Name",type:"text",default_value:""},{key:"content_visible",type:"bool",default_value:!0,hidden:!0}],config_onchange:function(){},init:function(){},changed:function(){this.view.changed()},can_draw:function(){return this.enabled&&this.config.get_value("content_visible")?!0:!1},request_draw:function(){},_draw:function(){},to_dict:function(){},set_name:function(a){this.old_name=this.config.get_value("name"),this.config.set_value("name",a)},revert_name:function(){this.old_name&&this.config.set_value("name",this.old_name)},remove:function(){this.changed(),this.container.remove_drawable(this);var a=this.view;this.container_div.hide(0,function(){$(this).remove(),a.update_intro_div()})},build_container_div:function(){},update_icons:function(){},hide_contents:function(){},show_contents:function(){},get_drawables:function(){}});var D=function(a,b,c){C.call(this,a,b,c),this.obj_type=c.obj_type,this.drawables=[]};k(D.prototype,C.prototype,{unpack_drawables:function(a){this.drawables=[];for(var b,c=0;c").addClass("content-div").attr("id","group_"+this.id+"_content_div").appendTo(this.container_div),m(this.container_div,this),m(this.content_div,this),n(this.container_div,this.drag_handle_class,".group",this),this.filters_manager=new g.FiltersManager(this),this.header_div.after(this.filters_manager.parent_div),this.filters_manager.parent_div.after($("
")),this.saved_filters_managers=[],"drawables"in c&&this.unpack_drawables(c.drawables),"filters"in c){var d=this.filters_manager;this.filters_manager=new g.FiltersManager(this,c.filters),d.parent_div.replaceWith(this.filters_manager.parent_div),c.filters.visible&&this.setup_multitrack_filtering()}};k(E.prototype,C.prototype,D.prototype,{action_icons_def:[C.prototype.action_icons_def[0],C.prototype.action_icons_def[1],{name:"composite_icon",title:"Show composite track",css_class:"layers-stack",on_click_fn:function(a){$(".tooltip").remove(),a.show_composite_track()}},{name:"filters_icon",title:"Filters",css_class:"ui-slider-050",on_click_fn:function(a){a.filters_manager.visible()?(a.filters_manager.clear_filters(),a._restore_filter_managers()):(a.setup_multitrack_filtering(),a.request_draw({clear_tile_cache:!0})),a.filters_manager.toggle()}},C.prototype.action_icons_def[2]],build_container_div:function(){var a=$("
").addClass("group").attr("id","group_"+this.id);return this.container&&this.container.content_div.append(a),a},hide_contents:function(){this.tiles_div.hide()},show_contents:function(){this.tiles_div.show(),this.request_draw()},update_icons:function(){var a=this.drawables.length;if(0===a)this.action_icons.composite_icon.hide(),this.action_icons.filters_icon.hide();else if(1===a)this.action_icons.composite_icon.toggle(this.drawables[0]instanceof Q),this.action_icons.filters_icon.hide();else{var b,c,d,e=!0,f=this.drawables[0].get_type(),h=0;for(b=0;a>b;b++){if(d=this.drawables[b],d.get_type()!==f){can_composite=!1;break}d instanceof U&&h++}if(e&&this.drawables[0]instanceof S?this.action_icons.composite_icon.show():(this.action_icons.composite_icon.hide(),$(".tooltip").remove()),h>1&&h===this.drawables.length){var i,j={};for(d=this.drawables[0],c=0;c0)}else this.action_icons.filters_icon.hide()}},_restore_filter_managers:function(){for(var a=0;a0){this.saved_filters_managers=[];for(var a=0;a").addClass("top-container").appendTo(c),this.browser_content_div=$("
").addClass("content").appendTo(c),this.bottom_container=$("
").addClass("bottom-container").appendTo(c),this.top_labeltrack=$("
").addClass("top-labeltrack").appendTo(this.top_container),this.viewport_container=$("
").addClass("viewport-container").attr("id","viewport-container").appendTo(this.browser_content_div),this.content_div=this.viewport_container,m(this.viewport_container,d),this.intro_div=$("
").addClass("intro").appendTo(this.viewport_container);$("
").text("Add Datasets to Visualization").addClass("action-button").appendTo(this.intro_div).click(function(){b.select_datasets(galaxy_config.root+"visualization/list_current_history_datasets",galaxy_config.root+"api/datasets",{"f-dbkey":d.dbkey},function(b){a.each(b,function(a){d.add_drawable(Y(a,d,d))})})});this.nav_container=$("
").addClass("trackster-nav-container").prependTo(this.top_container),this.nav=$("
").addClass("trackster-nav").appendTo(this.nav_container),this.stand_alone&&(this.nav_container.addClass("stand-alone"),this.nav.addClass("stand-alone")),this.overview=$("
").addClass("overview").appendTo(this.bottom_container),this.overview_viewport=$("
").addClass("overview-viewport").appendTo(this.overview),this.overview_close=$("").attr("title","Close overview").addClass("icon-button overview-close tooltip").hide().appendTo(this.overview_viewport),this.overview_highlight=$("
").addClass("overview-highlight").hide().appendTo(this.overview_viewport),this.overview_box_background=$("
").addClass("overview-boxback").appendTo(this.overview_viewport),this.overview_box=$("
").addClass("overview-box").appendTo(this.overview_viewport),this.default_overview_height=this.overview_box.height(),this.nav_controls=$("
").addClass("nav-controls").appendTo(this.nav),this.chrom_select=$("").addClass("nav-input").hide().bind("keyup focusout",e).appendTo(this.nav_controls),this.location_span=$("").addClass("location").attr("title","Click to change location").tooltip({placement:"bottom"}).appendTo(this.nav_controls),this.location_span.click(function(){d.location_span.hide(),d.chrom_select.hide(),d.nav_input.val(d.chrom+":"+d.low+"-"+d.high),d.nav_input.css("display","inline-block"),d.nav_input.select(),d.nav_input.focus(),d.nav_input.autocomplete({source:function(a,b){var c=[],e=$.map(d.get_tracks(U),function(b){return b.data_manager.search_features(a.term).success(function(a){c=c.concat(a)})});$.when.apply($,e).done(function(){b($.map(c,function(a){return{label:a[0],value:a[1]}}))})},minLength:2})}),void 0!==this.vis_id&&(this.hidden_input=$("").attr("type","hidden").val(this.vis_id).appendTo(this.nav_controls)),this.zo_link=$("").attr("id","zoom-out").attr("title","Zoom out").tooltip({placement:"bottom"}).click(function(){d.zoom_out()}).appendTo(this.nav_controls),this.zi_link=$("").attr("id","zoom-in").attr("title","Zoom in").tooltip({placement:"bottom"}).click(function(){d.zoom_in()}).appendTo(this.nav_controls),this.load_chroms_deferred=this.load_chroms({low:0}),this.chrom_select.bind("change",function(){d.change_chrom(d.chrom_select.val())}),this.browser_content_div.click(function(){$(this).find("input").trigger("blur")}),this.browser_content_div.bind("dblclick",function(a){d.zoom_in(a.pageX,this.viewport_container)}),this.overview_box.bind("dragstart",function(a,b){this.current_x=b.offsetX}).bind("drag",function(a,b){var c=b.offsetX-this.current_x;this.current_x=b.offsetX;var e=Math.round(c/d.viewport_container.width()*(d.max_high-d.max_low));d.move_delta(-e)}),this.overview_close.click(function(){d.reset_overview()}),this.viewport_container.bind("draginit",function(a){return a.clientX>d.viewport_container.width()-16?!1:void 0}).bind("dragstart",function(a,b){b.original_low=d.low,b.current_height=a.clientY,b.current_x=b.offsetX}).bind("drag",function(a,b){var c=$(this),e=b.offsetX-b.current_x,f=c.scrollTop()-(a.clientY-b.current_height);c.scrollTop(f),b.current_height=a.clientY,b.current_x=b.offsetX;var g=Math.round(e/d.viewport_container.width()*(d.high-d.low));d.move_delta(g)}),this.top_labeltrack.bind("dragstart",function(){return $("
").addClass("zoom-area").css("height",d.browser_content_div.height()+d.top_labeltrack.height()+1).appendTo($(this))}).bind("drag",function(a,b){$(b.proxy).css({left:Math.min(a.pageX,b.startX)-d.container.offset().left,width:Math.abs(a.pageX-b.startX)});var c=Math.min(a.pageX,b.startX)-d.container.offset().left,e=Math.max(a.pageX,b.startX)-d.container.offset().left,f=d.high-d.low,g=d.viewport_container.width();d.update_location(Math.round(c/g*f)+d.low,Math.round(e/g*f)+d.low)}).bind("dragend",function(a,b){var c=Math.min(a.pageX,b.startX),e=Math.max(a.pageX,b.startX),f=d.high-d.low,g=d.viewport_container.width(),h=d.low;d.low=Math.round(c/g*f)+h,d.high=Math.round(e/g*f)+h,$(b.proxy).remove(),d.request_redraw()}),this.add_label_track(new P(this,{content_div:this.top_labeltrack})),$(window).bind("resize",function(){this.resize_timer&&clearTimeout(this.resize_timer),this.resize_timer=setTimeout(function(){d.resize_window()},500)}),$(document).bind("redraw",function(){d.redraw()}),this.reset(),$(window).trigger("resize")},get_base_color:function(a){return this.config.get_value(a.toLowerCase()+"_color")||this.config.get_value("n_color")}});k(F.prototype,D.prototype,{changed:function(){this.has_changes=!0},update_intro_div:function(){this.intro_div.toggle(0===this.drawables.length)},trigger_navigate:function(a,b,c,d){if(this.timer&&clearTimeout(this.timer),d){var e=this;this.timer=setTimeout(function(){e.trigger("navigate",a+":"+b+"-"+c)},500)}else view.trigger("navigate",a+":"+b+"-"+c)},update_location:function(a,b){this.location_span.text(commatize(a)+" - "+commatize(b)),this.nav_input.val(this.chrom+":"+commatize(a)+"-"+commatize(b));var c=this.chrom_select.val();""!==c&&this.trigger_navigate(c,this.low,this.high,!0)},load_chroms:function(a){a.num=t;var b=this,c=$.Deferred();return $.ajax({url:galaxy_config.root+"api/genomes/"+this.dbkey,data:a,dataType:"json",success:function(a){if(0!==a.chrom_info.length){if(a.reference){var d=new R(b);b.add_label_track(d),b.reference_track=d}b.chrom_data=a.chrom_info;for(var e='',f=0,g=b.chrom_data.length;g>f;f++){var h=b.chrom_data[f].chrom;e+='"}a.prev_chroms&&(e+='"),a.next_chroms&&(e+='"),b.chrom_select.html(e),b.chrom_start_index=a.start_index,c.resolve(a.chrom_info)}},error:function(){alert("Could not load chroms for this dbkey: "+b.dbkey)}}),c},change_chrom:function(a,b,c){var d=this;if(!d.chrom_data)return void d.load_chroms_deferred.then(function(){d.change_chrom(a,b,c)});if(a&&"None"!==a){if("previous"===a)return void d.load_chroms({low:this.chrom_start_index-t});if("next"===a)return void d.load_chroms({low:this.chrom_start_index+t});var e=$.grep(d.chrom_data,function(b){return b.chrom===a})[0];if(void 0===e)return void d.load_chroms({chrom:a},function(){d.change_chrom(a,b,c)});if(a!==d.chrom){d.chrom=a,d.chrom_select.val(d.chrom),d.max_high=e.len-1,d.reset();for(var f=0,g=d.drawables.length;g>f;f++){var h=d.drawables[f];h.init&&h.init()}d.reference_track&&d.reference_track.init()}void 0===b&&void 0===c?(d.low=0,d.high=d.max_high):(d.low=void 0!==b?Math.max(b,0):0,void 0===c?(d.low=Math.max(d.low-15,0),d.high=d.low+30):d.high=Math.min(c,d.max_high)),d.request_redraw()}},go_to:function(a){a=a.replace(/,/g,""),a=a.replace(/:|\-/g," ");var b=a.split(/\s+/),c=b[0],d=b[1]?parseInt(b[1],10):void 0,e=b[2]?parseInt(b[2],10):void 0;this.change_chrom(c,d,e)},move_fraction:function(a){var b=this,c=b.high-b.low;this.move_delta(a*c)},move_delta:function(a){var b=this,c=b.high-b.low;b.low-ab.max_high?(b.high=b.max_high,b.low=b.max_high-c):(b.high-=a,b.low-=a),b.request_redraw({data_fetch:!1}),this.redraw_on_move_fn&&clearTimeout(this.redraw_on_move_fn),this.redraw_on_move_fn=setTimeout(function(){b.request_redraw()},200);var d=b.chrom_select.val();this.trigger_navigate(d,b.low,b.high,!0)},add_drawable:function(a){D.prototype.add_drawable.call(this,a),a.init(),this.changed(),this.update_intro_div();var b=this;a.config.on("change",function(){b.changed()})},add_label_track:function(a){a.view=this,a.init(),this.label_tracks.push(a)},remove_drawable:function(a,b){if(D.prototype.remove_drawable.call(this,a),b){var c=this;a.container_div.hide(0,function(){$(this).remove(),c.update_intro_div()})}},reset:function(){this.low=this.max_low,this.high=this.max_high,this.viewport_container.find(".yaxislabel").remove()},request_redraw:function(b,c){var d=this,e=c?[c]:d.drawables;a.each(e,function(c){var e=a.find(d.tracks_to_be_redrawn,function(a){return a[0]===c});e?e[1]=b:d.tracks_to_be_redrawn.push([c,b])}),this.requested_redraw||(requestAnimationFrame(function(){d._redraw()}),this.requested_redraw=!0)},_redraw:function(){this.requested_redraw=!1;var b=this.low,c=this.high;bthis.max_high&&(c=this.max_high);var d=this.high-this.low;0!==this.high&&df&&this.overview_box.css("left",e-(g-f)/2),this.overview_highlight&&this.overview_highlight.css({left:e,width:f}),a.each(this.tracks_to_be_redrawn,function(a){var b=a[0],c=a[1];b&&b._draw(c)}),this.tracks_to_be_redrawn=[],a.each(this.label_tracks,function(a){a._draw()})},zoom_in:function(a){if(!(0===this.max_high||this.high-this.low<=this.min_separation)){var b=this.high-this.low,c=b/2+this.low,d=b/this.zoom_factor/2;a&&(c=a/this.viewport_container.width()*(this.high-this.low)+this.low),this.low=Math.round(c-d),this.high=Math.round(c+d),this.changed(),this.request_redraw()}},zoom_out:function(){if(0!==this.max_high){var a=this.high-this.low,b=a/2+this.low,c=a*this.zoom_factor/2;this.low=Math.round(b-c),this.high=Math.round(b+c),this.changed(),this.request_redraw()}},resize_viewport:function(){this.viewport_container.height(this.container.height()-this.top_container.height()-this.bottom_container.height())},resize_window:function(){this.resize_viewport(),this.request_redraw()},set_overview:function(a){if(this.overview_drawable){if(this.overview_drawable.dataset.id===a.dataset.id)return;this.overview_viewport.find(".track").remove()}var b=a.copy({content_div:this.overview_viewport}),c=this;b.header_div.hide(),b.is_overview=!0,c.overview_drawable=b,this.overview_drawable.postdraw_actions=function(){c.overview_highlight.show().height(c.overview_drawable.content_div.height()),c.overview_viewport.height(c.overview_drawable.content_div.height()+c.overview_box.outerHeight()),c.overview_close.show(),c.resize_window()},c.overview_drawable.request_draw(),this.changed()},reset_overview:function(){$(".tooltip").remove(),this.overview_viewport.find(".track-tile").remove(),this.overview_viewport.height(this.default_overview_height),this.overview_box.height(this.default_overview_height),this.overview_close.hide(),this.overview_highlight.hide(),view.resize_window(),view.overview_drawable=null}});var G=i.Tool.extend({defaults:{track:null},initialize:function(a){i.Tool.prototype.initialize.call(this,a);var b=!0;void 0!==a.tool_state&&void 0!==a.tool_state.hidden&&(b=a.tool_state.hidden),this.set("hidden",b),this.remove_inputs(["data","hidden_data","conditional"])},state_dict:function(){return a.extend(this.get_inputs_dict(),{hidden:!this.is_visible()})}}),H=Backbone.View.extend({events:{"change :input":"update_value"},render:function(){var a=this.$el.addClass("param-row"),b=this.model,c=($("
").addClass("param-label").text(b.get("label")).appendTo(a),$("
").addClass("param-input").html(b.get("html")).appendTo(a));c.find(":input").val(b.get("value")),$("
").appendTo(a)},update_value:function(a){this.model.set_value($(a.target).val())}}),I=Backbone.View.extend({initialize:function(){this.model.on("change:hidden",this.set_visible,this)},render:function(){var a=this;tool=this.model,parent_div=this.$el.addClass("dynamic-tool").hide(),parent_div.bind("drag",function(a){a.stopPropagation()}).click(function(a){a.stopPropagation()}).bind("dblclick",function(a){a.stopPropagation()}).keydown(function(a){a.stopPropagation()});$("
").appendTo(parent_div).text(tool.get("name"));tool.get("inputs").each(function(a){var b=new H({model:a});b.render(),parent_div.append(b.$el)}),parent_div.find("input").click(function(){$(this).select()});var b=$("
").addClass("param-row").appendTo(parent_div),c=$("").attr("value","Run on complete dataset").appendTo(b),d=$("").attr("value","Run on visible region").appendTo(b);d.click(function(){a.run_on_region()}),c.click(function(){a.run_on_dataset()}),tool.is_visible()&&this.$el.show()},set_visible:function(){this.$el.toggle(this.model.is_visible())},update_params:function(){for(var a=0;a").append(d),this.data=e,this.stale=!1};K.prototype.predisplay_actions=function(){};var L=function(a,b,c,d,e){K.call(this,a,b,c,d,e)};L.prototype.predisplay_actions=function(){};var M=function(a,b,c,d,e,f,g,h,i,j,k){K.call(this,a,b,c,d,e),this.mode=f,this.all_slotted=h,this.feature_mapper=i,this.has_icons=!1,this.incomplete_features=j,this.other_tiles_features_drawn={},this.seq_data=k};k(M.prototype,K.prototype),M.prototype.predisplay_actions=function(){};var N=function(a,c,d){k(d,{drag_handle_class:"draghandle"}),C.call(this,a,c,d),this.dataset=null,d.dataset&&(this.dataset=d.dataset instanceof Backbone.Model?d.dataset:new h.Dataset(d.dataset)),this.dataset_check_type="converted_datasets_state",this.data_url_extra_params={},this.data_query_wait="data_query_wait"in d?d.data_query_wait:s,this.data_manager="data_manager"in d?d.data_manager:new b.GenomeDataManager({dataset:this.dataset,genome:new b.Genome({key:a.dbkey,chroms_info:{chrom_info:a.chrom_data}}),data_mode_compatible:this.data_and_mode_compatible,can_subset:this.can_subset}),this.min_height_px=16,this.max_height_px=800,this.visible_height_px=this.config.get_value("height"),this.content_div=$("
").appendTo(this.container_div),this.container&&(this.container.content_div.append(this.container_div),"resize"in d&&!d.resize||this.add_resize_handle())};k(N.prototype,C.prototype,{action_icons_def:[{name:"mode_icon",title:"Set display mode",css_class:"chevron-expand",on_click_fn:function(){}},C.prototype.action_icons_def[0],{name:"overview_icon",title:"Set as overview",css_class:"application-dock-270",on_click_fn:function(a){a.view.set_overview(a)}},C.prototype.action_icons_def[1],{name:"filters_icon",title:"Filters",css_class:"ui-slider-050",on_click_fn:function(a){a.filters_manager.visible()?a.filters_manager.clear_filters():a.filters_manager.init_filters(),a.filters_manager.toggle()}},{name:"tools_icon",title:"Tool",css_class:"hammer",on_click_fn:function(a){a.tool.toggle(),a.tool.is_visible()?a.set_name(a.config.get_value("name")+a.tool_region_and_parameters_str()):a.revert_name(),$(".tooltip").remove()}},{name:"param_space_viz_icon",title:"Tool parameter space visualization",css_class:"arrow-split",on_click_fn:function(c){var d='Tool: <%= track.tool.get("name") %>
Dataset: <%= track.config.get_value("name") %>
Region(s): ',e=a.template(d,{track:c}),f=function(){Galaxy.modal.hide(),$(window).unbind("keypress.check_enter_esc")},g=function(){var d,e=$('select[name="regions"] option:selected').val(),f=new b.GenomeRegion({chrom:view.chrom,start:view.low,end:view.high}),g=a.map($(".bookmark"),function(a){return new b.GenomeRegion({from_str:$(a).children(".position").text()})});d="cur"===e?[f]:"bookmarks"===e?g:[f].concat(g),Galaxy.modal.hide(),window.location.href=galaxy_config.root+"visualization/sweepster?"+$.param({dataset_id:c.dataset.id,hda_ldda:c.dataset.get("hda_ldda"),regions:JSON.stringify(new Backbone.Collection(d).toJSON())})};Galaxy.modal.show({title:"Visualize tool parameter space and output from different parameter settings?",body:e,buttons:{No:f,Yes:g}})}},C.prototype.action_icons_def[2]],can_draw:function(){return this.dataset&&C.prototype.can_draw.call(this)},build_container_div:function(){return $("
").addClass("track").attr("id","track_"+this.id)},set_dataset:function(a){this.dataset=a,this.data_manager.set("dataset",a)},on_resize:function(){this.request_draw({clear_tile_cache:!0})},add_resize_handle:function(){var a=this,b=!1,c=!1,d=$("
");$(a.container_div).hover(function(){a.config.get_value("content_visible")&&(b=!0,d.show())},function(){b=!1,c||d.hide()}),d.hide().bind("dragstart",function(b,d){c=!0,d.original_height=$(a.content_div).height()}).bind("drag",function(b,c){var d=Math.min(Math.max(c.original_height+c.deltaY,a.min_height_px),a.max_height_px);$(a.tiles_div).css("height",d),a.visible_height_px=a.max_height_px===d?0:d,a.on_resize()}).bind("dragend",function(){a.tile_cache.clear(),c=!1,b||d.hide(),a.config.set_value("height",a.visible_height_px),a.changed()}).appendTo(a.container_div)},hide_contents:function(){this.tiles_div.hide(),this.container_div.find(".yaxislabel, .track-resize").hide()},show_contents:function(){this.tiles_div.show(),this.container_div.find(".yaxislabel, .track-resize").show(),this.request_draw()},get_type:function(){return this instanceof P?"LabelTrack":this instanceof R?"ReferenceTrack":this instanceof S?"LineTrack":this instanceof W?"ReadTrack":this instanceof V?"VariantTrack":this instanceof Q?"CompositeTrack":this instanceof U?"FeatureTrack":""},show_message:function(a){return this.tiles_div.remove(),$("").addClass("message").html(a).appendTo(this.content_div)},init:function(a){var b=this; - -if(b.enabled=!1,b.tile_cache.clear(),b.data_manager.clear(),b.content_div.children().remove(),b.container_div.removeClass("nodata error pending"),b.tiles_div=$("
").addClass("tiles").appendTo(b.content_div),b.dataset.id){var c=$.Deferred(),d={hda_ldda:b.dataset.get("hda_ldda"),data_type:this.dataset_check_type,chrom:b.view.chrom,retry:a};return $.getJSON(this.dataset.url(),d,function(a){if(a&&"error"!==a&&"error"!==a.kind)"no converter"===a?(b.container_div.addClass("error"),b.show_message(v)):"no data"===a||void 0!==a.data&&(null===a.data||0===a.data.length)?(b.container_div.addClass("nodata"),b.show_message(w)):"pending"===a?(b.container_div.addClass("pending"),b.show_message(x),setTimeout(function(){b.init()},b.data_query_wait)):("data"===a||"data"===a.status)&&(a.valid_chroms&&(b.valid_chroms=a.valid_chroms,b.update_icons()),b.tiles_div.text(z),b.view.chrom?(b.tiles_div.text(""),b.tiles_div.css("height",b.visible_height_px+"px"),b.enabled=!0,$.when.apply($,b.predraw_init()).done(function(){c.resolve(),b.container_div.removeClass("nodata error pending"),b.request_draw()})):c.resolve());else{b.container_div.addClass("error");var d=b.show_message(u);a.message&&(d.append($("").text("View error").click(function(){Galaxy.modal.show({title:"Trackster Error",body:"
"+a.message+"
",buttons:{Close:function(){Galaxy.modal.hide()}}})})),d.append($("").text(" ")),d.append($("
").text("Try again").click(function(){b.init(!0)})))}}),this.update_icons(),c}},predraw_init:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(b){var c=b.data;if(void 0!==c&&void 0!==c.min&&void 0!==c.max){var d=c.min,e=c.max;d=Math.floor(Math.min(0,Math.max(d,c.mean-2*c.sd))),e=Math.ceil(Math.max(0,Math.min(e,c.mean+2*c.sd))),a.config.set_default_value("min_value",d),a.config.set_default_value("max_value",e),a.config.set_value("min_value",d),a.config.set_value("max_value",e)}})},get_drawables:function(){return this}});var O=function(c,d,e){N.call(this,c,d,e);var f=this;if(n(f.container_div,f.drag_handle_class,".group",f),this.filters_manager=new g.FiltersManager(this,"filters"in e?e.filters:null),this.data_manager.set("filters_manager",this.filters_manager),this.filters_available=!1,this.tool=e.tool?new G(a.extend(e.tool,{track:this,tool_state:e.tool_state})):null,this.tile_cache=new b.Cache(A),this.left_offset=0,this.header_div&&(this.set_filters_manager(this.filters_manager),this.tool)){var h=new I({model:this.tool});h.render(),this.dynamic_tool_div=h.$el,this.header_div.after(this.dynamic_tool_div)}this.tiles_div=$("
").addClass("tiles").appendTo(this.content_div),this.config.get_value("content_visible")||this.tiles_div.hide(),this.overlay_div=$("
").addClass("overlay").appendTo(this.content_div),e.mode&&this.change_mode(e.mode)};k(O.prototype,C.prototype,N.prototype,{action_icons_def:N.prototype.action_icons_def.concat([{name:"show_more_rows_icon",title:"To minimize track height, not all feature rows are displayed. Click to display more rows.",css_class:"exclamation",on_click_fn:function(a){$(".tooltip").remove(),a.slotters[a.view.resolution_px_b].max_rows*=2,a.request_draw({clear_tile_cache:!0})},hide:!0}]),copy:function(a){var b=this.to_dict();k(b,{data_manager:this.data_manager});var c=new this.constructor(this.view,a,b);return c.change_mode(this.mode),c.enabled=this.enabled,c},set_filters_manager:function(a){this.filters_manager=a,this.header_div.after(this.filters_manager.parent_div)},to_dict:function(){return{track_type:this.get_type(),dataset:{id:this.dataset.id,hda_ldda:this.dataset.get("hda_ldda")},prefs:this.config.to_key_value_dict(),mode:this.mode,filters:this.filters_manager.to_dict(),tool_state:this.tool?this.tool.state_dict():{}}},set_min_max:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(b){var c=b.data;if(isNaN(parseFloat(a.config.get_value("min_value")))||isNaN(parseFloat(a.config.get_value("max_value")))){var d=c.min,e=c.max;d=Math.floor(Math.min(0,Math.max(d,c.mean-2*c.sd))),e=Math.ceil(Math.max(0,Math.min(e,c.mean+2*c.sd))),a.config.set_value("min_value",d),a.config.set_value("max_value",e)}})},change_mode:function(a){var b=this;return b.mode=a,b.config.set_value("mode",a),"Auto"===a&&this.data_manager.clear(),b.request_draw({clear_tile_cache:!0}),this.action_icons.mode_icon.attr("title","Set display mode (now: "+b.mode+")"),b},update_icons:function(){var a=this;a.action_icons.filters_icon.toggle(a.filters_available),a.action_icons.tools_icon.toggle(null!==a.tool),a.action_icons.param_space_viz_icon.toggle(null!==a.tool)},_gen_tile_cache_key:function(a,b){return a+"_"+b},request_draw:function(a){a&&a.clear_tile_cache&&this.tile_cache.clear(),this.view.request_redraw(a,this)},before_draw:function(){this.max_height_px=0},_draw:function(c){if(this.can_draw()){var d=c&&c.clear_after,e=this.view.low,f=this.view.high,g=this.view.container.width(),h=this.view.resolution_px_b,i=1/h;this.is_overview&&(e=this.view.max_low,f=this.view.max_high,h=g/(view.max_high-view.max_low),i=1/h),this.before_draw(),this.tiles_div.children().addClass("remove");for(var j,k,l=Math.floor(r*i),m=Math.floor(e/l),n=[],o=[];f>m*l;)j=new b.GenomeRegion({chrom:this.view.chrom,start:m*l,end:Math.min((m+1)*l,this.view.max_high)}),k=this.draw_helper(j,h,c),n.push(k),$.when(k).then(function(a){o.push(a)}),m+=1;d||this.tiles_div.children(".remove").removeClass("remove").remove();var p=this;$.when.apply($,n).then(function(){p.tiles_div.children(".remove").remove(),o=a.filter(o,function(a){return null!==a}),0!==o.length&&p.postdraw_actions(o,g,h,d)})}},_add_yaxis_label:function(a,b){var c=this,d="max"===a?"top":"bottom",e="max"===a?"max":"min",f="max"===a?"max_value":"min_value",g=this.container_div.find(".yaxislabel."+d);b=b||function(){c.request_draw({clear_tile_cache:!0})},0!==g.length?g.text(c.config.get_value(f)):(g=$("
").text(c.config.get_value(f)).make_text_editable({num_cols:12,on_finish:function(a){$(".tooltip").remove(),c.config.set_value(f,a),b()},help_text:"Set "+e+" value"}).addClass("yaxislabel "+d).css("color",this.config.get_value("label_color")),this.container_div.prepend(g))},postdraw_actions:function(b,c,d){var e=a.filter(b,function(a){return a instanceof L});if(e.length>0){this.max_height_px=0;var f=this;a.each(b,function(a){a instanceof L||(a.html_elt.remove(),f.draw_helper(a.region,d,{force:!0,mode:"Coverage"}))}),f._add_yaxis_label("max")}else{this.container_div.find(".yaxislabel").remove();var g=a.find(b,function(a){return a.has_icons});g&&a.each(b,function(a){a.has_icons||a.html_elt.css("padding-top",o)})}},get_mode:function(){return this.mode},update_auto_mode:function(){},_get_drawables:function(){return[this]},draw_helper:function(b,c,e){e||(e={});var f=e.force,g=e.mode||this.mode,h=1/c,i=this,j=this._get_drawables(),k=this._gen_tile_cache_key(c,b),l=function(a){return a&&"track"in a},m=f?void 0:i.tile_cache.get_elt(k);if(m)return l(m)&&i.show_tile(m,c),m;if(e.data_fetch===!1)return null;var n=function(){var c=a.find(B,function(a){return a===g})?"Coverage":g,d=a.map(j,function(a){return a.data_manager.get_data(b,c,h,i.data_url_extra_params)});return view.reference_track&&d.push(view.reference_track.data_manager.get_data(b,g,h,view.reference_track.data_url_extra_params)),d},o=$.Deferred();return i.tile_cache.set_elt(k,o),$.when.apply($,n()).then(function(){var f,g=n(),h=g;if(a.find(g,function(a){return d.is_deferred(a)}))return i.tile_cache.set_elt(k,void 0),void $.when(i.draw_helper(b,c,e)).then(function(a){o.resolve(a)});view.reference_track&&(f=view.reference_track.data_manager.subset_entry(g.pop(),b));var l=[],m=[];a.each(j,function(a,b){var d=a.mode,e=h[b];"Auto"===d&&(d=a.get_mode(e),a.update_auto_mode(d)),l.push(d),m.push(a.get_canvas_height(e,d,c,t))});var p,q=i.view.canvas_manager.new_canvas(),r=b.get("start"),s=b.get("end"),t=Math.ceil((s-r)*c)+i.left_offset,u=a.max(m);q.width=t,q.height=e.height||u;var v=q.getContext("2d");v.translate(i.left_offset,0),j.length>1&&(v.globalAlpha=.5,v.globalCompositeOperation="source-over"),a.each(j,function(a,d){p=a.draw_tile(h[d],v,l[d],b,c,f)}),void 0!==p&&(i.tile_cache.set_elt(k,p),i.show_tile(p,c)),o.resolve(p)}),o},get_canvas_height:function(){return this.visible_height_px},_draw_line_track_tile:function(a,b,c,d,e){var g=b.canvas,h=new f.LinePainter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c);return h.draw(b,g.width,g.height,e),new L(this,d,e,g,a.data)},draw_tile:function(){},show_tile:function(a,b){var c=a.html_elt;a.predisplay_actions();var d=Math.round((a.low-(this.is_overview?this.view.max_low:this.view.low))*b);this.left_offset&&(d-=this.left_offset),c.css("left",d),c.hasClass("remove")?c.removeClass("remove"):this.tiles_div.append(c),c.css("height","auto"),this.max_height_px=Math.max(this.max_height_px,c.height()-2),c.parent().children().css("height",this.max_height_px+"px");var e=this.max_height_px;0!==this.visible_height_px&&(e=Math.min(this.max_height_px,this.visible_height_px)),this.tiles_div.css("height",e+"px")},tool_region_and_parameters_str:function(b){var c=this,d=void 0!==b?b.toString():"all",e=a.values(c.tool.get_inputs_dict()).join(", ");return" - region=["+d+"], parameters=["+e+"]"},data_and_mode_compatible:function(a,b){return"Auto"===b?!0:"Coverage"===b?"bigwig"===a.dataset_type:"bigwig"===a.dataset_type||"no_detail"===a.extra_info?!1:!0},can_subset:function(a){return a.message||"no_detail"===a.extra_info?!1:"bigwig"===a.dataset_type?a.data[1][0]-a.data[0][0]===1:!0},init_for_tool_data:function(){this.data_manager.set("data_type","raw_data"),this.data_query_wait=1e3,this.dataset_check_type="state"}});var P=function(a,b){N.call(this,a,b,{resize:!1,header:!1}),this.container_div.addClass("label-track")};k(P.prototype,N.prototype,{init:function(){this.enabled=!0},predraw_init:function(){},_draw:function(){for(var a=this.view,b=a.high-a.low,c=Math.floor(Math.pow(10,Math.floor(Math.log(b)/Math.log(10)))),d=Math.floor(a.low/c)*c,e=this.view.container.width(),f=$("
").addClass("label-container");d").addClass("label").text(commatize(d)).css({left:g})),d+=c}this.content_div.children(":first").remove(),this.content_div.append(f)}});var Q=function(b,c,d){if(O.call(this,b,c,d),this.drawables=[],"drawables"in d){for(var e,f=0;fthis.left_offset&&(this.left_offset=e.left_offset);this.enabled=!0}a.each(this.drawables,function(a){(a instanceof U||a instanceof W)&&a.change_mode("Coverage")}),this.update_icons(),this.obj_type="CompositeTrack"};k(Q.prototype,O.prototype,{display_modes:B,config_params:a.union(C.prototype.config_params,[{key:"min_value",label:"Min Value",type:"float",default_value:void 0},{key:"max_value",label:"Max Value",type:"float",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:30,hidden:!0}]),action_icons_def:[{name:"composite_icon",title:"Show individual tracks",css_class:"layers-stack",on_click_fn:function(a){$(".tooltip").remove(),a.show_group()}}].concat(O.prototype.action_icons_def),to_dict:D.prototype.to_dict,add_drawable:D.prototype.add_drawable,unpack_drawables:D.prototype.unpack_drawables,config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},on_resize:function(){var b=this.visible_height_px;a.each(this.drawables,function(a){a.visible_height_px=b}),N.prototype.on_resize.call(this)},change_mode:function(a){O.prototype.change_mode.call(this,a);for(var b=0;be&&(e=f)}for(d=0;dthis.view.canvas_manager.char_width_px?(this.tiles_div.show(),d=!0,f=O.prototype.draw_helper.call(this,a,b,c)):(d=!1,this.tiles_div.hide()),e!==d&&this.view.resize_viewport(),f},can_subset:function(){return!0},draw_tile:function(a,b,c,d,e){var f=this.data_manager.subset_entry(a,d),g=f.data,h=b.canvas;b.font=b.canvas.manager.default_font,b.textAlign="center";for(var i=0,j=g.length;j>i;i++)b.fillStyle=this.view.get_base_color(g[i]),b.fillText(g[i],Math.floor(i*e),10);return new K(this,d,e,h,f)}});var S=function(a,b,c){this.mode="Histogram",O.call(this,a,b,c)};k(S.prototype,C.prototype,O.prototype,{display_modes:B,config_params:a.union(C.prototype.config_params,[{key:"color",label:"Color",type:"color"},{key:"min_value",label:"Min Value",type:"float",default_value:void 0},{key:"max_value",label:"Max Value",type:"float",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:30,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},before_draw:function(){},draw_tile:function(a,b,c,d,e){return this._draw_line_track_tile(a,b,c,d,e)},can_subset:function(a){return a.data[1][0]-a.data[0][0]===1},postdraw_actions:function(){this._add_yaxis_label("max"),this._add_yaxis_label("min")}});var T=function(a,b,c){this.mode="Heatmap",O.call(this,a,b,c)};k(T.prototype,C.prototype,O.prototype,{display_modes:["Heatmap"],config_params:a.union(C.prototype.config_params,[{key:"pos_color",label:"Positive Color",type:"color",default_value:"#FF8C00"},{key:"neg_color",label:"Negative Color",type:"color",default_value:"#4169E1"},{key:"min_value",label:"Min Value",type:"float",default_value:-1},{key:"max_value",label:"Max Value",type:"float",default_value:1},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:500,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},draw_tile:function(a,b,c,d,e){var g=b.canvas,h=new f.DiagonalHeatmapPainter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c);return h.draw(b,g.width,g.height,e),new K(this,d,e,g,a.data)}});var U=function(a,b,c){O.call(this,a,b,c),this.container_div.addClass("feature-track"),this.summary_draw_height=30,this.slotters={},this.start_end_dct={},this.left_offset=200,this.set_painter_from_config()};k(U.prototype,C.prototype,O.prototype,{display_modes:["Auto","Coverage","Dense","Squish","Pack"],config_params:a.union(C.prototype.config_params,[{key:"block_color",label:"Block color",type:"color"},{key:"reverse_strand_color",label:"Antisense strand color",type:"color"},{key:"label_color",label:"Label color",type:"color",default_value:"black"},{key:"show_counts",label:"Show summary counts",type:"bool",default_value:!0,help:"Show the number of items in each bin when drawing summary histogram"},{key:"min_value",label:"Histogram minimum",type:"float",default_value:null,help:"clear value to set automatically"},{key:"max_value",label:"Histogram maximum",type:"float",default_value:null,help:"clear value to set automatically"},{key:"connector_style",label:"Connector style",type:"select",default_value:"fishbones",options:[{label:"Line with arrows",value:"fishbone"},{label:"Arcs",value:"arcs"}]},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.set_painter_from_config(),this.request_draw({clear_tile_cache:!0})},set_painter_from_config:function(){this.painter="arcs"===this.config.get_value("connector_style")?f.ArcLinkedFeaturePainter:f.LinkedFeaturePainter},postdraw_actions:function(b,c,d,e){O.prototype.postdraw_actions.call(this,b,c,d,e);var f,g=this,h=a.filter(b,function(a){return a instanceof L});if(0===h.length){var i={};a.each(a.pluck(b,"incomplete_features"),function(b){a.each(b,function(a){i[a[0]]=a})});var j=this;a.each(b,function(b){var c=a.omit(i,a.map(b.incomplete_features,function(a){return a[0]}));if(c=a.omit(c,a.keys(b.other_tiles_features_drawn)),0!==a.size(c)){var d={data:a.values(c)},e=j.view.canvas_manager.new_canvas(),f=e.getContext("2d");e.height=Math.max(b.canvas.height,j.get_canvas_height(d,b.mode,b.w_scale,100)),e.width=b.canvas.width,f.drawImage(b.canvas,0,0),f.translate(g.left_offset,0);var h=j.draw_tile(d,f,b.mode,b.region,b.w_scale,b.seq_data);$(b.canvas).replaceWith($(h.canvas)),b.canvas=e,a.extend(b.other_tiles_features_drawn,i)}})}if(g.filters_manager){var k,l=g.filters_manager.filters;for(k=0;kq?"Squish":"Pack",mode},get_canvas_height:function(a,b,c,d){if("Coverage"===b||"bigwig"===a.dataset_type)return this.summary_draw_height;var e=this.incremental_slots(c,a.data,b),f=new this.painter(null,null,null,this.config.to_key_value_dict(),b);return Math.max(this.min_height_px,f.get_required_height(e,d))},draw_tile:function(a,b,c,d,e,f,g){var h=this,i=b.canvas,j=d.get("start"),k=d.get("end"),l=this.left_offset;if("bigwig"===a.dataset_type)return this._draw_line_track_tile(a,b,c,d,e);var m=[],n=this.slotters[e].slots;if(all_slotted=!0,a.data)for(var o=this.filters_manager.filters,p=0,q=a.data.length;q>p;p++){for(var r,s=a.data[p],t=!1,u=0,v=o.length;v>u;u++)if(r=o[u],r.update_attrs(s),!r.keep(s)){t=!0;break}t||(m.push(s),s[0]in n||(all_slotted=!1))}var w=this.filters_manager.alpha_filter?new J(this.filters_manager.alpha_filter):null,x=this.filters_manager.height_filter?new J(this.filters_manager.height_filter):null,y=new this.painter(m,j,k,this.config.to_key_value_dict(),c,w,x,f,function(a){return h.view.get_base_color(a)}),z=null;if(b.fillStyle=this.config.get_value("block_color"),b.font=b.canvas.manager.default_font,b.textAlign="right",a.data){var A=y.draw(b,i.width,i.height,e,n);z=A.feature_mapper,incomplete_features=A.incomplete_features,z.translation=-l}return g?void 0:new M(h,d,e,i,a.data,c,a.message,all_slotted,z,incomplete_features,f)}});var V=function(a,b,c){O.call(this,a,b,c),this.painter=f.VariantPainter,this.summary_draw_height=30,this.left_offset=30};k(V.prototype,C.prototype,O.prototype,{display_modes:["Auto","Coverage","Dense","Squish","Pack"],config_params:a.union(C.prototype.config_params,[{key:"color",label:"Histogram color",type:"color"},{key:"show_sample_data",label:"Show sample data",type:"bool",default_value:!0},{key:"show_labels",label:"Show summary and sample labels",type:"bool",default_value:!0},{key:"summary_height",label:"Locus summary height",type:"float",default_value:20},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},draw_tile:function(a,b,c,d,e){if("bigwig"===a.dataset_type)return this._draw_line_track_tile(a,b,"Histogram",d,e);var f=this.view,g=new this.painter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c,function(a){return f.get_base_color(a)});return g.draw(b,b.canvas.width,b.canvas.height,e),new K(this,d,e,b.canvas,a.data)},get_canvas_height:function(a,b){if("bigwig"===a.dataset_type)return this.summary_draw_height;var c=this.dataset.get_metadata("sample_names")?this.dataset.get_metadata("sample_names").length:0;0===c&&0!==a.data.length&&(c=a.data[0][7].match(/,/g),c=null===c?1:c.length+1);var d=new this.painter(null,null,null,this.config.to_key_value_dict(),b);return d.get_required_height(c)},predraw_init:function(){var a=[N.prototype.predraw_init.call(this)];return this.dataset.get_metadata("sample_names")||a.push(this.dataset.fetch()),a},postdraw_actions:function(b,c,d,e){O.prototype.postdraw_actions.call(this,b,c,d,e);var f=a.filter(b,function(a){return a instanceof L}),g=this.dataset.get_metadata("sample_names");if(0===f.length&&this.config.get_value("show_labels")&&g&&g.length>1){var h;if(0===this.container_div.find(".yaxislabel.variant").length&&(h=this.config.get_value("summary_height")/2,this.tiles_div.prepend($("
").text("Summary").addClass("yaxislabel variant top").css({"font-size":h+"px",top:(this.config.get_value("summary_height")-h)/2+"px"})),this.config.get_value("show_sample_data"))){var i=g.join("
");this.tiles_div.prepend($("
").html(i).addClass("yaxislabel variant top sample").css({top:this.config.get_value("summary_height")}))}h=("Squish"===this.mode?5:10)+"px",$(this.tiles_div).find(".sample").css({"font-size":h,"line-height":h}),$(this.tiles_div).find(".yaxislabel").css("color",this.config.get_value("label_color"))}else this.container_div.find(".yaxislabel.variant").remove()}});var W=function(a,b,c){U.call(this,a,b,c),this.painter=f.ReadPainter,this.update_icons()};k(W.prototype,C.prototype,O.prototype,U.prototype,{config_params:a.union(C.prototype.config_params,[{key:"block_color",label:"Histogram color",type:"color"},{key:"detail_block_color",label:"Sense strand block color",type:"color",default_value:"#AAAAAA"},{key:"reverse_strand_color",label:"Antisense strand block color",type:"color",default_value:"#DDDDDD"},{key:"label_color",label:"Label color",type:"color",default_value:"black"},{key:"show_insertions",label:"Show insertions",type:"bool",default_value:!1},{key:"show_differences",label:"Show differences only",type:"bool",default_value:!0},{key:"show_counts",label:"Show summary counts",type:"bool",default_value:!0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"min_value",label:"Histogram minimum",type:"float",default_value:null,help:"clear value to set automatically"},{key:"max_value",label:"Histogram maximum",type:"float",default_value:null,help:"clear value to set automatically"},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})}});var X={CompositeTrack:Q,DrawableGroup:E,DiagonalHeatmapTrack:T,FeatureTrack:U,LineTrack:S,ReadTrack:W,VariantTrack:V,VcfTrack:V},Y=function(a,b,c){if("copy"in a)return a.copy(c);var d=a.obj_type;return d||(d=a.track_type),new X[d](b,c,a)};return{TracksterView:F,DrawableGroup:E,LineTrack:S,FeatureTrack:U,DiagonalHeatmapTrack:T,ReadTrack:W,VariantTrack:V,CompositeTrack:Q,object_from_template:Y}}); +define(["libs/underscore","viz/visualization","viz/viz_views","viz/trackster/util","viz/trackster/slotting","viz/trackster/painters","viz/trackster/filters","mvc/data","mvc/tools","utils/config"],function(a,b,c,d,e,f,g,h,i,j){var k=a.extend,l={},m=function(a,b){l[a.attr("id")]=b},n=function(a,b,c,d){c=".group",l[a.attr("id")]=d,a.bind("drag",{handle:"."+b,relative:!0},function(a,b){var d,e,f,g,h,i=($(this),$(this).parent()),j=i.children(".track,.group"),k=l[$(this).attr("id")];if(e=$(this).parents(c),0!==e.length){f=e.position().top,g=f+e.outerHeight();var m=l[e.attr("id")];if(b.offsetYg)return $(this).insertAfter(e),m.remove_drawable(k),void m.container.add_drawable(k)}for(e=null,h=0;h=f&&b.offsetY<=g)return b.offsetY-f0?h-1:h))}).bind("dragstart",function(){$(this).addClass("dragging")}).bind("dragend",function(){$(this).removeClass("dragging")})},o=20,p=100,q=12e3,r=400,s=5e3,t=100,u="Cannot display dataset due to an error. ",v="A converter for this dataset is not installed. Please check your datatypes_conf.xml file.",w="No data for this chrom/contig.",x="Preparing data. This can take a while for a large dataset. If the visualization is saved and closed, preparation will continue in the background.",y="Tool cannot be rerun: ",z="Ready for display",A=10,B=["Histogram","Line","Filled","Intensity"],C=function(a,b,d){if(C.id_counter||(C.id_counter=0),this.id=C.id_counter++,this.view=a,this.container=b,this.drag_handle_class=d.drag_handle_class,this.is_overview=!1,this.action_icons={},this.config=j.ConfigSettingCollection.from_models_and_saved_values(this.config_params,d.prefs),this.config.get_value("name")||this.config.set_value("name",d.name),this.config_onchange&&this.config.on("change",this.config_onchange,this),this.container_div=this.build_container_div(),this.header_div=null,d.header!==!1){var e=new c.TrackHeaderView({model:this,id:this.id});this.header_div=e.$el,this.container_div.append(this.header_div);var f=e.icons_div;this.action_icons=e.action_icons,this.container_div.hover(function(){f.show()},function(){f.hide()})}};C.prototype.action_icons_def=[{name:"toggle_icon",title:"Hide/show content",css_class:"toggle",on_click_fn:function(a){a.config.get_value("content_visible")?(a.action_icons.toggle_icon.addClass("toggle-expand").removeClass("toggle"),a.hide_contents(),a.config.set_value("content_visible",!1)):(a.action_icons.toggle_icon.addClass("toggle").removeClass("toggle-expand"),a.config.set_value("content_visible",!0),a.show_contents())}},{name:"settings_icon",title:"Edit settings",css_class:"gear",on_click_fn:function(a){var b=new j.ConfigSettingCollectionView({collection:a.config});b.render_in_modal("Configure Track")}},{name:"remove_icon",title:"Remove",css_class:"remove-icon",on_click_fn:function(a){$(".tooltip").remove(),a.remove()}}],k(C.prototype,{config_params:[{key:"name",label:"Name",type:"text",default_value:""},{key:"content_visible",type:"bool",default_value:!0,hidden:!0}],config_onchange:function(){},init:function(){},changed:function(){this.view.changed()},can_draw:function(){return this.enabled&&this.config.get_value("content_visible")?!0:!1},request_draw:function(){},_draw:function(){},to_dict:function(){},set_name:function(a){this.old_name=this.config.get_value("name"),this.config.set_value("name",a)},revert_name:function(){this.old_name&&this.config.set_value("name",this.old_name)},remove:function(){this.changed(),this.container.remove_drawable(this);var a=this.view;this.container_div.hide(0,function(){$(this).remove(),a.update_intro_div()})},build_container_div:function(){},update_icons:function(){},hide_contents:function(){},show_contents:function(){},get_drawables:function(){}});var D=function(a,b,c){C.call(this,a,b,c),this.obj_type=c.obj_type,this.drawables=[]};k(D.prototype,C.prototype,{unpack_drawables:function(a){this.drawables=[];for(var b,c=0;c").addClass("content-div").attr("id","group_"+this.id+"_content_div").appendTo(this.container_div),m(this.container_div,this),m(this.content_div,this),n(this.container_div,this.drag_handle_class,".group",this),this.filters_manager=new g.FiltersManager(this),this.header_div.after(this.filters_manager.parent_div),this.filters_manager.parent_div.after($("
")),this.saved_filters_managers=[],"drawables"in c&&this.unpack_drawables(c.drawables),"filters"in c){var d=this.filters_manager;this.filters_manager=new g.FiltersManager(this,c.filters),d.parent_div.replaceWith(this.filters_manager.parent_div),c.filters.visible&&this.setup_multitrack_filtering()}};k(E.prototype,C.prototype,D.prototype,{action_icons_def:[C.prototype.action_icons_def[0],C.prototype.action_icons_def[1],{name:"composite_icon",title:"Show composite track",css_class:"layers-stack",on_click_fn:function(a){$(".tooltip").remove(),a.show_composite_track()}},{name:"filters_icon",title:"Filters",css_class:"ui-slider-050",on_click_fn:function(a){a.filters_manager.visible()?(a.filters_manager.clear_filters(),a._restore_filter_managers()):(a.setup_multitrack_filtering(),a.request_draw({clear_tile_cache:!0})),a.filters_manager.toggle()}},C.prototype.action_icons_def[2]],build_container_div:function(){var a=$("
").addClass("group").attr("id","group_"+this.id);return this.container&&this.container.content_div.append(a),a},hide_contents:function(){this.tiles_div.hide()},show_contents:function(){this.tiles_div.show(),this.request_draw()},update_icons:function(){var a=this.drawables.length;if(0===a)this.action_icons.composite_icon.hide(),this.action_icons.filters_icon.hide();else if(1===a)this.action_icons.composite_icon.toggle(this.drawables[0]instanceof Q),this.action_icons.filters_icon.hide();else{var b,c,d,e=!0,f=this.drawables[0].get_type(),h=0;for(b=0;a>b;b++){if(d=this.drawables[b],d.get_type()!==f){can_composite=!1;break}d instanceof U&&h++}if(e&&this.drawables[0]instanceof S?this.action_icons.composite_icon.show():(this.action_icons.composite_icon.hide(),$(".tooltip").remove()),h>1&&h===this.drawables.length){var i,j={};for(d=this.drawables[0],c=0;c0)}else this.action_icons.filters_icon.hide()}},_restore_filter_managers:function(){for(var a=0;a0){this.saved_filters_managers=[];for(var a=0;a").addClass("top-container").appendTo(c),this.browser_content_div=$("
").addClass("content").appendTo(c),this.bottom_container=$("
").addClass("bottom-container").appendTo(c),this.top_labeltrack=$("
").addClass("top-labeltrack").appendTo(this.top_container),this.viewport_container=$("
").addClass("viewport-container").attr("id","viewport-container").appendTo(this.browser_content_div),this.content_div=this.viewport_container,m(this.viewport_container,d),this.intro_div=$("
").addClass("intro").appendTo(this.viewport_container);$("
").text("Add Datasets to Visualization").addClass("action-button").appendTo(this.intro_div).click(function(){b.select_datasets(galaxy_config.root+"visualization/list_current_history_datasets",galaxy_config.root+"api/datasets",{"f-dbkey":d.dbkey},function(b){a.each(b,function(a){d.add_drawable(Y(a,d,d))})})});this.nav_container=$("
").addClass("trackster-nav-container").prependTo(this.top_container),this.nav=$("
").addClass("trackster-nav").appendTo(this.nav_container),this.stand_alone&&(this.nav_container.addClass("stand-alone"),this.nav.addClass("stand-alone")),this.overview=$("
").addClass("overview").appendTo(this.bottom_container),this.overview_viewport=$("
").addClass("overview-viewport").appendTo(this.overview),this.overview_close=$("").attr("title","Close overview").addClass("icon-button overview-close tooltip").hide().appendTo(this.overview_viewport),this.overview_highlight=$("
").addClass("overview-highlight").hide().appendTo(this.overview_viewport),this.overview_box_background=$("
").addClass("overview-boxback").appendTo(this.overview_viewport),this.overview_box=$("
").addClass("overview-box").appendTo(this.overview_viewport),this.default_overview_height=this.overview_box.height(),this.nav_controls=$("
").addClass("nav-controls").appendTo(this.nav),this.chrom_select=$("").addClass("nav-input").hide().bind("keyup focusout",e).appendTo(this.nav_controls),this.location_span=$("").addClass("location").attr("title","Click to change location").tooltip({placement:"bottom"}).appendTo(this.nav_controls),this.location_span.click(function(){d.location_span.hide(),d.chrom_select.hide(),d.nav_input.val(d.chrom+":"+d.low+"-"+d.high),d.nav_input.css("display","inline-block"),d.nav_input.select(),d.nav_input.focus(),d.nav_input.autocomplete({source:function(a,b){var c=[],e=$.map(d.get_tracks(U),function(b){return b.data_manager.search_features(a.term).success(function(a){c=c.concat(a)})});$.when.apply($,e).done(function(){b($.map(c,function(a){return{label:a[0],value:a[1]}}))})},minLength:2})}),void 0!==this.vis_id&&(this.hidden_input=$("").attr("type","hidden").val(this.vis_id).appendTo(this.nav_controls)),this.zo_link=$("").attr("id","zoom-out").attr("title","Zoom out").tooltip({placement:"bottom"}).click(function(){d.zoom_out()}).appendTo(this.nav_controls),this.zi_link=$("").attr("id","zoom-in").attr("title","Zoom in").tooltip({placement:"bottom"}).click(function(){d.zoom_in()}).appendTo(this.nav_controls),this.load_chroms_deferred=this.load_chroms({low:0}),this.chrom_select.bind("change",function(){d.change_chrom(d.chrom_select.val())}),this.browser_content_div.click(function(){$(this).find("input").trigger("blur")}),this.browser_content_div.bind("dblclick",function(a){d.zoom_in(a.pageX,this.viewport_container)}),this.overview_box.bind("dragstart",function(a,b){this.current_x=b.offsetX}).bind("drag",function(a,b){var c=b.offsetX-this.current_x;this.current_x=b.offsetX;var e=Math.round(c/d.viewport_container.width()*(d.max_high-d.max_low));d.move_delta(-e)}),this.overview_close.click(function(){d.reset_overview()}),this.viewport_container.bind("draginit",function(a){return a.clientX>d.viewport_container.width()-16?!1:void 0}).bind("dragstart",function(a,b){b.original_low=d.low,b.current_height=a.clientY,b.current_x=b.offsetX}).bind("drag",function(a,b){var c=$(this),e=b.offsetX-b.current_x,f=c.scrollTop()-(a.clientY-b.current_height);c.scrollTop(f),b.current_height=a.clientY,b.current_x=b.offsetX;var g=Math.round(e/d.viewport_container.width()*(d.high-d.low));d.move_delta(g)}),this.top_labeltrack.bind("dragstart",function(){return $("
").addClass("zoom-area").css("height",d.browser_content_div.height()+d.top_labeltrack.height()+1).appendTo($(this))}).bind("drag",function(a,b){$(b.proxy).css({left:Math.min(a.pageX,b.startX)-d.container.offset().left,width:Math.abs(a.pageX-b.startX)});var c=Math.min(a.pageX,b.startX)-d.container.offset().left,e=Math.max(a.pageX,b.startX)-d.container.offset().left,f=d.high-d.low,g=d.viewport_container.width();d.update_location(Math.round(c/g*f)+d.low,Math.round(e/g*f)+d.low)}).bind("dragend",function(a,b){var c=Math.min(a.pageX,b.startX),e=Math.max(a.pageX,b.startX),f=d.high-d.low,g=d.viewport_container.width(),h=d.low;d.low=Math.round(c/g*f)+h,d.high=Math.round(e/g*f)+h,$(b.proxy).remove(),d.request_redraw()}),this.add_label_track(new P(this,{content_div:this.top_labeltrack})),$(window).bind("resize",function(){this.resize_timer&&clearTimeout(this.resize_timer),this.resize_timer=setTimeout(function(){d.resize_window()},500)}),$(document).bind("redraw",function(){d.redraw()}),this.reset(),$(window).trigger("resize")},get_base_color:function(a){return this.config.get_value(a.toLowerCase()+"_color")||this.config.get_value("n_color")}});k(F.prototype,D.prototype,{changed:function(){this.has_changes=!0},update_intro_div:function(){this.intro_div.toggle(0===this.drawables.length)},trigger_navigate:function(a,b,c,d){if(this.timer&&clearTimeout(this.timer),d){var e=this;this.timer=setTimeout(function(){e.trigger("navigate",a+":"+b+"-"+c)},500)}else view.trigger("navigate",a+":"+b+"-"+c)},update_location:function(a,b){this.location_span.text(commatize(a)+" - "+commatize(b)),this.nav_input.val(this.chrom+":"+commatize(a)+"-"+commatize(b));var c=this.chrom_select.val();""!==c&&this.trigger_navigate(c,this.low,this.high,!0)},load_chroms:function(a){a.num=t;var b=this,c=$.Deferred();return $.ajax({url:galaxy_config.root+"api/genomes/"+this.dbkey,data:a,dataType:"json",success:function(a){if(0!==a.chrom_info.length){if(a.reference){var d=new R(b);b.add_label_track(d),b.reference_track=d}b.chrom_data=a.chrom_info;for(var e='',f=0,g=b.chrom_data.length;g>f;f++){var h=b.chrom_data[f].chrom;e+='"}a.prev_chroms&&(e+='"),a.next_chroms&&(e+='"),b.chrom_select.html(e),b.chrom_start_index=a.start_index,c.resolve(a.chrom_info)}},error:function(){alert("Could not load chroms for this dbkey: "+b.dbkey)}}),c},change_chrom:function(a,b,c){var d=this;if(!d.chrom_data)return void d.load_chroms_deferred.then(function(){d.change_chrom(a,b,c)});if(a&&"None"!==a){if("previous"===a)return void d.load_chroms({low:this.chrom_start_index-t});if("next"===a)return void d.load_chroms({low:this.chrom_start_index+t});var e=$.grep(d.chrom_data,function(b){return b.chrom===a})[0];if(void 0===e)return void d.load_chroms({chrom:a},function(){d.change_chrom(a,b,c)});if(a!==d.chrom){d.chrom=a,d.chrom_select.val(d.chrom),d.max_high=e.len-1,d.reset();for(var f=0,g=d.drawables.length;g>f;f++){var h=d.drawables[f];h.init&&h.init()}d.reference_track&&d.reference_track.init()}void 0===b&&void 0===c?(d.low=0,d.high=d.max_high):(d.low=void 0!==b?Math.max(b,0):0,void 0===c?(d.low=Math.max(d.low-15,0),d.high=d.low+30):d.high=Math.min(c,d.max_high)),d.request_redraw()}},go_to:function(a){a=a.replace(/,/g,""),a=a.replace(/:|\-/g," ");var b=a.split(/\s+/),c=b[0],d=b[1]?parseInt(b[1],10):void 0,e=b[2]?parseInt(b[2],10):void 0;this.change_chrom(c,d,e)},move_fraction:function(a){var b=this,c=b.high-b.low;this.move_delta(a*c)},move_delta:function(a){var b=this,c=b.high-b.low;b.low-ab.max_high?(b.high=b.max_high,b.low=b.max_high-c):(b.high-=a,b.low-=a),b.request_redraw({data_fetch:!1}),this.redraw_on_move_fn&&clearTimeout(this.redraw_on_move_fn),this.redraw_on_move_fn=setTimeout(function(){b.request_redraw()},200);var d=b.chrom_select.val();this.trigger_navigate(d,b.low,b.high,!0)},add_drawable:function(a){D.prototype.add_drawable.call(this,a),a.init(),this.changed(),this.update_intro_div();var b=this;a.config.on("change",function(){b.changed()})},add_label_track:function(a){a.view=this,a.init(),this.label_tracks.push(a)},remove_drawable:function(a,b){if(D.prototype.remove_drawable.call(this,a),b){var c=this;a.container_div.hide(0,function(){$(this).remove(),c.update_intro_div()})}},reset:function(){this.low=this.max_low,this.high=this.max_high,this.viewport_container.find(".yaxislabel").remove()},request_redraw:function(b,c){var d=this,e=c?[c]:d.drawables;a.each(e,function(c){var e=a.find(d.tracks_to_be_redrawn,function(a){return a[0]===c});e?e[1]=b:d.tracks_to_be_redrawn.push([c,b])}),this.requested_redraw||(requestAnimationFrame(function(){d._redraw()}),this.requested_redraw=!0)},_redraw:function(){this.requested_redraw=!1;var b=this.low,c=this.high;bthis.max_high&&(c=this.max_high);var d=this.high-this.low;0!==this.high&&df&&this.overview_box.css("left",e-(g-f)/2),this.overview_highlight&&this.overview_highlight.css({left:e,width:f}),a.each(this.tracks_to_be_redrawn,function(a){var b=a[0],c=a[1];b&&b._draw(c)}),this.tracks_to_be_redrawn=[],a.each(this.label_tracks,function(a){a._draw()})},zoom_in:function(a){if(!(0===this.max_high||this.high-this.low<=this.min_separation)){var b=this.high-this.low,c=b/2+this.low,d=b/this.zoom_factor/2;a&&(c=a/this.viewport_container.width()*(this.high-this.low)+this.low),this.low=Math.round(c-d),this.high=Math.round(c+d),this.changed(),this.request_redraw()}},zoom_out:function(){if(0!==this.max_high){var a=this.high-this.low,b=a/2+this.low,c=a*this.zoom_factor/2;this.low=Math.round(b-c),this.high=Math.round(b+c),this.changed(),this.request_redraw()}},resize_viewport:function(){this.viewport_container.height(this.container.height()-this.top_container.height()-this.bottom_container.height())},resize_window:function(){this.resize_viewport(),this.request_redraw()},set_overview:function(a){if(this.overview_drawable){if(this.overview_drawable.dataset.id===a.dataset.id)return;this.overview_viewport.find(".track").remove()}var b=a.copy({content_div:this.overview_viewport}),c=this;b.header_div.hide(),b.is_overview=!0,c.overview_drawable=b,this.overview_drawable.postdraw_actions=function(){c.overview_highlight.show().height(c.overview_drawable.content_div.height()),c.overview_viewport.height(c.overview_drawable.content_div.height()+c.overview_box.outerHeight()),c.overview_close.show(),c.resize_window()},c.overview_drawable.request_draw(),this.changed()},reset_overview:function(){$(".tooltip").remove(),this.overview_viewport.find(".track-tile").remove(),this.overview_viewport.height(this.default_overview_height),this.overview_box.height(this.default_overview_height),this.overview_close.hide(),this.overview_highlight.hide(),view.resize_window(),view.overview_drawable=null}});var G=i.Tool.extend({defaults:{track:null},initialize:function(a){i.Tool.prototype.initialize.call(this,a);var b=!0;void 0!==a.tool_state&&void 0!==a.tool_state.hidden&&(b=a.tool_state.hidden),this.set("hidden",b),this.remove_inputs(["data","hidden_data","conditional"])},state_dict:function(){return a.extend(this.get_inputs_dict(),{hidden:!this.is_visible()})}}),H=Backbone.View.extend({events:{"change :input":"update_value"},render:function(){var a=this.$el.addClass("param-row"),b=this.model,c=($("
").addClass("param-label").text(b.get("label")).appendTo(a),$("
").addClass("param-input").html(b.get("html")).appendTo(a));c.find(":input").val(b.get("value")),$("
").appendTo(a)},update_value:function(a){this.model.set_value($(a.target).val())}}),I=Backbone.View.extend({initialize:function(){this.model.on("change:hidden",this.set_visible,this)},render:function(){var a=this;tool=this.model,parent_div=this.$el.addClass("dynamic-tool").hide(),parent_div.bind("drag",function(a){a.stopPropagation()}).click(function(a){a.stopPropagation()}).bind("dblclick",function(a){a.stopPropagation()}).keydown(function(a){a.stopPropagation()});$("
").appendTo(parent_div).text(tool.get("name"));tool.get("inputs").each(function(a){var b=new H({model:a});b.render(),parent_div.append(b.$el)}),parent_div.find("input").click(function(){$(this).select()});var b=$("
").addClass("param-row").appendTo(parent_div),c=$("").attr("value","Run on complete dataset").appendTo(b),d=$("").attr("value","Run on visible region").appendTo(b);d.click(function(){a.run_on_region()}),c.click(function(){a.run_on_dataset()}),tool.is_visible()&&this.$el.show()},set_visible:function(){this.$el.toggle(this.model.is_visible())},update_params:function(){for(var a=0;a").append(d),this.data=e,this.stale=!1};K.prototype.predisplay_actions=function(){};var L=function(a,b,c,d,e){K.call(this,a,b,c,d,e)};L.prototype.predisplay_actions=function(){};var M=function(a,b,c,d,e,f,g,h,i,j,k){K.call(this,a,b,c,d,e),this.mode=f,this.all_slotted=h,this.feature_mapper=i,this.has_icons=!1,this.incomplete_features=j,this.other_tiles_features_drawn={},this.seq_data=k};k(M.prototype,K.prototype),M.prototype.predisplay_actions=function(){};var N=function(a,c,d){k(d,{drag_handle_class:"draghandle"}),C.call(this,a,c,d),this.dataset=null,d.dataset&&(this.dataset=d.dataset instanceof Backbone.Model?d.dataset:new h.Dataset(d.dataset)),this.dataset_check_type="converted_datasets_state",this.data_url_extra_params={},this.data_query_wait="data_query_wait"in d?d.data_query_wait:s,this.data_manager="data_manager"in d?d.data_manager:new b.GenomeDataManager({dataset:this.dataset,genome:new b.Genome({key:a.dbkey,chroms_info:{chrom_info:a.chrom_data}}),data_mode_compatible:this.data_and_mode_compatible,can_subset:this.can_subset}),this.min_height_px=16,this.max_height_px=800,this.visible_height_px=this.config.get_value("height"),this.content_div=$("
").appendTo(this.container_div),this.container&&(this.container.content_div.append(this.container_div),"resize"in d&&!d.resize||this.add_resize_handle())};k(N.prototype,C.prototype,{action_icons_def:[{name:"mode_icon",title:"Set display mode",css_class:"chevron-expand",on_click_fn:function(){}},C.prototype.action_icons_def[0],{name:"overview_icon",title:"Set as overview",css_class:"application-dock-270",on_click_fn:function(a){a.view.set_overview(a)}},C.prototype.action_icons_def[1],{name:"filters_icon",title:"Filters",css_class:"ui-slider-050",on_click_fn:function(a){a.filters_manager.visible()?a.filters_manager.clear_filters():a.filters_manager.init_filters(),a.filters_manager.toggle()}},{name:"tools_icon",title:"Tool",css_class:"hammer",on_click_fn:function(a){a.tool.toggle(),a.tool.is_visible()?a.set_name(a.config.get_value("name")+a.tool_region_and_parameters_str()):a.revert_name(),$(".tooltip").remove()}},{name:"param_space_viz_icon",title:"Tool parameter space visualization",css_class:"arrow-split",on_click_fn:function(c){var d="Tool:"+c.tool.get("name")+"
Dataset:"+c.config.get_value("name")+'
Region(s): ',e=function(){Galaxy.modal.hide(),$(window).unbind("keypress.check_enter_esc")},f=function(){var d,e=$('select[name="regions"] option:selected').val(),f=new b.GenomeRegion({chrom:view.chrom,start:view.low,end:view.high}),g=a.map($(".bookmark"),function(a){return new b.GenomeRegion({from_str:$(a).children(".position").text()})});d="cur"===e?[f]:"bookmarks"===e?g:[f].concat(g),Galaxy.modal.hide(),window.location.href=galaxy_config.root+"visualization/sweepster?"+$.param({dataset_id:c.dataset.id,hda_ldda:c.dataset.get("hda_ldda"),regions:JSON.stringify(new Backbone.Collection(d).toJSON())})};Galaxy.modal.show({title:"Visualize tool parameter space and output from different parameter settings?",body:d,buttons:{No:e,Yes:f}})}},C.prototype.action_icons_def[2]],can_draw:function(){return this.dataset&&C.prototype.can_draw.call(this)},build_container_div:function(){return $("
").addClass("track").attr("id","track_"+this.id)},set_dataset:function(a){this.dataset=a,this.data_manager.set("dataset",a)},on_resize:function(){this.request_draw({clear_tile_cache:!0})},add_resize_handle:function(){var a=this,b=!1,c=!1,d=$("
");$(a.container_div).hover(function(){a.config.get_value("content_visible")&&(b=!0,d.show())},function(){b=!1,c||d.hide()}),d.hide().bind("dragstart",function(b,d){c=!0,d.original_height=$(a.content_div).height()}).bind("drag",function(b,c){var d=Math.min(Math.max(c.original_height+c.deltaY,a.min_height_px),a.max_height_px);$(a.tiles_div).css("height",d),a.visible_height_px=a.max_height_px===d?0:d,a.on_resize()}).bind("dragend",function(){a.tile_cache.clear(),c=!1,b||d.hide(),a.config.set_value("height",a.visible_height_px),a.changed()}).appendTo(a.container_div)},hide_contents:function(){this.tiles_div.hide(),this.container_div.find(".yaxislabel, .track-resize").hide()},show_contents:function(){this.tiles_div.show(),this.container_div.find(".yaxislabel, .track-resize").show(),this.request_draw()},get_type:function(){return this instanceof P?"LabelTrack":this instanceof R?"ReferenceTrack":this instanceof S?"LineTrack":this instanceof W?"ReadTrack":this instanceof V?"VariantTrack":this instanceof Q?"CompositeTrack":this instanceof U?"FeatureTrack":""},show_message:function(a){return this.tiles_div.remove(),$("").addClass("message").html(a).appendTo(this.content_div)},init:function(a){var b=this;if(b.enabled=!1,b.tile_cache.clear(),b.data_manager.clear(), +b.content_div.children().remove(),b.container_div.removeClass("nodata error pending"),b.tiles_div=$("
").addClass("tiles").appendTo(b.content_div),b.dataset.id){var c=$.Deferred(),d={hda_ldda:b.dataset.get("hda_ldda"),data_type:this.dataset_check_type,chrom:b.view.chrom,retry:a};return $.getJSON(this.dataset.url(),d,function(a){if(a&&"error"!==a&&"error"!==a.kind)"no converter"===a?(b.container_div.addClass("error"),b.show_message(v)):"no data"===a||void 0!==a.data&&(null===a.data||0===a.data.length)?(b.container_div.addClass("nodata"),b.show_message(w)):"pending"===a?(b.container_div.addClass("pending"),b.show_message(x),setTimeout(function(){b.init()},b.data_query_wait)):("data"===a||"data"===a.status)&&(a.valid_chroms&&(b.valid_chroms=a.valid_chroms,b.update_icons()),b.tiles_div.text(z),b.view.chrom?(b.tiles_div.text(""),b.tiles_div.css("height",b.visible_height_px+"px"),b.enabled=!0,$.when.apply($,b.predraw_init()).done(function(){c.resolve(),b.container_div.removeClass("nodata error pending"),b.request_draw()})):c.resolve());else{b.container_div.addClass("error");var d=b.show_message(u);a.message&&(d.append($("").text("View error").click(function(){Galaxy.modal.show({title:"Trackster Error",body:"
"+a.message+"
",buttons:{Close:function(){Galaxy.modal.hide()}}})})),d.append($("").text(" ")),d.append($("
").text("Try again").click(function(){b.init(!0)})))}}),this.update_icons(),c}},predraw_init:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(b){var c=b.data;if(void 0!==c&&void 0!==c.min&&void 0!==c.max){var d=c.min,e=c.max;d=Math.floor(Math.min(0,Math.max(d,c.mean-2*c.sd))),e=Math.ceil(Math.max(0,Math.min(e,c.mean+2*c.sd))),a.config.set_default_value("min_value",d),a.config.set_default_value("max_value",e),a.config.set_value("min_value",d),a.config.set_value("max_value",e)}})},get_drawables:function(){return this}});var O=function(c,d,e){N.call(this,c,d,e);var f=this;if(n(f.container_div,f.drag_handle_class,".group",f),this.filters_manager=new g.FiltersManager(this,"filters"in e?e.filters:null),this.data_manager.set("filters_manager",this.filters_manager),this.filters_available=!1,this.tool=e.tool?new G(a.extend(e.tool,{track:this,tool_state:e.tool_state})):null,this.tile_cache=new b.Cache(A),this.left_offset=0,this.header_div&&(this.set_filters_manager(this.filters_manager),this.tool)){var h=new I({model:this.tool});h.render(),this.dynamic_tool_div=h.$el,this.header_div.after(this.dynamic_tool_div)}this.tiles_div=$("
").addClass("tiles").appendTo(this.content_div),this.config.get_value("content_visible")||this.tiles_div.hide(),this.overlay_div=$("
").addClass("overlay").appendTo(this.content_div),e.mode&&this.change_mode(e.mode)};k(O.prototype,C.prototype,N.prototype,{action_icons_def:N.prototype.action_icons_def.concat([{name:"show_more_rows_icon",title:"To minimize track height, not all feature rows are displayed. Click to display more rows.",css_class:"exclamation",on_click_fn:function(a){$(".tooltip").remove(),a.slotters[a.view.resolution_px_b].max_rows*=2,a.request_draw({clear_tile_cache:!0})},hide:!0}]),copy:function(a){var b=this.to_dict();k(b,{data_manager:this.data_manager});var c=new this.constructor(this.view,a,b);return c.change_mode(this.mode),c.enabled=this.enabled,c},set_filters_manager:function(a){this.filters_manager=a,this.header_div.after(this.filters_manager.parent_div)},to_dict:function(){return{track_type:this.get_type(),dataset:{id:this.dataset.id,hda_ldda:this.dataset.get("hda_ldda")},prefs:this.config.to_key_value_dict(),mode:this.mode,filters:this.filters_manager.to_dict(),tool_state:this.tool?this.tool.state_dict():{}}},set_min_max:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(b){var c=b.data;if(isNaN(parseFloat(a.config.get_value("min_value")))||isNaN(parseFloat(a.config.get_value("max_value")))){var d=c.min,e=c.max;d=Math.floor(Math.min(0,Math.max(d,c.mean-2*c.sd))),e=Math.ceil(Math.max(0,Math.min(e,c.mean+2*c.sd))),a.config.set_value("min_value",d),a.config.set_value("max_value",e)}})},change_mode:function(a){var b=this;return b.mode=a,b.config.set_value("mode",a),"Auto"===a&&this.data_manager.clear(),b.request_draw({clear_tile_cache:!0}),this.action_icons.mode_icon.attr("title","Set display mode (now: "+b.mode+")"),b},update_icons:function(){var a=this;a.action_icons.filters_icon.toggle(a.filters_available),a.action_icons.tools_icon.toggle(null!==a.tool),a.action_icons.param_space_viz_icon.toggle(null!==a.tool)},_gen_tile_cache_key:function(a,b){return a+"_"+b},request_draw:function(a){a&&a.clear_tile_cache&&this.tile_cache.clear(),this.view.request_redraw(a,this)},before_draw:function(){this.max_height_px=0},_draw:function(c){if(this.can_draw()){var d=c&&c.clear_after,e=this.view.low,f=this.view.high,g=this.view.container.width(),h=this.view.resolution_px_b,i=1/h;this.is_overview&&(e=this.view.max_low,f=this.view.max_high,h=g/(view.max_high-view.max_low),i=1/h),this.before_draw(),this.tiles_div.children().addClass("remove");for(var j,k,l=Math.floor(r*i),m=Math.floor(e/l),n=[],o=[];f>m*l;)j=new b.GenomeRegion({chrom:this.view.chrom,start:m*l,end:Math.min((m+1)*l,this.view.max_high)}),k=this.draw_helper(j,h,c),n.push(k),$.when(k).then(function(a){o.push(a)}),m+=1;d||this.tiles_div.children(".remove").removeClass("remove").remove();var p=this;$.when.apply($,n).then(function(){p.tiles_div.children(".remove").remove(),o=a.filter(o,function(a){return null!==a}),0!==o.length&&p.postdraw_actions(o,g,h,d)})}},_add_yaxis_label:function(a,b){var c=this,d="max"===a?"top":"bottom",e="max"===a?"max":"min",f="max"===a?"max_value":"min_value",g=this.container_div.find(".yaxislabel."+d);b=b||function(){c.request_draw({clear_tile_cache:!0})},0!==g.length?g.text(c.config.get_value(f)):(g=$("
").text(c.config.get_value(f)).make_text_editable({num_cols:12,on_finish:function(a){$(".tooltip").remove(),c.config.set_value(f,a),b()},help_text:"Set "+e+" value"}).addClass("yaxislabel "+d).css("color",this.config.get_value("label_color")),this.container_div.prepend(g))},postdraw_actions:function(b,c,d){var e=a.filter(b,function(a){return a instanceof L});if(e.length>0){this.max_height_px=0;var f=this;a.each(b,function(a){a instanceof L||(a.html_elt.remove(),f.draw_helper(a.region,d,{force:!0,mode:"Coverage"}))}),f._add_yaxis_label("max")}else{this.container_div.find(".yaxislabel").remove();var g=a.find(b,function(a){return a.has_icons});g&&a.each(b,function(a){a.has_icons||a.html_elt.css("padding-top",o)})}},get_mode:function(){return this.mode},update_auto_mode:function(){},_get_drawables:function(){return[this]},draw_helper:function(b,c,e){e||(e={});var f=e.force,g=e.mode||this.mode,h=1/c,i=this,j=this._get_drawables(),k=this._gen_tile_cache_key(c,b),l=function(a){return a&&"track"in a},m=f?void 0:i.tile_cache.get_elt(k);if(m)return l(m)&&i.show_tile(m,c),m;if(e.data_fetch===!1)return null;var n=function(){var c=a.find(B,function(a){return a===g})?"Coverage":g,d=a.map(j,function(a){return a.data_manager.get_data(b,c,h,i.data_url_extra_params)});return view.reference_track&&d.push(view.reference_track.data_manager.get_data(b,g,h,view.reference_track.data_url_extra_params)),d},o=$.Deferred();return i.tile_cache.set_elt(k,o),$.when.apply($,n()).then(function(){var f,g=n(),h=g;if(a.find(g,function(a){return d.is_deferred(a)}))return i.tile_cache.set_elt(k,void 0),void $.when(i.draw_helper(b,c,e)).then(function(a){o.resolve(a)});view.reference_track&&(f=view.reference_track.data_manager.subset_entry(g.pop(),b));var l=[],m=[];a.each(j,function(a,b){var d=a.mode,e=h[b];"Auto"===d&&(d=a.get_mode(e),a.update_auto_mode(d)),l.push(d),m.push(a.get_canvas_height(e,d,c,t))});var p,q=i.view.canvas_manager.new_canvas(),r=b.get("start"),s=b.get("end"),t=Math.ceil((s-r)*c)+i.left_offset,u=a.max(m);q.width=t,q.height=e.height||u;var v=q.getContext("2d");v.translate(i.left_offset,0),j.length>1&&(v.globalAlpha=.5,v.globalCompositeOperation="source-over"),a.each(j,function(a,d){p=a.draw_tile(h[d],v,l[d],b,c,f)}),void 0!==p&&(i.tile_cache.set_elt(k,p),i.show_tile(p,c)),o.resolve(p)}),o},get_canvas_height:function(){return this.visible_height_px},_draw_line_track_tile:function(a,b,c,d,e){var g=b.canvas,h=new f.LinePainter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c);return h.draw(b,g.width,g.height,e),new L(this,d,e,g,a.data)},draw_tile:function(){},show_tile:function(a,b){var c=a.html_elt;a.predisplay_actions();var d=Math.round((a.low-(this.is_overview?this.view.max_low:this.view.low))*b);this.left_offset&&(d-=this.left_offset),c.css("left",d),c.hasClass("remove")?c.removeClass("remove"):this.tiles_div.append(c),c.css("height","auto"),this.max_height_px=Math.max(this.max_height_px,c.height()-2),c.parent().children().css("height",this.max_height_px+"px");var e=this.max_height_px;0!==this.visible_height_px&&(e=Math.min(this.max_height_px,this.visible_height_px)),this.tiles_div.css("height",e+"px")},tool_region_and_parameters_str:function(b){var c=this,d=void 0!==b?b.toString():"all",e=a.values(c.tool.get_inputs_dict()).join(", ");return" - region=["+d+"], parameters=["+e+"]"},data_and_mode_compatible:function(a,b){return"Auto"===b?!0:"Coverage"===b?"bigwig"===a.dataset_type:"bigwig"===a.dataset_type||"no_detail"===a.extra_info?!1:!0},can_subset:function(a){return a.message||"no_detail"===a.extra_info?!1:"bigwig"===a.dataset_type?a.data[1][0]-a.data[0][0]===1:!0},init_for_tool_data:function(){this.data_manager.set("data_type","raw_data"),this.data_query_wait=1e3,this.dataset_check_type="state"}});var P=function(a,b){N.call(this,a,b,{resize:!1,header:!1}),this.container_div.addClass("label-track")};k(P.prototype,N.prototype,{init:function(){this.enabled=!0},predraw_init:function(){},_draw:function(){for(var a=this.view,b=a.high-a.low,c=Math.floor(Math.pow(10,Math.floor(Math.log(b)/Math.log(10)))),d=Math.floor(a.low/c)*c,e=this.view.container.width(),f=$("
").addClass("label-container");d").addClass("label").text(commatize(d)).css({left:g})),d+=c}this.content_div.children(":first").remove(),this.content_div.append(f)}});var Q=function(b,c,d){if(O.call(this,b,c,d),this.drawables=[],"drawables"in d){for(var e,f=0;fthis.left_offset&&(this.left_offset=e.left_offset);this.enabled=!0}a.each(this.drawables,function(a){(a instanceof U||a instanceof W)&&a.change_mode("Coverage")}),this.update_icons(),this.obj_type="CompositeTrack"};k(Q.prototype,O.prototype,{display_modes:B,config_params:a.union(C.prototype.config_params,[{key:"min_value",label:"Min Value",type:"float",default_value:void 0},{key:"max_value",label:"Max Value",type:"float",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:30,hidden:!0}]),action_icons_def:[{name:"composite_icon",title:"Show individual tracks",css_class:"layers-stack",on_click_fn:function(a){$(".tooltip").remove(),a.show_group()}}].concat(O.prototype.action_icons_def),to_dict:D.prototype.to_dict,add_drawable:D.prototype.add_drawable,unpack_drawables:D.prototype.unpack_drawables,config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},on_resize:function(){var b=this.visible_height_px;a.each(this.drawables,function(a){a.visible_height_px=b}),N.prototype.on_resize.call(this)},change_mode:function(a){O.prototype.change_mode.call(this,a);for(var b=0;be&&(e=f)}for(d=0;dthis.view.canvas_manager.char_width_px?(this.tiles_div.show(),d=!0,f=O.prototype.draw_helper.call(this,a,b,c)):(d=!1,this.tiles_div.hide()),e!==d&&this.view.resize_viewport(),f},can_subset:function(){return!0},draw_tile:function(a,b,c,d,e){var f=this.data_manager.subset_entry(a,d),g=f.data,h=b.canvas;b.font=b.canvas.manager.default_font,b.textAlign="center";for(var i=0,j=g.length;j>i;i++)b.fillStyle=this.view.get_base_color(g[i]),b.fillText(g[i],Math.floor(i*e),10);return new K(this,d,e,h,f)}});var S=function(a,b,c){this.mode="Histogram",O.call(this,a,b,c)};k(S.prototype,C.prototype,O.prototype,{display_modes:B,config_params:a.union(C.prototype.config_params,[{key:"color",label:"Color",type:"color"},{key:"min_value",label:"Min Value",type:"float",default_value:void 0},{key:"max_value",label:"Max Value",type:"float",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:30,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},before_draw:function(){},draw_tile:function(a,b,c,d,e){return this._draw_line_track_tile(a,b,c,d,e)},can_subset:function(a){return a.data[1][0]-a.data[0][0]===1},postdraw_actions:function(){this._add_yaxis_label("max"),this._add_yaxis_label("min")}});var T=function(a,b,c){this.mode="Heatmap",O.call(this,a,b,c)};k(T.prototype,C.prototype,O.prototype,{display_modes:["Heatmap"],config_params:a.union(C.prototype.config_params,[{key:"pos_color",label:"Positive Color",type:"color",default_value:"#FF8C00"},{key:"neg_color",label:"Negative Color",type:"color",default_value:"#4169E1"},{key:"min_value",label:"Min Value",type:"float",default_value:-1},{key:"max_value",label:"Max Value",type:"float",default_value:1},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:500,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},draw_tile:function(a,b,c,d,e){var g=b.canvas,h=new f.DiagonalHeatmapPainter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c);return h.draw(b,g.width,g.height,e),new K(this,d,e,g,a.data)}});var U=function(a,b,c){O.call(this,a,b,c),this.container_div.addClass("feature-track"),this.summary_draw_height=30,this.slotters={},this.start_end_dct={},this.left_offset=200,this.set_painter_from_config()};k(U.prototype,C.prototype,O.prototype,{display_modes:["Auto","Coverage","Dense","Squish","Pack"],config_params:a.union(C.prototype.config_params,[{key:"block_color",label:"Block color",type:"color"},{key:"reverse_strand_color",label:"Antisense strand color",type:"color"},{key:"label_color",label:"Label color",type:"color",default_value:"black"},{key:"show_counts",label:"Show summary counts",type:"bool",default_value:!0,help:"Show the number of items in each bin when drawing summary histogram"},{key:"min_value",label:"Histogram minimum",type:"float",default_value:null,help:"clear value to set automatically"},{key:"max_value",label:"Histogram maximum",type:"float",default_value:null,help:"clear value to set automatically"},{key:"connector_style",label:"Connector style",type:"select",default_value:"fishbones",options:[{label:"Line with arrows",value:"fishbone"},{label:"Arcs",value:"arcs"}]},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.set_painter_from_config(),this.request_draw({clear_tile_cache:!0})},set_painter_from_config:function(){this.painter="arcs"===this.config.get_value("connector_style")?f.ArcLinkedFeaturePainter:f.LinkedFeaturePainter},postdraw_actions:function(b,c,d,e){O.prototype.postdraw_actions.call(this,b,c,d,e);var f,g=this,h=a.filter(b,function(a){return a instanceof L});if(0===h.length){var i={};a.each(a.pluck(b,"incomplete_features"),function(b){a.each(b,function(a){i[a[0]]=a})});var j=this;a.each(b,function(b){var c=a.omit(i,a.map(b.incomplete_features,function(a){return a[0]}));if(c=a.omit(c,a.keys(b.other_tiles_features_drawn)),0!==a.size(c)){var d={data:a.values(c)},e=j.view.canvas_manager.new_canvas(),f=e.getContext("2d");e.height=Math.max(b.canvas.height,j.get_canvas_height(d,b.mode,b.w_scale,100)),e.width=b.canvas.width,f.drawImage(b.canvas,0,0),f.translate(g.left_offset,0);var h=j.draw_tile(d,f,b.mode,b.region,b.w_scale,b.seq_data);$(b.canvas).replaceWith($(h.canvas)),b.canvas=e,a.extend(b.other_tiles_features_drawn,i)}})}if(g.filters_manager){var k,l=g.filters_manager.filters;for(k=0;kq?"Squish":"Pack",mode},get_canvas_height:function(a,b,c,d){if("Coverage"===b||"bigwig"===a.dataset_type)return this.summary_draw_height;var e=this.incremental_slots(c,a.data,b),f=new this.painter(null,null,null,this.config.to_key_value_dict(),b);return Math.max(this.min_height_px,f.get_required_height(e,d))},draw_tile:function(a,b,c,d,e,f,g){var h=this,i=b.canvas,j=d.get("start"),k=d.get("end"),l=this.left_offset;if("bigwig"===a.dataset_type)return this._draw_line_track_tile(a,b,c,d,e);var m=[],n=this.slotters[e].slots;if(all_slotted=!0,a.data)for(var o=this.filters_manager.filters,p=0,q=a.data.length;q>p;p++){for(var r,s=a.data[p],t=!1,u=0,v=o.length;v>u;u++)if(r=o[u],r.update_attrs(s),!r.keep(s)){t=!0;break}t||(m.push(s),s[0]in n||(all_slotted=!1))}var w=this.filters_manager.alpha_filter?new J(this.filters_manager.alpha_filter):null,x=this.filters_manager.height_filter?new J(this.filters_manager.height_filter):null,y=new this.painter(m,j,k,this.config.to_key_value_dict(),c,w,x,f,function(a){return h.view.get_base_color(a)}),z=null;if(b.fillStyle=this.config.get_value("block_color"),b.font=b.canvas.manager.default_font,b.textAlign="right",a.data){var A=y.draw(b,i.width,i.height,e,n);z=A.feature_mapper,incomplete_features=A.incomplete_features,z.translation=-l}return g?void 0:new M(h,d,e,i,a.data,c,a.message,all_slotted,z,incomplete_features,f)}});var V=function(a,b,c){O.call(this,a,b,c),this.painter=f.VariantPainter,this.summary_draw_height=30,this.left_offset=30};k(V.prototype,C.prototype,O.prototype,{display_modes:["Auto","Coverage","Dense","Squish","Pack"],config_params:a.union(C.prototype.config_params,[{key:"color",label:"Histogram color",type:"color"},{key:"show_sample_data",label:"Show sample data",type:"bool",default_value:!0},{key:"show_labels",label:"Show summary and sample labels",type:"bool",default_value:!0},{key:"summary_height",label:"Locus summary height",type:"float",default_value:20},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},draw_tile:function(a,b,c,d,e){if("bigwig"===a.dataset_type)return this._draw_line_track_tile(a,b,"Histogram",d,e);var f=this.view,g=new this.painter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c,function(a){return f.get_base_color(a)});return g.draw(b,b.canvas.width,b.canvas.height,e),new K(this,d,e,b.canvas,a.data)},get_canvas_height:function(a,b){if("bigwig"===a.dataset_type)return this.summary_draw_height;var c=this.dataset.get_metadata("sample_names")?this.dataset.get_metadata("sample_names").length:0;0===c&&0!==a.data.length&&(c=a.data[0][7].match(/,/g),c=null===c?1:c.length+1);var d=new this.painter(null,null,null,this.config.to_key_value_dict(),b);return d.get_required_height(c)},predraw_init:function(){var a=[N.prototype.predraw_init.call(this)];return this.dataset.get_metadata("sample_names")||a.push(this.dataset.fetch()),a},postdraw_actions:function(b,c,d,e){O.prototype.postdraw_actions.call(this,b,c,d,e);var f=a.filter(b,function(a){return a instanceof L}),g=this.dataset.get_metadata("sample_names");if(0===f.length&&this.config.get_value("show_labels")&&g&&g.length>1){var h;if(0===this.container_div.find(".yaxislabel.variant").length&&(h=this.config.get_value("summary_height")/2,this.tiles_div.prepend($("
").text("Summary").addClass("yaxislabel variant top").css({"font-size":h+"px",top:(this.config.get_value("summary_height")-h)/2+"px"})),this.config.get_value("show_sample_data"))){var i=g.join("
");this.tiles_div.prepend($("
").html(i).addClass("yaxislabel variant top sample").css({top:this.config.get_value("summary_height")}))}h=("Squish"===this.mode?5:10)+"px",$(this.tiles_div).find(".sample").css({"font-size":h,"line-height":h}),$(this.tiles_div).find(".yaxislabel").css("color",this.config.get_value("label_color"))}else this.container_div.find(".yaxislabel.variant").remove()}});var W=function(a,b,c){U.call(this,a,b,c),this.painter=f.ReadPainter,this.update_icons()};k(W.prototype,C.prototype,O.prototype,U.prototype,{config_params:a.union(C.prototype.config_params,[{key:"block_color",label:"Histogram color",type:"color"},{key:"detail_block_color",label:"Sense strand block color",type:"color",default_value:"#AAAAAA"},{key:"reverse_strand_color",label:"Antisense strand block color",type:"color",default_value:"#DDDDDD"},{key:"label_color",label:"Label color",type:"color",default_value:"black"},{key:"show_insertions",label:"Show insertions",type:"bool",default_value:!1},{key:"show_differences",label:"Show differences only",type:"bool",default_value:!0},{key:"show_counts",label:"Show summary counts",type:"bool",default_value:!0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"min_value",label:"Histogram minimum",type:"float",default_value:null,help:"clear value to set automatically"},{key:"max_value",label:"Histogram maximum",type:"float",default_value:null,help:"clear value to set automatically"},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})}});var X={CompositeTrack:Q,DrawableGroup:E,DiagonalHeatmapTrack:T,FeatureTrack:U,LineTrack:S,ReadTrack:W,VariantTrack:V,VcfTrack:V},Y=function(a,b,c){if("copy"in a)return a.copy(c);var d=a.obj_type;return d||(d=a.track_type),new X[d](b,c,a)};return{TracksterView:F,DrawableGroup:E,LineTrack:S,FeatureTrack:U,DiagonalHeatmapTrack:T,ReadTrack:W,VariantTrack:V,CompositeTrack:Q,object_from_template:Y}}); //# sourceMappingURL=../../../maps/viz/trackster/tracks.js.map \ No newline at end of file