Question: Upload File Problem after upgrading to 15.07
0
gravatar for danielfortin86
3.2 years ago by
United States
danielfortin86110 wrote:

After updating a local Galaxy installation to 15.07 I now get an error when trying to upload any file into galaxy:

  File "/opt/galaxy-dist/tools/data_source/upload.py", line 7
    <<<<<<< /opt/galaxy-dist/tools/data_source/upload.py
     ^
SyntaxError: invalid syntax

The update was performed using mercurial....Any suggestions would be greatly appreciated!

software error upload 15.07 • 1.1k views
ADD COMMENTlink modified 3.2 years ago by Dannon Baker3.7k • written 3.2 years ago by danielfortin86110
0
gravatar for Dannon Baker
3.2 years ago by
Dannon Baker3.7k
United States
Dannon Baker3.7k wrote:

This looks like there were outstanding conflicts when you updated your Galaxy installation.  Can you provide more context by opening up tools/data_source/upload.py and looking at what local changes you might have had?

In short, you need to resolve the merge (or otherwise dump local changes), but any extra information you might be able to give me would help figure out how this happened.

Can you show the output of 'hg summary' and 'hg diff'?

ADD COMMENTlink written 3.2 years ago by Dannon Baker3.7k

The problem appears to be resolved by replacing upload.py with the most up-to-date version. I'm not sure why there was a conflict since I never made changes to this file.

Here's the output of 'hg summary'

parent: 17136:0994712eb599 v15.07 latest_15.07
 Galaxy Version 15.07
branch: release_15.07
commit: 11 modified, 1 added, 1 deleted, 481 unknown (new branch head)
update: 27 new changesets (update)

and 'hg diff':

 

[galaxy@rpbus100 galaxy]$ hg diff
diff -r 0994712eb599 config/job_conf.xml.sample_advanced
--- a/config/job_conf.xml.sample_advanced    Wed Aug 12 17:48:51 2015 -0400
+++ b/config/job_conf.xml.sample_advanced    Tue Sep 08 12:36:40 2015 -0700
@@ -5,20 +5,23 @@
              The default from <plugins> is used if not defined for a <plugin>.
           -->
         <plugin id="local" type="runner" load="galaxy.jobs.runners.local:LocalJobRunner"/>
-        <plugin id="pbs" type="runner" load="galaxy.jobs.runners.pbs:PBSJobRunner" workers="2"/>
-        <plugin id="drmaa" type="runner" load="galaxy.jobs.runners.drmaa:DRMAAJobRunner">
+<!--        <plugin id="pbs" type="runner" load="galaxy.jobs.runners.pbs:PBSJobRunner" workers="2"/> 
+-->
+<!--        <plugin id="drmaa" type="runner" load="galaxy.jobs.runners.drmaa:DRMAAJobRunner"> -->
             <!-- Different DRMs handle successfully completed jobs differently,
                  these options can be changed to handle such differences and
                  are explained in detail on the Galaxy wiki. Defaults are shown -->
-            <param id="invalidjobexception_state">ok</param>
+<!--            <param id="invalidjobexception_state">ok</param>
             <param id="invalidjobexception_retries">0</param>
             <param id="internalexception_state">ok</param>
             <param id="internalexception_retries">0</param>
         </plugin>
-        <plugin id="sge" type="runner" load="galaxy.jobs.runners.drmaa:DRMAAJobRunner">
+        -->
+<!--        <plugin id="sge" type="runner" load="galaxy.jobs.runners.drmaa:DRMAAJobRunner">
             <!-- Override the $DRMAA_LIBRARY_PATH environment variable -->
             <param id="drmaa_library_path">/sge/lib/libdrmaa.so</param>
         </plugin>
+        -->
         <plugin id="cli" type="runner" load="galaxy.jobs.runners.cli:ShellJobRunner" />
         <plugin id="condor" type="runner" load="galaxy.jobs.runners.condor:CondorJobRunner" />
         <plugin id="slurm" type="runner" load="galaxy.jobs.runners.slurm:SlurmJobRunner" />
@@ -432,15 +435,6 @@
             <param id="nativeSpecification">--mem-per-cpu=512</param>
             <resubmit condition="memory_limit_reached" destination="bigmem" />
         </destination>
-        <!-- Any tag param in this file can be set using an environment variable or using
-             values from galaxy.ini using the from_environ and from_config attributes
-             repectively. The text of the param will still be used if that environment variable
-             or config value isn't set.
-        -->
-        <destination id="params_from_environment" runner="slurm">
-            <param id="nativeSpecification" from_environ="NATIVE_SPECIFICATION">--time=00:05:00 --nodes=1</param>
-            <param id="docker_enabled" from_config="use_docker">false</param>
-        </destination>
 
         <!-- Templatized destinations - macros can be used to create templated
         destinations with reduced XML duplication. Here we are creating 4 destinations in 4 lines instead of 28 using the macros defined below.
diff -r 0994712eb599 config/plugins/interactive_environments/ipython/templates/ipython.mako
--- a/config/plugins/interactive_environments/ipython/templates/ipython.mako    Wed Aug 12 17:48:51 2015 -0400
+++ b/config/plugins/interactive_environments/ipython/templates/ipython.mako    Tue Sep 08 12:36:40 2015 -0700
@@ -39,12 +39,17 @@
 notebook_access_url = ie_request.url_template('${PROXY_URL}/ipython/${PORT}/notebooks/ipython_galaxy_notebook.ipynb')
 notebook_login_url = ie_request.url_template('${PROXY_URL}/ipython/${PORT}/login?next=%2Fipython%2F${PORT}%2Ftree')
 
+<<<<<<< /opt/galaxy-dist/config/plugins/interactive_environments/ipython/templates/ipython.mako
+docker_cmd = ie_request.docker_cmd(temp_dir)
+subprocess.call(docker_cmd, shell=True)
+=======
 
 # Add all environment variables collected from Galaxy's IE infrastructure
 ie_request.launch(env_override={
     'notebook_password': PASSWORD,
 })
 
+>>>>>>> /tmp/ipython.mako~other.ffAng5
 %>
 <html>
 <head>
diff -r 0994712eb599 config/plugins/visualizations/charts/templates/charts.mako
--- a/config/plugins/visualizations/charts/templates/charts.mako    Wed Aug 12 17:48:51 2015 -0400
+++ b/config/plugins/visualizations/charts/templates/charts.mako    Tue Sep 08 12:36:40 2015 -0700
@@ -14,10 +14,15 @@
         ${h.js( 'libs/jquery/jquery',
                 'libs/jquery/select2',
                 'libs/bootstrap',
+                'libs/require',
                 'libs/underscore',
                 'libs/backbone/backbone',
+<<<<<<< /opt/galaxy-dist/config/plugins/visualizations/charts/templates/charts.mako
+                'libs/d3')}
+=======
                 'libs/d3',
                 'libs/require')}
+>>>>>>> /tmp/charts.mako~other.zfRxjI
 
         ## shared css
         ${h.css( 'base' )}
diff -r 0994712eb599 config/plugins/visualizations/scatterplot/src/scatterplot-display.js
--- a/config/plugins/visualizations/scatterplot/src/scatterplot-display.js    Wed Aug 12 17:48:51 2015 -0400
+++ b/config/plugins/visualizations/scatterplot/src/scatterplot-display.js    Tue Sep 08 12:36:40 2015 -0700
@@ -20,8 +20,12 @@
         var view = this,
             config = this.model.get( 'config' ),
             //TODO: very tied to datasets - should be generalized eventually
+<<<<<<< /opt/galaxy-dist/config/plugins/visualizations/scatterplot/src/scatterplot-display.js
+            xhr = jQuery.getJSON( '/api/datasets/' + this.dataset.id, {
+=======
             baseUrl = ( window.parent && parent.galaxy_config )? parent.galaxy_config.root : '/',
             xhr = jQuery.getJSON( baseUrl + 'api/datasets/' + this.dataset.id, {
+>>>>>>> /tmp/scatterplot-display.js~other.r8hnjS
                 data_type   : 'raw_data',
                 provider    : 'dataset-column',
                 limit       : config.pagination.perPage,
diff -r 0994712eb599 config/plugins/visualizations/scatterplot/static/scatterplot-edit.js
--- a/config/plugins/visualizations/scatterplot/static/scatterplot-edit.js    Wed Aug 12 17:48:51 2015 -0400
+++ b/config/plugins/visualizations/scatterplot/static/scatterplot-edit.js    Tue Sep 08 12:36:40 2015 -0700
@@ -1,1 +1,3 @@
-function scatterplot(a,b,c){function d(){var a={v:{},h:{}};return a.v.lines=p.selectAll("line.v-grid-line").data(m.x.ticks(q.x.fn.ticks()[0])),a.v.lines.enter().append("svg:line").classed("grid-line v-grid-line",!0),a.v.lines.attr("x1",m.x).attr("x2",m.x).attr("y1",0).attr("y2",b.height),a.v.lines.exit().remove(),a.h.lines=p.selectAll("line.h-grid-line").data(m.y.ticks(q.y.fn.ticks()[0])),a.h.lines.enter().append("svg:line").classed("grid-line h-grid-line",!0),a.h.lines.attr("x1",0).attr("x2",b.width).attr("y1",m.y).attr("y2",m.y),a.h.lines.exit().remove(),a}function e(){return t.attr("cx",function(a,b){return m.x(j(a,b))}).attr("cy",function(a,b){return m.y(k(a,b))}).style("display","block").filter(function(a,c){var d=d3.select(this).attr("cx"),e=d3.select(this).attr("cy");return 0>d||d>b.width?!0:0>e||e>b.height?!0:!1}).style("display","none")}function f(a,b,c){$(".chart-info-box").remove(),q.redraw(),e(),s=d(),$(o.node()).trigger("zoom.scatterplot",{scale:n.scale(),translate:n.translate()})}function g(a,c,d){return c+=8,$(['<div class="chart-info-box" style="position: absolute">',void 0!==b.idColumn?"<div>"+d[b.idColumn]+"</div>":"","<div>",j(d),"</div>","<div>",k(d),"</div>","</div>"].join("")).css({top:a,left:c,"z-index":2})}var h=function(a,b){return"translate("+a+","+b+")"},i=function(a,b,c){return"rotate("+a+","+b+","+c+")"},j=function(a,c){return a[b.xColumn]},k=function(a,c){return a[b.yColumn]},l={x:{extent:d3.extent(c,j)},y:{extent:d3.extent(c,k)}},m={x:d3.scale.linear().domain(l.x.extent).range([0,b.width]),y:d3.scale.linear().domain(l.y.extent).range([b.height,0])},n=d3.behavior.zoom().x(m.x).y(m.y).scaleExtent([1,30]).scale(b.scale||1).translate(b.translate||[0,0]),o=d3.select(a).attr("class","scatterplot").attr("width","100%").attr("height",b.height+(b.margin.top+b.margin.bottom)),p=o.append("g").attr("class","content").attr("transform",h(b.margin.left,b.margin.top)).call(n);p.append("rect").attr("class","zoom-rect").attr("width",b.width).attr("height",b.height).style("fill","transparent");var q={x:{},y:{}};q.x.fn=d3.svg.axis().orient("bottom").scale(m.x).ticks(b.xTicks).tickFormat(d3.format("s")),q.y.fn=d3.svg.axis().orient("left").scale(m.y).ticks(b.yTicks).tickFormat(d3.format("s")),q.x.g=p.append("g").attr("class","x axis").attr("transform",h(0,b.height)).call(q.x.fn),q.y.g=p.append("g").attr("class","y axis").call(q.y.fn);var r=6;q.x.label=o.append("text").attr("id","x-axis-label").attr("class","axis-label").text(b.xLabel).attr("text-anchor","middle").attr("dominant-baseline","text-after-edge").attr("x",b.width/2+b.margin.left).attr("y",b.height+b.margin.bottom+b.margin.top-r),q.y.label=o.append("text").attr("id","y-axis-label").attr("class","axis-label").text(b.yLabel).attr("text-anchor","middle").attr("dominant-baseline","text-before-edge").attr("x",r).attr("y",b.height/2).attr("transform",i(-90,r,b.height/2)),q.redraw=function(){o.select(".x.axis").call(q.x.fn),o.select(".y.axis").call(q.y.fn)};var s=d(),t=p.selectAll(".glyph").data(c).enter().append("svg:circle").classed("glyph",!0).attr("cx",function(a,b){return m.x(j(a,b))}).attr("cy",function(a,b){return m.y(k(a,b))}).attr("r",0);t.transition().duration(b.animDuration).attr("r",b.datapointSize),e(),n.on("zoom",f),t.on("mouseover",function(a,c){var d=d3.select(this);d.classed("highlight",!0).style("fill","red").style("fill-opacity",1),p.append("line").attr("stroke","red").attr("stroke-width",1).attr("x1",d.attr("cx")-b.datapointSize).attr("y1",d.attr("cy")).attr("x2",0).attr("y2",d.attr("cy")).classed("hoverline",!0),d.attr("cy")<b.height&&p.append("line").attr("stroke","red").attr("stroke-width",1).attr("x1",d.attr("cx")).attr("y1",+d.attr("cy")+b.datapointSize).attr("x2",d.attr("cx")).attr("y2",b.height).classed("hoverline",!0);var e=this.getBoundingClientRect();$("body").append(g(e.top,e.right,a)),$(o.node()).trigger("mouseover-datapoint.scatterplot",[this,a,c])}),t.on("mouseout",function(){d3.select(this).classed("highlight",!1).style("fill","black").style("fill-opacity",.2),p.selectAll(".hoverline").remove(),$(".chart-info-box").remove()})}this.scatterplot=this.scatterplot||{},this.scatterplot.chartcontrol=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f="function",g=b.helperMissing,h=this.escapeExpression;return'<p class="help-text">\n    Use the following controls to how the chart is displayed.\n    The slide controls can be moved by the mouse or, if the \'handle\' is in focus, your keyboard\'s arrow keys.\n    Move the focus between controls by using the tab or shift+tab keys on your keyboard.\n    Use the \'Draw\' button to render (or re-render) the chart with the current settings.\n</p>\n\n<div data-config-key="datapointSize" class="form-input numeric-slider-input">\n    <label for="datapointSize">Size of data point: </label>\n    <div class="slider-output">'+h((e=null!=(e=b.datapointSize||(null!=a?a.datapointSize:a))?e:g,typeof e===f?e.call(a,{name:"datapointSize",hash:{},data:d}):e))+'</div>\n    <div class="slider"></div>\n    <p class="form-help help-text-small">\n        Size of the graphic representation of each data point\n    </p>\n</div>\n\n<div data-config-key="width" class="form-input numeric-slider-input">\n    <label for="width">Chart width: </label>\n    <div class="slider-output">'+h((e=null!=(e=b.width||(null!=a?a.width:a))?e:g,typeof e===f?e.call(a,{name:"width",hash:{},data:d}):e))+'</div>\n    <div class="slider"></div>\n    <p class="form-help help-text-small">\n        (not including chart margins and axes)\n    </p>\n</div>\n\n<div data-config-key="height" class="form-input numeric-slider-input">\n    <label for="height">Chart height: </label>\n    <div class="slider-output">'+h((e=null!=(e=b.height||(null!=a?a.height:a))?e:g,typeof e===f?e.call(a,{name:"height",hash:{},data:d}):e))+'</div>\n    <div class="slider"></div>\n    <p class="form-help help-text-small">\n        (not including chart margins and axes)\n    </p>\n</div>\n\n<div data-config-key="X-axis-label"class="text-input form-input">\n    <label for="X-axis-label">Re-label the X axis: </label>\n    <input type="text" name="X-axis-label" id="X-axis-label" value="'+h((e=null!=(e=b.xLabel||(null!=a?a.xLabel:a))?e:g,typeof e===f?e.call(a,{name:"xLabel",hash:{},data:d}):e))+'" />\n    <p class="form-help help-text-small"></p>\n</div>\n\n<div data-config-key="Y-axis-label" class="text-input form-input">\n    <label for="Y-axis-label">Re-label the Y axis: </label>\n    <input type="text" name="Y-axis-label" id="Y-axis-label" value="'+h((e=null!=(e=b.yLabel||(null!=a?a.yLabel:a))?e:g,typeof e===f?e.call(a,{name:"yLabel",hash:{},data:d}):e))+'" />\n    <p class="form-help help-text-small"></p>\n</div>\n\n<button class="render-button btn btn-primary active">Draw</button>\n'},useData:!0}),this.scatterplot.datacontrol=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f,g="function",h=b.helperMissing,i='<p class="help-text">\n    Use the following control to change which columns are used by the chart. Click any cell\n    from the last three rows of the table to select the column for the appropriate data.\n    Use the \'Draw\' button to render (or re-render) the chart with the current settings.\n</p>\n\n<ul class="help-text" style="margin-left: 8px">\n    <li><b>X Column</b>: which column values will be used for the x axis of the chart.</li>\n    <li><b>Y Column</b>: which column values will be used for the y axis of the chart.</li>\n    <li><b>ID Column</b>: an additional column value displayed when the user hovers over a data point.\n    It may be useful to select unique or categorical identifiers here (such as gene ids).\n    </li>\n</ul>\n\n<div class="column-selection">\n    <pre class="peek">';return f=null!=(f=b.peek||(null!=a?a.peek:a))?f:h,e=typeof f===g?f.call(a,{name:"peek",hash:{},data:d}):f,null!=e&&(i+=e),i+'</pre>\n</div>\n\n<p class="help-text help-text-small">\n    <b>Note</b>: If it can be determined from the dataset\'s filetype that a column is not numeric,\n    that column choice may be disabled for either the x or y axis.\n</p>\n\n<button class="render-button btn btn-primary active">Draw</button>\n'},useData:!0}),this.scatterplot.editor=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){return'<div class="scatterplot-editor tabbable tabs-left">\n    <ul class="nav nav-tabs">\n        <li class="active">\n            <a title="Use this tab to change which data are used"\n               href="#data-control" data-toggle="tab">Data Controls</a>\n        </li>\n        <li>\n            <a title="Use this tab to change how the chart is drawn"\n               href="#chart-control" data-toggle="tab" >Chart Controls</a>\n        </li>\n        <li class="disabled">\n            <a title="This tab will display the chart"\n               href="#chart-display" data-toggle="tab">Chart</a>\n        </li>\n        <li class="file-controls">\n<!--            <button class="copy-btn btn btn-default"\n                    title="Save this as a new visualization">Save to new</button>-->\n            <button class="save-btn btn btn-default">Save</button>\n        </li>\n    </ul>\n\n    <div class="tab-content">\n        <div id="data-control" class="scatterplot-config-control tab-pane active">\n        </div>\n    \n        <div id="chart-control" class="scatterplot-config-control tab-pane">\n        </div>\n\n        <div id="chart-display" class="scatterplot-display tab-pane"></div>\n\n    </div>\n</div>\n'},useData:!0});var ScatterplotConfigEditor=Backbone.View.extend({className:"scatterplot-control-form",initialize:function(a){if(this.model||(this.model=new Visualization({type:"scatterplot"})),!a||!a.dataset)throw new Error("ScatterplotConfigEditor requires a dataset");this.dataset=a.dataset,this.display=new ScatterplotDisplay({dataset:a.dataset,model:this.model})},render:function(){this.$el.empty().append(ScatterplotConfigEditor.templates.mainLayout({})),this.model.id&&(this.$el.find(".copy-btn").show(),this.$el.find(".save-btn").text("Update saved")),this.$el.find("[title]").tooltip(),this._render_dataControl(),this._render_chartControls(),this._render_chartDisplay();var a=this.model.get("config");return this.model.id&&_.isFinite(a.xColumn)&&_.isFinite(a.yColumn)&&this.renderChart(),this},_getColumnIndecesByType:function(){var a={numeric:[],text:[],all:[]};return _.each(this.dataset.metadata_column_types||[],function(b,c){"int"===b||"float"===b?a.numeric.push(c):("str"===b||"list"===b)&&a.text.push(c),a.all.push(c)}),a.numeric.length<2&&(a.numeric=[]),a},_render_dataControl:function(a){a=a||this.$el;var b=this,c=this.model.get("config"),d=this._getColumnIndecesByType(),e=a.find(".tab-pane#data-control");return e.html(ScatterplotConfigEditor.templates.dataControl({peek:this.dataset.peek})),e.find(".peek").peekColumnSelector({controls:[{label:"X Column",id:"xColumn",selected:c.xColumn,disabled:d.text},{label:"Y Column",id:"yColumn",selected:c.yColumn,disabled:d.text},{label:"ID Column",id:"idColumn",selected:c.idColumn}]}).on("peek-column-selector.change",function(a,c){b.model.set("config",c)}).on("peek-column-selector.rename",function(a,b){}),e.find("[title]").tooltip(),e},_render_chartControls:function(a){function b(){var a=$(this),b=a.slider("value");c.model.set("config",_.object([[a.parent().data("config-key"),b]])),a.siblings(".slider-output").text(b)}a=a||this.$el;var c=this,d=this.model.get("config"),e=a.find("#chart-control");e.html(ScatterplotConfigEditor.templates.chartControl(d));var f={datapointSize:{min:2,max:10,step:1},width:{min:200,max:800,step:20},height:{min:200,max:800,step:20}};e.find(".numeric-slider-input").each(function(){var a=$(this),c=a.attr("data-config-key"),e=_.extend(f[c],{value:d[c],change:b,slide:b});a.find(".slider").slider(e),a.children(".slider-output").text(d[c])});var g=this.dataset.metadata_column_names||[],h=d.xLabel||g[d.xColumn]||"X",i=d.yLabel||g[d.yColumn]||"Y";return e.find('input[name="X-axis-label"]').val(h).on("change",function(){c.model.set("config",{xLabel:$(this).val()})}),e.find('input[name="Y-axis-label"]').val(i).on("change",function(){c.model.set("config",{yLabel:$(this).val()})}),e.find("[title]").tooltip(),e},_render_chartDisplay:function(a){a=a||this.$el;var b=a.find(".tab-pane#chart-display");return this.display.setElement(b),this.display.render(),b.find("[title]").tooltip(),b},events:{"change #include-id-checkbox":"toggleThirdColumnSelector","click #data-control .render-button":"renderChart","click #chart-control .render-button":"renderChart","click .save-btn":"saveVisualization"},saveVisualization:function(){var a=this;this.model.save().fail(function(b,c,d){console.error(b,c,d),a.trigger("save:error",view),alert("Error loading data:\n"+b.responseText)}).then(function(){a.display.render()})},toggleThirdColumnSelector:function(){this.$el.find('select[name="idColumn"]').parent().toggle()},renderChart:function(){this.$el.find(".nav li.disabled").removeClass("disabled"),this.$el.find("ul.nav").find('a[href="#chart-display"]').tab("show"),this.display.fetchData()},toString:function(){return"ScatterplotConfigEditor("+(this.dataset?this.dataset.id:"")+")"}});ScatterplotConfigEditor.templates={mainLayout:scatterplot.editor,dataControl:scatterplot.datacontrol,chartControl:scatterplot.chartcontrol};var ScatterplotDisplay=Backbone.View.extend({initialize:function(a){this.data=null,this.dataset=a.dataset,this.lineCount=this.dataset.metadata_data_lines||null},fetchData:function(){this.showLoadingIndicator();var a=this,b=this.model.get("config"),c=window.parent&&parent.galaxy_config?parent.galaxy_config.root:"/",d=jQuery.getJSON(c+"api/datasets/"+this.dataset.id,{data_type:"raw_data",provider:"dataset-column",limit:b.pagination.perPage,offset:b.pagination.currPage*b.pagination.perPage});return d.done(function(b){a.data=b.data,a.trigger("data:fetched",a),a.renderData()}),d.fail(function(b,c,d){console.error(b,c,d),a.trigger("data:error",a),alert("Error loading data:\n"+b.responseText)}),d},showLoadingIndicator:function(){this.$el.find(".scatterplot-data-info").html(['<div class="loading-indicator">','<span class="fa fa-spinner fa-spin"></span>','<span class="loading-indicator-message">loading...</span>',"</div>"].join(""))},template:function(){var a=['<div class="controls clear">','<div class="right">','<p class="scatterplot-data-info"></p>','<button class="stats-toggle-btn">Stats</button>','<button class="rerender-btn">Redraw</button>',"</div>",'<div class="left">','<div class="page-control"></div>',"</div>","</div>","<svg/>",'<div class="stats-display"></div>'].join("");return a},render:function(){return this.$el.addClass("scatterplot-display").html(this.template()),this.data&&this.renderData(),this},renderData:function(){this.renderLeftControls(),this.renderRightControls(),this.renderPlot(this.data),this.getStats()},renderLeftControls:function(){var a=this,b=this.model.get("config");return this.$el.find(".controls .left .page-control").pagination({startingPage:b.pagination.currPage,perPage:b.pagination.perPage,totalDataSize:this.lineCount,currDataSize:this.data.length}).off().on("pagination.page-change",function(c,d){b.pagination.currPage=d,a.model.set("config",{pagination:b.pagination}),a.resetZoom(),a.fetchData()}),this},renderRightControls:function(){var a=this;this.setLineInfo(this.data),this.$el.find(".stats-toggle-btn").off().click(function(){a.toggleStats()}),this.$el.find(".rerender-btn").off().click(function(){a.resetZoom(),a.renderPlot(this.data)})},renderPlot:function(){var a=this,b=this.$el.find("svg");this.toggleStats(!1),b.off().empty().show().on("zoom.scatterplot",function(b,c){a.model.set("config",c)}),scatterplot(b.get(0),this.model.get("config"),this.data)},setLineInfo:function(a,b){if(a){var c=this.model.get("config"),d=this.lineCount||"an unknown total",e=c.pagination.currPage*c.pagination.perPage,f=e+a.length;this.$el.find(".controls p.scatterplot-data-info").text([e+1,"to",f,"of",d].join(" "))}else this.$el.find(".controls p.scatterplot-data-info").html(b||"");return this},resetZoom:function(a,b){return a=void 0!==a?a:1,b=void 0!==b?b:[0,0],this.model.set("config",{scale:a,translate:b}),this},getStats:function(){if(this.data){var a=this,b=this.model.get("config"),c=new Worker("/plugins/visualizations/scatterplot/static/worker-stats.js");c.postMessage({data:this.data,keys:[b.xColumn,b.yColumn]}),c.onerror=function(a){c.terminate()},c.onmessage=function(b){a.renderStats(b.data)}}},renderStats:function(a,b){var c=this.model.get("config"),d=this.$el.find(".stats-display"),e=c.xLabel,f=c.yLabel,g=$("<table/>").addClass("table").append(["<thead><th></th><th>",e,"</th><th>",f,"</th></thead>"].join("")).append(_.map(a,function(a,b){return $(["<tr><td>",b,"</td><td>",a[0],"</td><td>",a[1],"</td></tr>"].join(""))}));d.empty().append(g)},toggleStats:function(a){var b=this.$el.find(".stats-display");a=void 0===a?b.is(":hidden"):a,a?(this.$el.find("svg").hide(),b.show(),this.$el.find(".controls .stats-toggle-btn").text("Plot")):(b.hide(),this.$el.find("svg").show(),this.$el.find(".controls .stats-toggle-btn").text("Stats"))},toString:function(){return"ScatterplotView()"}}),ScatterplotModel=Visualization.extend({defaults:{type:"scatterplot",config:{pagination:{currPage:0,perPage:3e3},width:400,height:400,margin:{top:16,right:16,bottom:40,left:54},xTicks:10,xLabel:"X",yTicks:10,yLabel:"Y",datapointSize:4,animDuration:500,scale:1,translate:[0,0]}}});
\ No newline at end of file
+<<<<<<< /opt/galaxy-dist/config/plugins/visualizations/scatterplot/static/scatterplot-edit.js
+function scatterplot(a,b,c){function d(){var a={v:{},h:{}};return a.v.lines=p.selectAll("line.v-grid-line").data(m.x.ticks(q.x.fn.ticks()[0])),a.v.lines.enter().append("svg:line").classed("grid-line v-grid-line",!0),a.v.lines.attr("x1",m.x).attr("x2",m.x).attr("y1",0).attr("y2",b.height),a.v.lines.exit().remove(),a.h.lines=p.selectAll("line.h-grid-line").data(m.y.ticks(q.y.fn.ticks()[0])),a.h.lines.enter().append("svg:line").classed("grid-line h-grid-line",!0),a.h.lines.attr("x1",0).attr("x2",b.width).attr("y1",m.y).attr("y2",m.y),a.h.lines.exit().remove(),a}function e(){return t.attr("cx",function(a,b){return m.x(j(a,b))}).attr("cy",function(a,b){return m.y(k(a,b))}).style("display","block").filter(function(){var a=d3.select(this).attr("cx"),c=d3.select(this).attr("cy");return 0>a||a>b.width?!0:0>c||c>b.height?!0:!1}).style("display","none")}function f(){$(".chart-info-box").remove(),q.redraw(),e(),s=d(),$(o.node()).trigger("zoom.scatterplot",{scale:n.scale(),translate:n.translate()})}function g(a,c,d){return c+=8,$(['<div class="chart-info-box" style="position: absolute">',void 0!==b.idColumn?"<div>"+d[b.idColumn]+"</div>":"","<div>",j(d),"</div>","<div>",k(d),"</div>","</div>"].join("")).css({top:a,left:c,"z-index":2})}var h=function(a,b){return"translate("+a+","+b+")"},i=function(a,b,c){return"rotate("+a+","+b+","+c+")"},j=function(a){return a[b.xColumn]},k=function(a){return a[b.yColumn]},l={x:{extent:d3.extent(c,j)},y:{extent:d3.extent(c,k)}},m={x:d3.scale.linear().domain(l.x.extent).range([0,b.width]),y:d3.scale.linear().domain(l.y.extent).range([b.height,0])},n=d3.behavior.zoom().x(m.x).y(m.y).scaleExtent([1,30]).scale(b.scale||1).translate(b.translate||[0,0]),o=d3.select(a).attr("class","scatterplot").attr("width","100%").attr("height",b.height+(b.margin.top+b.margin.bottom)),p=o.append("g").attr("class","content").attr("transform",h(b.margin.left,b.margin.top)).call(n);p.append("rect").attr("class","zoom-rect").attr("width",b.width).attr("height",b.height).style("fill","transparent");var q={x:{},y:{}};q.x.fn=d3.svg.axis().orient("bottom").scale(m.x).ticks(b.xTicks).tickFormat(d3.format("s")),q.y.fn=d3.svg.axis().orient("left").scale(m.y).ticks(b.yTicks).tickFormat(d3.format("s")),q.x.g=p.append("g").attr("class","x axis").attr("transform",h(0,b.height)).call(q.x.fn),q.y.g=p.append("g").attr("class","y axis").call(q.y.fn);var r=6;q.x.label=o.append("text").attr("id","x-axis-label").attr("class","axis-label").text(b.xLabel).attr("text-anchor","middle").attr("dominant-baseline","text-after-edge").attr("x",b.width/2+b.margin.left).attr("y",b.height+b.margin.bottom+b.margin.top-r),q.y.label=o.append("text").attr("id","y-axis-label").attr("class","axis-label").text(b.yLabel).attr("text-anchor","middle").attr("dominant-baseline","text-before-edge").attr("x",r).attr("y",b.height/2).attr("transform",i(-90,r,b.height/2)),q.redraw=function(){o.select(".x.axis").call(q.x.fn),o.select(".y.axis").call(q.y.fn)};var s=d(),t=p.selectAll(".glyph").data(c).enter().append("svg:circle").classed("glyph",!0).attr("cx",function(a,b){return m.x(j(a,b))}).attr("cy",function(a,b){return m.y(k(a,b))}).attr("r",0);t.transition().duration(b.animDuration).attr("r",b.datapointSize),e(),n.on("zoom",f),t.on("mouseover",function(a,c){var d=d3.select(this);d.classed("highlight",!0).style("fill","red").style("fill-opacity",1),p.append("line").attr("stroke","red").attr("stroke-width",1).attr("x1",d.attr("cx")-b.datapointSize).attr("y1",d.attr("cy")).attr("x2",0).attr("y2",d.attr("cy")).classed("hoverline",!0),d.attr("cy")<b.height&&p.append("line").attr("stroke","red").attr("stroke-width",1).attr("x1",d.attr("cx")).attr("y1",+d.attr("cy")+b.datapointSize).attr("x2",d.attr("cx")).attr("y2",b.height).classed("hoverline",!0);var e=this.getBoundingClientRect();$("body").append(g(e.top,e.right,a)),$(o.node()).trigger("mouseover-datapoint.scatterplot",[this,a,c])}),t.on("mouseout",function(){d3.select(this).classed("highlight",!1).style("fill","black").style("fill-opacity",.2),p.selectAll(".hoverline").remove(),$(".chart-info-box").remove()})}this.scatterplot=this.scatterplot||{},this.scatterplot.chartcontrol=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f="function",g=b.helperMissing,h=this.escapeExpression;return'<p class="help-text">\n    Use the following controls to how the chart is displayed.\n    The slide controls can be moved by the mouse or, if the \'handle\' is in focus, your keyboard\'s arrow keys.\n    Move the focus between controls by using the tab or shift+tab keys on your keyboard.\n    Use the \'Draw\' button to render (or re-render) the chart with the current settings.\n</p>\n\n<div data-config-key="datapointSize" class="form-input numeric-slider-input">\n    <label for="datapointSize">Size of data point: </label>\n    <div class="slider-output">'+h((e=null!=(e=b.datapointSize||(null!=a?a.datapointSize:a))?e:g,typeof e===f?e.call(a,{name:"datapointSize",hash:{},data:d}):e))+'</div>\n    <div class="slider"></div>\n    <p class="form-help help-text-small">\n        Size of the graphic representation of each data point\n    </p>\n</div>\n\n<div data-config-key="width" class="form-input numeric-slider-input">\n    <label for="width">Chart width: </label>\n    <div class="slider-output">'+h((e=null!=(e=b.width||(null!=a?a.width:a))?e:g,typeof e===f?e.call(a,{name:"width",hash:{},data:d}):e))+'</div>\n    <div class="slider"></div>\n    <p class="form-help help-text-small">\n        (not including chart margins and axes)\n    </p>\n</div>\n\n<div data-config-key="height" class="form-input numeric-slider-input">\n    <label for="height">Chart height: </label>\n    <div class="slider-output">'+h((e=null!=(e=b.height||(null!=a?a.height:a))?e:g,typeof e===f?e.call(a,{name:"height",hash:{},data:d}):e))+'</div>\n    <div class="slider"></div>\n    <p class="form-help help-text-small">\n        (not including chart margins and axes)\n    </p>\n</div>\n\n<div data-config-key="X-axis-label"class="text-input form-input">\n    <label for="X-axis-label">Re-label the X axis: </label>\n    <input type="text" name="X-axis-label" id="X-axis-label" value="'+h((e=null!=(e=b.xLabel||(null!=a?a.xLabel:a))?e:g,typeof e===f?e.call(a,{name:"xLabel",hash:{},data:d}):e))+'" />\n    <p class="form-help help-text-small"></p>\n</div>\n\n<div data-config-key="Y-axis-label" class="text-input form-input">\n    <label for="Y-axis-label">Re-label the Y axis: </label>\n    <input type="text" name="Y-axis-label" id="Y-axis-label" value="'+h((e=null!=(e=b.yLabel||(null!=a?a.yLabel:a))?e:g,typeof e===f?e.call(a,{name:"yLabel",hash:{},data:d}):e))+'" />\n    <p class="form-help help-text-small"></p>\n</div>\n\n<button class="render-button btn btn-primary active">Draw</button>\n'},useData:!0}),this.scatterplot.datacontrol=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f,g="function",h=b.helperMissing,i='<p class="help-text">\n    Use the following control to change which columns are used by the chart. Click any cell\n    from the last three rows of the table to select the column for the appropriate data.\n    Use the \'Draw\' button to render (or re-render) the chart with the current settings.\n</p>\n\n<ul class="help-text" style="margin-left: 8px">\n    <li><b>X Column</b>: which column values will be used for the x axis of the chart.</li>\n    <li><b>Y Column</b>: which column values will be used for the y axis of the chart.</li>\n    <li><b>ID Column</b>: an additional column value displayed when the user hovers over a data point.\n    It may be useful to select unique or categorical identifiers here (such as gene ids).\n    </li>\n</ul>\n\n<div class="column-selection">\n    <pre class="peek">';return f=null!=(f=b.peek||(null!=a?a.peek:a))?f:h,e=typeof f===g?f.call(a,{name:"peek",hash:{},data:d}):f,null!=e&&(i+=e),i+'</pre>\n</div>\n\n<p class="help-text help-text-small">\n    <b>Note</b>: If it can be determined from the dataset\'s filetype that a column is not numeric,\n    that column choice may be disabled for either the x or y axis.\n</p>\n\n<button class="render-button btn btn-primary active">Draw</button>\n'},useData:!0}),this.scatterplot.editor=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(){return'<div class="scatterplot-editor tabbable tabs-left">\n    <ul class="nav nav-tabs">\n        <li class="active">\n            <a title="Use this tab to change which data are used"\n               href="#data-control" data-toggle="tab">Data Controls</a>\n        </li>\n        <li>\n            <a title="Use this tab to change how the chart is drawn"\n               href="#chart-control" data-toggle="tab" >Chart Controls</a>\n        </li>\n        <li class="disabled">\n            <a title="This tab will display the chart"\n               href="#chart-display" data-toggle="tab">Chart</a>\n        </li>\n        <li class="file-controls">\n<!--            <button class="copy-btn btn btn-default"\n                    title="Save this as a new visualization">Save to new</button>-->\n            <button class="save-btn btn btn-default">Save</button>\n        </li>\n    </ul>\n\n    <div class="tab-content">\n        <div id="data-control" class="scatterplot-config-control tab-pane active">\n        </div>\n    \n        <div id="chart-control" class="scatterplot-config-control tab-pane">\n        </div>\n\n        <div id="chart-display" class="scatterplot-display tab-pane"></div>\n\n    </div>\n</div>\n'},useData:!0});var ScatterplotConfigEditor=Backbone.View.extend({className:"scatterplot-control-form",initialize:function(a){if(this.model||(this.model=new Visualization({type:"scatterplot"})),!a||!a.dataset)throw new Error("ScatterplotConfigEditor requires a dataset");this.dataset=a.dataset,this.display=new ScatterplotDisplay({dataset:a.dataset,model:this.model})},render:function(){this.$el.empty().append(ScatterplotConfigEditor.templates.mainLayout({})),this.model.id&&(this.$el.find(".copy-btn").show(),this.$el.find(".save-btn").text("Update saved")),this.$el.find("[title]").tooltip(),this._render_dataControl(),this._render_chartControls(),this._render_chartDisplay();var a=this.model.get("config");return this.model.id&&_.isFinite(a.xColumn)&&_.isFinite(a.yColumn)&&this.renderChart(),this},_getColumnIndecesByType:function(){var a={numeric:[],text:[],all:[]};return _.each(this.dataset.metadata_column_types||[],function(b,c){"int"===b||"float"===b?a.numeric.push(c):("str"===b||"list"===b)&&a.text.push(c),a.all.push(c)}),a.numeric.length<2&&(a.numeric=[]),a},_render_dataControl:function(a){a=a||this.$el;var b=this,c=this.model.get("config"),d=this._getColumnIndecesByType(),e=a.find(".tab-pane#data-control");return e.html(ScatterplotConfigEditor.templates.dataControl({peek:this.dataset.peek})),e.find(".peek").peekColumnSelector({controls:[{label:"X Column",id:"xColumn",selected:c.xColumn,disabled:d.text},{label:"Y Column",id:"yColumn",selected:c.yColumn,disabled:d.text},{label:"ID Column",id:"idColumn",selected:c.idColumn}]}).on("peek-column-selector.change",function(a,c){b.model.set("config",c)}).on("peek-column-selector.rename",function(){}),e.find("[title]").tooltip(),e},_render_chartControls:function(a){function b(){var a=$(this),b=a.slider("value");c.model.set("config",_.object([[a.parent().data("config-key"),b]])),a.siblings(".slider-output").text(b)}a=a||this.$el;var c=this,d=this.model.get("config"),e=a.find("#chart-control");e.html(ScatterplotConfigEditor.templates.chartControl(d));var f={datapointSize:{min:2,max:10,step:1},width:{min:200,max:800,step:20},height:{min:200,max:800,step:20}};e.find(".numeric-slider-input").each(function(){var a=$(this),c=a.attr("data-config-key"),e=_.extend(f[c],{value:d[c],change:b,slide:b});a.find(".slider").slider(e),a.children(".slider-output").text(d[c])});var g=this.dataset.metadata_column_names||[],h=d.xLabel||g[d.xColumn]||"X",i=d.yLabel||g[d.yColumn]||"Y";return e.find('input[name="X-axis-label"]').val(h).on("change",function(){c.model.set("config",{xLabel:$(this).val()})}),e.find('input[name="Y-axis-label"]').val(i).on("change",function(){c.model.set("config",{yLabel:$(this).val()})}),e.find("[title]").tooltip(),e},_render_chartDisplay:function(a){a=a||this.$el;var b=a.find(".tab-pane#chart-display");return this.display.setElement(b),this.display.render(),b.find("[title]").tooltip(),b},events:{"change #include-id-checkbox":"toggleThirdColumnSelector","click #data-control .render-button":"renderChart","click #chart-control .render-button":"renderChart","click .save-btn":"saveVisualization"},saveVisualization:function(){var a=this;this.model.save().fail(function(b,c,d){console.error(b,c,d),a.trigger("save:error",view),alert("Error loading data:\n"+b.responseText)}).then(function(){a.display.render()})},toggleThirdColumnSelector:function(){this.$el.find('select[name="idColumn"]').parent().toggle()},renderChart:function(){this.$el.find(".nav li.disabled").removeClass("disabled"),this.$el.find("ul.nav").find('a[href="#chart-display"]').tab("show"),this.display.fetchData()},toString:function(){return"ScatterplotConfigEditor("+(this.dataset?this.dataset.id:"")+")"}});ScatterplotConfigEditor.templates={mainLayout:scatterplot.editor,dataControl:scatterplot.datacontrol,chartControl:scatterplot.chartcontrol};var ScatterplotDisplay=Backbone.View.extend({initialize:function(a){this.data=null,this.dataset=a.dataset,this.lineCount=this.dataset.metadata_data_lines||null},fetchData:function(){this.showLoadingIndicator();var a=this,b=this.model.get("config"),c=jQuery.getJSON("/api/datasets/"+this.dataset.id,{data_type:"raw_data",provider:"dataset-column",limit:b.pagination.perPage,offset:b.pagination.currPage*b.pagination.perPage});return c.done(function(b){a.data=b.data,a.trigger("data:fetched",a),a.renderData()}),c.fail(function(b,c,d){console.error(b,c,d),a.trigger("data:error",a),alert("Error loading data:\n"+b.responseText)}),c},showLoadingIndicator:function(){this.$el.find(".scatterplot-data-info").html(['<div class="loading-indicator">','<span class="fa fa-spinner fa-spin"></span>','<span class="loading-indicator-message">loading...</span>',"</div>"].join(""))},template:function(){var a=['<div class="controls clear">','<div class="right">','<p class="scatterplot-data-info"></p>','<button class="stats-toggle-btn">Stats</button>','<button class="rerender-btn">Redraw</button>',"</div>",'<div class="left">','<div class="page-control"></div>',"</div>","</div>","<svg/>",'<div class="stats-display"></div>'].join("");return a},render:function(){return this.$el.addClass("scatterplot-display").html(this.template()),this.data&&this.renderData(),this},renderData:function(){this.renderLeftControls(),this.renderRightControls(),this.renderPlot(this.data),this.getStats()},renderLeftControls:function(){var a=this,b=this.model.get("config");return this.$el.find(".controls .left .page-control").pagination({startingPage:b.pagination.currPage,perPage:b.pagination.perPage,totalDataSize:this.lineCount,currDataSize:this.data.length}).off().on("pagination.page-change",function(c,d){b.pagination.currPage=d,a.model.set("config",{pagination:b.pagination}),a.resetZoom(),a.fetchData()}),this},renderRightControls:function(){var a=this;this.setLineInfo(this.data),this.$el.find(".stats-toggle-btn").off().click(function(){a.toggleStats()}),this.$el.find(".rerender-btn").off().click(function(){a.resetZoom(),a.renderPlot(this.data)})},renderPlot:function(){var a=this,b=this.$el.find("svg");this.toggleStats(!1),b.off().empty().show().on("zoom.scatterplot",function(b,c){a.model.set("config",c)}),scatterplot(b.get(0),this.model.get("config"),this.data)},setLineInfo:function(a,b){if(a){var c=this.model.get("config"),d=this.lineCount||"an unknown total",e=c.pagination.currPage*c.pagination.perPage,f=e+a.length;this.$el.find(".controls p.scatterplot-data-info").text([e+1,"to",f,"of",d].join(" "))}else this.$el.find(".controls p.scatterplot-data-info").html(b||"");return this},resetZoom:function(a,b){return a=void 0!==a?a:1,b=void 0!==b?b:[0,0],this.model.set("config",{scale:a,translate:b}),this},getStats:function(){if(this.data){var a=this,b=this.model.get("config"),c=new Worker("/plugins/visualizations/scatterplot/static/worker-stats.js");c.postMessage({data:this.data,keys:[b.xColumn,b.yColumn]}),c.onerror=function(){c.terminate()},c.onmessage=function(b){a.renderStats(b.data)}}},renderStats:function(a){var b=this.model.get("config"),c=this.$el.find(".stats-display"),d=b.xLabel,e=b.yLabel,f=$("<table/>").addClass("table").append(["<thead><th></th><th>",d,"</th><th>",e,"</th></thead>"].join("")).append(_.map(a,function(a,b){return $(["<tr><td>",b,"</td><td>",a[0],"</td><td>",a[1],"</td></tr>"].join(""))}));c.empty().append(f)},toggleStats:function(a){var b=this.$el.find(".stats-display");a=void 0===a?b.is(":hidden"):a,a?(this.$el.find("svg").hide(),b.show(),this.$el.find(".controls .stats-toggle-btn").text("Plot")):(b.hide(),this.$el.find("svg").show(),this.$el.find(".controls .stats-toggle-btn").text("Stats"))},toString:function(){return"ScatterplotView()"}}),ScatterplotModel=Visualization.extend({defaults:{type:"scatterplot",config:{pagination:{currPage:0,perPage:3e3},width:400,height:400,margin:{top:16,right:16,bottom:40,left:54},xTicks:10,xLabel:"X",yTicks:10,yLabel:"Y",datapointSize:4,animDuration:500,scale:1,translate:[0,0]}}});=======
+function scatterplot(a,b,c){function d(){var a={v:{},h:{}};return a.v.lines=p.selectAll("line.v-grid-line").data(m.x.ticks(q.x.fn.ticks()[0])),a.v.lines.enter().append("svg:line").classed("grid-line v-grid-line",!0),a.v.lines.attr("x1",m.x).attr("x2",m.x).attr("y1",0).attr("y2",b.height),a.v.lines.exit().remove(),a.h.lines=p.selectAll("line.h-grid-line").data(m.y.ticks(q.y.fn.ticks()[0])),a.h.lines.enter().append("svg:line").classed("grid-line h-grid-line",!0),a.h.lines.attr("x1",0).attr("x2",b.width).attr("y1",m.y).attr("y2",m.y),a.h.lines.exit().remove(),a}function e(){return t.attr("cx",function(a,b){return m.x(j(a,b))}).attr("cy",function(a,b){return m.y(k(a,b))}).style("display","block").filter(function(a,c){var d=d3.select(this).attr("cx"),e=d3.select(this).attr("cy");return 0>d||d>b.width?!0:0>e||e>b.height?!0:!1}).style("display","none")}function f(a,b,c){$(".chart-info-box").remove(),q.redraw(),e(),s=d(),$(o.node()).trigger("zoom.scatterplot",{scale:n.scale(),translate:n.translate()})}function g(a,c,d){return c+=8,$(['<div class="chart-info-box" style="position: absolute">',void 0!==b.idColumn?"<div>"+d[b.idColumn]+"</div>":"","<div>",j(d),"</div>","<div>",k(d),"</div>","</div>"].join("")).css({top:a,left:c,"z-index":2})}var h=function(a,b){return"translate("+a+","+b+")"},i=function(a,b,c){return"rotate("+a+","+b+","+c+")"},j=function(a,c){return a[b.xColumn]},k=function(a,c){return a[b.yColumn]},l={x:{extent:d3.extent(c,j)},y:{extent:d3.extent(c,k)}},m={x:d3.scale.linear().domain(l.x.extent).range([0,b.width]),y:d3.scale.linear().domain(l.y.extent).range([b.height,0])},n=d3.behavior.zoom().x(m.x).y(m.y).scaleExtent([1,30]).scale(b.scale||1).translate(b.translate||[0,0]),o=d3.select(a).attr("class","scatterplot").attr("width","100%").attr("height",b.height+(b.margin.top+b.margin.bottom)),p=o.append("g").attr("class","content").attr("transform",h(b.margin.left,b.margin.top)).call(n);p.append("rect").attr("class","zoom-rect").attr("width",b.width).attr("height",b.height).style("fill","transparent");var q={x:{},y:{}};q.x.fn=d3.svg.axis().orient("bottom").scale(m.x).ticks(b.xTicks).tickFormat(d3.format("s")),q.y.fn=d3.svg.axis().orient("left").scale(m.y).ticks(b.yTicks).tickFormat(d3.format("s")),q.x.g=p.append("g").attr("class","x axis").attr("transform",h(0,b.height)).call(q.x.fn),q.y.g=p.append("g").attr("class","y axis").call(q.y.fn);var r=6;q.x.label=o.append("text").attr("id","x-axis-label").attr("class","axis-label").text(b.xLabel).attr("text-anchor","middle").attr("dominant-baseline","text-after-edge").attr("x",b.width/2+b.margin.left).attr("y",b.height+b.margin.bottom+b.margin.top-r),q.y.label=o.append("text").attr("id","y-axis-label").attr("class","axis-label").text(b.yLabel).attr("text-anchor","middle").attr("dominant-baseline","text-before-edge").attr("x",r).attr("y",b.height/2).attr("transform",i(-90,r,b.height/2)),q.redraw=function(){o.select(".x.axis").call(q.x.fn),o.select(".y.axis").call(q.y.fn)};var s=d(),t=p.selectAll(".glyph").data(c).enter().append("svg:circle").classed("glyph",!0).attr("cx",function(a,b){return m.x(j(a,b))}).attr("cy",function(a,b){return m.y(k(a,b))}).attr("r",0);t.transition().duration(b.animDuration).attr("r",b.datapointSize),e(),n.on("zoom",f),t.on("mouseover",function(a,c){var d=d3.select(this);d.classed("highlight",!0).style("fill","red").style("fill-opacity",1),p.append("line").attr("stroke","red").attr("stroke-width",1).attr("x1",d.attr("cx")-b.datapointSize).attr("y1",d.attr("cy")).attr("x2",0).attr("y2",d.attr("cy")).classed("hoverline",!0),d.attr("cy")<b.height&&p.append("line").attr("stroke","red").attr("stroke-width",1).attr("x1",d.attr("cx")).attr("y1",+d.attr("cy")+b.datapointSize).attr("x2",d.attr("cx")).attr("y2",b.height).classed("hoverline",!0);var e=this.getBoundingClientRect();$("body").append(g(e.top,e.right,a)),$(o.node()).trigger("mouseover-datapoint.scatterplot",[this,a,c])}),t.on("mouseout",function(){d3.select(this).classed("highlight",!1).style("fill","black").style("fill-opacity",.2),p.selectAll(".hoverline").remove(),$(".chart-info-box").remove()})}this.scatterplot=this.scatterplot||{},this.scatterplot.chartcontrol=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f="function",g=b.helperMissing,h=this.escapeExpression;return'<p class="help-text">\n    Use the following controls to how the chart is displayed.\n    The slide controls can be moved by the mouse or, if the \'handle\' is in focus, your keyboard\'s arrow keys.\n    Move the focus between controls by using the tab or shift+tab keys on your keyboard.\n    Use the \'Draw\' button to render (or re-render) the chart with the current settings.\n</p>\n\n<div data-config-key="datapointSize" class="form-input numeric-slider-input">\n    <label for="datapointSize">Size of data point: </label>\n    <div class="slider-output">'+h((e=null!=(e=b.datapointSize||(null!=a?a.datapointSize:a))?e:g,typeof e===f?e.call(a,{name:"datapointSize",hash:{},data:d}):e))+'</div>\n    <div class="slider"></div>\n    <p class="form-help help-text-small">\n        Size of the graphic representation of each data point\n    </p>\n</div>\n\n<div data-config-key="width" class="form-input numeric-slider-input">\n    <label for="width">Chart width: </label>\n    <div class="slider-output">'+h((e=null!=(e=b.width||(null!=a?a.width:a))?e:g,typeof e===f?e.call(a,{name:"width",hash:{},data:d}):e))+'</div>\n    <div class="slider"></div>\n    <p class="form-help help-text-small">\n        (not including chart margins and axes)\n    </p>\n</div>\n\n<div data-config-key="height" class="form-input numeric-slider-input">\n    <label for="height">Chart height: </label>\n    <div class="slider-output">'+h((e=null!=(e=b.height||(null!=a?a.height:a))?e:g,typeof e===f?e.call(a,{name:"height",hash:{},data:d}):e))+'</div>\n    <div class="slider"></div>\n    <p class="form-help help-text-small">\n        (not including chart margins and axes)\n    </p>\n</div>\n\n<div data-config-key="X-axis-label"class="text-input form-input">\n    <label for="X-axis-label">Re-label the X axis: </label>\n    <input type="text" name="X-axis-label" id="X-axis-label" value="'+h((e=null!=(e=b.xLabel||(null!=a?a.xLabel:a))?e:g,typeof e===f?e.call(a,{name:"xLabel",hash:{},data:d}):e))+'" />\n    <p class="form-help help-text-small"></p>\n</div>\n\n<div data-config-key="Y-axis-label" class="text-input form-input">\n    <label for="Y-axis-label">Re-label the Y axis: </label>\n    <input type="text" name="Y-axis-label" id="Y-axis-label" value="'+h((e=null!=(e=b.yLabel||(null!=a?a.yLabel:a))?e:g,typeof e===f?e.call(a,{name:"yLabel",hash:{},data:d}):e))+'" />\n    <p class="form-help help-text-small"></p>\n</div>\n\n<button class="render-button btn btn-primary active">Draw</button>\n'},useData:!0}),this.scatterplot.datacontrol=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f,g="function",h=b.helperMissing,i='<p class="help-text">\n    Use the following control to change which columns are used by the chart. Click any cell\n    from the last three rows of the table to select the column for the appropriate data.\n    Use the \'Draw\' button to render (or re-render) the chart with the current settings.\n</p>\n\n<ul class="help-text" style="margin-left: 8px">\n    <li><b>X Column</b>: which column values will be used for the x axis of the chart.</li>\n    <li><b>Y Column</b>: which column values will be used for the y axis of the chart.</li>\n    <li><b>ID Column</b>: an additional column value displayed when the user hovers over a data point.\n    It may be useful to select unique or categorical identifiers here (such as gene ids).\n    </li>\n</ul>\n\n<div class="column-selection">\n    <pre class="peek">';return f=null!=(f=b.peek||(null!=a?a.peek:a))?f:h,e=typeof f===g?f.call(a,{name:"peek",hash:{},data:d}):f,null!=e&&(i+=e),i+'</pre>\n</div>\n\n<p class="help-text help-text-small">\n    <b>Note</b>: If it can be determined from the dataset\'s filetype that a column is not numeric,\n    that column choice may be disabled for either the x or y axis.\n</p>\n\n<button class="render-button btn btn-primary active">Draw</button>\n'},useData:!0}),this.scatterplot.editor=Handlebars.template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){return'<div class="scatterplot-editor tabbable tabs-left">\n    <ul class="nav nav-tabs">\n        <li class="active">\n            <a title="Use this tab to change which data are used"\n               href="#data-control" data-toggle="tab">Data Controls</a>\n        </li>\n        <li>\n            <a title="Use this tab to change how the chart is drawn"\n               href="#chart-control" data-toggle="tab" >Chart Controls</a>\n        </li>\n        <li class="disabled">\n            <a title="This tab will display the chart"\n               href="#chart-display" data-toggle="tab">Chart</a>\n        </li>\n        <li class="file-controls">\n<!--            <button class="copy-btn btn btn-default"\n                    title="Save this as a new visualization">Save to new</button>-->\n            <button class="save-btn btn btn-default">Save</button>\n        </li>\n    </ul>\n\n    <div class="tab-content">\n        <div id="data-control" class="scatterplot-config-control tab-pane active">\n        </div>\n    \n        <div id="chart-control" class="scatterplot-config-control tab-pane">\n        </div>\n\n        <div id="chart-display" class="scatterplot-display tab-pane"></div>\n\n    </div>\n</div>\n'},useData:!0});var ScatterplotConfigEditor=Backbone.View.extend({className:"scatterplot-control-form",initialize:function(a){if(this.model||(this.model=new Visualization({type:"scatterplot"})),!a||!a.dataset)throw new Error("ScatterplotConfigEditor requires a dataset");this.dataset=a.dataset,this.display=new ScatterplotDisplay({dataset:a.dataset,model:this.model})},render:function(){this.$el.empty().append(ScatterplotConfigEditor.templates.mainLayout({})),this.model.id&&(this.$el.find(".copy-btn").show(),this.$el.find(".save-btn").text("Update saved")),this.$el.find("[title]").tooltip(),this._render_dataControl(),this._render_chartControls(),this._render_chartDisplay();var a=this.model.get("config");return this.model.id&&_.isFinite(a.xColumn)&&_.isFinite(a.yColumn)&&this.renderChart(),this},_getColumnIndecesByType:function(){var a={numeric:[],text:[],all:[]};return _.each(this.dataset.metadata_column_types||[],function(b,c){"int"===b||"float"===b?a.numeric.push(c):("str"===b||"list"===b)&&a.text.push(c),a.all.push(c)}),a.numeric.length<2&&(a.numeric=[]),a},_render_dataControl:function(a){a=a||this.$el;var b=this,c=this.model.get("config"),d=this._getColumnIndecesByType(),e=a.find(".tab-pane#data-control");return e.html(ScatterplotConfigEditor.templates.dataControl({peek:this.dataset.peek})),e.find(".peek").peekColumnSelector({controls:[{label:"X Column",id:"xColumn",selected:c.xColumn,disabled:d.text},{label:"Y Column",id:"yColumn",selected:c.yColumn,disabled:d.text},{label:"ID Column",id:"idColumn",selected:c.idColumn}]}).on("peek-column-selector.change",function(a,c){b.model.set("config",c)}).on("peek-column-selector.rename",function(a,b){}),e.find("[title]").tooltip(),e},_render_chartControls:function(a){function b(){var a=$(this),b=a.slider("value");c.model.set("config",_.object([[a.parent().data("config-key"),b]])),a.siblings(".slider-output").text(b)}a=a||this.$el;var c=this,d=this.model.get("config"),e=a.find("#chart-control");e.html(ScatterplotConfigEditor.templates.chartControl(d));var f={datapointSize:{min:2,max:10,step:1},width:{min:200,max:800,step:20},height:{min:200,max:800,step:20}};e.find(".numeric-slider-input").each(function(){var a=$(this),c=a.attr("data-config-key"),e=_.extend(f[c],{value:d[c],change:b,slide:b});a.find(".slider").slider(e),a.children(".slider-output").text(d[c])});var g=this.dataset.metadata_column_names||[],h=d.xLabel||g[d.xColumn]||"X",i=d.yLabel||g[d.yColumn]||"Y";return e.find('input[name="X-axis-label"]').val(h).on("change",function(){c.model.set("config",{xLabel:$(this).val()})}),e.find('input[name="Y-axis-label"]').val(i).on("change",function(){c.model.set("config",{yLabel:$(this).val()})}),e.find("[title]").tooltip(),e},_render_chartDisplay:function(a){a=a||this.$el;var b=a.find(".tab-pane#chart-display");return this.display.setElement(b),this.display.render(),b.find("[title]").tooltip(),b},events:{"change #include-id-checkbox":"toggleThirdColumnSelector","click #data-control .render-button":"renderChart","click #chart-control .render-button":"renderChart","click .save-btn":"saveVisualization"},saveVisualization:function(){var a=this;this.model.save().fail(function(b,c,d){console.error(b,c,d),a.trigger("save:error",view),alert("Error loading data:\n"+b.responseText)}).then(function(){a.display.render()})},toggleThirdColumnSelector:function(){this.$el.find('select[name="idColumn"]').parent().toggle()},renderChart:function(){this.$el.find(".nav li.disabled").removeClass("disabled"),this.$el.find("ul.nav").find('a[href="#chart-display"]').tab("show"),this.display.fetchData()},toString:function(){return"ScatterplotConfigEditor("+(this.dataset?this.dataset.id:"")+")"}});ScatterplotConfigEditor.templates={mainLayout:scatterplot.editor,dataControl:scatterplot.datacontrol,chartControl:scatterplot.chartcontrol};var ScatterplotDisplay=Backbone.View.extend({initialize:function(a){this.data=null,this.dataset=a.dataset,this.lineCount=this.dataset.metadata_data_lines||null},fetchData:function(){this.showLoadingIndicator();var a=this,b=this.model.get("config"),c=window.parent&&parent.galaxy_config?parent.galaxy_config.root:"/",d=jQuery.getJSON(c+"api/datasets/"+this.dataset.id,{data_type:"raw_data",provider:"dataset-column",limit:b.pagination.perPage,offset:b.pagination.currPage*b.pagination.perPage});return d.done(function(b){a.data=b.data,a.trigger("data:fetched",a),a.renderData()}),d.fail(function(b,c,d){console.error(b,c,d),a.trigger("data:error",a),alert("Error loading data:\n"+b.responseText)}),d},showLoadingIndicator:function(){this.$el.find(".scatterplot-data-info").html(['<div class="loading-indicator">','<span class="fa fa-spinner fa-spin"></span>','<span class="loading-indicator-message">loading...</span>',"</div>"].join(""))},template:function(){var a=['<div class="controls clear">','<div class="right">','<p class="scatterplot-data-info"></p>','<button class="stats-toggle-btn">Stats</button>','<button class="rerender-btn">Redraw</button>',"</div>",'<div class="left">','<div class="page-control"></div>',"</div>","</div>","<svg/>",'<div class="stats-display"></div>'].join("");return a},render:function(){return this.$el.addClass("scatterplot-display").html(this.template()),this.data&&this.renderData(),this},renderData:function(){this.renderLeftControls(),this.renderRightControls(),this.renderPlot(this.data),this.getStats()},renderLeftControls:function(){var a=this,b=this.model.get("config");return this.$el.find(".controls .left .page-control").pagination({startingPage:b.pagination.currPage,perPage:b.pagination.perPage,totalDataSize:this.lineCount,currDataSize:this.data.length}).off().on("pagination.page-change",function(c,d){b.pagination.currPage=d,a.model.set("config",{pagination:b.pagination}),a.resetZoom(),a.fetchData()}),this},renderRightControls:function(){var a=this;this.setLineInfo(this.data),this.$el.find(".stats-toggle-btn").off().click(function(){a.toggleStats()}),this.$el.find(".rerender-btn").off().click(function(){a.resetZoom(),a.renderPlot(this.data)})},renderPlot:function(){var a=this,b=this.$el.find("svg");this.toggleStats(!1),b.off().empty().show().on("zoom.scatterplot",function(b,c){a.model.set("config",c)}),scatterplot(b.get(0),this.model.get("config"),this.data)},setLineInfo:function(a,b){if(a){var c=this.model.get("config"),d=this.lineCount||"an unknown total",e=c.pagination.currPage*c.pagination.perPage,f=e+a.length;this.$el.find(".controls p.scatterplot-data-info").text([e+1,"to",f,"of",d].join(" "))}else this.$el.find(".controls p.scatterplot-data-info").html(b||"");return this},resetZoom:function(a,b){return a=void 0!==a?a:1,b=void 0!==b?b:[0,0],this.model.set("config",{scale:a,translate:b}),this},getStats:function(){if(this.data){var a=this,b=this.model.get("config"),c=new Worker("/plugins/visualizations/scatterplot/static/worker-stats.js");c.postMessage({data:this.data,keys:[b.xColumn,b.yColumn]}),c.onerror=function(a){c.terminate()},c.onmessage=function(b){a.renderStats(b.data)}}},renderStats:function(a,b){var c=this.model.get("config"),d=this.$el.find(".stats-display"),e=c.xLabel,f=c.yLabel,g=$("<table/>").addClass("table").append(["<thead><th></th><th>",e,"</th><th>",f,"</th></thead>"].join("")).append(_.map(a,function(a,b){return $(["<tr><td>",b,"</td><td>",a[0],"</td><td>",a[1],"</td></tr>"].join(""))}));d.empty().append(g)},toggleStats:function(a){var b=this.$el.find(".stats-display");a=void 0===a?b.is(":hidden"):a,a?(this.$el.find("svg").hide(),b.show(),this.$el.find(".controls .stats-toggle-btn").text("Plot")):(b.hide(),this.$el.find("svg").show(),this.$el.find(".controls .stats-toggle-btn").text("Stats"))},toString:function(){return"ScatterplotView()"}}),ScatterplotModel=Visualization.extend({defaults:{type:"scatterplot",config:{pagination:{currPage:0,perPage:3e3},width:400,height:400,margin:{top:16,right:16,bottom:40,left:54},xTicks:10,xLabel:"X",yTicks:10,yLabel:"Y",datapointSize:4,animDuration:500,scale:1,translate:[0,0]}}});>>>>>>> /tmp/scatterplot-edit.js~other.c560xg
diff -r 0994712eb599 config/tool_conf.xml.main
--- a/config/tool_conf.xml.main    Wed Aug 12 17:48:51 2015 -0400
+++ b/config/tool_conf.xml.main    Tue Sep 08 12:36:40 2015 -0700
@@ -3,26 +3,35 @@
   <section id="getext" name="Get Data">
     <tool file="data_source/upload.xml" />
     <tool file="data_source/ucsc_tablebrowser.xml" />
+<!--
     <tool file="data_source/ucsc_tablebrowser_archaea.xml" />
+-->
     <tool file="data_source/ebi_sra.xml" />
     <tool file="data_source/biomart.xml" />
+<!--
     <tool file="data_source/gramene_mart.xml" />
     <tool file="data_source/flymine.xml" />
     <tool file="data_source/fly_modencode.xml" />
     <tool file="data_source/modmine.xml" />
+-->
     <tool file="data_source/mousemine.xml" />
     <tool file="data_source/ratmine.xml" />
+<!--
     <tool file="data_source/yeastmine.xml" />
     <tool file="data_source/worm_modencode.xml" />
     <tool file="data_source/wormbase.xml" />
     <tool file="data_source/zebrafishmine.xml" />
     <tool file="data_source/eupathdb.xml" />
+-->
     <tool file="genomespace/genomespace_file_browser_prod.xml" />
     <tool file="genomespace/genomespace_importer.xml" />
+    <tool file="galaxy-ported-tools/batchNCBI.xml" />
   </section>
+<!--
   <section id="send" name="Send Data">
     <tool file="genomespace/genomespace_exporter.xml" />
   </section>
+-->
   <section id="liftOver" name="Lift-Over">
     <tool file="extract/liftOver_wrapper.xml" />
   </section>
@@ -45,6 +54,7 @@
     <tool file="filters/secure_hash_message_digest.xml" />
   </section>
   <section id="convert" name="Convert Formats">
+    <tool file="galaxy-ported-tools/ConvertFASTA2MAF.xml"/>
     <tool file="filters/bed2gff.xml" />
     <tool file="filters/gff2bed.xml" />
     <tool file="maf/maf_to_bed.xml" />
@@ -53,6 +63,7 @@
     <tool file="filters/sff_extractor.xml" />
     <tool file="filters/wig_to_bigwig.xml" />
     <tool file="filters/bed_to_bigbed.xml" />
+    <tool file="galaxy-ported-tools/CreateNEXUS.xml"/>
   </section>
   <section id="filter" name="Filter and Sort">
     <tool file="stats/filtering.xml" />
@@ -72,9 +83,11 @@
   <section id="features" name="Extract Features">
     <tool file="filters/ucsc_gene_bed_to_exon_bed.xml" />
   </section>
+<!--
   <section id="fetchSeq" name="Fetch Sequences">
     <tool file="extract/extract_genomic_dna.xml" />
   </section>
+-->
   <section id="fetchAlign" name="Fetch Alignments">
     <tool file="maf/interval2maf_pairwise.xml" />
     <tool file="maf/interval2maf.xml" />
@@ -88,10 +101,12 @@
     <tool file="maf/maf_filter.xml" />
     <tool file="maf/maf_reverse_complement.xml" />
   </section>
+<!--
   <section id="scores" name="Get Genomic Scores">
     <tool file="filters/wiggle_to_simple.xml" />
     <tool file="stats/aggregate_binned_scores_in_intervals.xml" />
   </section>
+-->
   <section id="stats" name="Statistics">
     <tool file="stats/gsummary.xml" />
     <tool file="filters/uniq.xml" />
@@ -131,4 +146,107 @@
   </section>
   <section id="samtools" name="NGS: SAM Tools">
   </section>
+  <label text="RMD Bioinformatics Tools" id="RMD_Tools" />
+  <section name="DUSTPAD" id="dustpadtools">
+     <tool file="DUSTPAD/RunDUSTPAD.xml" />
+     <tool file="DUSTPAD/CreateSpeciesList.xml" />
+     <tool file="DUSTPAD/ExtractInclusivityExclusivitySequences.xml" />
+     <tool file="DUSTPAD/GalaxyWrapMugsy.xml" />
+<!-- 
+     <tool file="DUSTPAD/ExtractCandidateRegionsFromMugsy.xml" />
+     <tool file="DUSTPAD/ScanExcludedSpecies.xml" />
+     <tool file="DUSTPAD/ExtractCandidateSNPs.xml" />
+     <tool file="DUSTPAD/CreateHTMLFromScanned.xml" />
+     <tool file="DUSTPAD/CreateHTMLFromSNP.xml" /> 
+-->
+     <tool file="DUSTPAD/ExtractConservedRegions.xml" />
+     <tool file="DUSTPAD/CreatePhylogeneticTreeFromFasta.xml" />
+  </section>
+<!--  
+  <section name="DeFTTS" id="DeFTTSTools">
+-->
+     <tool file="DeFTTS/RunDeFTTS.xml" />
+<!--     
+     <tool file="DeFTTS/TrimFastQ.xml" />
+     <tool file="DeFTTS/AlignPairedEndReads.xml" />
+     <tool file="DeFTTS/AssignAmplicons.xml" />
+     <tool file="DeFTTS/DetectGeneFusions.xml" />
+-->
+<!--
+  </section> 
+-->
+  <section name="AAD" id="AAD">
+     <tool file="AAD/repeatfinder.xml"/>
+     <tool file="AAD/meltg.xml" />
+     <tool file="AAD/fasta2pr3.xml"/>
+  <label id="gene_exp" text="Gene Expression" />
+     <tool file="AAD/masked_refseq.xml"/>
+     <tool file="AAD/fasta2primer3gex.xml"/>
+     <tool file="AAD/score_ref.xml"/>
+     <tool file="AAD/amp2score.xml"/>
+     <tool file="AAD/score_assay2.xml"/>
+<!--
+  <label id="test_grh" text="Test" />
+     <tool file="AAD/blast2fasta.xml"/>
+     <tool file="test/unafold_test.xml"/> 
+     <tool file="test/unafold60_test.xml"/> 
+-->
+  </section>
+  <tool file="Ported_Tools/PCRBlast.xml"/>
+  <tool file="Ported_Tools/RTPCR.xml"/>
+<!--  
+  <tool file="Ported_Tools/primerhunter.xml" /> 
+-->
+  
+  <section id="rmd_phylogenetics" name="RMD Phylogenetics" version="">
+     <label id="annot" text="Annotation" />
+     <tool file="Ported_Tools/barrnap.xml" />
+     <label id="seqtools" text="Sequence Tools" />
+     <tool file="galaxy-ported-tools/batchNCBI.xml" />
+     <tool file="Ported_Tools/ExtractFastaFromBlast.xml" />
+     <tool file="Ported_Tools/extractSequencesFromGffFile.xml" />
+     <tool file="Ported_Tools/GBlocks.xml" />
+     <tool file="Ported_Tools/snp-sites.xml" />
+     <tool file="Ported_Tools/JoinFASTAFiles.xml" />
+     <label id="dist" text="Distance Matrix / Tree Tools" />
+     <tool file="DUSTPAD/CreatePhylogeneticTreeFromFasta.xml" />
+     <tool file="Ported_Tools/PASTA.xml" />
+     <tool file="Ported_Tools/jD2Stat.xml" />
+  </section>
+  <section id="aligners" name="Sequence Alignment" version="">
+     <tool file="Ported_Tools/PASTA.xml" />
+     <tool file="Ported_Tools/MAFFT.xml" />
+     <tool file="Ported_Tools/CSA.xml" />
+     <tool file="DUSTPAD/RunDUSTPAD.xml" />
+     <tool file="DUSTPAD/CreateSpeciesList.xml" />
+     <tool file="DUSTPAD/GalaxyWrapMugsy.xml" />
+     <tool file="Ported_Tools/FastSP.xml" />
+  </section>
+  <section id="seqmanip" name="Sequence Manipulation" version="">
+     <tool file="Utilities/AnnotateSequence.xml" />
+     <tool file="Utilities/OrientSequences.xml" />
+<!--     
+     <tool file="Ported_Tools/ConvertFASTQ2FASTA.xml" /> 
+-->
+     <tool file="Ported_Tools/fasta_to_fastq.xml" /> 
+     <tool file="Ported_Tools/ExtractSequenceFromGenBankFile.xml" /> 
+     <tool file="Ported_Tools/genbank_to_fasta.xml" /> 
+     <tool file="Ported_Tools/JoinFASTAFiles.xml" />
+     <tool file="Ported_Tools/RenameFASTAEntries.xml" />
+     <tool file="AAD/fasta2consensus.xml" />
+     <tool file="Ported_Tools/extractSequencesFromGffFile.xml" />
+     <tool file="Ported_Tools/GBlocks.xml" />
+     <tool file="Ported_Tools/merge_Multi_Fasta.xml" />
+  </section>
+  <tool file="Ported_Tools/MFEprimer.xml" />
+  <section id ="repeat_finding" name="Repeat Finding" version="">
+      <tool file="AAD/repeatfinder.xml"/>
+  </section>
+  <section name="Admin Tasks" id="MISC">
+     <tool file="Ported_Tools/AddLibraryDirectory.xml" />
+     <tool file="Ported_Tools/UpdateGit.xml" />
+<!--
+     <tool file="Ported_Tools/ncbi_makeblastdb.xml" />
+-->
+  </section>
 </toolbox>
diff -r 0994712eb599 contrib/galaxy.fedora-init
--- a/contrib/galaxy.fedora-init    Wed Aug 12 17:48:51 2015 -0400
+++ b/contrib/galaxy.fedora-init    Tue Sep 08 12:36:40 2015 -0700
@@ -12,13 +12,13 @@
 
 SERVICE_NAME="galaxy"
 RUN_AS="galaxy"
-RUN_IN="/path/to/galaxy-dist"
+RUN_IN="/opt/galaxy-dist"
 
 #--- main actions
 
 start() {
     echo "Starting $SERVICE_NAME... "
-    cmd="cd $RUN_IN && sh run.sh --daemon"
+    cmd="source /nfs/sw/bash_shared && cd $RUN_IN && sh run.sh --daemon"
     case "$(id -un)" in
         $RUN_AS)
             eval "$cmd"
diff -r 0994712eb599 lib/galaxy/datatypes/data.py
--- a/lib/galaxy/datatypes/data.py    Wed Aug 12 17:48:51 2015 -0400
+++ b/lib/galaxy/datatypes/data.py    Tue Sep 08 12:36:40 2015 -0700
@@ -1,3 +1,5 @@
+from galaxy.datatypes.checkers import *
+import tarfile
 import logging
 import mimetypes
 import os
@@ -999,3 +1001,19 @@
         except UnicodeDecodeError:
             text = "binary/unknown file"
     return text
+
+class Fastqgz( Data ):
+    file_ext = "fastq.gz"
+
+    def set_peek( self, dataset, is_multi_byte=False ):
+        """Set the peek and blurb text"""
+        if not dataset.dataset.purged:
+            dataset.peek = get_file_peek( dataset.file_name, is_multi_byte=is_multi_byte )
+        else:
+            dataset.peek = 'file does not exist'
+            dataset.blurb = 'file purged from disk'
+
+    def sniff( self, filename ):
+        is_gzipped, is_valid = check_gzip( filename )
+        is_tar = tarfile.is_tarfile( filename )
+        return (is_gzipped and is_valid and not is_tar)
diff -r 0994712eb599 static/formatHelp.html
--- a/static/formatHelp.html    Wed Aug 12 17:48:51 2015 -0400
+++ b/static/formatHelp.html    Tue Sep 08 12:36:40 2015 -0700
@@ -1,665 +1,1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<head>
-<title>Galaxy Data Formats</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<meta http-equiv="Content-Style-Type" content="text/css">
-<style type="text/css">
-    hr  { margin-top: 3ex; margin-bottom: 1ex; border: 1px inset }
-</style>
-</head>
-<body>
-<h2>Galaxy Data Formats</h2>
-<p>
-<br>
-
-<h3>Dataset missing?</h3>
-<p>
-If you have a dataset in your history that is not appearing in the
-drop-down selector for a tool, the most common reason is that it has
-the wrong format.  Each Galaxy dataset has an associated file format
-recorded in its metadata, and tools will only list datasets from your
-history that have a format compatible with that particular tool.  Of
-course some of these datasets might not actually contain relevant
-data, or even the correct columns needed by the tool, but filtering
-by format at least makes the list to select from a bit shorter.
-<p>
-Some of the formats are defined hierarchically, going from very
-general ones like <a href="#tab">Tabular</a> (which includes any text
-file with tab-separated columns), to more restrictive sub-formats
-like <a href="#interval">Interval</a> (where three of the columns
-must be the chromosome, start position, and end position), and on
-to even more specific ones such as <a href="#bed">BED</a> that have
-additional requirements.  So for example if a tool's required input
-format is Tabular, then all of your history items whose format is
-recorded as Tabular will be listed, along with those in all
-sub-formats that also qualify as Tabular (Interval, BED, GFF, etc.).
-<p>
-There are two usual methods for changing a dataset's format in
-Galaxy: if the file contents are already in the required format but
-the metadata is wrong (perhaps because the Auto-detect feature of the
-Upload File tool guessed it incorrectly), you can fix the metadata
-manually by clicking on the pencil icon beside that dataset in your
-history.  Or, if the file contents really are in a different format,
-Galaxy provides a number of format conversion tools (e.g. in the
-Text Manipulation and Convert Formats categories).  For instance,
-if the tool you want to run requires Tabular but your columns are
-delimited by spaces or commas, you can use the "Convert delimiters
-to TAB" tool under Text Manipulation to reformat your data.  However
-if your files are in a completely unsupported format, then you need
-to convert them yourself before uploading.
-<p>
-<hr>
-
-<h3>Format Descriptions</h3>
-<ul>
-<li><a href="#ab1">AB1</a>
-<li><a href="#axt">AXT</a>
-<li><a href="#bam">BAM</a>
-<li><a href="#bed">BED</a>
-<li><a href="#bedgraph">BedGraph</a>
-<li><a href="#binseq">Binseq.zip</a>
-<li><a href="#fasta">FASTA</a>
-<li><a href="#fastqsolexa">FastqSolexa</a>
-<li><a href="#fped">FPED</a>
-<li><a href="#gd_indivs">gd_indivs</a>
-<li><a href="#gd_ped">gd_ped</a>
-<li><a href="#gd_sap">gd_sap</a>
-<li><a href="#gd_snp">gd_snp</a>
-<li><a href="#gff">GFF</a>
-<li><a href="#gff3">GFF3</a>
-<li><a href="#gtf">GTF</a>
-<li><a href="#html">HTML</a>
-<li><a href="#interval">Interval</a>
-<li><a href="#lav">LAV</a>
-<li><a href="#lped">LPED</a>
-<li><a href="#maf">MAF</a>
-<li><a href="#mastervar">MasterVar</a>
-<li><a href="#pbed">PBED</a>
-<li><a href="#pgSnp">pgSnp</a>
-<li><a href="#psl">PSL</a>
-<li><a href="#scf">SCF</a>
-<li><a href="#sff">SFF</a>
-<li><a href="#table">Table</a>
-<li><a href="#tab">Tabular</a>
-<li><a href="#txtseqzip">Txtseq.zip</a>
-<li><a href="#vcf">VCF</a>
-<li><a href="#wig">Wiggle custom track</a>
-<li><a href="#text">Other text type</a>
-</ul>
-<p>
-
-<div><a name="ab1"></a></div>
-<hr>
-<strong>AB1</strong>
-<p>
-This is one of the ABIF family of binary sequence formats from
-Applied Biosystems Inc.
-<!-- Their PDF
-<a href="http://www.appliedbiosystems.com/support/software_community/ABIF_File_Format.pdf"
->format specification</a> is unfortunately password-protected. -->
-Files should have a '<code>.ab1</code>' file extension.  You must
-manually select this file format when uploading the file.
-<p>
-
-<div><a name="axt"></a></div>
-<hr>
-<strong>AXT</strong>
-<p>
-Used for pairwise alignment output from BLASTZ, after post-processing.
-Each alignment block contains three lines: a summary line and two
-sequence lines.  Blocks are separated from one another by blank lines.
-The summary line contains chromosomal position and size information
-about the alignment, and consists of nine required fields.
-<a href="http://main.genome-browser.bx.psu.edu/goldenPath/help/axt.html"
->More information</a>
-<!-- (not available on Main)
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>FASTA<br>
-Convert Formats &rarr; AXT to FASTA
-<li>LAV<br>
-Convert Formats &rarr; AXT to LAV
-</ul></dl>
--->
-<p>
-
-<div><a name="bam"></a></div>
-<hr>
-<strong>BAM</strong>
-<p>
-A binary alignment file compressed in the BGZF format with a
-'<code>.bam</code>' file extension.
-<!-- You must manually select this file format when uploading the file. -->
-<a href="http://samtools.sourceforge.net/SAM1.pdf">SAM</a>
-is the human-readable text version of this format.
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>SAM<br>
-NGS: SAM Tools &rarr; BAM-to-SAM
-<li>Pileup<br>
-NGS: SAM Tools &rarr; Generate pileup
-<li>Interval<br>
-First convert to Pileup as above, then use
-NGS: SAM Tools &rarr; Pileup-to-Interval
-</ul></dl>
-<p>
-
-<div><a name="bed"></a></div>
-<hr>
-<strong>BED</strong>
-<p>
-<ul>
-<li> also qualifies as Tabular
-<li> also qualifies as Interval
-</ul>
-This tab-separated format describes a genomic interval, but has
-strict field specifications for use in genome browsers.  BED files
-can have from 3 to 12 columns, but the order of the columns matters,
-and only the end ones can be omitted.  Some groups of columns must
-be all present or all absent.  As in Interval format (but unlike
-GFF and its relatives), the interval endpoints use a 0-based,
-half-open numbering system.
-<a href="http://main.genome-browser.bx.psu.edu/goldenPath/help/hgTracksHelp.html#BED"
->Field specifications</a>
-<p>
-Example:
-<pre>
-chr22 1000 5000 cloneA 960 + 1000 5000 0 2 567,488, 0,3512
-chr22 2000 6000 cloneB 900 - 2000 6000 0 2 433,399, 0,3601
-</pre>
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>GFF<br>
-Convert Formats &rarr; BED-to-GFF
-</ul></dl>
-<p>
-
-<div><a name="bedgraph"></a></div>
-<hr>
-<strong>BedGraph</strong>
-<p>
-<ul>
-<li> also qualifies as Tabular
-<li> also qualifies as Interval
-<li> also qualifies as BED
-</ul>
-<a href="http://main.genome-browser.bx.psu.edu/goldenPath/help/bedgraph.html"
->BedGraph</a> is a BED file with the name column being a float value
-that is displayed as a wiggle score in tracks.  Unlike in Wiggle
-format, the exact value of this score can be retrieved after being
-loaded as a track.
-<p>
-
-<div><a name="binseq"></a></div>
-<hr>
-<strong>Binseq.zip</strong>
-<p>
-A zipped archive consisting of binary sequence files in either AB1
-or SCF format.  All files in this archive must have the same file
-extension which is one of '<code>.ab1</code>' or '<code>.scf</code>'.
-You must manually select this file format when uploading the file.
-<p>
-
-<div><a name="fasta"></a></div>
-<hr>
-<strong>FASTA</strong>
-<p>
-A sequence in 
-<a href="http://www.ncbi.nlm.nih.gov/blast/fasta.shtml">FASTA</a>
-format consists of a single-line description, followed by lines of
-sequence data.  The first character of the description line is a
-greater-than ('<code>&gt;</code>') symbol.  All lines should be
-shorter than 80 characters.
-<pre>
->sequence1
-atgcgtttgcgtgc
-gtcggtttcgttgc
->sequence2
-tttcgtgcgtatag
-tggcgcggtga
-</pre>
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>Tabular<br>
-Convert Formats &rarr; FASTA-to-Tabular
-</ul></dl>
-<p>
-
-<div><a name="fastqsolexa"></a></div>
-<hr>
-<strong>FastqSolexa</strong>
-<p>
-<a href="http://maq.sourceforge.net/fastq.shtml">FastqSolexa</a>
-is the Illumina (Solexa) variant of the FASTQ format, which stores
-sequences and quality scores in a single file.
-<pre>
-@seq1  
-GACAGCTTGGTTTTTAGTGAGTTGTTCCTTTCTTT  
-+seq1  
-hhhhhhhhhhhhhhhhhhhhhhhhhhPW@hhhhhh  
-@seq2  
-GCAATGACGGCAGCAATAAACTCAACAGGTGCTGG  
-+seq2  
-hhhhhhhhhhhhhhYhhahhhhWhAhFhSIJGChO
-</pre>
-Or 
-<pre>
-@seq1
-GAATTGATCAGGACATAGGACAACTGTAGGCACCAT
-+seq1
-40 40 40 40 35 40 40 40 25 40 40 26 40 9 33 11 40 35 17 40 40 33 40 7 9 15 3 22 15 30 11 17 9 4 9 4
-@seq2
-GAGTTCTCGTCGCCTGTAGGCACCATCAATCGTATG
-+seq2
-40 15 40 17 6 36 40 40 40 25 40 9 35 33 40 14 14 18 15 17 19 28 31 4 24 18 27 14 15 18 2 8 12 8 11 9
-</pre>
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>FASTA<br>
-NGS: QC and manipulation &rarr; Generic FASTQ manipulation &rarr; FASTQ to FASTA
-<li>Tabular<br>
-NGS: QC and manipulation &rarr; Generic FASTQ manipulation &rarr; FASTQ to Tabular
-</ul></dl>
-<p>
-
-<div><a name="fped"></a></div>
-<hr>
-<strong>FPED</strong>
-<p>
-Also known as the FBAT format, for use with the
-<a href="http://biosun1.harvard.edu/~fbat/fbat.htm">FBAT</a> program.
-It consists of a pedigree file and a phenotype file.
-<p>
-
-<div><a name="gd_indivs"></a></div>
-<hr>
-<strong>ind</strong>
-<p>
-This format is a tabular file with the first column being the column number
-(1 based)
-from the gd_snp file where the individual/group starts.  The second column is
-the label from the metadata for the individual/group.  The third is an alias
-or blank.
-<p>
-
-<div><a name="gd_sap"></a></div>
-<hr>
-<strong>gd_sap</strong>
-<p>
-This is a tabular file describing single amino-acid polymorphisms (SAPs).
-You must manually select this file format when uploading the file.
-<!--
-<a href="http://www.bx.psu.edu/miller_lab/docs/formats/gd_sap_format.html"
->Field specifications</a>
--->
-<p>
-
-<div><a name="gd_snp"></a></div>
-<hr>
-<strong>gd_snp</strong>
-<p>
-This is a tabular file describing SNPs in individuals or populations.
-It contains the zero-based position of the SNP but not the range
-required by BED or interval so can not be used in Genomic Operations without
-adding an column for the end position.
-You must manually select this file format when uploading the file.
-<a href="http://www.bx.psu.edu/miller_lab/docs/formats/gd_snp_format.html"
->Field specifications</a>
-<p>
-
-<div><a name="gff"></a></div>
-<hr>
-<strong>GFF</strong>
-<p>
-<ul>
-<li> also qualifies as Tabular
-</ul>
-GFF is a tab-separated format somewhat similar to BED, but it has
-different columns and is more flexible.  There are
-<a href="http://main.genome-browser.bx.psu.edu/FAQ/FAQformat#format3"
->nine required fields</a>.
-Note that unlike Interval and BED, GFF and its relatives (GFF3, GTF)
-use 1-based inclusive coordinates to specify genomic intervals.
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>BED<br>
-Convert Formats &rarr; GFF-to-BED
-</ul></dl>
-<p>
-
-<div><a name="gff3"></a></div>
-<hr>
-<strong>GFF3</strong>
-<p>
-<ul>
-<li> also qualifies as Tabular
-</ul>
-The <a href="http://www.sequenceontology.org/gff3.shtml">GFF3</a>
-format addresses the most common extensions to GFF, while attempting
-to preserve compatibility with previous formats.
-Note that unlike Interval and BED, GFF and its relatives (GFF3, GTF)
-use 1-based inclusive coordinates to specify genomic intervals.
-<p>
-
-<div><a name="gtf"></a></div>
-<hr>
-<strong>GTF</strong>
-<p>
-<ul>
-<li> also qualifies as Tabular
-</ul>
-<a href="http://main.genome-browser.bx.psu.edu/FAQ/FAQformat#format4"
->GTF</a> is a format for describing genes and other features associated
-with DNA, RNA, and protein sequences.  It is a refinement to GFF that
-tightens the specification.
-Note that unlike Interval and BED, GFF and its relatives (GFF3, GTF)
-use 1-based inclusive coordinates to specify genomic intervals.
-<!-- (not available on Main)
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>BedGraph<br>
-Convert Formats &rarr; GTF-to-BEDGraph
-</ul></dl>
--->
-<p>
-
-<div><a name="html"></a></div>
-<hr>
-<strong>HTML</strong>
-<p>
-This format is an HTML web page.  Click the eye icon next to the
-dataset to view it in your browser.
-<p>
-
-<div><a name="interval"></a></div>
-<hr>
-<strong>Interval</strong>
-<p>
-<ul>
-<li> also qualifies as Tabular
-</ul>
-This Galaxy format represents genomic intervals.  It is tab-separated,
-but has the added requirement that three of the columns must be the
-chromosome name, start position, and end position, where the positions
-use a 0-based, half-open numbering system (see below).  An optional
-strand column can also be specified, and an initial header row can
-be used to label the columns, which do not have to be in any special
-order.  Arbitrary additional columns can also be present.
-<p>
-Required fields:
-<ul>
-<li>CHROM - The name of the chromosome (e.g. chr3, chrY, chr2_random)
-    or contig (e.g. ctgY1).
-<li>START - The starting position of the feature in the chromosome or
-    contig.  The first base in a chromosome is numbered 0.
-<li>END - The ending position of the feature in the chromosome or
-    contig.  This base is not included in the feature.  For example,
-    the first 100 bases of a chromosome are described as START=0,
-    END=100, and span the bases numbered 0-99.
-</ul>
-Optional:
-<ul>
-<li>STRAND - Defines the strand, either '<code>+</code>' or
-'<code>-</code>'.
-<li>Header row
-</ul>
-Example:
-<pre>
-    #CHROM  START  END    STRAND  NAME  COMMENT
-    chr1    10     100    +       exon  myExon
-    chrX    1000   10050  -       gene  myGene
-</pre>
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>BED<br>
-The exact changes needed and tools to run will vary with what fields
-are in the Interval file and what type of BED you are converting to.
-In general you will likely use Text Manipulation &rarr; Compute, Cut,
-or Merge Columns.
-</ul></dl>
-<p>
-
-<div><a name="lav"></a></div>
-<hr>
-<strong>LAV</strong>
-<p>
-<a href="http://www.bx.psu.edu/miller_lab/dist/lav_format.html">LAV</a>
-is the raw pairwise alignment format that is output by BLASTZ.  The
-first line begins with <code>#:lav</code>.
-<!-- (not available on Main)
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>BED<br>
-Convert Formats &rarr; LAV to BED
-</ul></dl>
--->
-<p>
-
-<div><a name="lped"></a></div>
-<hr>
-<strong>LPED</strong>
-<p>
-This is the linkage pedigree format, which consists of separate MAP and PED
-files.  Together these files describe SNPs; the map file contains the position
-and an identifier for the SNP, while the pedigree file has the alleles.  To
-upload this format into Galaxy, do not use Auto-detect for the file format;
-instead select <code>lped</code>.  You will then be given two sections for
-uploading files, one for the pedigree file and one for the map file.  For more
-information, see
-<a href="http://www.broadinstitute.org/science/programs/medical-and-population-genetics/haploview/input-file-formats-0"
->linkage pedigree</a>,
-<a href="http://pngu.mgh.harvard.edu/~purcell/plink/data.shtml#map">MAP</a>,
-and/or <a href="http://pngu.mgh.harvard.edu/~purcell/plink/data.shtml#ped">PED</a>.
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>PBED<br>Automatic
-<li>FPED<br>Automatic
-</ul></dl>
-<p>
-
-<div><a name="maf"></a></div>
-<hr>
-<strong>MAF</strong>
-<p>
-<a href="http://main.genome-browser.bx.psu.edu/FAQ/FAQformat#format5"
->MAF</a> is the multi-sequence alignment format that is output by TBA
-and Multiz.  The first line begins with '<code>##maf</code>'.  This
-word is followed by whitespace-separated "variable<code>=</code>value"
-pairs.  There should be no whitespace surrounding the '<code>=</code>'.
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>BED<br>
-Convert Formats &rarr; MAF to BED
-<li>Interval<br>
-Convert Formats &rarr; MAF to Interval
-<li>FASTA<br>
-Convert Formats &rarr; MAF to FASTA
-</ul></dl>
-<p>
-
-<div><a name="mastervar"></a></div>
-<hr>
-<strong>MasterVar</strong>
-<p>
-MasterVar is a tab delimited text format with specified fields developed
-by the Complete Genomics life sciences company.  
-<a href="http://media.completegenomics.com/documents/DataFileFormats_Standard_Pipeline_2.2.pdf"
->Field specifications</a>.
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>pgSnp<br>
-Convert Formats &rarr; MasterVar to pgSnp
-<li>gd_snp<br>
-Convert Formats &rarr; MasterVar to gd_snp
-</ul></dl>
-<p>
-
-<div><a name="pbed"></a></div>
-<hr>
-<strong>PBED</strong>
-<p>
-This is the binary version of the LPED format.
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>LPED<br>Automatic
-</ul></dl>
-<p>
-
-<div><a name="pgSnp"></a></div>
-<hr>
-<strong>pgSnp</strong>
-<p>
-This is the personal genome SNP format used by UCSC.  It is a BED-like
-format with columns chosen for the specialized display in the browser
-for personal genomes.  
-<a href="http://genome.ucsc.edu/FAQ/FAQformat.html#format10"
->Field specifications</a>.  
-Galaxy treats it the same as an interval file.
-<p>
-
-<div><a name="psl"></a></div>
-<hr>
-<strong>PSL</strong>
-<p>
-<a href="http://main.genome-browser.bx.psu.edu/FAQ/FAQformat#format2">PSL</a>
-format is used for alignments returned by
-<a href="http://genome.ucsc.edu/cgi-bin/hgBlat?command=start">BLAT</a>.
-It does not include any sequence.
-<p>
-
-<div><a name="scf"></a></div>
-<hr>
-<strong>SCF</strong>
-<p>
-This is a binary sequence format originally designed for the Staden
-sequence handling software package.  Files should have a
-'<code>.scf</code>' file extension.  You must manually select this
-file format when uploading the file.
-<a href="http://staden.sourceforge.net/manual/formats_unix_2.html"
->More information</a>
-<p>
-
-<div><a name="sff"></a></div>
-<hr>
-<strong>SFF</strong>
-<p>
-This is a binary sequence format used by the Roche 454 GS FLX
-sequencing machine, and is documented on p.&nbsp;528 of their
-<a href="http://sequence.otago.ac.nz/download/GS_FLX_Software_Manual.pdf"
->software manual</a>.  Files should have a '<code>.sff</code>' file
-extension.
-<!-- You must manually select this file format when uploading the file. -->
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>FASTA<br>
-Convert Formats &rarr; SFF converter
-<li>FASTQ<br>
-Convert Formats &rarr; SFF converter
-</ul></dl>
-<p>
-
-<div><a name="table"></a></div>
-<hr>
-<strong>Table</strong>
-<p>
-Text data separated into columns by something other than tabs.
-<p>
-
-<div><a name="tab"></a></div>
-<hr>
-<strong>Tabular (tab-delimited)</strong>
-<p>
-One or more columns of text data separated by tabs.
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>FASTA<br>
-Convert Formats &rarr; Tabular-to-FASTA<br>
-The Tabular file must have a title and sequence column.
-<li>FASTQ<br>
-NGS: QC and manipulation &rarr; Generic FASTQ manipulation &rarr; Tabular to FASTQ
-<li>Interval<br>
-If the Tabular file has a chromosome column (or is all on one
-chromosome) and has a position column, you can create an Interval
-file (e.g. for SNPs).  If it is all on one chromosome, use
-Text Manipulation &rarr; Add column to add a CHROM column.
-If the given position is 1-based, use
-Text Manipulation &rarr; Compute with the position column minus 1 to
-get the START, and use the original given column for the END.
-If the given position is 0-based, use it as the START, and compute
-that plus 1 to get the END.
-</ul></dl>
-<p>
-
-<div><a name="txtseqzip"></a></div>
-<hr>
-<strong>Txtseq.zip</strong>
-<p>
-A zipped archive consisting of flat text sequence files.  All files
-in this archive must have the same file extension of
-'<code>.txt</code>'.  You must manually select this file format when
-uploading the file.
-<p>
-
-<div><a name="vcf"></a></div>
-<hr>
-<strong>VCF</strong>
-<p>
-Variant Call Format (VCF) is a tab delimited text file with specified
-fields.  It was developed by the 1000 Genomes Project.
-<a href="http://www.1000genomes.org/wiki/Analysis/Variant%20Call%20Format/vcf-variant-call-format-version-41"
->Field specifications</a>.
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>pgSnp<br>
-Convert Formats &rarr; VCF to pgSnp
-</ul></dl>
-<p>
-
-<div><a name="wig"></a></div>
-<hr>
-<strong>Wiggle custom track</strong>
-<p>
-Wiggle tracks are typically used to display per-nucleotide scores
-in a genome browser.  The Wiggle format for custom tracks is
-line-oriented, and the wiggle data is preceded by a track definition
-line that specifies which of three different types is being used.
-<a href="http://main.genome-browser.bx.psu.edu/goldenPath/help/wiggle.html"
->More information</a>
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>Interval<br>
-Get Genomic Scores &rarr; Wiggle-to-Interval
-<li>As a second step this could be converted to 3- or 4-column BED,
-by removing extra columns using
-Text Manipulation &rarr; Cut columns from a table.
-</ul></dl>
-<p>
-
-<div><a name="gd_ped"></a></div>
-<hr>
-<strong>gd_ped</strong>
-<p>
-Similar to the linkage pedigree format (lped).  
-<p>
-
-<div><a name="text"></a></div>
-<hr>
-<strong>Other text type</strong>
-<p>
-Any text file.
-<dl><dt>Can be converted to:
-<dd><ul>
-<li>Tabular<br>
-If the text has fields separated by spaces, commas, or some other
-delimiter, it can be converted to Tabular by using
-Text Manipulation &rarr; Convert delimiters to TAB.
-</ul></dl>
-<p>
-
-<!-- blank lines so internal links will jump farther to end -->
-<br><br><br><br><br><br><br><br><br><br><br><br>
-<br><br><br><br><br><br><br><br><br><br><br><br>
-</body>
-</html>
+../config/formatHelp.html
\ No newline at end of file
diff -r 0994712eb599 static/help.html
--- a/static/help.html    Wed Aug 12 17:48:51 2015 -0400
+++ b/static/help.html    Tue Sep 08 12:36:40 2015 -0700
@@ -1,62 +1,1 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.3.9: http://docutils.sourceforge.net/" />
-<title>HELP</title>
-<link rel="stylesheet" href="/static/help.css" type="text/css" />
-</head>
-<body>
-<div class="document" id="help">
-<h1 class="title">HELP</h1>
-<p><strong>What to do if I have a problem?</strong></p>
-<p>E-mail us at <a class="reference" href="mailto:galaxy&#64;bx.psu.edu">galaxy&#64;bx.psu.edu</a></p>
-<hr class="docutils" />
-<p><strong>What do I do first?</strong></p>
-<p>To start your Galaxy session you first need to initialize history by adding some data. You can do this by using <em>Data</em> tool on the laft pane of the Galaxy window.</p>
-<p>Once you have at least one item in the history, you will be able to run appropriate tools.</p>
-<hr class="docutils" />
-<p><strong>Datatypes</strong></p>
-<p>Galaxy supports the following datatypes:</p>
-<blockquote>
-<ul class="simple">
-<li>text - any text file</li>
-<li>tabular - tab delimited text</li>
-<li>interval - tab delimited file containing information about genome features</li>
-<li>BED - a special case of the interval type</li>
-<li>FASTA - nucleotide or protein sequences</li>
-<li>AXT - blastZ-style pairwise alignments</li>
-<li>MAF - TBA and multiZ multiple alignments</li>
-</ul>
-</blockquote>
-<hr class="docutils" />
-<p><strong>What is the difference between Interval and BED?</strong></p>
-<p><a class="reference" target="_blank" href="http://genome.ucsc.edu/goldenPath/help/customTrack.html#BED">BED format</a> always contains <em>chromosome</em>, <em>start</em>, and <em>end</em> as the first three fields. Interval is more generic and does not require these fields to be in any strict order.  Here is the formal description of interval format used in Galaxy:</p>
-<ul>
-<li><p class="first">Tab delimited format</p>
-</li>
-<li><p class="first">File must start with definition line in the following format (columns may be in any order).:</p>
-<pre class="literal-block">
-#CHROM START END STRAND
-</pre>
-</li>
-<li><p class="first">CHROM - The name of the chromosome (e.g. chr3, chrY, chr2_random) or contig (e.g. ctgY1).</p>
-</li>
-<li><p class="first">START - The starting position of the feature in the chromosome or contig. The first base in a chromosome is numbered 0.</p>
-</li>
-<li><p class="first">END - The ending position of the feature in the chromosome or contig. The chromEnd base is not included in the display of the feature. For example, the first 100 bases of a chromosome are defined as chromStart=0, chromEnd=100, and span the bases numbered 0-99.</p>
-</li>
-<li><p class="first">STRAND - Defines the strand - either '+' or '-'.</p>
-</li>
-<li><p class="first">Example.:</p>
-<pre class="literal-block">
-#CHROM START END   STRAND NAME COMMENT
-chr1   10    100   +      exon myExon
-chrX   1000  10050 -      gene myGene     
-</pre>
-</li>
-</ul>
-</div>
-</body>
-</html>
+../config/help.html
\ No newline at end of file
diff -r 0994712eb599 static/user_disabled.html
--- a/static/user_disabled.html    Wed Aug 12 17:48:51 2015 -0400
+++ b/static/user_disabled.html    Tue Sep 08 12:36:40 2015 -0700
@@ -1,28 +1,1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-    <head>
-        <title>Galaxy</title>
-        <style type="text/css">
-        body {
-            min-width: 500px;
-            text-align: center;
-        }
-        .errormessage {
-            font: 75%% verdana, "Bitstream Vera Sans", geneva, arial, helvetica, helve, sans-serif;
-            padding: 10px;
-            margin: 100px auto;
-            min-height: 32px;
-            max-width: 500px;
-            border: 1px solid #AA6666;
-            background-color: #FFCCCC;
-            text-align: left;
-        }
-        </style>
-    </head>
-    <body>
-        <div class="errormessage">
-            <h4>Account Disabled</h4>
-            <p>Your account is no longer valid, contact your Galaxy administrator to activate your account.</p>
-        </div>
-    </body>
-</html>
+../config/user_disabled.html
\ No newline at end of file
diff -r 0994712eb599 tool-data/blastdb_p.loc.sample
--- /dev/null    Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/blastdb_p.loc.sample    Tue Sep 08 12:36:40 2015 -0700
@@ -0,0 +1,44 @@
+# This is a sample file distributed with Galaxy that is used to define a
+# list of protein BLAST databases, using three columns tab separated:
+#
+# <unique_id>{tab}<database_caption>{tab}<base_name_path>
+#
+# The captions typically contain spaces and might end with the build date.
+# It is important that the actual database name does not have a space in
+# it, and that there are only two tabs on each line.
+#
+# You can download the NCBI provided protein databases like NR from here:
+# ftp://ftp.ncbi.nlm.nih.gov/blast/db/
+#
+# For simplicity, many Galaxy servers are configured to offer just a live
+# version of each NCBI BLAST database (updated with the NCBI provided
+# Perl scripts or similar). In this case, we recommend using the case
+# sensistive base-name of the NCBI BLAST databases as the unique id.
+# Consistent naming is important for sharing workflows between Galaxy
+# servers.
+#
+# For example, consider the NCBI "non-redundant" protein BLAST database
+# where you have downloaded and decompressed the files under /data/blastdb/
+# meaning at the command line BLAST+ would be run with something like
+# which would look at the files /data/blastdb/nr.p*:
+#
+# $ blastp -db /data/blastdb/nr -query ...
+#
+# In this case use nr (lower case to match the NCBI file naming) as the
+# unique id in the first column of blastdb_p.loc, giving an entry like
+# this:
+#
+# nr{tab}NCBI non-redundant (nr){tab}/data/blastdb/nr
+#
+# Alternatively, rather than a "live" mirror of the NCBI databases which
+# are updated automatically, for full reproducibility the Galaxy Team
+# recommend saving date-stamped copies of the databases. In this case
+# your blastdb_p.loc file should include an entry per line for each
+# version you have stored. For example:
+#
+# nr_05Jun2010{tab}NCBI NR (non redundant) 05 Jun 2010{tab}/data/blastdb/05Jun2010/nr
+# nr_15Aug2010{tab}NCBI NR (non redundant) 15 Aug 2010{tab}/data/blastdb/15Aug2010/nr
+# ...etc...
+#
+# See also blastdb.loc which is for any nucleotide BLAST database, and
+# blastdb_d.loc which is for any protein domains databases (like CDD)

 

ADD REPLYlink written 3.2 years ago by danielfortin86110

Perfect, glad you figured it out.  If you're positive you don't have any local changes you want to save, you can replace all the 'modified' files at once with something like "hg update -C release_15.07", which will discard all local changes and use exactly what is in the upstream repository.

ADD REPLYlink written 3.2 years ago by Dannon Baker3.7k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 180 users visited in the last hour