galaxy-commits
Threads by month
- ----- 2025 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 15302 discussions

commit/galaxy-central: greg: Add search for repository name, description when browsing valid repositories in the tool shed.
by Bitbucket 03 Jul '12
by Bitbucket 03 Jul '12
03 Jul '12
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/ab1e5f085931/
changeset: ab1e5f085931
user: greg
date: 2012-07-03 21:27:28
summary: Add search for repository name, description when browsing valid repositories in the tool shed.
affected #: 1 file
diff -r 4bea5ec54ec4022da1fd49bb616304e4e4b1ec6c -r ab1e5f08593151b35979b7371d001b50d0d3b39f lib/galaxy/webapps/community/controllers/repository.py
--- a/lib/galaxy/webapps/community/controllers/repository.py
+++ b/lib/galaxy/webapps/community/controllers/repository.py
@@ -238,6 +238,11 @@
attach_popup=False,
key="User.username" )
]
+ columns.append( grids.MulticolFilterColumn( "Search repository name, description, owner",
+ cols_to_filter=[ columns[0], columns[1] ],
+ key="free-text-search",
+ visible=False,
+ filterable="standard" ) )
operations = []
def build_initial_query( self, trans, **kwd ):
return trans.sa_session.query( self.model_class ) \
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0

03 Jul '12
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/4bea5ec54ec4/
changeset: 4bea5ec54ec4
user: greg
date: 2012-07-03 20:42:52
summary: Fix definition of missing tool dependencies.
affected #: 1 file
diff -r c4bdfbf9b3270809754fc075bf0af9b9a3d49f3c -r 4bea5ec54ec4022da1fd49bb616304e4e4b1ec6c lib/galaxy/model/__init__.py
--- a/lib/galaxy/model/__init__.py
+++ b/lib/galaxy/model/__init__.py
@@ -2720,9 +2720,7 @@
"""Return the repository's tool dependencies that are not currently installed, and may not ever have been installed."""
missing_dependencies = []
for tool_dependency in self.tool_dependencies:
- if tool_dependency.status in [ ToolDependency.installation_status.NEVER_INSTALLED,
- ToolDependency.installation_status.ERROR,
- ToolDependency.installation_status.UNINSTALLED ]:
+ if tool_dependency.status not in [ ToolDependency.installation_status.INSTALLED ]:
missing_dependencies.append( tool_dependency )
return missing_dependencies
@property
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0

03 Jul '12
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/c4bdfbf9b327/
changeset: c4bdfbf9b327
user: greg
date: 2012-07-03 20:03:46
summary: Fix column layout for tool dependencies.
affected #: 1 file
diff -r 31564ea924e7911a04eecc9157d1817d68febd97 -r c4bdfbf9b3270809754fc075bf0af9b9a3d49f3c templates/webapps/community/repository/common.mako
--- a/templates/webapps/community/repository/common.mako
+++ b/templates/webapps/community/repository/common.mako
@@ -105,8 +105,8 @@
<table class="grid"><tr><td><b>name</b></td>
+ <td><b>version</b></td><td><b>type</b></td>
- <td><b>version</b></td></tr>
%for dependency_key, requirements_dict in tool_dependencies.items():
<%
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0

commit/galaxy-central: greg: Clarify up status column display in the tool shed repository grids, and fix a method signature bug.
by Bitbucket 03 Jul '12
by Bitbucket 03 Jul '12
03 Jul '12
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/31564ea924e7/
changeset: 31564ea924e7
user: greg
date: 2012-07-03 19:53:09
summary: Clarify up status column display in the tool shed repository grids, and fix a method signature bug.
affected #: 4 files
diff -r f6b32f963f6114e8ee86853a6311836b8dd5cdd3 -r 31564ea924e7911a04eecc9157d1817d68febd97 lib/galaxy/tool_shed/__init__.py
--- a/lib/galaxy/tool_shed/__init__.py
+++ b/lib/galaxy/tool_shed/__init__.py
@@ -52,5 +52,5 @@
if installed_repository_dict[ 'converter_path' ]:
galaxy.util.shed_util.load_installed_datatype_converters( self.app, installed_repository_dict, deactivate=deactivate )
if installed_repository_dict[ 'display_path' ]:
- galaxy.util.shed_util.load_installed_display_applications( installed_repository_dict, deactivate=deactivate )
+ galaxy.util.shed_util.load_installed_display_applications( self.app, installed_repository_dict, deactivate=deactivate )
\ No newline at end of file
diff -r f6b32f963f6114e8ee86853a6311836b8dd5cdd3 -r 31564ea924e7911a04eecc9157d1817d68febd97 lib/galaxy/tool_shed/migrate/check.py
--- a/lib/galaxy/tool_shed/migrate/check.py
+++ b/lib/galaxy/tool_shed/migrate/check.py
@@ -127,7 +127,7 @@
msg += "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n"
msg += "sh ./scripts/migrate_tools/%04d_tools.sh install_dependencies\n" % latest_tool_migration_script_number
msg += "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"
- msg += "Tool dependencies can be installed after the repositories have been installed, but installing them now is better.\n\n"
+ msg += "Tool dependencies can be installed after the repositories have been installed as well.\n\n"
msg += "After the installation process finishes, you can start your Galaxy server. As part of this installation process,\n"
msg += "entries for each of the following tool config files will be added to the file named ./migrated_tool_conf.xml, so these\n"
msg += "tools will continue to be loaded into your tool panel. Because of this, existing entries for these files should be\n"
diff -r f6b32f963f6114e8ee86853a6311836b8dd5cdd3 -r 31564ea924e7911a04eecc9157d1817d68febd97 lib/galaxy/util/shed_util.py
--- a/lib/galaxy/util/shed_util.py
+++ b/lib/galaxy/util/shed_util.py
@@ -1279,7 +1279,7 @@
except:
pass
return repository_dict
-def load_installed_display_applications( installed_repository_dict, deactivate=False ):
+def load_installed_display_applications( app, installed_repository_dict, deactivate=False ):
# Load or deactivate proprietary datatype display applications
app.datatypes_registry.load_display_applications( installed_repository_dict=installed_repository_dict, deactivate=deactivate )
def make_tmp_directory():
diff -r f6b32f963f6114e8ee86853a6311836b8dd5cdd3 -r 31564ea924e7911a04eecc9157d1817d68febd97 lib/galaxy/web/controllers/admin_toolshed.py
--- a/lib/galaxy/web/controllers/admin_toolshed.py
+++ b/lib/galaxy/web/controllers/admin_toolshed.py
@@ -30,6 +30,7 @@
return tool_shed_repository.changeset_revision
class StatusColumn( grids.TextColumn ):
def get_value( self, trans, grid, tool_shed_repository ):
+ status_label = tool_shed_repository.status
if tool_shed_repository.status in [ trans.model.ToolShedRepository.installation_status.CLONING,
trans.model.ToolShedRepository.installation_status.SETTING_TOOL_VERSIONS,
trans.model.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES,
@@ -45,12 +46,12 @@
elif tool_shed_repository.status in [ trans.model.ToolShedRepository.installation_status.INSTALLED ]:
if tool_shed_repository.missing_tool_dependencies:
bgcolor = trans.model.ToolShedRepository.states.WARNING
+ status_label = '%s, missing dependencies' % status_label
else:
bgcolor = trans.model.ToolShedRepository.states.OK
else:
bgcolor = trans.model.ToolShedRepository.states.ERROR
- rval = '<div class="count-box state-color-%s">' % bgcolor
- rval += '%s</div>' % tool_shed_repository.status
+ rval = '<div class="count-box state-color-%s">%s</div>' % ( bgcolor, status_label )
return rval
class ToolShedColumn( grids.TextColumn ):
def get_value( self, trans, grid, tool_shed_repository ):
@@ -121,6 +122,7 @@
return tool_shed_repository.changeset_revision
class StatusColumn( grids.TextColumn ):
def get_value( self, trans, grid, tool_shed_repository ):
+ status_label = tool_shed_repository.status
if tool_shed_repository.status in [ trans.model.ToolShedRepository.installation_status.CLONING,
trans.model.ToolShedRepository.installation_status.SETTING_TOOL_VERSIONS,
trans.model.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES,
@@ -136,12 +138,13 @@
elif tool_shed_repository.status in [ trans.model.ToolShedRepository.installation_status.INSTALLED ]:
if tool_shed_repository.missing_tool_dependencies:
bgcolor = trans.model.ToolShedRepository.states.WARNING
+ status_label = '%s, missing dependencies' % status_label
else:
bgcolor = trans.model.ToolShedRepository.states.OK
else:
bgcolor = trans.model.ToolShedRepository.states.ERROR
rval = '<div class="count-box state-color-%s" id="RepositoryStatus-%s">%s</div>' % \
- ( bgcolor, trans.security.encode_id( tool_shed_repository.id ), tool_shed_repository.status )
+ ( bgcolor, trans.security.encode_id( tool_shed_repository.id ), status_label )
return rval
webapp = "galaxy"
@@ -223,8 +226,8 @@
bgcolor = trans.model.ToolDependency.states.ERROR
elif tool_dependency.status in [ trans.model.ToolDependency.installation_status.INSTALLED ]:
bgcolor = trans.model.ToolDependency.states.OK
- rval = '<div class="count-box state-color-%s" id="ToolDependencyStatus-%s">' % ( bgcolor, trans.security.encode_id( tool_dependency.id ) )
- rval += '%s</div>' % tool_dependency.status
+ rval = '<div class="count-box state-color-%s" id="ToolDependencyStatus-%s">%s</div>' % \
+ ( bgcolor, trans.security.encode_id( tool_dependency.id ), tool_dependency.status )
return rval
webapp = "galaxy"
@@ -408,7 +411,7 @@
if installed_repository_dict[ 'converter_path' ]:
load_installed_datatype_converters( trans.app, installed_repository_dict, deactivate=True )
if installed_repository_dict[ 'display_path' ]:
- load_installed_display_applications( installed_repository_dict, deactivate=True )
+ load_installed_display_applications( trans.app, installed_repository_dict, deactivate=True )
if remove_from_disk_checked:
try:
# Remove the repository from disk.
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/f6b32f963f61/
changeset: f6b32f963f61
user: jgoecks
date: 2012-07-03 17:49:10
summary: Small fixes for 8fd408407f7e.
affected #: 2 files
diff -r 3965354dda0b11768ae0c8c1ff5c33313bf98ee4 -r f6b32f963f6114e8ee86853a6311836b8dd5cdd3 static/scripts/packed/viz/paramamonster.js
--- a/static/scripts/packed/viz/paramamonster.js
+++ b/static/scripts/packed/viz/paramamonster.js
@@ -1,1 +1,1 @@
-var ToolInputsSettings=Backbone.Model.extend({defaults:{inputs:null,values:null}});var ToolParameterTree=Backbone.RelationalModel.extend({defaults:{tool:null,tree_data:null},initialize:function(b){var a=this;this.get("tool").get("inputs").each(function(c){if(!c.get_samples()){return}c.on("change:min change:max change:num_samples",function(d){if(d.get("in_ptree")){a.set_tree_data()}},a);c.on("change:in_ptree",function(d){if(d.get("in_ptree")){a.add_param(d)}else{a.remove_param(d)}a.set_tree_data()},a)});if(b.config){_.each(b.config,function(d){var c=a.get("tool").get("inputs").find(function(e){return e.get("name")===d.name});a.add_param(c);c.set(d)})}},add_param:function(a){if(a.get("ptree_index")){return}a.set("in_ptree",true);a.set("ptree_index",this.get_tree_params().length)},remove_param:function(a){a.set("in_ptree",false);a.set("ptree_index",null);_(this.get_tree_params()).each(function(b,c){b.set("ptree_index",c+1)})},set_tree_data:function(){var b=_.map(this.get_tree_params(),function(d){return{param:d,samples:d.get_samples()}});var a=0,c=function(g,d){var i=g[d],h=i.param,f=h.get("label"),e=i.samples;if(g.length-1===d){return _.map(e,function(j){return{id:a++,name:j,param:h,value:j}})}return _.map(e,function(j){return{id:a++,name:j,param:h,value:j,children:c(g,d+1)}})};this.set("tree_data",{name:"Root",id:a++,children:(b.length!==0?c(b,0):null)})},get_tree_params:function(){return _(this.get("tool").get("inputs").where({in_ptree:true})).sortBy(function(a){return a.get("ptree_index")})},get_num_leaves:function(){return this.get_tree_params().reduce(function(a,b){return a*b.get_samples().length},1)},get_node_settings:function(e){var c=this.get("tool").get_inputs_dict();var f=e.parent;if(f){while(f.depth!==0){c[f.param.get("name")]=f.value;f=f.parent}}var a=this,b=function(h,g){if(h.param){g[h.param.get("name")]=h.value}if(!h.children){return new ToolInputsSettings({inputs:a.get("tool").get("inputs"),values:g})}else{return _.flatten(_.map(h.children,function(i){return b(i,_.clone(g))}))}},d=b(e,c);if(!_.isArray(d)){d=[d]}return d},get_connected_nodes:function(c){var d=function(e){if(!e.children){return e}else{return _.flatten([e,_.map(e.children,function(f){return d(f)})])}};var b=[],a=c.parent;while(a){b.push(a);a=a.parent}return _.flatten([b,d(c)])},get_leaf:function(b){var c=this.get("tree_data"),a=function(d){return _.find(d,function(e){return b[e.param.get("name")]===e.value})};while(c.children){c=a(c.children)}return c},toJSON:function(){return this.get_tree_params().map(function(a){return{name:a.get("name"),min:a.get("min"),max:a.get("max"),num_samples:a.get("num_samples")}})}});var ParamaMonsterTrack=Backbone.RelationalModel.extend({defaults:{track:null,settings:null,regions:null},relations:[{type:Backbone.HasMany,key:"regions",relatedModel:"GenomeRegion"}],initialize:function(a){if(a.track){var b=_.extend({data_url:galaxy_paths.get("raw_data_url"),converted_datasets_state_url:galaxy_paths.get("dataset_state_url")},a.track);delete b.mode;this.set("track",object_from_template(b,{},null))}},same_settings:function(a){var b=this.get("settings"),c=a.get("settings");for(var d in b){if(!c[d]||b[d]!==c[d]){return false}}return true},toJSON:function(){return{track:this.get("track").to_dict(),settings:this.get("settings"),regions:this.get("regions")}}});var TrackCollection=Backbone.Collection.extend({model:ParamaMonsterTrack});var ParamaMonsterVisualization=Visualization.extend({defaults:_.extend({},Visualization.prototype.defaults,{dataset:null,tool:null,parameter_tree:null,regions:null,tracks:null}),relations:[{type:Backbone.HasOne,key:"dataset",relatedModel:"Dataset"},{type:Backbone.HasOne,key:"tool",relatedModel:"Tool"},{type:Backbone.HasMany,key:"regions",relatedModel:"GenomeRegion"},{type:Backbone.HasMany,key:"tracks",relatedModel:"ParamaMonsterTrack"}],initialize:function(a){var b=this.get("tool").copy(true);this.set("tool_with_samplable_inputs",b);this.set("parameter_tree",new ToolParameterTree({tool:b,config:a.tree_config}))},add_placeholder:function(a){this.get("tracks").add(new PlaceholderTrack(a))},add_track:function(a){this.get("tracks").add(a)},toJSON:function(){return{id:this.get("id"),title:"Parameter exploration for dataset '"+this.get("dataset").get("name")+"'",type:"paramamonster",dataset_id:this.get("dataset").id,tool_id:this.get("tool").id,regions:this.get("regions").toJSON(),tree_config:this.get("parameter_tree").toJSON(),tracks:this.get("tracks").toJSON()}}});var ParamaMonsterTrackView=Backbone.View.extend({tagName:"tr",TILE_LEN:250,initialize:function(a){this.canvas_manager=a.canvas_manager;this.render();this.model.on("change:track",this.draw_tiles,this)},render:function(){var f=this.model.get("settings"),b=f.get("values"),d=$("<td/>").addClass("settings").appendTo(this.$el),c=$("<div/>").addClass("track-info").hide().appendTo(d);c.append($("<div/>").css("font-weight","bold").text("Track Settings"));f.get("inputs").each(function(h){c.append(h.get("label")+": "+b[h.get("name")]+"<br/>")});var a=this,g=$("<button/>").appendTo(c).text("Run on complete dataset").click(function(){a.trigger("run_on_dataset",f)});var e=create_icon_buttons_menu([{title:"Settings",icon_class:"gear track-settings",on_click:function(){c.toggle()},tipsy_config:{gravity:"s"}},{title:"Remove",icon_class:"cross-circle",on_click:function(){a.$el.remove();$(".tipsy").remove()}}]);d.prepend(e.$el);this.model.get("regions").each(function(){a.$el.append($("<td/>").addClass("tile").html($("<img/>").attr("src",galaxy_paths.get("image_path")+"/loading_large_white_bg.gif")))});if(this.model.get("track")){this.draw_tiles()}},draw_tiles:function(){var b=this,a=this.model.get("track"),d=this.model.get("regions"),c=this.$el.find("td.tile");$.when(a.data_manager.data_is_ready()).then(function(e){d.each(function(h,g){var f=h.length()/b.TILE_LEN,j=1/f,i="Pack";$.when(a.data_manager.get_data(h,i,f,{})).then(function(l){var k=b.canvas_manager.new_canvas();k.width=b.TILE_LEN;k.height=a.get_canvas_height(l,i,j,k.width);a.draw_tile(l,k.getContext("2d"),i,f,h,j);$(c[g]).empty().append(k)})})})}});var ToolInputValOrSweepView=Backbone.View.extend({number_input_template:'<div class="form-row-input sweep"><input class="min" type="text" size="6" value="<%= min %>"> - <input class="max" type="text" size="6" value="<%= max %>"> samples: <input class="num_samples" type="text" size="1" value="<%= num_samples %>"></div>',select_input_template:'<div class="form-row-input sweep"><%= options %></div>',initialize:function(a){this.$el=a.tool_row;this.render()},render:function(){var b=this.model,f=b.get("type"),h=this.$el.find(".form-row-input"),d=null;h.find(":input").change(function(){b.set("value",$(this).val())});if(f==="number"){d=$(_.template(this.number_input_template,this.model.toJSON()))}else{if(f==="select"){var c=_.map(this.$el.find("select option"),function(i){return $(i).val()}),e=c.join(", ");d=$(_.template(this.select_input_template,{options:e}))}}d.insertAfter(h);var a=this,g=create_icon_buttons_menu([{title:"Add parameter to tree",icon_class:"plus-button",on_click:function(){b.set("in_ptree",true);h.hide();d.show();$(this).hide();a.$el.find(".icon-button.toggle").show()}},{title:"Remove parameter from tree",icon_class:"toggle",on_click:function(){b.set("in_ptree",false);d.hide();h.show();$(this).hide();a.$el.find(".icon-button.plus-button").show()}}],{tipsy_config:{gravity:"s"}});this.$el.prepend(g.$el);if(b.get("in_ptree")){h.hide();a.$el.find(".icon-button.plus-button").hide()}else{a.$el.find(".icon-button.toggle").hide();d.hide()}_.each(["min","max","num_samples"],function(i){d.find("."+i).change(function(){b.set(i,parseFloat($(this).val()))})})}});var ToolParameterTreeDesignView=Backbone.View.extend({className:"tree-design",initialize:function(a){this.render()},render:function(){var c=new ToolFormView({model:this.model.get("tool")});c.render();this.$el.append(c.$el);var b=this,a=b.model.get("tool").get("inputs");this.$el.find(".form-row").not(".form-actions").each(function(d){var e=new ToolInputValOrSweepView({model:a.at(d),tool_row:$(this)})})}});var ToolParameterTreeView=Backbone.View.extend({className:"tool-parameter-tree",initialize:function(a){this.model.on("change:tree_data",this.render,this)},render:function(){this.$el.children().remove();var i=this.model.get_tree_params();if(!i.length){return}this.width=100*(2+i.length);this.height=15*this.model.get_num_leaves();var h=this;var g=d3.layout.cluster().size([this.height,this.width-160]);var c=d3.svg.diagonal().projection(function(j){return[j.y,j.x]});var a=g.nodes(this.model.get("tree_data"));var d=_.uniq(_.pluck(a,"y"));_.each(i,function(l,k){var j=d[k+1];h.$el.append($("<div>").addClass("label").text(l.get("label")).css("left",j+250))});var b=d3.select(this.$el[0]).append("svg").attr("width",this.width).attr("height",this.height+20).append("g").attr("transform","translate(40, 10)");var f=b.selectAll("path.link").data(g.links(a)).enter().append("path").attr("class","link").attr("d",c);var e=b.selectAll("g.node").data(a).enter().append("g").attr("class","node").attr("transform",function(j){return"translate("+j.y+","+j.x+")"}).on("mouseover",function(k){var j=_.pluck(h.model.get_connected_nodes(k),"id");e.filter(function(l){return _.find(j,function(m){return m===l.id})!==undefined}).style("fill","#f00")}).on("mouseout",function(){e.style("fill","#000")});e.append("circle").attr("r",9);e.append("text").attr("dx",function(j){return j.children?-12:12}).attr("dy",3).attr("text-anchor",function(j){return j.children?"end":"start"}).text(function(j){return j.name})}});var ParamaMonsterVisualizationView=Backbone.View.extend({className:"paramamonster",initialize:function(b){this.canvas_manager=new CanvasManager(this.$el.parents("body"));this.tool_param_tree_view=new ToolParameterTreeView({model:this.model.get("parameter_tree")});this.track_collection_container=$("<table/>").addClass("tracks");this.model.get("parameter_tree").on("change:tree_data",this.handle_node_clicks,this);var a=this;this.model.get("tracks").each(function(c){c.get("track").view=a})},render:function(){var d=new ToolParameterTreeDesignView({model:this.model.get("parameter_tree")});$("#left").append(d.$el);var a=this,e=a.model.get("regions"),b=$("<tr/>").appendTo(this.track_collection_container);e.each(function(f){b.append($("<th>").text(f.toString()))});b.children().first().attr("colspan",2);var c=$("<div>").addClass("tiles");$("#right").append(c.append(this.track_collection_container));a.model.get("tracks").each(function(f){a.add_track(f)});this.tool_param_tree_view.render();$("#center").append(this.tool_param_tree_view.$el);this.handle_node_clicks()},run_tool_on_dataset:function(b){var a=this.model.get("tool"),d=a.get("name"),c=this.model.get("dataset");a.set_input_values(b);$.when(a.rerun(c)).then(function(e){console.log(e);show_modal("Running "+d+" on complete dataset",d+"is running on dataset '"+c.get("name")+"' and is available in the dataset's history.",{Ok:function(){hide_modal()}})})},add_track:function(d){var b=this,c=this.model.get("parameter_tree");b.model.add_track(d);var a=new ParamaMonsterTrackView({model:d,canvas_manager:b.canvas_manager});a.on("run_on_dataset",b.run_tool_on_dataset,b);b.track_collection_container.append(a.$el);a.$el.hover(function(){var f=c.get_leaf(d.get("settings").get("values"));var e=_.pluck(c.get_connected_nodes(f),"id");d3.select(b.tool_param_tree_view.$el[0]).selectAll("g.node").filter(function(g){return _.find(e,function(h){return h===g.id})!==undefined}).style("fill","#f00")},function(){d3.select(b.tool_param_tree_view.$el[0]).selectAll("g.node").style("fill","#000")});return d},handle_node_clicks:function(){var a=this,b=this.model.get("parameter_tree"),d=this.model.get("regions"),c=d3.select(this.tool_param_tree_view.$el[0]).selectAll("g.node");c.on("click",function(k,g){var f=a.model.get("tool"),j=a.model.get("dataset"),h=b.get_node_settings(k),e=$.Deferred();if(h.length>=10){show_modal("Whoa there cowboy!","You clicked on a node to try "+a.model.get("tool").get("name")+" with "+h.length+" different combinations of settings. You can only run 10 jobs at a time.",{Ok:function(){hide_modal();e.resolve(false)}})}else{e.resolve(true)}$.when(e).then(function(i){if(!i){return}var l=_.map(h,function(m){var n=new ParamaMonsterTrack({settings:m,regions:d});a.add_track(n);return n});_.each(l,function(n,m){setTimeout(function(){f.set_input_values(n.get("settings").get("values"));$.when(f.rerun(j,d)).then(function(p){var q=_.extend({data_url:galaxy_paths.get("raw_data_url"),converted_datasets_state_url:galaxy_paths.get("dataset_state_url")},p.first().get("track_config")),o=object_from_template(q,a,null);n.set("track",o)})},m*10000)})})})}});
\ No newline at end of file
+var ToolInputsSettings=Backbone.Model.extend({defaults:{inputs:null,values:null}});var ToolParameterTree=Backbone.RelationalModel.extend({defaults:{tool:null,tree_data:null},initialize:function(b){var a=this;this.get("tool").get("inputs").each(function(c){if(!c.get_samples()){return}c.on("change:min change:max change:num_samples",function(d){if(d.get("in_ptree")){a.set_tree_data()}},a);c.on("change:in_ptree",function(d){if(d.get("in_ptree")){a.add_param(d)}else{a.remove_param(d)}a.set_tree_data()},a)});if(b.config){_.each(b.config,function(d){var c=a.get("tool").get("inputs").find(function(e){return e.get("name")===d.name});a.add_param(c);c.set(d)})}},add_param:function(a){if(a.get("ptree_index")){return}a.set("in_ptree",true);a.set("ptree_index",this.get_tree_params().length)},remove_param:function(a){a.set("in_ptree",false);a.set("ptree_index",null);_(this.get_tree_params()).each(function(b,c){b.set("ptree_index",c+1)})},set_tree_data:function(){var b=_.map(this.get_tree_params(),function(d){return{param:d,samples:d.get_samples()}});var a=0,c=function(g,d){var i=g[d],h=i.param,f=h.get("label"),e=i.samples;if(g.length-1===d){return _.map(e,function(j){return{id:a++,name:j,param:h,value:j}})}return _.map(e,function(j){return{id:a++,name:j,param:h,value:j,children:c(g,d+1)}})};this.set("tree_data",{name:"Root",id:a++,children:(b.length!==0?c(b,0):null)})},get_tree_params:function(){return _(this.get("tool").get("inputs").where({in_ptree:true})).sortBy(function(a){return a.get("ptree_index")})},get_num_leaves:function(){return this.get_tree_params().reduce(function(a,b){return a*b.get_samples().length},1)},get_node_settings:function(e){var c=this.get("tool").get_inputs_dict();var f=e.parent;if(f){while(f.depth!==0){c[f.param.get("name")]=f.value;f=f.parent}}var a=this,b=function(h,g){if(h.param){g[h.param.get("name")]=h.value}if(!h.children){return new ToolInputsSettings({inputs:a.get("tool").get("inputs"),values:g})}else{return _.flatten(_.map(h.children,function(i){return b(i,_.clone(g))}))}},d=b(e,c);if(!_.isArray(d)){d=[d]}return d},get_connected_nodes:function(c){var d=function(e){if(!e.children){return e}else{return _.flatten([e,_.map(e.children,function(f){return d(f)})])}};var b=[],a=c.parent;while(a){b.push(a);a=a.parent}return _.flatten([b,d(c)])},get_leaf:function(b){var c=this.get("tree_data"),a=function(d){return _.find(d,function(e){return b[e.param.get("name")]===e.value})};while(c.children){c=a(c.children)}return c},toJSON:function(){return this.get_tree_params().map(function(a){return{name:a.get("name"),min:a.get("min"),max:a.get("max"),num_samples:a.get("num_samples")}})}});var ParamaMonsterTrack=Backbone.RelationalModel.extend({defaults:{track:null,settings:null,regions:null},relations:[{type:Backbone.HasMany,key:"regions",relatedModel:"GenomeRegion"}],initialize:function(a){if(a.track){var b=_.extend({data_url:galaxy_paths.get("raw_data_url"),converted_datasets_state_url:galaxy_paths.get("dataset_state_url")},a.track);delete b.mode;this.set("track",object_from_template(b,{},null))}},same_settings:function(a){var b=this.get("settings"),c=a.get("settings");for(var d in b){if(!c[d]||b[d]!==c[d]){return false}}return true},toJSON:function(){return{track:this.get("track").to_dict(),settings:this.get("settings"),regions:this.get("regions")}}});var TrackCollection=Backbone.Collection.extend({model:ParamaMonsterTrack});var ParamaMonsterVisualization=Visualization.extend({defaults:_.extend({},Visualization.prototype.defaults,{dataset:null,tool:null,parameter_tree:null,regions:null,tracks:null}),relations:[{type:Backbone.HasOne,key:"dataset",relatedModel:"Dataset"},{type:Backbone.HasOne,key:"tool",relatedModel:"Tool"},{type:Backbone.HasMany,key:"regions",relatedModel:"GenomeRegion"},{type:Backbone.HasMany,key:"tracks",relatedModel:"ParamaMonsterTrack"}],initialize:function(a){var b=this.get("tool").copy(true);this.set("tool_with_samplable_inputs",b);this.set("parameter_tree",new ToolParameterTree({tool:b,config:a.tree_config}))},add_placeholder:function(a){this.get("tracks").add(new PlaceholderTrack(a))},add_track:function(a){this.get("tracks").add(a)},toJSON:function(){return{id:this.get("id"),title:"Parameter exploration for dataset '"+this.get("dataset").get("name")+"'",type:"paramamonster",dataset_id:this.get("dataset").id,tool_id:this.get("tool").id,regions:this.get("regions").toJSON(),tree_config:this.get("parameter_tree").toJSON(),tracks:this.get("tracks").toJSON()}}});var ParamaMonsterTrackView=Backbone.View.extend({tagName:"tr",TILE_LEN:250,initialize:function(a){this.canvas_manager=a.canvas_manager;this.render();this.model.on("change:track",this.draw_tiles,this)},render:function(){var f=this.model.get("settings"),b=f.get("values"),d=$("<td/>").addClass("settings").appendTo(this.$el),c=$("<div/>").addClass("track-info").hide().appendTo(d);c.append($("<div/>").css("font-weight","bold").text("Track Settings"));f.get("inputs").each(function(h){c.append(h.get("label")+": "+b[h.get("name")]+"<br/>")});var a=this,g=$("<button/>").appendTo(c).text("Run on complete dataset").click(function(){c.toggle();a.trigger("run_on_dataset",f)});var e=create_icon_buttons_menu([{title:"Settings",icon_class:"gear track-settings",on_click:function(){c.toggle()},tipsy_config:{gravity:"s"}},{title:"Remove",icon_class:"cross-circle",on_click:function(){a.$el.remove();$(".tipsy").remove()}}]);d.prepend(e.$el);this.model.get("regions").each(function(){a.$el.append($("<td/>").addClass("tile").html($("<img/>").attr("src",galaxy_paths.get("image_path")+"/loading_large_white_bg.gif")))});if(this.model.get("track")){this.draw_tiles()}},draw_tiles:function(){var b=this,a=this.model.get("track"),d=this.model.get("regions"),c=this.$el.find("td.tile");$.when(a.data_manager.data_is_ready()).then(function(e){d.each(function(h,g){var f=h.length()/b.TILE_LEN,j=1/f,i="Pack";$.when(a.data_manager.get_data(h,i,f,{})).then(function(l){var k=b.canvas_manager.new_canvas();k.width=b.TILE_LEN;k.height=a.get_canvas_height(l,i,j,k.width);a.draw_tile(l,k.getContext("2d"),i,f,h,j);$(c[g]).empty().append(k)})})})}});var ToolInputValOrSweepView=Backbone.View.extend({number_input_template:'<div class="form-row-input sweep"><input class="min" type="text" size="6" value="<%= min %>"> - <input class="max" type="text" size="6" value="<%= max %>"> samples: <input class="num_samples" type="text" size="1" value="<%= num_samples %>"></div>',select_input_template:'<div class="form-row-input sweep"><%= options %></div>',initialize:function(a){this.$el=a.tool_row;this.render()},render:function(){var b=this.model,f=b.get("type"),h=this.$el.find(".form-row-input"),d=null;h.find(":input").change(function(){b.set("value",$(this).val())});if(f==="number"){d=$(_.template(this.number_input_template,this.model.toJSON()))}else{if(f==="select"){var c=_.map(this.$el.find("select option"),function(i){return $(i).val()}),e=c.join(", ");d=$(_.template(this.select_input_template,{options:e}))}}d.insertAfter(h);var a=this,g=create_icon_buttons_menu([{title:"Add parameter to tree",icon_class:"plus-button",on_click:function(){b.set("in_ptree",true);h.hide();d.show();$(this).hide();a.$el.find(".icon-button.toggle").show()}},{title:"Remove parameter from tree",icon_class:"toggle",on_click:function(){b.set("in_ptree",false);d.hide();h.show();$(this).hide();a.$el.find(".icon-button.plus-button").show()}}],{tipsy_config:{gravity:"s"}});this.$el.prepend(g.$el);if(b.get("in_ptree")){h.hide();a.$el.find(".icon-button.plus-button").hide()}else{a.$el.find(".icon-button.toggle").hide();d.hide()}_.each(["min","max","num_samples"],function(i){d.find("."+i).change(function(){b.set(i,parseFloat($(this).val()))})})}});var ToolParameterTreeDesignView=Backbone.View.extend({className:"tree-design",initialize:function(a){this.render()},render:function(){var c=new ToolFormView({model:this.model.get("tool")});c.render();this.$el.append(c.$el);var b=this,a=b.model.get("tool").get("inputs");this.$el.find(".form-row").not(".form-actions").each(function(d){var e=new ToolInputValOrSweepView({model:a.at(d),tool_row:$(this)})})}});var ToolParameterTreeView=Backbone.View.extend({className:"tool-parameter-tree",initialize:function(a){this.model.on("change:tree_data",this.render,this)},render:function(){this.$el.children().remove();var i=this.model.get_tree_params();if(!i.length){return}this.width=100*(2+i.length);this.height=15*this.model.get_num_leaves();var h=this;var g=d3.layout.cluster().size([this.height,this.width-160]);var c=d3.svg.diagonal().projection(function(j){return[j.y,j.x]});var a=g.nodes(this.model.get("tree_data"));var d=_.uniq(_.pluck(a,"y"));_.each(i,function(l,k){var j=d[k+1];h.$el.append($("<div>").addClass("label").text(l.get("label")).css("left",j+250))});var b=d3.select(this.$el[0]).append("svg").attr("width",this.width).attr("height",this.height+20).append("g").attr("transform","translate(40, 10)");var f=b.selectAll("path.link").data(g.links(a)).enter().append("path").attr("class","link").attr("d",c);var e=b.selectAll("g.node").data(a).enter().append("g").attr("class","node").attr("transform",function(j){return"translate("+j.y+","+j.x+")"}).on("mouseover",function(k){var j=_.pluck(h.model.get_connected_nodes(k),"id");e.filter(function(l){return _.find(j,function(m){return m===l.id})!==undefined}).style("fill","#f00")}).on("mouseout",function(){e.style("fill","#000")});e.append("circle").attr("r",9);e.append("text").attr("dx",function(j){return j.children?-12:12}).attr("dy",3).attr("text-anchor",function(j){return j.children?"end":"start"}).text(function(j){return j.name})}});var ParamaMonsterVisualizationView=Backbone.View.extend({className:"paramamonster",initialize:function(b){this.canvas_manager=new CanvasManager(this.$el.parents("body"));this.tool_param_tree_view=new ToolParameterTreeView({model:this.model.get("parameter_tree")});this.track_collection_container=$("<table/>").addClass("tracks");this.model.get("parameter_tree").on("change:tree_data",this.handle_node_clicks,this);var a=this;this.model.get("tracks").each(function(c){c.get("track").view=a})},render:function(){var d=new ToolParameterTreeDesignView({model:this.model.get("parameter_tree")});$("#left").append(d.$el);var a=this,e=a.model.get("regions"),b=$("<tr/>").appendTo(this.track_collection_container);e.each(function(f){b.append($("<th>").text(f.toString()))});b.children().first().attr("colspan",2);var c=$("<div>").addClass("tiles");$("#right").append(c.append(this.track_collection_container));a.model.get("tracks").each(function(f){a.add_track(f)});this.tool_param_tree_view.render();$("#center").append(this.tool_param_tree_view.$el);this.handle_node_clicks()},run_tool_on_dataset:function(b){var a=this.model.get("tool"),d=a.get("name"),c=this.model.get("dataset");a.set_input_values(b.get("values"));$.when(a.rerun(c)).then(function(e){});show_modal("Running "+d+" on complete dataset",d+" is running on dataset '"+c.get("name")+"'. Outputs are in the dataset's history.",{Ok:function(){hide_modal()}})},add_track:function(d){var b=this,c=this.model.get("parameter_tree");b.model.add_track(d);var a=new ParamaMonsterTrackView({model:d,canvas_manager:b.canvas_manager});a.on("run_on_dataset",b.run_tool_on_dataset,b);b.track_collection_container.append(a.$el);a.$el.hover(function(){var f=c.get_leaf(d.get("settings").get("values"));var e=_.pluck(c.get_connected_nodes(f),"id");d3.select(b.tool_param_tree_view.$el[0]).selectAll("g.node").filter(function(g){return _.find(e,function(h){return h===g.id})!==undefined}).style("fill","#f00")},function(){d3.select(b.tool_param_tree_view.$el[0]).selectAll("g.node").style("fill","#000")});return d},handle_node_clicks:function(){var a=this,b=this.model.get("parameter_tree"),d=this.model.get("regions"),c=d3.select(this.tool_param_tree_view.$el[0]).selectAll("g.node");c.on("click",function(k,g){var f=a.model.get("tool"),j=a.model.get("dataset"),h=b.get_node_settings(k),e=$.Deferred();if(h.length>=10){show_modal("Whoa there cowboy!","You clicked on a node to try "+a.model.get("tool").get("name")+" with "+h.length+" different combinations of settings. You can only run 10 jobs at a time.",{Ok:function(){hide_modal();e.resolve(false)}})}else{e.resolve(true)}$.when(e).then(function(i){if(!i){return}var l=_.map(h,function(m){var n=new ParamaMonsterTrack({settings:m,regions:d});a.add_track(n);return n});_.each(l,function(n,m){setTimeout(function(){f.set_input_values(n.get("settings").get("values"));$.when(f.rerun(j,d)).then(function(p){var q=_.extend({data_url:galaxy_paths.get("raw_data_url"),converted_datasets_state_url:galaxy_paths.get("dataset_state_url")},p.first().get("track_config")),o=object_from_template(q,a,null);n.set("track",o)})},m*10000)})})})}});
\ No newline at end of file
diff -r 3965354dda0b11768ae0c8c1ff5c33313bf98ee4 -r f6b32f963f6114e8ee86853a6311836b8dd5cdd3 static/scripts/viz/paramamonster.js
--- a/static/scripts/viz/paramamonster.js
+++ b/static/scripts/viz/paramamonster.js
@@ -400,6 +400,7 @@
});
var self = this,
run_on_dataset_button = $('<button/>').appendTo(settings_div).text('Run on complete dataset').click(function() {
+ settings_div.toggle();
self.trigger('run_on_dataset', settings);
});
var icon_menu = create_icon_buttons_menu([
@@ -732,16 +733,17 @@
var tool = this.model.get('tool'),
tool_name = tool.get('name'),
dataset = this.model.get('dataset');
- tool.set_input_values(settings);
+ tool.set_input_values(settings.get('values'));
$.when(tool.rerun(dataset)).then(function(outputs) {
- console.log(outputs);
- show_modal('Running ' + tool_name + ' on complete dataset',
- tool_name + 'is running on dataset \'' +
- dataset.get('name') + '\' and is available in the dataset\'s history.',
+ // TODO.
+ });
+
+ show_modal('Running ' + tool_name + ' on complete dataset',
+ tool_name + ' is running on dataset \'' +
+ dataset.get('name') + '\'. Outputs are in the dataset\'s history.',
{
'Ok': function() { hide_modal(); }
});
- });
},
/**
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0

commit/galaxy-central: greg: Fixes for inspecting tool dependencies associated with a specified installed tool shed repository.
by Bitbucket 03 Jul '12
by Bitbucket 03 Jul '12
03 Jul '12
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/3965354dda0b/
changeset: 3965354dda0b
user: greg
date: 2012-07-03 17:38:48
summary: Fixes for inspecting tool dependencies associated with a specified installed tool shed repository.
affected #: 2 files
diff -r 8fd408407f7e48b917d14803c8ef61eaf10ca62c -r 3965354dda0b11768ae0c8c1ff5c33313bf98ee4 lib/galaxy/util/shed_util.py
--- a/lib/galaxy/util/shed_util.py
+++ b/lib/galaxy/util/shed_util.py
@@ -975,6 +975,16 @@
def get_tool_dependency( trans, id ):
"""Get a tool_dependency from the database via id"""
return trans.sa_session.query( trans.model.ToolDependency ).get( trans.security.decode_id( id ) )
+def get_tool_dependency_ids( as_string=False, **kwd ):
+ tool_dependency_id = kwd.get( 'tool_dependency_id', None )
+ tool_dependency_ids = util.listify( kwd.get( 'tool_dependency_ids', None ) )
+ if not tool_dependency_ids:
+ tool_dependency_ids = util.listify( kwd.get( 'id', None ) )
+ if tool_dependency_id and tool_dependency_id not in tool_dependency_ids:
+ tool_dependency_ids.append( tool_dependency_id )
+ if as_string:
+ return ','.join( tool_dependency_ids )
+ return tool_dependency_ids
def get_tool_panel_config_tool_path_install_dir( app, repository ):
# Return shed-related tool panel config, the tool_path configured in it, and the relative path to the directory where the
# repository is installed. This method assumes all repository tools are defined in a single shed-related tool panel config.
diff -r 8fd408407f7e48b917d14803c8ef61eaf10ca62c -r 3965354dda0b11768ae0c8c1ff5c33313bf98ee4 lib/galaxy/web/controllers/admin_toolshed.py
--- a/lib/galaxy/web/controllers/admin_toolshed.py
+++ b/lib/galaxy/web/controllers/admin_toolshed.py
@@ -262,7 +262,7 @@
model.ToolDependency.installation_status.ERROR ] ) )
]
def build_initial_query( self, trans, **kwd ):
- tool_dependency_ids = util.listify( kwd.get( 'tool_dependency_ids', None ) )
+ tool_dependency_ids = get_tool_dependency_ids( as_string=False, **kwd )
if tool_dependency_ids:
clause_list = []
for tool_dependency_id in tool_dependency_ids:
@@ -1067,12 +1067,7 @@
params = util.Params( kwd )
message = util.restore_text( params.get( 'message', '' ) )
status = params.get( 'status', 'done' )
- tool_dependency_id = params.get( 'tool_dependency_id', None )
- tool_dependency_ids = util.listify( params.get( 'tool_dependency_ids', None ) )
- if not tool_dependency_ids:
- tool_dependency_ids = util.listify( params.get( 'id', None ) )
- if tool_dependency_id and tool_dependency_id not in tool_dependency_ids:
- tool_dependency_ids.append( tool_dependency_id )
+ tool_dependency_ids = get_tool_dependency_ids( as_string=False, **kwd )
# We need a tool_shed_repository, so get it from one of the tool_dependencies.
tool_dependency = get_tool_dependency( trans, tool_dependency_ids[ 0 ] )
tool_shed_repository = tool_dependency.tool_shed_repository
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0

commit/galaxy-central: jgoecks: Bug fixes and enhancements for paramamonster.
by Bitbucket 03 Jul '12
by Bitbucket 03 Jul '12
03 Jul '12
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/8fd408407f7e/
changeset: 8fd408407f7e
user: jgoecks
date: 2012-07-03 17:20:10
summary: Bug fixes and enhancements for paramamonster.
affected #: 4 files
diff -r cf4b47cde5e5505a4f7fd1e9557ef4187ecea491 -r 8fd408407f7e48b917d14803c8ef61eaf10ca62c lib/galaxy/tools/__init__.py
--- a/lib/galaxy/tools/__init__.py
+++ b/lib/galaxy/tools/__init__.py
@@ -2643,9 +2643,19 @@
if isinstance( input, DataToolParameter ):
param_dict.update( { 'type' : 'data', 'html' : urllib.quote( input.get_html( trans ) ) } )
elif isinstance( input, SelectToolParameter ):
+ # Get options, value.
+ options = input.get_options( trans, [] )
+ value = options[0][1]
+ for option in options:
+ if option[2]:
+ # Found selected option.
+ value = option[1]
+
+ # Pack input.
param_dict.update( { 'type' : 'select',
'html' : urllib.quote( input.get_html( trans ) ),
- 'options': input.static_options
+ 'options': options,
+ 'value': value
} )
elif isinstance( input, Conditional ):
# TODO.
diff -r cf4b47cde5e5505a4f7fd1e9557ef4187ecea491 -r 8fd408407f7e48b917d14803c8ef61eaf10ca62c static/scripts/packed/viz/paramamonster.js
--- a/static/scripts/packed/viz/paramamonster.js
+++ b/static/scripts/packed/viz/paramamonster.js
@@ -1,1 +1,1 @@
-var ToolParameterTree=Backbone.RelationalModel.extend({defaults:{tool:null,tree_data:null},initialize:function(b){var a=this;this.get("tool").get("inputs").each(function(c){if(!c.get_samples()){return}c.on("change:min change:max change:num_samples",function(d){if(d.get("in_ptree")){a.set_tree_data()}},a);c.on("change:in_ptree",function(d){if(d.get("in_ptree")){a.add_param(d)}else{a.remove_param(d)}a.set_tree_data()},a)});if(b.config){_.each(b.config,function(d){var c=a.get("tool").get("inputs").find(function(e){return e.get("name")===d.name});a.add_param(c);c.set(d)})}},add_param:function(a){if(a.get("ptree_index")){return}a.set("in_ptree",true);a.set("ptree_index",this.get_tree_params().length)},remove_param:function(a){a.set("in_ptree",false);a.set("ptree_index",null);_(this.get_tree_params()).each(function(b,c){b.set("ptree_index",c+1)})},set_tree_data:function(){var b=_.map(this.get_tree_params(),function(d){return{param:d,samples:d.get_samples()}});var a=0,c=function(g,d){var i=g[d],h=i.param,f=h.get("label"),e=i.samples;if(g.length-1===d){return _.map(e,function(j){return{id:a++,name:j,param:h,value:j}})}return _.map(e,function(j){return{id:a++,name:j,param:h,value:j,children:c(g,d+1)}})};this.set("tree_data",{name:"Root",id:a++,children:(b.length!==0?c(b,0):null)})},get_tree_params:function(){return _(this.get("tool").get("inputs").where({in_ptree:true})).sortBy(function(a){return a.get("ptree_index")})},get_num_leaves:function(){return this.get_tree_params().reduce(function(a,b){return a*b.get_samples().length},1)},get_node_settings:function(d){var b=this.get("tool").get_inputs_dict();var e=d.parent;if(e){while(e.depth!==0){b[e.param.get("name")]=e.value;e=e.parent}}var a=function(g,f){if(g.param){f[g.param.get("name")]=g.value}if(!g.children){return f}else{return _.flatten(_.map(g.children,function(h){return a(h,_.clone(f))}))}},c=a(d,b);if(!_.isArray(c)){c=[c]}return c},get_connected_nodes:function(c){var d=function(e){if(!e.children){return e}else{return _.flatten([e,_.map(e.children,function(f){return d(f)})])}};var b=[],a=c.parent;while(a){b.push(a);a=a.parent}return _.flatten([b,d(c)])},get_leaf:function(b){var c=this.get("tree_data"),a=function(d){return _.find(d,function(e){return b[e.param.get("name")]===e.value})};while(c.children){c=a(c.children)}return c},toJSON:function(){return this.get_tree_params().map(function(a){return{name:a.get("name"),min:a.get("min"),max:a.get("max"),num_samples:a.get("num_samples")}})}});var ParamaMonsterTrack=Backbone.RelationalModel.extend({defaults:{track:null,settings:null,regions:null},relations:[{type:Backbone.HasMany,key:"regions",relatedModel:"GenomeRegion"}],initialize:function(a){if(a.track){var b=_.extend({data_url:galaxy_paths.get("raw_data_url"),converted_datasets_state_url:galaxy_paths.get("dataset_state_url")},a.track);delete b.mode;this.set("track",object_from_template(b,{},null))}},same_settings:function(a){var b=this.get("settings"),c=a.get("settings");for(var d in b){if(!c[d]||b[d]!==c[d]){return false}}return true},toJSON:function(){return{track:this.get("track").to_dict(),settings:this.get("settings"),regions:this.get("regions")}}});var TrackCollection=Backbone.Collection.extend({model:ParamaMonsterTrack});var ParamaMonsterVisualization=Visualization.extend({defaults:_.extend({},Visualization.prototype.defaults,{dataset:null,tool:null,parameter_tree:null,regions:null,tracks:null}),relations:[{type:Backbone.HasOne,key:"dataset",relatedModel:"Dataset"},{type:Backbone.HasOne,key:"tool",relatedModel:"Tool"},{type:Backbone.HasMany,key:"regions",relatedModel:"GenomeRegion"},{type:Backbone.HasMany,key:"tracks",relatedModel:"ParamaMonsterTrack"}],initialize:function(a){var b=this.get("tool").copy(true);this.set("tool_with_samplable_inputs",b);this.set("parameter_tree",new ToolParameterTree({tool:b,config:a.tree_config}))},add_placeholder:function(a){this.get("tracks").add(new PlaceholderTrack(a))},add_track:function(a){this.get("tracks").add(a)},toJSON:function(){return{id:this.get("id"),title:"Parameter exploration for dataset '"+this.get("dataset").get("name")+"'",type:"paramamonster",dataset_id:this.get("dataset").id,tool_id:this.get("tool").id,regions:this.get("regions").toJSON(),tree_config:this.get("parameter_tree").toJSON(),tracks:this.get("tracks").toJSON()}}});var ParamaMonsterTrackView=Backbone.View.extend({tagName:"tr",TILE_LEN:250,initialize:function(a){this.canvas_manager=a.canvas_manager;this.render();this.model.on("change:track",this.draw_tiles,this)},render:function(){var e=this.model.get("settings"),c=$("<td/>").addClass("settings").appendTo(this.$el),b=$("<div/>").addClass("track-info").hide().appendTo(c);b.append($("<div/>").css("font-weight","bold").text("Track Settings"));_.each(_.keys(e),function(g){b.append(g+": "+e[g]+"<br/>")});var a=this,f=$("<button/>").appendTo(b).text("Run on complete dataset").click(function(){a.trigger("run_on_dataset",e)});var d=create_icon_buttons_menu([{title:"Settings",icon_class:"gear track-settings",on_click:function(){b.toggle()},tipsy_config:{gravity:"s"}},{title:"Remove",icon_class:"cross-circle",on_click:function(){a.$el.remove();$(".tipsy").remove()}}]);c.prepend(d.$el);this.model.get("regions").each(function(){a.$el.append($("<td/>").addClass("tile").html($("<img/>").attr("src",galaxy_paths.get("image_path")+"/loading_large_white_bg.gif")))});if(this.model.get("track")){this.draw_tiles()}},draw_tiles:function(){var b=this,a=this.model.get("track"),d=this.model.get("regions"),c=this.$el.find("td.tile");$.when(a.data_manager.data_is_ready()).then(function(e){d.each(function(h,g){var f=h.length()/b.TILE_LEN,j=1/f,i="Pack";$.when(a.data_manager.get_data(h,i,f,{})).then(function(l){var k=b.canvas_manager.new_canvas();k.width=b.TILE_LEN;k.height=a.get_canvas_height(l,i,j,k.width);a.draw_tile(l,k.getContext("2d"),i,f,h,j);$(c[g]).empty().append(k)})})})}});var ToolInputValOrSweepView=Backbone.View.extend({number_input_template:'<div class="form-row-input sweep"><input class="min" type="text" size="6" value="<%= min %>"> - <input class="max" type="text" size="6" value="<%= max %>"> samples: <input class="num_samples" type="text" size="1" value="<%= num_samples %>"></div>',select_input_template:'<div class="form-row-input sweep"><%= options %></div>',initialize:function(a){this.$el=a.tool_row;this.render()},render:function(){var b=this.model,f=b.get("type"),h=this.$el.find(".form-row-input"),d=null;h.find("input").change(function(){b.set("value",$(this).val())});if(f==="number"){d=$(_.template(this.number_input_template,this.model.toJSON()))}else{if(f==="select"){var c=_.map(this.$el.find("select option"),function(i){return $(i).val()}),e=c.join(", ");d=$(_.template(this.select_input_template,{options:e}))}}d.insertAfter(h);if(b.get("in_ptree")){h.hide()}else{d.hide()}var a=this,g=create_icon_buttons_menu([{title:"Add parameter to tree",icon_class:"plus-button",on_click:function(){b.set("in_ptree",true);h.hide();d.show()}},{title:"Remove parameter from tree",icon_class:"toggle",on_click:function(){b.set("in_ptree",false);d.hide();h.show()}}],{tipsy_config:{gravity:"s"}});this.$el.prepend(g.$el);_.each(["min","max","num_samples"],function(i){d.find("."+i).change(function(){b.set(i,parseFloat($(this).val()))})})}});var ToolParameterTreeDesignView=Backbone.View.extend({className:"tree-design",initialize:function(a){this.render()},render:function(){var c=new ToolFormView({model:this.model.get("tool")});c.render();this.$el.append(c.$el);var b=this,a=b.model.get("tool").get("inputs");this.$el.find(".form-row").not(".form-actions").each(function(d){var e=new ToolInputValOrSweepView({model:a.at(d),tool_row:$(this)})})}});var ToolParameterTreeView=Backbone.View.extend({className:"tool-parameter-tree",initialize:function(a){this.model.on("change:tree_data",this.render,this)},render:function(){this.$el.children().remove();var i=this.model.get_tree_params();if(!i.length){return}this.width=100*(2+i.length);this.height=15*this.model.get_num_leaves();var h=this;var g=d3.layout.cluster().size([this.height,this.width-160]);var c=d3.svg.diagonal().projection(function(j){return[j.y,j.x]});var a=g.nodes(this.model.get("tree_data"));var d=_.uniq(_.pluck(a,"y"));_.each(i,function(l,k){var j=d[k+1];h.$el.append($("<div>").addClass("label").text(l.get("label")).css("left",j+250))});var b=d3.select(this.$el[0]).append("svg").attr("width",this.width).attr("height",this.height+20).append("g").attr("transform","translate(40, 10)");var f=b.selectAll("path.link").data(g.links(a)).enter().append("path").attr("class","link").attr("d",c);var e=b.selectAll("g.node").data(a).enter().append("g").attr("class","node").attr("transform",function(j){return"translate("+j.y+","+j.x+")"}).on("mouseover",function(k){var j=_.pluck(h.model.get_connected_nodes(k),"id");e.filter(function(l){return _.find(j,function(m){return m===l.id})!==undefined}).style("fill","#f00")}).on("mouseout",function(){e.style("fill","#000")});e.append("circle").attr("r",9);e.append("text").attr("dx",function(j){return j.children?-12:12}).attr("dy",3).attr("text-anchor",function(j){return j.children?"end":"start"}).text(function(j){return j.name})}});var ParamaMonsterVisualizationView=Backbone.View.extend({className:"paramamonster",initialize:function(b){this.canvas_manager=new CanvasManager(this.$el.parents("body"));this.tool_param_tree_view=new ToolParameterTreeView({model:this.model.get("parameter_tree")});this.track_collection_container=$("<table/>").addClass("tracks");this.model.get("parameter_tree").on("change:tree_data",this.handle_node_clicks,this);var a=this;this.model.get("tracks").each(function(c){c.get("track").view=a})},render:function(){var d=new ToolParameterTreeDesignView({model:this.model.get("parameter_tree")});$("#left").append(d.$el);var a=this,e=a.model.get("regions"),b=$("<tr/>").appendTo(this.track_collection_container);e.each(function(f){b.append($("<th>").text(f.toString()))});b.children().first().attr("colspan",2);var c=$("<div>").addClass("tiles");$("#right").append(c.append(this.track_collection_container));a.model.get("tracks").each(function(f){a.add_track(f)});this.tool_param_tree_view.render();$("#center").append(this.tool_param_tree_view.$el);this.handle_node_clicks()},run_tool_on_dataset:function(b){var a=this.model.get("tool"),c=this.model.get("dataset");a.set_input_values(b);$.when(a.rerun(c)).then(function(d){})},add_track:function(d){var b=this,c=this.model.get("parameter_tree");b.model.add_track(d);var a=new ParamaMonsterTrackView({model:d,canvas_manager:b.canvas_manager});a.on("run_on_dataset",b.run_tool_on_dataset,b);b.track_collection_container.append(a.$el);a.$el.hover(function(){var f=c.get_leaf(d.get("settings"));var e=_.pluck(c.get_connected_nodes(f),"id");d3.select(b.tool_param_tree_view.$el[0]).selectAll("g.node").filter(function(g){return _.find(e,function(h){return h===g.id})!==undefined}).style("fill","#f00")},function(){d3.select(b.tool_param_tree_view.$el[0]).selectAll("g.node").style("fill","#000")});return d},handle_node_clicks:function(){var a=this,b=this.model.get("parameter_tree"),d=this.model.get("regions"),c=d3.select(this.tool_param_tree_view.$el[0]).selectAll("g.node");c.on("click",function(k,g){var f=a.model.get("tool"),j=a.model.get("dataset"),h=b.get_node_settings(k),e=$.Deferred();if(h.length>=10){show_modal("Whoa there cowboy!","You clicked on a node to try "+a.model.get("tool").get("name")+" with "+h.length+" different combinations of settings. You can only run 10 jobs at a time.",{Ok:function(){hide_modal();e.resolve(false)}})}else{e.resolve(true)}$.when(e).then(function(i){if(!i){return}var l=_.map(h,function(m){var n=new ParamaMonsterTrack({settings:m,regions:d});a.add_track(n);return n});_.each(l,function(n,m){setTimeout(function(){f.set_input_values(n.get("settings"));$.when(f.rerun(j,d)).then(function(p){var q=_.extend({data_url:galaxy_paths.get("raw_data_url"),converted_datasets_state_url:galaxy_paths.get("dataset_state_url")},p.first().get("track_config")),o=object_from_template(q,a,null);n.set("track",o)})},m*10000)})})})}});
\ No newline at end of file
+var ToolInputsSettings=Backbone.Model.extend({defaults:{inputs:null,values:null}});var ToolParameterTree=Backbone.RelationalModel.extend({defaults:{tool:null,tree_data:null},initialize:function(b){var a=this;this.get("tool").get("inputs").each(function(c){if(!c.get_samples()){return}c.on("change:min change:max change:num_samples",function(d){if(d.get("in_ptree")){a.set_tree_data()}},a);c.on("change:in_ptree",function(d){if(d.get("in_ptree")){a.add_param(d)}else{a.remove_param(d)}a.set_tree_data()},a)});if(b.config){_.each(b.config,function(d){var c=a.get("tool").get("inputs").find(function(e){return e.get("name")===d.name});a.add_param(c);c.set(d)})}},add_param:function(a){if(a.get("ptree_index")){return}a.set("in_ptree",true);a.set("ptree_index",this.get_tree_params().length)},remove_param:function(a){a.set("in_ptree",false);a.set("ptree_index",null);_(this.get_tree_params()).each(function(b,c){b.set("ptree_index",c+1)})},set_tree_data:function(){var b=_.map(this.get_tree_params(),function(d){return{param:d,samples:d.get_samples()}});var a=0,c=function(g,d){var i=g[d],h=i.param,f=h.get("label"),e=i.samples;if(g.length-1===d){return _.map(e,function(j){return{id:a++,name:j,param:h,value:j}})}return _.map(e,function(j){return{id:a++,name:j,param:h,value:j,children:c(g,d+1)}})};this.set("tree_data",{name:"Root",id:a++,children:(b.length!==0?c(b,0):null)})},get_tree_params:function(){return _(this.get("tool").get("inputs").where({in_ptree:true})).sortBy(function(a){return a.get("ptree_index")})},get_num_leaves:function(){return this.get_tree_params().reduce(function(a,b){return a*b.get_samples().length},1)},get_node_settings:function(e){var c=this.get("tool").get_inputs_dict();var f=e.parent;if(f){while(f.depth!==0){c[f.param.get("name")]=f.value;f=f.parent}}var a=this,b=function(h,g){if(h.param){g[h.param.get("name")]=h.value}if(!h.children){return new ToolInputsSettings({inputs:a.get("tool").get("inputs"),values:g})}else{return _.flatten(_.map(h.children,function(i){return b(i,_.clone(g))}))}},d=b(e,c);if(!_.isArray(d)){d=[d]}return d},get_connected_nodes:function(c){var d=function(e){if(!e.children){return e}else{return _.flatten([e,_.map(e.children,function(f){return d(f)})])}};var b=[],a=c.parent;while(a){b.push(a);a=a.parent}return _.flatten([b,d(c)])},get_leaf:function(b){var c=this.get("tree_data"),a=function(d){return _.find(d,function(e){return b[e.param.get("name")]===e.value})};while(c.children){c=a(c.children)}return c},toJSON:function(){return this.get_tree_params().map(function(a){return{name:a.get("name"),min:a.get("min"),max:a.get("max"),num_samples:a.get("num_samples")}})}});var ParamaMonsterTrack=Backbone.RelationalModel.extend({defaults:{track:null,settings:null,regions:null},relations:[{type:Backbone.HasMany,key:"regions",relatedModel:"GenomeRegion"}],initialize:function(a){if(a.track){var b=_.extend({data_url:galaxy_paths.get("raw_data_url"),converted_datasets_state_url:galaxy_paths.get("dataset_state_url")},a.track);delete b.mode;this.set("track",object_from_template(b,{},null))}},same_settings:function(a){var b=this.get("settings"),c=a.get("settings");for(var d in b){if(!c[d]||b[d]!==c[d]){return false}}return true},toJSON:function(){return{track:this.get("track").to_dict(),settings:this.get("settings"),regions:this.get("regions")}}});var TrackCollection=Backbone.Collection.extend({model:ParamaMonsterTrack});var ParamaMonsterVisualization=Visualization.extend({defaults:_.extend({},Visualization.prototype.defaults,{dataset:null,tool:null,parameter_tree:null,regions:null,tracks:null}),relations:[{type:Backbone.HasOne,key:"dataset",relatedModel:"Dataset"},{type:Backbone.HasOne,key:"tool",relatedModel:"Tool"},{type:Backbone.HasMany,key:"regions",relatedModel:"GenomeRegion"},{type:Backbone.HasMany,key:"tracks",relatedModel:"ParamaMonsterTrack"}],initialize:function(a){var b=this.get("tool").copy(true);this.set("tool_with_samplable_inputs",b);this.set("parameter_tree",new ToolParameterTree({tool:b,config:a.tree_config}))},add_placeholder:function(a){this.get("tracks").add(new PlaceholderTrack(a))},add_track:function(a){this.get("tracks").add(a)},toJSON:function(){return{id:this.get("id"),title:"Parameter exploration for dataset '"+this.get("dataset").get("name")+"'",type:"paramamonster",dataset_id:this.get("dataset").id,tool_id:this.get("tool").id,regions:this.get("regions").toJSON(),tree_config:this.get("parameter_tree").toJSON(),tracks:this.get("tracks").toJSON()}}});var ParamaMonsterTrackView=Backbone.View.extend({tagName:"tr",TILE_LEN:250,initialize:function(a){this.canvas_manager=a.canvas_manager;this.render();this.model.on("change:track",this.draw_tiles,this)},render:function(){var f=this.model.get("settings"),b=f.get("values"),d=$("<td/>").addClass("settings").appendTo(this.$el),c=$("<div/>").addClass("track-info").hide().appendTo(d);c.append($("<div/>").css("font-weight","bold").text("Track Settings"));f.get("inputs").each(function(h){c.append(h.get("label")+": "+b[h.get("name")]+"<br/>")});var a=this,g=$("<button/>").appendTo(c).text("Run on complete dataset").click(function(){a.trigger("run_on_dataset",f)});var e=create_icon_buttons_menu([{title:"Settings",icon_class:"gear track-settings",on_click:function(){c.toggle()},tipsy_config:{gravity:"s"}},{title:"Remove",icon_class:"cross-circle",on_click:function(){a.$el.remove();$(".tipsy").remove()}}]);d.prepend(e.$el);this.model.get("regions").each(function(){a.$el.append($("<td/>").addClass("tile").html($("<img/>").attr("src",galaxy_paths.get("image_path")+"/loading_large_white_bg.gif")))});if(this.model.get("track")){this.draw_tiles()}},draw_tiles:function(){var b=this,a=this.model.get("track"),d=this.model.get("regions"),c=this.$el.find("td.tile");$.when(a.data_manager.data_is_ready()).then(function(e){d.each(function(h,g){var f=h.length()/b.TILE_LEN,j=1/f,i="Pack";$.when(a.data_manager.get_data(h,i,f,{})).then(function(l){var k=b.canvas_manager.new_canvas();k.width=b.TILE_LEN;k.height=a.get_canvas_height(l,i,j,k.width);a.draw_tile(l,k.getContext("2d"),i,f,h,j);$(c[g]).empty().append(k)})})})}});var ToolInputValOrSweepView=Backbone.View.extend({number_input_template:'<div class="form-row-input sweep"><input class="min" type="text" size="6" value="<%= min %>"> - <input class="max" type="text" size="6" value="<%= max %>"> samples: <input class="num_samples" type="text" size="1" value="<%= num_samples %>"></div>',select_input_template:'<div class="form-row-input sweep"><%= options %></div>',initialize:function(a){this.$el=a.tool_row;this.render()},render:function(){var b=this.model,f=b.get("type"),h=this.$el.find(".form-row-input"),d=null;h.find(":input").change(function(){b.set("value",$(this).val())});if(f==="number"){d=$(_.template(this.number_input_template,this.model.toJSON()))}else{if(f==="select"){var c=_.map(this.$el.find("select option"),function(i){return $(i).val()}),e=c.join(", ");d=$(_.template(this.select_input_template,{options:e}))}}d.insertAfter(h);var a=this,g=create_icon_buttons_menu([{title:"Add parameter to tree",icon_class:"plus-button",on_click:function(){b.set("in_ptree",true);h.hide();d.show();$(this).hide();a.$el.find(".icon-button.toggle").show()}},{title:"Remove parameter from tree",icon_class:"toggle",on_click:function(){b.set("in_ptree",false);d.hide();h.show();$(this).hide();a.$el.find(".icon-button.plus-button").show()}}],{tipsy_config:{gravity:"s"}});this.$el.prepend(g.$el);if(b.get("in_ptree")){h.hide();a.$el.find(".icon-button.plus-button").hide()}else{a.$el.find(".icon-button.toggle").hide();d.hide()}_.each(["min","max","num_samples"],function(i){d.find("."+i).change(function(){b.set(i,parseFloat($(this).val()))})})}});var ToolParameterTreeDesignView=Backbone.View.extend({className:"tree-design",initialize:function(a){this.render()},render:function(){var c=new ToolFormView({model:this.model.get("tool")});c.render();this.$el.append(c.$el);var b=this,a=b.model.get("tool").get("inputs");this.$el.find(".form-row").not(".form-actions").each(function(d){var e=new ToolInputValOrSweepView({model:a.at(d),tool_row:$(this)})})}});var ToolParameterTreeView=Backbone.View.extend({className:"tool-parameter-tree",initialize:function(a){this.model.on("change:tree_data",this.render,this)},render:function(){this.$el.children().remove();var i=this.model.get_tree_params();if(!i.length){return}this.width=100*(2+i.length);this.height=15*this.model.get_num_leaves();var h=this;var g=d3.layout.cluster().size([this.height,this.width-160]);var c=d3.svg.diagonal().projection(function(j){return[j.y,j.x]});var a=g.nodes(this.model.get("tree_data"));var d=_.uniq(_.pluck(a,"y"));_.each(i,function(l,k){var j=d[k+1];h.$el.append($("<div>").addClass("label").text(l.get("label")).css("left",j+250))});var b=d3.select(this.$el[0]).append("svg").attr("width",this.width).attr("height",this.height+20).append("g").attr("transform","translate(40, 10)");var f=b.selectAll("path.link").data(g.links(a)).enter().append("path").attr("class","link").attr("d",c);var e=b.selectAll("g.node").data(a).enter().append("g").attr("class","node").attr("transform",function(j){return"translate("+j.y+","+j.x+")"}).on("mouseover",function(k){var j=_.pluck(h.model.get_connected_nodes(k),"id");e.filter(function(l){return _.find(j,function(m){return m===l.id})!==undefined}).style("fill","#f00")}).on("mouseout",function(){e.style("fill","#000")});e.append("circle").attr("r",9);e.append("text").attr("dx",function(j){return j.children?-12:12}).attr("dy",3).attr("text-anchor",function(j){return j.children?"end":"start"}).text(function(j){return j.name})}});var ParamaMonsterVisualizationView=Backbone.View.extend({className:"paramamonster",initialize:function(b){this.canvas_manager=new CanvasManager(this.$el.parents("body"));this.tool_param_tree_view=new ToolParameterTreeView({model:this.model.get("parameter_tree")});this.track_collection_container=$("<table/>").addClass("tracks");this.model.get("parameter_tree").on("change:tree_data",this.handle_node_clicks,this);var a=this;this.model.get("tracks").each(function(c){c.get("track").view=a})},render:function(){var d=new ToolParameterTreeDesignView({model:this.model.get("parameter_tree")});$("#left").append(d.$el);var a=this,e=a.model.get("regions"),b=$("<tr/>").appendTo(this.track_collection_container);e.each(function(f){b.append($("<th>").text(f.toString()))});b.children().first().attr("colspan",2);var c=$("<div>").addClass("tiles");$("#right").append(c.append(this.track_collection_container));a.model.get("tracks").each(function(f){a.add_track(f)});this.tool_param_tree_view.render();$("#center").append(this.tool_param_tree_view.$el);this.handle_node_clicks()},run_tool_on_dataset:function(b){var a=this.model.get("tool"),d=a.get("name"),c=this.model.get("dataset");a.set_input_values(b);$.when(a.rerun(c)).then(function(e){console.log(e);show_modal("Running "+d+" on complete dataset",d+"is running on dataset '"+c.get("name")+"' and is available in the dataset's history.",{Ok:function(){hide_modal()}})})},add_track:function(d){var b=this,c=this.model.get("parameter_tree");b.model.add_track(d);var a=new ParamaMonsterTrackView({model:d,canvas_manager:b.canvas_manager});a.on("run_on_dataset",b.run_tool_on_dataset,b);b.track_collection_container.append(a.$el);a.$el.hover(function(){var f=c.get_leaf(d.get("settings").get("values"));var e=_.pluck(c.get_connected_nodes(f),"id");d3.select(b.tool_param_tree_view.$el[0]).selectAll("g.node").filter(function(g){return _.find(e,function(h){return h===g.id})!==undefined}).style("fill","#f00")},function(){d3.select(b.tool_param_tree_view.$el[0]).selectAll("g.node").style("fill","#000")});return d},handle_node_clicks:function(){var a=this,b=this.model.get("parameter_tree"),d=this.model.get("regions"),c=d3.select(this.tool_param_tree_view.$el[0]).selectAll("g.node");c.on("click",function(k,g){var f=a.model.get("tool"),j=a.model.get("dataset"),h=b.get_node_settings(k),e=$.Deferred();if(h.length>=10){show_modal("Whoa there cowboy!","You clicked on a node to try "+a.model.get("tool").get("name")+" with "+h.length+" different combinations of settings. You can only run 10 jobs at a time.",{Ok:function(){hide_modal();e.resolve(false)}})}else{e.resolve(true)}$.when(e).then(function(i){if(!i){return}var l=_.map(h,function(m){var n=new ParamaMonsterTrack({settings:m,regions:d});a.add_track(n);return n});_.each(l,function(n,m){setTimeout(function(){f.set_input_values(n.get("settings").get("values"));$.when(f.rerun(j,d)).then(function(p){var q=_.extend({data_url:galaxy_paths.get("raw_data_url"),converted_datasets_state_url:galaxy_paths.get("dataset_state_url")},p.first().get("track_config")),o=object_from_template(q,a,null);n.set("track",o)})},m*10000)})})})}});
\ No newline at end of file
diff -r cf4b47cde5e5505a4f7fd1e9557ef4187ecea491 -r 8fd408407f7e48b917d14803c8ef61eaf10ca62c static/scripts/viz/paramamonster.js
--- a/static/scripts/viz/paramamonster.js
+++ b/static/scripts/viz/paramamonster.js
@@ -2,6 +2,17 @@
* Visualization and components for ParamaMonster, a visualization for exploring a tool's parameter space via
* genomic visualization.
*/
+
+/**
+ * A collection of tool input settings. Object is useful for keeping a list of settings
+ * for future use without changing the input's value and for preserving inputs order.
+ */
+var ToolInputsSettings = Backbone.Model.extend({
+ defaults: {
+ inputs: null,
+ values: null
+ }
+});
/**
* Tree for a tool's parameters.
@@ -131,7 +142,7 @@
},
/**
- * Returns array of settings based on a node and its subtree.
+ * Returns array of ToolInputsSettings objects based on a node and its subtree.
*/
get_node_settings: function(target_node) {
// -- Get fixed settings from tool and parent nodes.
@@ -149,7 +160,8 @@
}
// Walk subtree starting at clicked node to get full list of settings.
- var get_settings = function(node, settings) {
+ var self = this,
+ get_settings = function(node, settings) {
// Add setting for this node. Root node does not have a param,
// however.
if (node.param) {
@@ -157,8 +169,11 @@
}
if (!node.children) {
- // At leaf node: add param setting and return.
- return settings;
+ // At leaf node, so return settings.
+ return new ToolInputsSettings({
+ inputs: self.get('tool').get('inputs'),
+ values: settings
+ });
}
else {
// At interior node: return list of subtree settings.
@@ -376,11 +391,12 @@
// Render settings icon and popup.
// TODO: use template.
var settings = this.model.get('settings'),
+ values = settings.get('values'),
settings_td = $('<td/>').addClass('settings').appendTo(this.$el),
settings_div = $('<div/>').addClass('track-info').hide().appendTo(settings_td);
settings_div.append( $('<div/>').css('font-weight', 'bold').text('Track Settings') );
- _.each(_.keys(settings), function(name) {
- settings_div.append( name + ': ' + settings[name] + '<br/>');
+ settings.get('inputs').each(function(input) {
+ settings_div.append( input.get('label') + ': ' + values[input.get('name')] + '<br/>');
});
var self = this,
run_on_dataset_button = $('<button/>').appendTo(settings_div).text('Run on complete dataset').click(function() {
@@ -472,7 +488,7 @@
sweep_inputs_row = null;
// Update tool inputs as single input changes.
- single_input_row.find('input').change(function() {
+ single_input_row.find(':input').change(function() {
input.set('value', $(this).val());
});
@@ -489,19 +505,8 @@
options: options_text
}));
}
-
sweep_inputs_row.insertAfter(single_input_row);
- if (input.get('in_ptree')) {
- single_input_row.hide();
- }
- else {
- sweep_inputs_row.hide();
- }
-
- // Fow now, assume parameter is included in tree to start.
-
-
// Add buttons for adding/removing parameter.
var self = this,
menu = create_icon_buttons_menu([
@@ -512,6 +517,8 @@
input.set('in_ptree', true);
single_input_row.hide();
sweep_inputs_row.show();
+ $(this).hide();
+ self.$el.find('.icon-button.toggle').show();
}
},
@@ -523,6 +530,8 @@
input.set('in_ptree', false);
sweep_inputs_row.hide();
single_input_row.show();
+ $(this).hide();
+ self.$el.find('.icon-button.plus-button').show();
}
}
],
@@ -531,6 +540,16 @@
});
this.$el.prepend(menu.$el);
+ // Show/hide input rows and icons depending on whether parameter is in the tree.
+ if (input.get('in_ptree')) {
+ single_input_row.hide();
+ self.$el.find('.icon-button.plus-button').hide();
+ }
+ else {
+ self.$el.find('.icon-button.toggle').hide();
+ sweep_inputs_row.hide();
+ }
+
// Update input's min, max, number of samples as values change.
_.each(['min', 'max', 'num_samples'], function(attr) {
sweep_inputs_row.find('.' + attr).change(function() {
@@ -711,10 +730,17 @@
run_tool_on_dataset: function(settings) {
var tool = this.model.get('tool'),
+ tool_name = tool.get('name'),
dataset = this.model.get('dataset');
tool.set_input_values(settings);
$.when(tool.rerun(dataset)).then(function(outputs) {
- // TODO: show modal with information about how to get to datasets.
+ console.log(outputs);
+ show_modal('Running ' + tool_name + ' on complete dataset',
+ tool_name + 'is running on dataset \'' +
+ dataset.get('name') + '\' and is available in the dataset\'s history.',
+ {
+ 'Ok': function() { hide_modal(); }
+ });
});
},
@@ -732,7 +758,7 @@
track_view.on('run_on_dataset', self.run_tool_on_dataset, self);
self.track_collection_container.append(track_view.$el);
track_view.$el.hover(function() {
- var settings_leaf = param_tree.get_leaf(pm_track.get('settings'));
+ var settings_leaf = param_tree.get_leaf(pm_track.get('settings').get('values'));
var connected_node_ids = _.pluck(param_tree.get_connected_nodes(settings_leaf), 'id');
// TODO: can do faster with enter?
@@ -793,7 +819,7 @@
setTimeout(function() {
// Set inputs and run tool.
// console.log('running with settings', pm_track.get('settings'));
- tool.set_input_values(pm_track.get('settings'));
+ tool.set_input_values(pm_track.get('settings').get('values'));
$.when(tool.rerun(dataset, regions)).then(function(output) {
// Create and add track for output dataset.
var track_config = _.extend({
diff -r cf4b47cde5e5505a4f7fd1e9557ef4187ecea491 -r 8fd408407f7e48b917d14803c8ef61eaf10ca62c templates/visualization/paramamonster.mako
--- a/templates/visualization/paramamonster.mako
+++ b/templates/visualization/paramamonster.mako
@@ -103,7 +103,8 @@
${parent.javascripts()}
${h.templates( "tool_link", "panel_section", "tool_search", "tool_form" )}
- ${h.js( "libs/d3", "mvc/data", "mvc/tools", "viz/visualization", "viz/paramamonster", "viz/trackster", "viz/trackster_ui", "jquery.ui.sortable.slider" )}
+ ${h.js( "libs/d3", "mvc/data", "mvc/tools", "viz/visualization", "viz/paramamonster",
+ "viz/trackster", "viz/trackster_ui", "jquery.ui.sortable.slider" )}
<script type="text/javascript">
var viz;
@@ -118,6 +119,7 @@
$('.unified-panel-body').append(viz_view.$el);
// -- Menu set up. --
+ /*
var menu = create_icon_buttons_menu([
{ icon_class: 'disk--arrow', title: 'Save', on_click: function() {
// Show saving dialog box
@@ -145,6 +147,7 @@
menu.$el.attr("style", "float: right");
$("#right .unified-panel-header-inner").append(menu.$el);
+ */
});
</script></%def>
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0

03 Jul '12
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/cf4b47cde5e5/
changeset: cf4b47cde5e5
user: greg
date: 2012-07-03 16:47:50
summary: Fixes for finding installed tool dependencies.
affected #: 2 files
diff -r bd24fd95ae9726e789d314bac2433ed07d0e1abe -r cf4b47cde5e5505a4f7fd1e9557ef4187ecea491 lib/galaxy/tools/__init__.py
--- a/lib/galaxy/tools/__init__.py
+++ b/lib/galaxy/tools/__init__.py
@@ -2358,7 +2358,7 @@
"""
commands = []
if self.tool_shed_repository:
- installed_tool_dependencies = self.tool_shed_repository.tool_dependencies
+ installed_tool_dependencies = self.tool_shed_repository.installed_tool_dependencies
else:
installed_tool_dependencies = None
for requirement in self.requirements:
@@ -2371,8 +2371,6 @@
version=requirement.version,
type=requirement.type,
installed_tool_dependencies=installed_tool_dependencies )
- if requirement.type == 'package':
- script_file, base_path, version = self.app.toolbox.dependency_manager.find_dep( requirement.name, requirement.version )
if script_file is None and base_path is None:
log.warn( "Failed to resolve dependency on '%s', ignoring", requirement.name )
elif script_file is None:
diff -r bd24fd95ae9726e789d314bac2433ed07d0e1abe -r cf4b47cde5e5505a4f7fd1e9557ef4187ecea491 lib/galaxy/tools/deps/__init__.py
--- a/lib/galaxy/tools/deps/__init__.py
+++ b/lib/galaxy/tools/deps/__init__.py
@@ -45,10 +45,9 @@
installed_dependency = None
if installed_tool_dependencies:
for installed_tool_dependency in installed_tool_dependencies:
- if not installed_tool_dependency.uninstalled:
- if installed_tool_dependency.name==name and installed_tool_dependency.version==version and installed_tool_dependency.type==type:
- installed_dependency = installed_tool_dependency
- break
+ if installed_tool_dependency.name==name and installed_tool_dependency.version==version and installed_tool_dependency.type==type:
+ installed_dependency = installed_tool_dependency
+ break
for base_path in self.base_paths:
if installed_dependency:
tool_shed_repository = installed_dependency.tool_shed_repository
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0

commit/galaxy-central: greg: Template bug fix introduced in my last change set.
by Bitbucket 03 Jul '12
by Bitbucket 03 Jul '12
03 Jul '12
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/bd24fd95ae97/
changeset: bd24fd95ae97
user: greg
date: 2012-07-03 16:19:00
summary: Template bug fix introduced in my last change set.
affected #: 1 file
diff -r b1cdad4c77fa52d939901b1afb56f910f0753088 -r bd24fd95ae9726e789d314bac2433ed07d0e1abe templates/admin/tool_shed_repository/tool_dependency_installation_status.mako
--- a/templates/admin/tool_shed_repository/tool_dependency_installation_status.mako
+++ b/templates/admin/tool_shed_repository/tool_dependency_installation_status.mako
@@ -10,7 +10,7 @@
elif tool_dependency.status in [ trans.model.ToolDependency.installation_status.INSTALLED ]:
bgcolor = trans.model.ToolDependency.states.OK
rval = '<div class="count-box state-color-%s" id="ToolDependencyStatus-%s">%s</div>' % \
- ( bgcolor, trans.security.encode_id( tool_dependency.id, tool_dependency.status ) )
+ ( bgcolor, trans.security.encode_id( tool_dependency.id ), tool_dependency.status )
return rval
%>
${rval}
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0

commit/galaxy-central: greg: Miscellaneous code cleanup related to monitoring tool shed repository installation.
by Bitbucket 03 Jul '12
by Bitbucket 03 Jul '12
03 Jul '12
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/changeset/b1cdad4c77fa/
changeset: b1cdad4c77fa
user: greg
date: 2012-07-03 15:55:51
summary: Miscellaneous code cleanup related to monitoring tool shed repository installation.
affected #: 3 files
diff -r 951ba799c0b020ae9d90f55435a30e19039f51fb -r b1cdad4c77fa52d939901b1afb56f910f0753088 lib/galaxy/web/base/controller.py
--- a/lib/galaxy/web/base/controller.py
+++ b/lib/galaxy/web/base/controller.py
@@ -1557,20 +1557,7 @@
status = kwd.get( 'status', 'done' )
if webapp == 'galaxy':
installed_repositories = trans.sa_session.query( trans.model.ToolShedRepository ).first()
- installing_repository_ids = []
- new_status = trans.model.ToolShedRepository.installation_status.NEW
- cloning_status = trans.model.ToolShedRepository.installation_status.CLONING
- setting_tool_versions_status = trans.model.ToolShedRepository.installation_status.SETTING_TOOL_VERSIONS
- installing_dependencies_status = trans.model.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES
- loading_datatypes_status = trans.model.ToolShedRepository.installation_status.LOADING_PROPRIETARY_DATATYPES
- for tool_shed_repository in trans.sa_session.query( trans.model.ToolShedRepository ) \
- .filter( or_( trans.model.ToolShedRepository.status == new_status,
- trans.model.ToolShedRepository.status == cloning_status,
- trans.model.ToolShedRepository.status == setting_tool_versions_status,
- trans.model.ToolShedRepository.status == installing_dependencies_status,
- trans.model.ToolShedRepository.status == loading_datatypes_status ) ):
- installing_repository_ids.append( trans.security.encode_id( tool_shed_repository.id ) )
- installing_repository_ids = ','.join( installing_repository_ids )
+ installing_repository_ids = get_ids_of_tool_shed_repositories_being_installed( trans, as_string=True )
return trans.fill_template( '/webapps/galaxy/admin/index.mako',
webapp=webapp,
installed_repositories=installed_repositories,
@@ -2675,6 +2662,24 @@
## ---- Utility methods -------------------------------------------------------
+def get_ids_of_tool_shed_repositories_being_installed( trans, as_string=False ):
+ installing_repository_ids = []
+ new_status = trans.model.ToolShedRepository.installation_status.NEW
+ cloning_status = trans.model.ToolShedRepository.installation_status.CLONING
+ setting_tool_versions_status = trans.model.ToolShedRepository.installation_status.SETTING_TOOL_VERSIONS
+ installing_dependencies_status = trans.model.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES
+ loading_datatypes_status = trans.model.ToolShedRepository.installation_status.LOADING_PROPRIETARY_DATATYPES
+ for tool_shed_repository in trans.sa_session.query( trans.model.ToolShedRepository ) \
+ .filter( or_( trans.model.ToolShedRepository.status == new_status,
+ trans.model.ToolShedRepository.status == cloning_status,
+ trans.model.ToolShedRepository.status == setting_tool_versions_status,
+ trans.model.ToolShedRepository.status == installing_dependencies_status,
+ trans.model.ToolShedRepository.status == loading_datatypes_status ) ):
+ installing_repository_ids.append( trans.security.encode_id( tool_shed_repository.id ) )
+ if as_string:
+ return ','.join( installing_repository_ids )
+ return installing_repository_ids
+
def get_user( trans, user_id ):
"""Get a User from the database by id."""
user = trans.sa_session.query( trans.model.User ).get( trans.security.decode_id( user_id ) )
diff -r 951ba799c0b020ae9d90f55435a30e19039f51fb -r b1cdad4c77fa52d939901b1afb56f910f0753088 lib/galaxy/web/controllers/admin_toolshed.py
--- a/lib/galaxy/web/controllers/admin_toolshed.py
+++ b/lib/galaxy/web/controllers/admin_toolshed.py
@@ -140,8 +140,8 @@
bgcolor = trans.model.ToolShedRepository.states.OK
else:
bgcolor = trans.model.ToolShedRepository.states.ERROR
- rval = '<div class="count-box state-color-%s" id="RepositoryStatus-%s">' % ( bgcolor, trans.security.encode_id( tool_shed_repository.id ) )
- rval += '%s</div>' % tool_shed_repository.status
+ rval = '<div class="count-box state-color-%s" id="RepositoryStatus-%s">%s</div>' % \
+ ( bgcolor, trans.security.encode_id( tool_shed_repository.id ), tool_shed_repository.status )
return rval
webapp = "galaxy"
@@ -170,7 +170,8 @@
RevisionColumn( "Revision",
filterable="advanced" ),
StatusColumn( "Installation Status",
- filterable="advanced" ),
+ filterable="advanced",
+ label_id_prefix="RepositoryStatus-" )
]
operations = []
def build_initial_query( self, trans, **kwd ):
@@ -1149,18 +1150,7 @@
if tsrid and tsrid not in tsridslist:
tsridslist.append( tsrid )
if not tsridslist:
- new_status = trans.model.ToolShedRepository.installation_status.NEW
- cloning_status = trans.model.ToolShedRepository.installation_status.CLONING
- setting_tool_versions_status = trans.model.ToolShedRepository.installation_status.SETTING_TOOL_VERSIONS
- installing_dependencies_status = trans.model.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES
- loading_datatypes_status = trans.model.ToolShedRepository.installation_status.LOADING_PROPRIETARY_DATATYPES
- for tool_shed_repository in trans.sa_session.query( trans.model.ToolShedRepository ) \
- .filter( or_( trans.model.ToolShedRepository.status == new_status,
- trans.model.ToolShedRepository.status == cloning_status,
- trans.model.ToolShedRepository.status == setting_tool_versions_status,
- trans.model.ToolShedRepository.status == installing_dependencies_status,
- trans.model.ToolShedRepository.status == loading_datatypes_status ) ):
- tsridslist.append( trans.security.encode_id( tool_shed_repository.id ) )
+ tsridslist = get_ids_of_tool_shed_repositories_being_installed( trans, as_string=False )
kwd[ 'tool_shed_repository_ids' ] = tsridslist
return self.repository_installation_grid( trans, **kwd )
@web.json
diff -r 951ba799c0b020ae9d90f55435a30e19039f51fb -r b1cdad4c77fa52d939901b1afb56f910f0753088 templates/admin/tool_shed_repository/tool_dependency_installation_status.mako
--- a/templates/admin/tool_shed_repository/tool_dependency_installation_status.mako
+++ b/templates/admin/tool_shed_repository/tool_dependency_installation_status.mako
@@ -9,8 +9,8 @@
bgcolor = trans.model.ToolDependency.states.ERROR
elif tool_dependency.status in [ trans.model.ToolDependency.installation_status.INSTALLED ]:
bgcolor = trans.model.ToolDependency.states.OK
- rval = '<div class="count-box state-color-%s" id="ToolDependencyStatus-%s">' % ( bgcolor, trans.security.encode_id( tool_dependency.id ) )
- rval += '%s</div>' % tool_dependency.status
+ rval = '<div class="count-box state-color-%s" id="ToolDependencyStatus-%s">%s</div>' % \
+ ( bgcolor, trans.security.encode_id( tool_dependency.id, tool_dependency.status ) )
return rval
%>
${rval}
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0