mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-24 02:04:04 +08:00
Merge branch 'dev' of https://github.com/galaxyproject/galaxy into Reports_TTClean
This commit is contained in:
@@ -9,4 +9,4 @@ while read p; do
|
||||
done <.ci/pep8_sources.txt
|
||||
|
||||
# Look for obviously broken stuff lots more places.
|
||||
flake8 --select=E901,E902,F821,F822,F823,F831 --exclude lib/galaxy/util/pastescript/serve.py lib/{galaxy,tool_shed} test/{api,unit}
|
||||
flake8 --select=E901,E902,F821,F822,F823,F831 --exclude lib/galaxy/util/pastescript/serve.py,lib/pkg_resources.py lib/ test/{api,unit}
|
||||
|
||||
+13
-7
@@ -1,23 +1,23 @@
|
||||
cron/parse_builds.py
|
||||
lib/galaxy/auth
|
||||
lib/galaxy/config.py
|
||||
lib/galaxy/datatypes/{data,proteomics}.py
|
||||
lib/galaxy/datatypes/converters/{bedgraph_to_array_tree_converter,wiggle_to_array_tree_converter}.py
|
||||
lib/galaxy/exceptions/error_codes.py
|
||||
lib/galaxy/jobs/{__init__,error_level,manager,stock_rules}.py
|
||||
lib/galaxy/main.py
|
||||
lib/galaxy/managers/{api_keys,citations,collections,collections_util,datasets,folders,pages,tags,workflows}.py
|
||||
lib/galaxy/model/orm/{engine_factory,now}.py
|
||||
lib/galaxy/model/util.py
|
||||
lib/galaxy/model/{base,custom_types,search,util}.py
|
||||
lib/galaxy/model/tool_shed_install/__init__.py
|
||||
lib/galaxy/objectstore/{__init__,pulsar,rods,s3}.py
|
||||
lib/galaxy/openid/__init__.py
|
||||
lib/galaxy/queues.py
|
||||
lib/galaxy/queue_worker.py
|
||||
lib/galaxy/tags
|
||||
lib/galaxy/tools/deps/{commands,containers,dependencies,dockerfiles,docker_util,__init__,requirements}.py
|
||||
lib/galaxy/tools/filters
|
||||
lib/galaxy/tools/parser
|
||||
lib/galaxy/tools/toolbox
|
||||
lib/galaxy/tools/{errors,loader_directory,test}.py
|
||||
lib/galaxy/util/{__init__,json,permutations,plugin_config,properties,simplegraph,sockets,sleeper,streamball,submodules}.py
|
||||
lib/galaxy/tools
|
||||
lib/galaxy/util/{__init__,json,permutations,plugin_config,properties,simplegraph,sockets,sleeper,streamball,submodules,xml_macros}.py
|
||||
lib/galaxy/visualization/data_providers/{__init__,genome,registry}.py
|
||||
lib/galaxy/web/{proxy,security}
|
||||
lib/galaxy/web/base/{__init__,interactive_environments}.py
|
||||
lib/galaxy/web/formatting.py
|
||||
@@ -33,6 +33,7 @@ lib/galaxy/webapps/tool_shed/framework/__init__.py
|
||||
lib/galaxy/webapps/tool_shed/framework/middleware/__init__.py
|
||||
lib/galaxy/webapps/tool_shed/util/{__init__,shed_statistics}.py
|
||||
lib/galaxy/work
|
||||
lib/galaxy/workflow
|
||||
lib/galaxy/version.py
|
||||
lib/pulsar
|
||||
lib/tool_shed/__init__.py
|
||||
@@ -41,3 +42,8 @@ lib/tool_shed/galaxy_install/repository_dependencies
|
||||
lib/tool_shed/galaxy_install/tools/{__init__,tool_panel_manager}.py
|
||||
lib/tool_shed/repository_types/{__init__,registry,unrestricted}.py
|
||||
lib/tool_shed/util/{__init__,repository_content_util,tool_util,web_util,workflow_util}.py
|
||||
test/functional/tools
|
||||
test/unit/jobs/test_job_configuration.py
|
||||
test/unit/tools
|
||||
tools/data_source/upload.py
|
||||
tools/evolution/codingSnps_filter.py
|
||||
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
# Contributors
|
||||
|
||||
The following individuals have contributed code to Galaxy:
|
||||
|
||||
* Enis Afgan <afgane@gmail.com>
|
||||
* Istvan Albert <istvan.albert@gmail.com>
|
||||
* Renato Alves <alves.rjc@gmail.com> <rjalves@igc.gulbenkian.pt>
|
||||
* Guruprasad Ananda <gua110@bx.psu.edu>
|
||||
* Florent Angly <florent.angly@gmail.com>
|
||||
* Raj Ayyampalayam <raj76@uga.edu>
|
||||
* Finn Bacall <finn.bacall@cs.man.ac.uk>
|
||||
* Dannon Baker <dannon.baker@gmail.com>
|
||||
* Christopher Bare <christopherbare@gmail.com>
|
||||
* Dan Blanchard <dan.blanchard@gmail.com>
|
||||
* Daniel Blankenberg <dan.blankenberg@gmail.com> <dan@bx.psu.edu>
|
||||
* James Boocock <sfk2001@gmail.com>
|
||||
* Carlos Borroto <carlos.borroto@gmail.com>
|
||||
* Daniel Bouchard <dbouchard@corefacility.ca> <daniel.bouchard@phac-aspc.gc.ca>
|
||||
* Dave Bouvier <dave@bx.psu.edu>
|
||||
* Adam Brenner <aebrenne@uci.edu>
|
||||
* Anthony Bretaudeau <anthony.bretaudeau@rennes.inra.fr> <abretaud@irisa.fr>
|
||||
* Richard Burhans <burhans@bx.psu.edu>
|
||||
* Jennifer Cabral <jencabral@gmail.com>
|
||||
* Martin Čech <marten@bx.psu.edu>
|
||||
* Ramkrishna Chakrabarty <rc@bx.psu.edu>
|
||||
* Brad Chapman <chapmanb@50mail.com>
|
||||
* John Chilton <jmchilton@gmail.com>
|
||||
* Saket Choudhary <saketkc@gmail.com>
|
||||
* Wen-Yu Chung <wychung@bx.psu.edu>
|
||||
* Dave Clements <clements@galaxyproject.org>
|
||||
* Peter Cock <p.j.a.cock@googlemail.com>
|
||||
* Ira Cooke <iracooke@gmail.com>
|
||||
* Nate Coraor <nate@bx.psu.edu>
|
||||
* Michael Cotterell <mepcotterell@gmail.com>
|
||||
* Gianmauro Cuccuru <gmauro@crs4.it>
|
||||
* Frederik Delaere <frederik.delaere@gmail.com>
|
||||
* Olivia Doppelt <olivia.doppelt@pasteur.fr>
|
||||
* John Duddy <jduddy@illumina.com>
|
||||
* Carl Eberhard <carlfeberhard@gmail.com>
|
||||
* Kyle Ellrott <kellrott@gmail.com> <kellrott@soe.ucsc.edu>
|
||||
* Eric Enns <eric.enns@gmail.com>
|
||||
* Dorine Francheteau <dorine@bx.psu.edu>
|
||||
* Jaime Frey <jfrey@cs.wisc.edu>
|
||||
* Carie Genote <cganote@iu.edu>
|
||||
* Jeremy Goecks <jeremy.goecks@emory.edu> <jgoecks@gwu.edu>
|
||||
* Nuwan Goonasekera <nuwan.goonasekera@gmail.com>
|
||||
* Björn Grüning <bjoern.gruening@gmail.com> <bjoern@gruenings.eu>
|
||||
* Aysam Guerler <aysam.guerler@gmail.com>
|
||||
* Simon Guest <simon.guest@agresearch.co.nz>
|
||||
* Jianbin He <jbhe@bx.psu.edu>
|
||||
* Morita Hideyuki <h-morita@esm.co.jp>
|
||||
* Rob Hooft <rob.hooft@nbic.nl>
|
||||
* Y. Hoogstrate <y.hoogstrate@erasmusmc.nl>
|
||||
* Jian-Long Huang <jlh@pyhub.org>
|
||||
* Gert Hulselmans <gert.hulselmans@med.kuleuven.be>
|
||||
* Jennifer Jackson <jen@bx.psu.edu>
|
||||
* Joachim Jacob <joachim.jacob@gmail.com>
|
||||
* Jim Johnson <jj@umn.edu> <jj@msi.umn.edu>
|
||||
* Radhesh Kamath <radhesh@bx.psu.edu>
|
||||
* Jan Kanis <jan.code@jankanis.nl>
|
||||
* David King <dcking@bx.psu.edu>
|
||||
* Rory Kirchner <roryk@mit.edu>
|
||||
* Brad Langhorst <langhorst@neb.com>
|
||||
* Ross Lazarus <ross.lazarus@gmail.com> <rossl@bx.psu.edu>
|
||||
* Simone Leo <simone.leo@gmail.com>
|
||||
* Kanwei Li <kanwei@gmail.com>
|
||||
* Michael Li <michael.li@uwaterloo.ca>
|
||||
* Philip Mabon <philipmabon@gmail.com>
|
||||
* Remi Marenco <remi.marenco@gmail.com> <remimarenco@gmail.com>
|
||||
* Thomas McGowan <mcgo0092@msi.umn.edu>
|
||||
* Scott McManus <scottmcmanus@emory.edu> <scottmcmanus@gatech.edu>
|
||||
* Hunter Moseley <hunter.moseley@louisville.edu>
|
||||
* Arjun Nath <arjun@bx.psu.edu>
|
||||
* Anton Nekrutenko <anton@bx.psu.edu> <anton@nekrut.org>
|
||||
* Eric Paniagua <paniagua.cshl@gmail.com>
|
||||
* Richard Park <rpark@bu.edu>
|
||||
* Lance Parsons <lparsons@princeton.edu>
|
||||
* Chinmay Rao <chinmay@bx.psu.edu>
|
||||
* Eric Rasche <esr@tamu.edu> <rasche.eric@gmail.com> <rasche.eric@yandex.ru>
|
||||
* Andrew Robinson <Andrew.Robinson@latrobe.edu.au>
|
||||
* Andrea Sbardellati <andrea.sbardellati@crs4.it>
|
||||
* Ian Schenck <ian@bx.psu.edu>
|
||||
* Nick Semenkovich <semenko@alum.mit.edu>
|
||||
* Matthew Shirley <mdshw5@gmail.com>
|
||||
* Clare Sloggett <sloc@unimelb.edu.au>
|
||||
* Nicola Soranzo <nicola.soranzo@tgac.ac.uk> <nsoranzo@tiscali.it> <soranzo@crs4.it>
|
||||
* Roy Storey <kiwiroy@gmail.com>
|
||||
* Hanfei Sun <ad9075@gmail.com>
|
||||
* Ilya Sytchev <hackdna@gmail.com>
|
||||
* James Taylor <james@jamestaylor.org>
|
||||
* Tomithy Too <tomithy.too@gmail.com>
|
||||
* David Trudgian <dave@trudgian.net> <david.trudgian@utsouthwestern.edu>
|
||||
* Nitesh Turaga <nitesh.turaga@gmail.com>
|
||||
* Clayton Turner <clayclay911@gmail.com>
|
||||
* Marek Vavruša <marek@vavrusa.com>
|
||||
* Martijn Vermaat <m.vermaat.hg@lumc.nl>
|
||||
* Kelly Vincent <kpvincent@bx.psu.edu>
|
||||
* Greg Von Kuster <greg@bx.psu.edu>
|
||||
* Hiral Vora <hvora1@uncc.edu>
|
||||
* Andrew Warren <anwarren@vbi.vt.edu>
|
||||
* Trevor Wennblom <trevor@well.com>
|
||||
* Yi Zhang <yizhang@bx.psu.edu>
|
||||
* Freek de Bruijn <freek.de.bruijn@nbic.nl>
|
||||
* Peter van Heusden <pvh@sanbi.ac.za>
|
||||
* Marius van den Beek <m.vandenbeek@gmail.com>
|
||||
|
||||
# Institutional sponsors
|
||||
|
||||
Galaxy development began at The Pennsylvania State University in 2006.
|
||||
In 2009 all contributions to that point were licensed by The
|
||||
Pennsylvania State University under the terms of the Academic Free
|
||||
License 3.0 (see LICENSE.txt). This license applies to all subsequent
|
||||
contributions - including but not limited to development at The
|
||||
Pennsylvania State University, Emory University, Johns Hopkins
|
||||
University, and George Washington University as part of the following
|
||||
NIH and NSF grants:
|
||||
|
||||
* NSF DBI 0543285, “Tailoring genomic data to the needs of experimental
|
||||
biologists and educators”
|
||||
* NIH R21 HG005133, “A turnkey solution for next generation sequence
|
||||
data analysis”
|
||||
* NIH R01 HG004909, “An efficient lightweight environment for biomedical
|
||||
computation”
|
||||
* NSF DBI 0850103, “Cyberinfrastructure for accessible and reproducible
|
||||
research in life sciences”
|
||||
* NIH RC2 HG005542, “Dynamically scalable accessible analysis for next
|
||||
generation sequence data”
|
||||
* NIH U41 HG006620, “Democratization of data analysis in life sciences
|
||||
through Galaxy”
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2005-2013 Pennsylvania State University
|
||||
Copyright (c) 2005-2015 Galaxy Contributors (see CONTRIBUTORS.md)
|
||||
|
||||
Licensed under the Academic Free License version 3.0
|
||||
|
||||
|
||||
+14
-1
@@ -3,6 +3,19 @@
|
||||
|
||||
The latest information about Galaxy is available via `http://galaxyproject.org/ <http://galaxyproject.org/>`__
|
||||
|
||||
.. image:: https://img.shields.io/badge/questions-galaxy%20biostar-blue.svg
|
||||
:target: https://biostar.usegalaxy.org
|
||||
|
||||
.. image:: https://img.shields.io/badge/chat-irc.freenode.net%23galaxyproject-blue.svg
|
||||
:target: https://webchat.freenode.net/?channels=galaxyproject
|
||||
|
||||
.. image:: https://readthedocs.org/projects/galaxy/badge/?version=master
|
||||
:target: http://galaxy.readthedocs.org/en/master/
|
||||
:alt: Documentation Status
|
||||
|
||||
.. image:: https://travis-ci.org/galaxyproject/galaxy.svg?branch=dev
|
||||
:target: https://travis-ci.org/galaxyproject/galaxy
|
||||
|
||||
Galaxy Quickstart
|
||||
=================
|
||||
|
||||
@@ -41,7 +54,7 @@ Issues
|
||||
|
||||
Issues can be submitted to trello via the `galaxyproject
|
||||
website <http://galaxyproject.org/trello/>`__ and viewed on the `Galaxy
|
||||
Trello Board <https://trello.com/b/75c1kASa/galaxy-development>`__
|
||||
Trello Board <https://trello.com/b/75c1kASa/galaxy-development>`__.
|
||||
|
||||
|
||||
Galaxy Development
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,706 +0,0 @@
|
||||
$( function() {
|
||||
|
||||
if ( window.lt_ie_7 ) {
|
||||
show_modal(
|
||||
"Browser not supported",
|
||||
"Sorry, the workflow editor is not supported for IE6 and below."
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// Init searching.
|
||||
$("#tool-search-query").click( function (){
|
||||
$(this).focus();
|
||||
$(this).select();
|
||||
})
|
||||
.keyup( function () {
|
||||
// Remove italics.
|
||||
$(this).css("font-style", "normal");
|
||||
// Don't update if same value as last time
|
||||
if ( this.value.length < 3 ) {
|
||||
reset_tool_search(false);
|
||||
} else if ( this.value != this.lastValue ) {
|
||||
// Add class to denote that searching is active.
|
||||
$(this).addClass("search_active");
|
||||
// input.addClass(config.loadingClass);
|
||||
// Add '*' to facilitate partial matching.
|
||||
var q = this.value;
|
||||
// Stop previous ajax-request
|
||||
if (this.timer) {
|
||||
clearTimeout(this.timer);
|
||||
}
|
||||
// Start a new ajax-request in X ms
|
||||
$("#search-spinner").show();
|
||||
var tool_search_url = galaxy_config.root + 'api/tools';
|
||||
this.timer = setTimeout(function () {
|
||||
$.get(tool_search_url, { q: q }, function (data) {
|
||||
// input.removeClass(config.loadingClass);
|
||||
// Show live-search if results and search-term aren't empty
|
||||
$("#search-no-results").hide();
|
||||
// Hide all tool sections.
|
||||
$(".toolSectionWrapper").hide();
|
||||
// This hides all tools but not workflows link (which is in a .toolTitle div).
|
||||
$(".toolSectionWrapper").find(".toolTitle").hide();
|
||||
if ( data.length != 0 ) {
|
||||
// Map tool ids to element ids and join them.
|
||||
var s = $.map( data, function( n, i ) { return "link-" + n; } );
|
||||
// First pass to show matching tools and their parents.
|
||||
$(s).each( function(index,id) {
|
||||
// Add class to denote match.
|
||||
$("[id='"+id+"']").parent().addClass("search_match");
|
||||
$("[id='"+id+"']").parent().show().parent().parent().show().parent().show();
|
||||
});
|
||||
// Hide labels that have no visible children.
|
||||
$(".toolPanelLabel").each( function() {
|
||||
var this_label = $(this);
|
||||
var next = this_label.next();
|
||||
var no_visible_tools = true;
|
||||
// Look through tools following label and, if none are visible, hide label.
|
||||
while (next.length !== 0 && next.hasClass("toolTitle")) {
|
||||
if (next.is(":visible")) {
|
||||
no_visible_tools = false;
|
||||
break;
|
||||
} else {
|
||||
next = next.next();
|
||||
}
|
||||
}
|
||||
if (no_visible_tools) {
|
||||
this_label.hide();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$("#search-no-results").show();
|
||||
}
|
||||
$("#search-spinner").hide();
|
||||
}, "json" );
|
||||
}, 400 );
|
||||
}
|
||||
this.lastValue = this.value;
|
||||
});
|
||||
|
||||
// Canvas overview management
|
||||
canvas_manager = new CanvasManager( $("#canvas-viewport"), $("#overview") );
|
||||
|
||||
// Initialize workflow state
|
||||
reset();
|
||||
|
||||
// get available datatypes for post job action options
|
||||
datatypes = JSON.parse($.ajax({
|
||||
type : 'GET',
|
||||
url : galaxy_config.root + 'api/datatypes',
|
||||
async : false
|
||||
}).responseText);
|
||||
|
||||
// Load the datatype info
|
||||
$.ajax( {
|
||||
url: get_datatypes_url,
|
||||
dataType: "json",
|
||||
cache: false,
|
||||
success: function( data ) {
|
||||
populate_datatype_info( data );
|
||||
// Load workflow definition
|
||||
$.ajax( {
|
||||
url: load_workflow_url,
|
||||
data: { id: workflow_id, "_": "true" },
|
||||
dataType: 'json',
|
||||
cache: false,
|
||||
success: function( data ) {
|
||||
reset();
|
||||
workflow.from_simple( data );
|
||||
workflow.has_changes = false;
|
||||
workflow.fit_canvas_to_nodes();
|
||||
scroll_to_nodes();
|
||||
canvas_manager.draw_overview();
|
||||
// Determine if any parameters were 'upgraded' and provide message
|
||||
upgrade_message = "";
|
||||
$.each( data.upgrade_messages, function( k, v ) {
|
||||
upgrade_message += ( "<li>Step " + ( parseInt(k, 10) + 1 ) + ": " + workflow.nodes[k].name + "<ul>");
|
||||
$.each( v, function( i, vv ) {
|
||||
upgrade_message += "<li>" + vv +"</li>";
|
||||
});
|
||||
upgrade_message += "</ul></li>";
|
||||
});
|
||||
if ( upgrade_message ) {
|
||||
show_modal( "Workflow loaded with changes",
|
||||
"Problems were encountered loading this workflow (possibly a result of tool upgrades). Please review the following parameters and then save.<ul>" + upgrade_message + "</ul>",
|
||||
{ "Continue" : hide_modal } );
|
||||
} else {
|
||||
hide_modal();
|
||||
}
|
||||
show_workflow_parameters();
|
||||
},
|
||||
beforeSubmit: function( data ) {
|
||||
show_message( "Loading workflow", "progress" );
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// For autosave purposes
|
||||
$(document).ajaxStart( function() {
|
||||
active_ajax_call = true;
|
||||
$(document).bind( "ajaxStop.global", function() {
|
||||
active_ajax_call = false;
|
||||
});
|
||||
});
|
||||
|
||||
$(document).ajaxError( function ( e, x ) {
|
||||
// console.log( e, x );
|
||||
var message = x.responseText || x.statusText || "Could not connect to server";
|
||||
show_modal( "Server error", message, { "Ignore error" : hide_modal } );
|
||||
return false;
|
||||
});
|
||||
|
||||
make_popupmenu( $("#workflow-options-button"), {
|
||||
"Save" : save_current_workflow,
|
||||
"Run": function() {
|
||||
window.location = run_workflow_url;
|
||||
},
|
||||
//"Create New" : create_new_workflow_dialog,
|
||||
"Edit Attributes" : edit_workflow_attributes,
|
||||
//"Edit Workflow Outputs": edit_workflow_outputs,
|
||||
"Auto Re-layout": layout_editor,
|
||||
//"Load a Workflow" : load_workflow,
|
||||
"Close": close_editor
|
||||
});
|
||||
|
||||
function edit_workflow_outputs(){
|
||||
workflow.clear_active_node();
|
||||
$('.right-content').hide();
|
||||
var new_content = "";
|
||||
for (var node_key in workflow.nodes){
|
||||
var node = workflow.nodes[node_key];
|
||||
if(node.type == 'tool'){
|
||||
new_content += "<div class='toolForm' style='margin-bottom:5px;'><div class='toolFormTitle'>Step " + node.id + " - " + node.name + "</div>";
|
||||
for (var ot_key in node.output_terminals){
|
||||
var output = node.output_terminals[ot_key];
|
||||
// if (node.workflow_outputs[node.id + "|" + output.name]){
|
||||
if ($.inArray(output.name, node.workflow_outputs) != -1){
|
||||
new_content += "<p>"+output.name +"<input type='checkbox' name='"+ node.id + "|" + output.name +"' checked /></p>";
|
||||
}
|
||||
else{
|
||||
new_content += "<p>"+output.name +"<input type='checkbox' name='"+ node.id + "|" + output.name +"' /></p>";
|
||||
}
|
||||
}
|
||||
new_content += "</div>";
|
||||
}
|
||||
}
|
||||
$("#output-fill-area").html(new_content);
|
||||
$("#output-fill-area input").bind('click', function(){
|
||||
var node_id = this.name.split('|')[0];
|
||||
var output_name = this.name.split('|')[1];
|
||||
if (this.checked){
|
||||
if($.inArray(output_name, workflow.nodes[node_id].workflow_outputs) == -1){
|
||||
workflow.nodes[node_id].workflow_outputs.push(output_name);
|
||||
}//else it's already in the array. Shouldn't happen, but forget it.
|
||||
}else{
|
||||
while ($.inArray(output_name, workflow.nodes[node_id].workflow_outputs) != -1){
|
||||
var ia = $.inArray(output_name, workflow.nodes[node_id].workflow_outputs);
|
||||
workflow.nodes[node_id].workflow_outputs = workflow.nodes[node_id].workflow_outputs.slice(0,ia).concat( workflow.nodes[node_id].workflow_outputs.slice(ia+1) );
|
||||
}
|
||||
}
|
||||
workflow.has_changes = true;
|
||||
});
|
||||
$('#workflow-output-area').show();
|
||||
}
|
||||
|
||||
function layout_editor() {
|
||||
workflow.layout();
|
||||
workflow.fit_canvas_to_nodes();
|
||||
scroll_to_nodes();
|
||||
canvas_manager.draw_overview();
|
||||
}
|
||||
|
||||
function edit_workflow_attributes() {
|
||||
workflow.clear_active_node(function() {
|
||||
$('.right-content').hide();
|
||||
$('#edit-attributes').show();
|
||||
});
|
||||
}
|
||||
|
||||
// On load, set the size to the pref stored in local storage if it exists
|
||||
overview_size = $.jStorage.get("overview-size");
|
||||
if (overview_size !== undefined) {
|
||||
$("#overview-border").css( {
|
||||
width: overview_size,
|
||||
height: overview_size
|
||||
});
|
||||
}
|
||||
|
||||
// Show viewport on load unless pref says it's off
|
||||
if ($.jStorage.get("overview-off")) {
|
||||
hide_overview();
|
||||
} else {
|
||||
show_overview();
|
||||
}
|
||||
|
||||
// Stores the size of the overview into local storage when it's resized
|
||||
$("#overview-border").bind( "dragend", function( e, d ) {
|
||||
var op = $(this).offsetParent();
|
||||
var opo = op.offset();
|
||||
var new_size = Math.max( op.width() - ( d.offsetX - opo.left ),
|
||||
op.height() - ( d.offsetY - opo.top ) );
|
||||
$.jStorage.set("overview-size", new_size + "px");
|
||||
});
|
||||
|
||||
function show_overview() {
|
||||
$.jStorage.set("overview-off", false);
|
||||
$("#overview-border").css("right", "0px");
|
||||
$("#close-viewport").css("background-position", "0px 0px");
|
||||
}
|
||||
|
||||
function hide_overview() {
|
||||
$.jStorage.set("overview-off", true);
|
||||
$("#overview-border").css("right", "20000px");
|
||||
$("#close-viewport").css("background-position", "12px 0px");
|
||||
}
|
||||
|
||||
// Lets the overview be toggled visible and invisible, adjusting the arrows accordingly
|
||||
$("#close-viewport").click( function() {
|
||||
if ( $("#overview-border").css("right") === "0px" ) {
|
||||
hide_overview();
|
||||
} else {
|
||||
show_overview();
|
||||
}
|
||||
});
|
||||
|
||||
// Unload handler
|
||||
window.onbeforeunload = function() {
|
||||
if ( workflow && workflow.has_changes ) {
|
||||
return "There are unsaved changes to your workflow which will be lost.";
|
||||
}
|
||||
};
|
||||
|
||||
// Tool menu
|
||||
$( "div.toolSectionBody" ).hide();
|
||||
$( "div.toolSectionTitle > span" ).wrap( "<a href='#'></a>" );
|
||||
var last_expanded = null;
|
||||
$( "div.toolSectionTitle" ).each( function() {
|
||||
var body = $(this).next( "div.toolSectionBody" );
|
||||
$(this).click( function() {
|
||||
if ( body.is( ":hidden" ) ) {
|
||||
if ( last_expanded ) last_expanded.slideUp( "fast" );
|
||||
last_expanded = body;
|
||||
body.slideDown( "fast" );
|
||||
}
|
||||
else {
|
||||
body.slideUp( "fast" );
|
||||
last_expanded = null;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Rename async.
|
||||
async_save_text("workflow-name", "workflow-name", rename_async_url, "new_name");
|
||||
|
||||
// Tag async. Simply have the workflow edit element generate a click on the tag element to activate tagging.
|
||||
$('#workflow-tag').click( function() {
|
||||
$('.tag-area').click();
|
||||
return false;
|
||||
});
|
||||
// Annotate async.
|
||||
async_save_text("workflow-annotation", "workflow-annotation", annotate_async_url, "new_annotation", 25, true, 4);
|
||||
});
|
||||
|
||||
// Global state for the whole workflow
|
||||
function reset() {
|
||||
if ( workflow ) {
|
||||
workflow.remove_all();
|
||||
}
|
||||
workflow = new Workflow( $("#canvas-container") );
|
||||
}
|
||||
|
||||
function scroll_to_nodes() {
|
||||
var cv = $("#canvas-viewport");
|
||||
var cc = $("#canvas-container");
|
||||
var top, left;
|
||||
if ( cc.width() < cv.width() ) {
|
||||
left = ( cv.width() - cc.width() ) / 2;
|
||||
} else {
|
||||
left = 0;
|
||||
}
|
||||
if ( cc.height() < cv.height() ) {
|
||||
top = ( cv.height() - cc.height() ) / 2;
|
||||
} else {
|
||||
top = 0;
|
||||
}
|
||||
cc.css( { left: left, top: top } );
|
||||
}
|
||||
|
||||
// Add a new step to the workflow by tool id
|
||||
function add_node_for_tool( id, title ) {
|
||||
node = add_node( 'tool', title, id );
|
||||
$.ajax( {
|
||||
url: get_new_module_info_url,
|
||||
data: { type: "tool", tool_id: id, "_": "true" },
|
||||
global: false,
|
||||
dataType: "json",
|
||||
success: function( data ) {
|
||||
node.init_field_data( data );
|
||||
},
|
||||
error: function( x, e ) {
|
||||
var m = "error loading field data";
|
||||
if ( x.status === 0 ) {
|
||||
m += ", server unavailable";
|
||||
}
|
||||
node.error( m );
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function add_node_for_module( type, title ) {
|
||||
node = add_node( type, title );
|
||||
$.ajax( {
|
||||
url: get_new_module_info_url,
|
||||
data: { type: type, "_": "true" },
|
||||
dataType: "json",
|
||||
success: function( data ) {
|
||||
node.init_field_data( data );
|
||||
},
|
||||
error: function( x, e ) {
|
||||
var m = "error loading field data"
|
||||
if ( x.status == 0 ) {
|
||||
m += ", server unavailable"
|
||||
}
|
||||
node.error( m );
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// This function preloads how to display known pja's.
|
||||
function display_pja(pja, node) {
|
||||
// DBTODO SANITIZE INPUTS.
|
||||
$("#pja_container").append( get_pja_form(pja, node) );
|
||||
$("#pja_container>.toolForm:last>.toolFormTitle>.buttons").click(function (){
|
||||
action_to_rem = $(this).closest(".toolForm", ".action_tag").children(".action_tag:first").text();
|
||||
$(this).closest(".toolForm").remove();
|
||||
delete workflow.active_node.post_job_actions[action_to_rem];
|
||||
workflow.active_form_has_changes = true;
|
||||
});
|
||||
}
|
||||
|
||||
function display_pja_list(){
|
||||
return pja_list;
|
||||
}
|
||||
|
||||
function display_file_list(node){
|
||||
addlist = "<select id='node_data_list' name='node_data_list'>";
|
||||
for (var out_terminal in node.output_terminals){
|
||||
addlist += "<option value='" + out_terminal + "'>"+ out_terminal +"</option>";
|
||||
}
|
||||
addlist += "</select>";
|
||||
return addlist;
|
||||
}
|
||||
|
||||
function new_pja(action_type, target, node){
|
||||
if (node.post_job_actions === undefined){
|
||||
//New tool node, set up dict.
|
||||
node.post_job_actions = {};
|
||||
}
|
||||
if (node.post_job_actions[action_type+target] === undefined){
|
||||
var new_pja = {};
|
||||
new_pja.action_type = action_type;
|
||||
new_pja.output_name = target;
|
||||
node.post_job_actions[action_type+target] = null;
|
||||
node.post_job_actions[action_type+target] = new_pja;
|
||||
display_pja(new_pja, node);
|
||||
workflow.active_form_has_changes = true;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function show_workflow_parameters(){
|
||||
var parameter_re = /\$\{.+?\}/g;
|
||||
var workflow_parameters = [];
|
||||
var wf_parm_container = $("#workflow-parameters-container");
|
||||
var wf_parm_box = $("#workflow-parameters-box");
|
||||
var new_parameter_content = "";
|
||||
var matches = [];
|
||||
$.each(workflow.nodes, function (k, node){
|
||||
var form_matches = node.form_html.match(parameter_re);
|
||||
if (form_matches){
|
||||
matches = matches.concat(form_matches);
|
||||
}
|
||||
if (node.post_job_actions){
|
||||
$.each(node.post_job_actions, function(k, pja){
|
||||
if (pja.action_arguments){
|
||||
$.each(pja.action_arguments, function(k, action_argument){
|
||||
var arg_matches = action_argument.match(parameter_re);
|
||||
if (arg_matches){
|
||||
matches = matches.concat(arg_matches);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
if (matches){
|
||||
$.each(matches, function(k, element){
|
||||
if ($.inArray(element, workflow_parameters) === -1){
|
||||
workflow_parameters.push(element);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
if (workflow_parameters && workflow_parameters.length !== 0){
|
||||
$.each(workflow_parameters, function(k, element){
|
||||
new_parameter_content += "<div>" + element.substring(2, element.length -1) + "</div>";
|
||||
});
|
||||
wf_parm_container.html(new_parameter_content);
|
||||
wf_parm_box.show();
|
||||
}else{
|
||||
wf_parm_container.html(new_parameter_content);
|
||||
wf_parm_box.hide();
|
||||
}
|
||||
}
|
||||
|
||||
function show_tool_form( text, node, callback ) {
|
||||
require(['utils/utils', 'mvc/tools/tools-form-workflow'], function(Utils, ToolsForm){
|
||||
// initialize tags and identifiers
|
||||
var cls = 'right-content';
|
||||
var id = cls + '-' + node.id;
|
||||
|
||||
// grab panel container
|
||||
var $container = $('#' + cls);
|
||||
|
||||
// remove previous notifications
|
||||
var $current = $container.find('#' + id);
|
||||
if ($current.length > 0 && $current.find('.section-row').length == 0) {
|
||||
$current.remove();
|
||||
}
|
||||
|
||||
// check if tool form already exists
|
||||
if ($container.find('#' + id).length == 0) {
|
||||
var $el = $('<div id="' + id + '" class="' + cls + '"/>');
|
||||
if (node.type == 'tool') {
|
||||
var options = JSON.parse(text);
|
||||
options.datatypes = datatypes;
|
||||
$el.append((new ToolsForm.View(options)).$el);
|
||||
} else {
|
||||
$el.append(generic_form_template( text, node ));
|
||||
}
|
||||
$container.append($el);
|
||||
}
|
||||
|
||||
// hide everything
|
||||
$('.' + cls).hide();
|
||||
|
||||
// show current form
|
||||
$container.find('#' + id).show();
|
||||
$container.show();
|
||||
$container.scrollTop();
|
||||
|
||||
// temporary fix for async require callback
|
||||
callback && callback();
|
||||
});
|
||||
}
|
||||
|
||||
function generic_form_template( text, node ) {
|
||||
var $el = $('<div/>').html( text );
|
||||
// Add metadata form to tool.
|
||||
if (node && node.id != 'no-node') {
|
||||
$el.find(".toolForm:first").after( "<p><div class='metadataForm'> \
|
||||
<div class='metadataFormTitle'>Edit Step Attributes</div> \
|
||||
<div class='form-row'> \
|
||||
<label>Annotation / Notes:</label> \
|
||||
<div style='margin-right: 10px;'> \
|
||||
<textarea name='annotation' rows='3' style='width: 100%'>" + node.annotation + "</textarea> \
|
||||
<div class='toolParamHelp'>Add an annotation or notes to this step; annotations are available when a workflow is viewed.</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div>" );
|
||||
$el.find( "form" ).ajaxForm( {
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
success: function( data ) {
|
||||
workflow.active_form_has_changes = false;
|
||||
node.update_field_data( data );
|
||||
show_workflow_parameters();
|
||||
},
|
||||
beforeSubmit: function( data ) {
|
||||
data.push( { name: 'tool_state', value: node.tool_state } );
|
||||
data.push( { name: '_', value: "true" } );
|
||||
}
|
||||
}).each( function() {
|
||||
var form = this;
|
||||
$(this).find( "select[refresh_on_change='true']").change( function() {
|
||||
$(form).submit();
|
||||
});
|
||||
$(this).find( "input[refresh_on_change='true']").change( function() {
|
||||
$(form).submit();
|
||||
});
|
||||
$(this).find("input,textarea,select").each( function() {
|
||||
$(this).bind("focus click", function() {
|
||||
workflow.active_form_has_changes = true;
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
return $el;
|
||||
}
|
||||
|
||||
function show_form_for_tool( text, node ) {
|
||||
$('.right-content').hide();
|
||||
$("#right-content").show().html( text );
|
||||
// Add metadata form to tool.
|
||||
if (node) {
|
||||
$("#right-content").find(".toolForm:first").after( "<p><div class='metadataForm'> \
|
||||
<div class='metadataFormTitle'>Edit Step Attributes</div> \
|
||||
<div class='form-row'> \
|
||||
<label>Annotation / Notes:</label> \
|
||||
<div style='margin-right: 10px;'> \
|
||||
<textarea name='annotation' rows='3' style='width: 100%'>" + node.annotation + "</textarea> \
|
||||
<div class='toolParamHelp'>Add an annotation or notes to this step; annotations are available when a workflow is viewed.</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div>" );
|
||||
}
|
||||
// Add step actions.
|
||||
if (node && node.type=='tool'){
|
||||
pjastr = "<p><div class='metadataForm'><div class='metadataFormTitle'>Edit Step Actions</div><div class='form-row'> \
|
||||
" + display_pja_list() + " <br/> "+ display_file_list(node) + " <div class='action-button' style='border:1px solid black;display:inline;' id='add_pja'>Create</div>\
|
||||
</div><div class='form-row'>\
|
||||
<div style='margin-right: 10px;'><span id='pja_container'></span>";
|
||||
pjastr += "<div class='toolParamHelp'>Add actions to this step; actions are applied when this workflow step completes.</div></div></div></div>";
|
||||
$("#right-content").find(".toolForm").after( pjastr );
|
||||
for (var key in node.post_job_actions){
|
||||
if (key != "undefined"){ //To make sure we haven't just deleted it.
|
||||
display_pja(node.post_job_actions[key], node);
|
||||
}
|
||||
}
|
||||
$("#add_pja").click(function (){
|
||||
new_pja($("#new_pja_list").val(),$("#node_data_list").val(), node);
|
||||
});
|
||||
}
|
||||
$("#right-content").find( "form" ).ajaxForm( {
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
success: function( data ) {
|
||||
workflow.active_form_has_changes = false;
|
||||
node.update_field_data( data );
|
||||
show_workflow_parameters();
|
||||
},
|
||||
beforeSubmit: function( data ) {
|
||||
data.push( { name: 'tool_state', value: node.tool_state } );
|
||||
data.push( { name: '_', value: "true" } );
|
||||
}
|
||||
}).each( function() {
|
||||
var form = this;
|
||||
$(this).find( "select[refresh_on_change='true']").change( function() {
|
||||
$(form).submit();
|
||||
});
|
||||
$(this).find( "input[refresh_on_change='true']").change( function() {
|
||||
$(form).submit();
|
||||
});
|
||||
$(this).find( ".popupmenu" ).each( function() {
|
||||
var id = $(this).parents( "div.form-row" ).attr( 'id' );
|
||||
var b = $('<a class="popup-arrow" id="popup-arrow-for-' + id + '">▼</a>');
|
||||
var options = {};
|
||||
$(this).find( "button" ).each( function() {
|
||||
var name = $(this).attr( 'name' );
|
||||
var value = $(this).attr( 'value' );
|
||||
options[ $(this).text() ] = function() {
|
||||
$(form).append( "<input type='hidden' name='"+name+"' value='"+value+"' />" ).submit();
|
||||
};
|
||||
});
|
||||
b.insertAfter( this );
|
||||
$(this).remove();
|
||||
make_popupmenu( b, options );
|
||||
});
|
||||
// Implements auto-saving based on whether the inputs change. We consider
|
||||
// "changed" to be when a field is accessed and not necessarily modified
|
||||
// because of an issue where "onchange" is not triggered when activating
|
||||
// another node, or saving the workflow.
|
||||
$(this).find("input,textarea,select").each( function() {
|
||||
$(this).bind("focus click", function() {
|
||||
workflow.active_form_has_changes = true;
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
var close_editor = function() {
|
||||
workflow.check_changes_in_active_form();
|
||||
if ( workflow && workflow.has_changes ) {
|
||||
do_close = function() {
|
||||
window.onbeforeunload = undefined;
|
||||
window.document.location = workflow_index_url;
|
||||
};
|
||||
show_modal( "Close workflow editor",
|
||||
"There are unsaved changes to your workflow which will be lost.",
|
||||
{
|
||||
"Cancel" : hide_modal,
|
||||
"Save Changes" : function() {
|
||||
save_current_workflow( null, do_close );
|
||||
}
|
||||
}, {
|
||||
"Don't Save": do_close
|
||||
} );
|
||||
} else {
|
||||
window.document.location = workflow_index_url;
|
||||
}
|
||||
};
|
||||
|
||||
var save_current_workflow = function ( eventObj, success_callback ) {
|
||||
show_message( "Saving workflow", "progress" );
|
||||
workflow.check_changes_in_active_form();
|
||||
if (!workflow.has_changes) {
|
||||
hide_modal();
|
||||
if ( success_callback ) {
|
||||
success_callback();
|
||||
}
|
||||
return;
|
||||
}
|
||||
workflow.rectify_workflow_outputs();
|
||||
var savefn = function(callback) {
|
||||
$.ajax( {
|
||||
url: save_workflow_url,
|
||||
type: "POST",
|
||||
data: {
|
||||
id: workflow_id,
|
||||
workflow_data: function() { return JSON.stringify( workflow.to_simple() ); },
|
||||
"_": "true"
|
||||
},
|
||||
dataType: 'json',
|
||||
success: function( data ) {
|
||||
var body = $("<div></div>").text( data.message );
|
||||
if ( data.errors ) {
|
||||
body.addClass( "warningmark" );
|
||||
var errlist = $( "<ul/>" );
|
||||
$.each( data.errors, function( i, v ) {
|
||||
$("<li></li>").text( v ).appendTo( errlist );
|
||||
});
|
||||
body.append( errlist );
|
||||
} else {
|
||||
body.addClass( "donemark" );
|
||||
}
|
||||
workflow.name = data.name;
|
||||
workflow.has_changes = false;
|
||||
workflow.stored = true;
|
||||
show_workflow_parameters();
|
||||
if ( data.errors ) {
|
||||
show_modal( "Saving workflow", body, { "Ok" : hide_modal } );
|
||||
} else {
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
hide_modal();
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// We bind to ajaxStop because of auto-saving, since the form submission ajax
|
||||
// call needs to be completed so that the new data is saved
|
||||
if (active_ajax_call) {
|
||||
$(document).bind('ajaxStop.save_workflow', function() {
|
||||
$(document).unbind('ajaxStop.save_workflow');
|
||||
savefn();
|
||||
$(document).unbind('ajaxStop.save_workflow'); // IE7 needs it here
|
||||
active_ajax_call = false;
|
||||
});
|
||||
} else {
|
||||
savefn(success_callback);
|
||||
}
|
||||
};
|
||||
@@ -124,7 +124,7 @@ define([], function() {
|
||||
tmp += '<div class="ui-table-form-info">';
|
||||
if (options.help) {
|
||||
tmp += options.help;
|
||||
if (options.argument && options.help.indexOf(options.argument) == -1) {
|
||||
if (options.argument && options.help.indexOf('(' + options.argument + ')') == -1) {
|
||||
tmp += ' (' + options.argument + ')';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,8 +13,6 @@ define(['utils/utils', 'mvc/ui/ui-portlet', 'mvc/ui/ui-misc',
|
||||
this.optionsDefault = {
|
||||
// uses workflow editor mode i.e. text instead of select fields
|
||||
is_workflow : false,
|
||||
// shows form in narrow view mode
|
||||
narrow : false,
|
||||
// shows errors on start
|
||||
initial_errors : false,
|
||||
// portlet style
|
||||
|
||||
@@ -208,7 +208,7 @@ define(['utils/utils', 'utils/deferred', 'mvc/ui/ui-misc', 'mvc/form/form-view',
|
||||
title : (!options.narrow && 'Versions') || null,
|
||||
tooltip : 'Select another tool version'
|
||||
});
|
||||
if (options.versions && options.versions.length > 1) {
|
||||
if (!options.is_workflow && options.versions && options.versions.length > 1) {
|
||||
for (var i in options.versions) {
|
||||
var version = options.versions[i];
|
||||
if (version != options.version) {
|
||||
|
||||
@@ -11,7 +11,7 @@ define(['utils/utils', 'mvc/tools/tools-form-base'],
|
||||
var self = this;
|
||||
|
||||
// link with node representation in workflow module
|
||||
this.node = workflow.active_node;
|
||||
this.node = options.node;
|
||||
if (!this.node) {
|
||||
console.debug('FAILED - tools-form-workflow:initialize() - Node not found in workflow.');
|
||||
return;
|
||||
|
||||
@@ -0,0 +1,228 @@
|
||||
define([], function() {
|
||||
function CanvasManager( app, canvas_viewport, overview ) {
|
||||
this.app = app;
|
||||
this.cv = canvas_viewport;
|
||||
this.cc = this.cv.find( "#canvas-container" );
|
||||
this.oc = overview.find( "#overview-canvas" );
|
||||
this.ov = overview.find( "#overview-viewport" );
|
||||
// Make overview box draggable
|
||||
this.init_drag();
|
||||
}
|
||||
$.extend( CanvasManager.prototype, {
|
||||
init_drag : function () {
|
||||
var self = this;
|
||||
var move = function( x, y ) {
|
||||
x = Math.min( x, self.cv.width() / 2 );
|
||||
x = Math.max( x, - self.cc.width() + self.cv.width() / 2 );
|
||||
y = Math.min( y, self.cv.height() / 2 );
|
||||
y = Math.max( y, - self.cc.height() + self.cv.height() / 2 );
|
||||
self.cc.css( {
|
||||
left: x,
|
||||
top: y
|
||||
});
|
||||
self.cv.css( { "background-position-x": x,
|
||||
"background-position-y": y
|
||||
});
|
||||
self.update_viewport_overlay();
|
||||
};
|
||||
// Dragging within canvas background
|
||||
this.cc.each( function() {
|
||||
this.scroll_panel = new ScrollPanel( this );
|
||||
});
|
||||
var x_adjust, y_adjust;
|
||||
this.cv.bind( "dragstart", function() {
|
||||
var o = $(this).offset();
|
||||
var p = self.cc.position();
|
||||
y_adjust = p.top - o.top;
|
||||
x_adjust = p.left - o.left;
|
||||
}).bind( "drag", function( e, d ) {
|
||||
move( d.offsetX + x_adjust, d.offsetY + y_adjust );
|
||||
}).bind( "dragend", function() {
|
||||
self.app.workflow.fit_canvas_to_nodes();
|
||||
self.draw_overview();
|
||||
});
|
||||
// Dragging for overview pane
|
||||
this.ov.bind( "drag", function( e, d ) {
|
||||
var in_w = self.cc.width(),
|
||||
in_h = self.cc.height(),
|
||||
o_w = self.oc.width(),
|
||||
o_h = self.oc.height(),
|
||||
p = $(this).offsetParent().offset(),
|
||||
new_x_offset = d.offsetX - p.left,
|
||||
new_y_offset = d.offsetY - p.top;
|
||||
move( - ( new_x_offset / o_w * in_w ),
|
||||
- ( new_y_offset / o_h * in_h ) );
|
||||
}).bind( "dragend", function() {
|
||||
self.app.workflow.fit_canvas_to_nodes();
|
||||
self.draw_overview();
|
||||
});
|
||||
// Dragging for overview border (resize)
|
||||
$("#overview-border").bind( "drag", function( e, d ) {
|
||||
var op = $(this).offsetParent();
|
||||
var opo = op.offset();
|
||||
var new_size = Math.max( op.width() - ( d.offsetX - opo.left ),
|
||||
op.height() - ( d.offsetY - opo.top ) );
|
||||
$(this).css( {
|
||||
width: new_size,
|
||||
height: new_size
|
||||
});
|
||||
self.draw_overview();
|
||||
});
|
||||
|
||||
/* Disable dragging for child element of the panel so that resizing can
|
||||
only be done by dragging the borders */
|
||||
$("#overview-border div").bind("drag", function() { });
|
||||
|
||||
},
|
||||
update_viewport_overlay: function() {
|
||||
var cc = this.cc,
|
||||
cv = this.cv,
|
||||
oc = this.oc,
|
||||
ov = this.ov,
|
||||
in_w = cc.width(),
|
||||
in_h = cc.height(),
|
||||
o_w = oc.width(),
|
||||
o_h = oc.height(),
|
||||
cc_pos = cc.position();
|
||||
ov.css( {
|
||||
left: - ( cc_pos.left / in_w * o_w ),
|
||||
top: - ( cc_pos.top / in_h * o_h ),
|
||||
// Subtract 2 to account for borders (maybe just change box sizing style instead?)
|
||||
width: ( cv.width() / in_w * o_w ) - 2,
|
||||
height: ( cv.height() / in_h * o_h ) - 2
|
||||
});
|
||||
},
|
||||
draw_overview: function() {
|
||||
var canvas_el = $("#overview-canvas"),
|
||||
size = canvas_el.parent().parent().width(),
|
||||
c = canvas_el.get(0).getContext("2d"),
|
||||
in_w = $("#canvas-container").width(),
|
||||
in_h = $("#canvas-container").height();
|
||||
var o_h, shift_h, o_w, shift_w;
|
||||
// Fit canvas into overview area
|
||||
var cv_w = this.cv.width();
|
||||
var cv_h = this.cv.height();
|
||||
if ( in_w < cv_w && in_h < cv_h ) {
|
||||
// Canvas is smaller than viewport
|
||||
o_w = in_w / cv_w * size;
|
||||
shift_w = ( size - o_w ) / 2;
|
||||
o_h = in_h / cv_h * size;
|
||||
shift_h = ( size - o_h ) / 2;
|
||||
} else if ( in_w < in_h ) {
|
||||
// Taller than wide
|
||||
shift_h = 0;
|
||||
o_h = size;
|
||||
o_w = Math.ceil( o_h * in_w / in_h );
|
||||
shift_w = ( size - o_w ) / 2;
|
||||
} else {
|
||||
// Wider than tall
|
||||
o_w = size;
|
||||
shift_w = 0;
|
||||
o_h = Math.ceil( o_w * in_h / in_w );
|
||||
shift_h = ( size - o_h ) / 2;
|
||||
}
|
||||
canvas_el.parent().css( {
|
||||
left: shift_w,
|
||||
top: shift_h,
|
||||
width: o_w,
|
||||
height: o_h
|
||||
});
|
||||
canvas_el.attr( "width", o_w );
|
||||
canvas_el.attr( "height", o_h );
|
||||
// Draw overview
|
||||
$.each( this.app.workflow.nodes, function( id, node ) {
|
||||
c.fillStyle = "#D2C099";
|
||||
c.strokeStyle = "#D8B365";
|
||||
c.lineWidth = 1;
|
||||
var node_element = $(node.element),
|
||||
position = node_element.position(),
|
||||
x = position.left / in_w * o_w,
|
||||
y = position.top / in_h * o_h,
|
||||
w = node_element.width() / in_w * o_w,
|
||||
h = node_element.height() / in_h * o_h;
|
||||
if (node.tool_errors){
|
||||
c.fillStyle = "#FFCCCC";
|
||||
c.strokeStyle = "#AA6666";
|
||||
} else if (node.workflow_outputs != undefined && node.workflow_outputs.length > 0){
|
||||
c.fillStyle = "#E8A92D";
|
||||
c.strokeStyle = "#E8A92D";
|
||||
}
|
||||
c.fillRect( x, y, w, h );
|
||||
c.strokeRect( x, y, w, h );
|
||||
});
|
||||
this.update_viewport_overlay();
|
||||
}
|
||||
});
|
||||
|
||||
// FIXME: merge scroll panel into CanvasManager, clean up hardcoded stuff.
|
||||
function ScrollPanel( panel ) {
|
||||
this.panel = panel;
|
||||
}
|
||||
$.extend( ScrollPanel.prototype, {
|
||||
test: function( e, onmove ) {
|
||||
clearTimeout( this.timeout );
|
||||
var x = e.pageX,
|
||||
y = e.pageY,
|
||||
// Panel size and position
|
||||
panel = $(this.panel),
|
||||
panel_pos = panel.position(),
|
||||
panel_w = panel.width(),
|
||||
panel_h = panel.height(),
|
||||
// Viewport size and offset
|
||||
viewport = panel.parent(),
|
||||
viewport_w = viewport.width(),
|
||||
viewport_h = viewport.height(),
|
||||
viewport_offset = viewport.offset(),
|
||||
// Edges of viewport (in page coordinates)
|
||||
min_x = viewport_offset.left,
|
||||
min_y = viewport_offset.top,
|
||||
max_x = min_x + viewport.width(),
|
||||
max_y = min_y + viewport.height(),
|
||||
// Legal panel range
|
||||
p_min_x = - ( panel_w - ( viewport_w / 2 ) ),
|
||||
p_min_y = - ( panel_h - ( viewport_h / 2 )),
|
||||
p_max_x = ( viewport_w / 2 ),
|
||||
p_max_y = ( viewport_h / 2 ),
|
||||
// Did the panel move?
|
||||
moved = false,
|
||||
// Constants
|
||||
close_dist = 5,
|
||||
nudge = 23;
|
||||
if ( x - close_dist < min_x ) {
|
||||
if ( panel_pos.left < p_max_x ) {
|
||||
var t = Math.min( nudge, p_max_x - panel_pos.left );
|
||||
panel.css( "left", panel_pos.left + t );
|
||||
moved = true;
|
||||
}
|
||||
} else if ( x + close_dist > max_x ) {
|
||||
if ( panel_pos.left > p_min_x ) {
|
||||
var t = Math.min( nudge, panel_pos.left - p_min_x );
|
||||
panel.css( "left", panel_pos.left - t );
|
||||
moved = true;
|
||||
}
|
||||
} else if ( y - close_dist < min_y ) {
|
||||
if ( panel_pos.top < p_max_y ) {
|
||||
var t = Math.min( nudge, p_max_y - panel_pos.top );
|
||||
panel.css( "top", panel_pos.top + t );
|
||||
moved = true;
|
||||
}
|
||||
} else if ( y + close_dist > max_y ) {
|
||||
if ( panel_pos.top > p_min_y ) {
|
||||
var t = Math.min( nudge, panel_pos.top - p_min_x );
|
||||
panel.css( "top", ( panel_pos.top - t ) + "px" );
|
||||
moved = true;
|
||||
}
|
||||
}
|
||||
if ( moved ) {
|
||||
// Keep moving even if mouse doesn't move
|
||||
onmove();
|
||||
var panel = this;
|
||||
this.timeout = setTimeout( function() { panel.test( e, onmove ); }, 50 );
|
||||
}
|
||||
},
|
||||
stop: function( e, ui ) {
|
||||
clearTimeout( this.timeout );
|
||||
}
|
||||
});
|
||||
return CanvasManager;
|
||||
});
|
||||
@@ -0,0 +1,135 @@
|
||||
define([], function(){
|
||||
function Connector( handle1, handle2 ) {
|
||||
this.canvas = null;
|
||||
this.dragging = false;
|
||||
this.inner_color = "#FFFFFF";
|
||||
this.outer_color = "#D8B365";
|
||||
if ( handle1 && handle2 ) {
|
||||
this.connect( handle1, handle2 );
|
||||
}
|
||||
}
|
||||
$.extend( Connector.prototype, {
|
||||
connect: function ( t1, t2 ) {
|
||||
this.handle1 = t1;
|
||||
if ( this.handle1 ) {
|
||||
this.handle1.connect( this );
|
||||
}
|
||||
this.handle2 = t2;
|
||||
if ( this.handle2 ) {
|
||||
this.handle2.connect( this );
|
||||
}
|
||||
},
|
||||
destroy : function () {
|
||||
if ( this.handle1 ) {
|
||||
this.handle1.disconnect( this );
|
||||
}
|
||||
if ( this.handle2 ) {
|
||||
this.handle2.disconnect( this );
|
||||
}
|
||||
$(this.canvas).remove();
|
||||
},
|
||||
destroyIfInvalid: function() {
|
||||
if( this.handle1 && this.handle2 && ! this.handle2.attachable( this.handle1 ) ) {
|
||||
this.destroy();
|
||||
}
|
||||
},
|
||||
redraw : function () {
|
||||
var canvas_container = $("#canvas-container");
|
||||
if ( ! this.canvas ) {
|
||||
this.canvas = document.createElement( "canvas" );
|
||||
// excanvas specific hack
|
||||
if ( window.G_vmlCanvasManager ) {
|
||||
G_vmlCanvasManager.initElement( this.canvas );
|
||||
}
|
||||
canvas_container.append( $(this.canvas) );
|
||||
if ( this.dragging ) {
|
||||
this.canvas.style.zIndex = "300";
|
||||
}
|
||||
}
|
||||
var relativeLeft = function( e ) {
|
||||
return $(e).offset().left - canvas_container.offset().left;
|
||||
};
|
||||
var relativeTop = function( e ) {
|
||||
return $(e).offset().top - canvas_container.offset().top;
|
||||
};
|
||||
if (!this.handle1 || !this.handle2) {
|
||||
return;
|
||||
}
|
||||
// Find the position of each handle
|
||||
var start_x = relativeLeft( this.handle1.element ) + 5;
|
||||
var start_y = relativeTop( this.handle1.element ) + 5;
|
||||
var end_x = relativeLeft( this.handle2.element ) + 5;
|
||||
var end_y = relativeTop( this.handle2.element ) + 5;
|
||||
// Calculate canvas area
|
||||
var canvas_extra = 100;
|
||||
var canvas_min_x = Math.min( start_x, end_x );
|
||||
var canvas_max_x = Math.max( start_x, end_x );
|
||||
var canvas_min_y = Math.min( start_y, end_y );
|
||||
var canvas_max_y = Math.max( start_y, end_y );
|
||||
var cp_shift = Math.min( Math.max( Math.abs( canvas_max_y - canvas_min_y ) / 2, 100 ), 300 );
|
||||
var canvas_left = canvas_min_x - canvas_extra;
|
||||
var canvas_top = canvas_min_y - canvas_extra;
|
||||
var canvas_width = canvas_max_x - canvas_min_x + 2 * canvas_extra;
|
||||
var canvas_height = canvas_max_y - canvas_min_y + 2 * canvas_extra;
|
||||
// Place the canvas
|
||||
this.canvas.style.left = canvas_left + "px";
|
||||
this.canvas.style.top = canvas_top + "px";
|
||||
this.canvas.setAttribute( "width", canvas_width );
|
||||
this.canvas.setAttribute( "height", canvas_height );
|
||||
// Adjust points to be relative to the canvas
|
||||
start_x -= canvas_left;
|
||||
start_y -= canvas_top;
|
||||
end_x -= canvas_left;
|
||||
end_y -= canvas_top;
|
||||
// Draw the line
|
||||
|
||||
var c = this.canvas.getContext("2d"),
|
||||
start_offsets = null,
|
||||
end_offsets = null;
|
||||
var num_offsets = 1;
|
||||
if ( this.handle1 && this.handle1.isMappedOver() ) {
|
||||
var start_offsets = [ -6, -3, 0, 3, 6 ];
|
||||
num_offsets = 5;
|
||||
} else {
|
||||
var start_offsets = [ 0 ];
|
||||
}
|
||||
if ( this.handle2 && this.handle2.isMappedOver() ) {
|
||||
var end_offsets = [ -6, -3, 0, 3, 6 ];
|
||||
num_offsets = 5;
|
||||
} else {
|
||||
var end_offsets = [ 0 ];
|
||||
}
|
||||
var connector = this;
|
||||
for( var i = 0; i < num_offsets; i++ ) {
|
||||
var inner_width = 5,
|
||||
outer_width = 7;
|
||||
if( start_offsets.length > 1 || end_offsets.length > 1 ) {
|
||||
// We have a multi-run, using many lines, make them small.
|
||||
inner_width = 1;
|
||||
outer_width = 3;
|
||||
}
|
||||
connector.draw_outlined_curve( start_x, start_y, end_x, end_y, cp_shift, inner_width, outer_width, start_offsets[ i % start_offsets.length ], end_offsets[ i % end_offsets.length ] );
|
||||
}
|
||||
},
|
||||
draw_outlined_curve : function( start_x, start_y, end_x, end_y, cp_shift, inner_width, outer_width, offset_start, offset_end ) {
|
||||
var offset_start = offset_start || 0;
|
||||
var offset_end = offset_end || 0;
|
||||
var c = this.canvas.getContext("2d");
|
||||
c.lineCap = "round";
|
||||
c.strokeStyle = this.outer_color;
|
||||
c.lineWidth = outer_width;
|
||||
c.beginPath();
|
||||
c.moveTo( start_x, start_y + offset_start );
|
||||
c.bezierCurveTo( start_x + cp_shift, start_y + offset_start, end_x - cp_shift, end_y + offset_end, end_x, end_y + offset_end);
|
||||
c.stroke();
|
||||
// Inner line
|
||||
c.strokeStyle = this.inner_color;
|
||||
c.lineWidth = inner_width;
|
||||
c.beginPath();
|
||||
c.moveTo( start_x, start_y + offset_start );
|
||||
c.bezierCurveTo( start_x + cp_shift, start_y + offset_start, end_x - cp_shift, end_y + offset_end, end_x, end_y + offset_end );
|
||||
c.stroke();
|
||||
}
|
||||
});
|
||||
return Connector;
|
||||
});
|
||||
@@ -0,0 +1,391 @@
|
||||
define(['mvc/workflow/workflow-connector'], function( Connector ) {
|
||||
function Workflow( app, canvas_container ) {
|
||||
this.app = app;
|
||||
this.canvas_container = canvas_container;
|
||||
this.id_counter = 0;
|
||||
this.nodes = {};
|
||||
this.name = null;
|
||||
this.has_changes = false;
|
||||
this.active_form_has_changes = false;
|
||||
}
|
||||
$.extend( Workflow.prototype, {
|
||||
create_node: function ( type, title_text, tool_id ) {
|
||||
var node = this.app.prebuildNode( type, title_text, tool_id );
|
||||
this.add_node( node );
|
||||
this.fit_canvas_to_nodes();
|
||||
this.app.canvas_manager.draw_overview();
|
||||
this.activate_node( node );
|
||||
return node;
|
||||
},
|
||||
add_node : function( node ) {
|
||||
node.id = this.id_counter;
|
||||
node.element.attr( 'id', 'wf-node-step-' + node.id );
|
||||
this.id_counter++;
|
||||
this.nodes[ node.id ] = node;
|
||||
this.has_changes = true;
|
||||
node.workflow = this;
|
||||
},
|
||||
remove_node : function( node ) {
|
||||
if ( this.active_node == node ) {
|
||||
this.clear_active_node();
|
||||
}
|
||||
delete this.nodes[ node.id ];
|
||||
this.has_changes = true;
|
||||
},
|
||||
remove_all : function() {
|
||||
wf = this;
|
||||
$.each( this.nodes, function ( k, v ) {
|
||||
v.destroy();
|
||||
wf.remove_node( v );
|
||||
});
|
||||
},
|
||||
rectify_workflow_outputs : function() {
|
||||
// Find out if we're using workflow_outputs or not.
|
||||
var using_workflow_outputs = false;
|
||||
var has_existing_pjas = false;
|
||||
$.each( this.nodes, function ( k, node ) {
|
||||
if (node.workflow_outputs && node.workflow_outputs.length > 0){
|
||||
using_workflow_outputs = true;
|
||||
}
|
||||
$.each(node.post_job_actions, function(pja_id, pja){
|
||||
if (pja.action_type === "HideDatasetAction"){
|
||||
has_existing_pjas = true;
|
||||
}
|
||||
});
|
||||
});
|
||||
if (using_workflow_outputs !== false || has_existing_pjas !== false){
|
||||
// Using workflow outputs, or has existing pjas. Remove all PJAs and recreate based on outputs.
|
||||
var self = this;
|
||||
$.each(this.nodes, function (k, node ){
|
||||
if (node.type === 'tool'){
|
||||
var node_changed = false;
|
||||
if (node.post_job_actions == null){
|
||||
node.post_job_actions = {};
|
||||
node_changed = true;
|
||||
}
|
||||
var pjas_to_rem = [];
|
||||
$.each(node.post_job_actions, function(pja_id, pja){
|
||||
if (pja.action_type == "HideDatasetAction"){
|
||||
pjas_to_rem.push(pja_id);
|
||||
}
|
||||
});
|
||||
if (pjas_to_rem.length > 0 ) {
|
||||
$.each(pjas_to_rem, function(i, pja_name){
|
||||
node_changed = true;
|
||||
delete node.post_job_actions[pja_name];
|
||||
});
|
||||
}
|
||||
if (using_workflow_outputs){
|
||||
$.each(node.output_terminals, function(ot_id, ot){
|
||||
var create_pja = true;
|
||||
$.each(node.workflow_outputs, function(i, wo_name){
|
||||
if (ot.name === wo_name){
|
||||
create_pja = false;
|
||||
}
|
||||
});
|
||||
if (create_pja === true){
|
||||
node_changed = true;
|
||||
var pja = {
|
||||
action_type : "HideDatasetAction",
|
||||
output_name : ot.name,
|
||||
action_arguments : {}
|
||||
}
|
||||
node.post_job_actions['HideDatasetAction'+ot.name] = null;
|
||||
node.post_job_actions['HideDatasetAction'+ot.name] = pja;
|
||||
}
|
||||
});
|
||||
}
|
||||
// lastly, if this is the active node, and we made changes, reload the display at right.
|
||||
if (self.active_node == node && node_changed === true) {
|
||||
self.reload_active_node();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
to_simple : function () {
|
||||
var nodes = {};
|
||||
$.each( this.nodes, function ( i, node ) {
|
||||
var input_connections = {};
|
||||
$.each( node.input_terminals, function ( k, t ) {
|
||||
input_connections[ t.name ] = null;
|
||||
// There should only be 0 or 1 connectors, so this is
|
||||
// really a sneaky if statement
|
||||
var cons = []
|
||||
$.each( t.connectors, function ( i, c ) {
|
||||
cons[i] = { id: c.handle1.node.id, output_name: c.handle1.name };
|
||||
input_connections[ t.name ] = cons;
|
||||
});
|
||||
});
|
||||
var post_job_actions = {};
|
||||
if (node.post_job_actions){
|
||||
$.each( node.post_job_actions, function ( i, act ) {
|
||||
var pja = {
|
||||
action_type : act.action_type,
|
||||
output_name : act.output_name,
|
||||
action_arguments : act.action_arguments
|
||||
}
|
||||
post_job_actions[ act.action_type + act.output_name ] = null;
|
||||
post_job_actions[ act.action_type + act.output_name ] = pja;
|
||||
});
|
||||
}
|
||||
if (!node.workflow_outputs){
|
||||
node.workflow_outputs = [];
|
||||
// Just in case.
|
||||
}
|
||||
var node_data = {
|
||||
id : node.id,
|
||||
type : node.type,
|
||||
tool_id : node.tool_id,
|
||||
tool_state : node.tool_state,
|
||||
tool_errors : node.tool_errors,
|
||||
input_connections : input_connections,
|
||||
position : $(node.element).position(),
|
||||
annotation: node.annotation,
|
||||
post_job_actions: node.post_job_actions,
|
||||
uuid: node.uuid,
|
||||
label: node.label,
|
||||
workflow_outputs: node.workflow_outputs
|
||||
};
|
||||
nodes[ node.id ] = node_data;
|
||||
});
|
||||
return { steps: nodes };
|
||||
},
|
||||
from_simple : function ( data ) {
|
||||
wf = this;
|
||||
var max_id = 0;
|
||||
wf.name = data.name;
|
||||
// First pass, nodes
|
||||
var using_workflow_outputs = false;
|
||||
$.each( data.steps, function( id, step ) {
|
||||
var node = wf.app.prebuildNode( step.type, step.name, step.tool_id );
|
||||
node.init_field_data( step );
|
||||
if ( step.position ) {
|
||||
node.element.css( { top: step.position.top, left: step.position.left } );
|
||||
}
|
||||
node.id = step.id;
|
||||
wf.nodes[ node.id ] = node;
|
||||
max_id = Math.max( max_id, parseInt( id ) );
|
||||
// For older workflows, it's possible to have HideDataset PJAs, but not WorkflowOutputs.
|
||||
// Check for either, and then add outputs in the next pass.
|
||||
if (!using_workflow_outputs && node.type === 'tool'){
|
||||
if (node.workflow_outputs.length > 0){
|
||||
using_workflow_outputs = true;
|
||||
}
|
||||
else{
|
||||
$.each(node.post_job_actions, function(pja_id, pja){
|
||||
if (pja.action_type === "HideDatasetAction"){
|
||||
using_workflow_outputs = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
wf.id_counter = max_id + 1;
|
||||
// Second pass, connections
|
||||
$.each( data.steps, function( id, step ) {
|
||||
var node = wf.nodes[id];
|
||||
$.each( step.input_connections, function( k, v ) {
|
||||
if ( v ) {
|
||||
if ( ! $.isArray( v ) ) {
|
||||
v = [ v ];
|
||||
}
|
||||
$.each( v, function( l, x ) {
|
||||
var other_node = wf.nodes[ x.id ];
|
||||
var c = new Connector();
|
||||
c.connect( other_node.output_terminals[ x.output_name ],
|
||||
node.input_terminals[ k ] );
|
||||
c.redraw();
|
||||
});
|
||||
}
|
||||
});
|
||||
if(using_workflow_outputs && node.type === 'tool'){
|
||||
// Ensure that every output terminal has a WorkflowOutput or HideDatasetAction.
|
||||
$.each(node.output_terminals, function(ot_id, ot){
|
||||
if(node.post_job_actions['HideDatasetAction'+ot.name] === undefined){
|
||||
node.workflow_outputs.push(ot.name);
|
||||
callout = $(node.element).find('.callout.'+ot.name);
|
||||
callout.find('img').attr('src', galaxy_config.root + 'static/images/fugue/asterisk-small.png');
|
||||
wf.has_changes = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
check_changes_in_active_form : function() {
|
||||
// If active form has changed, save it
|
||||
if (this.active_form_has_changes) {
|
||||
this.has_changes = true;
|
||||
// Submit form.
|
||||
$("#right-content").find("form").submit();
|
||||
this.active_form_has_changes = false;
|
||||
}
|
||||
},
|
||||
reload_active_node : function() {
|
||||
if (this.active_node){
|
||||
var node = this.active_node;
|
||||
this.clear_active_node();
|
||||
this.activate_node(node);
|
||||
}
|
||||
},
|
||||
clear_active_node : function() {
|
||||
if ( this.active_node ) {
|
||||
this.active_node.make_inactive();
|
||||
this.active_node = null;
|
||||
}
|
||||
this.app.showToolForm( "<div>No node selected</div>", {id: 'no-node'} );
|
||||
},
|
||||
activate_node : function( node ) {
|
||||
if ( this.active_node != node ) {
|
||||
this.check_changes_in_active_form();
|
||||
this.clear_active_node();
|
||||
this.app.showToolForm( node.form_html, node );
|
||||
node.make_active();
|
||||
this.active_node = node;
|
||||
}
|
||||
},
|
||||
node_changed : function ( node, force ) {
|
||||
this.has_changes = true;
|
||||
if ( this.active_node == node && force ) {
|
||||
// Force changes to be saved even on new connection (previously dumped)
|
||||
this.check_changes_in_active_form();
|
||||
this.app.showToolForm( node.form_html, node );
|
||||
}
|
||||
},
|
||||
layout : function () {
|
||||
this.check_changes_in_active_form();
|
||||
this.has_changes = true;
|
||||
// Prepare predecessor / successor tracking
|
||||
var n_pred = {};
|
||||
var successors = {};
|
||||
// First pass to initialize arrays even for nodes with no connections
|
||||
$.each( this.nodes, function( id, node ) {
|
||||
if ( n_pred[id] === undefined ) { n_pred[id] = 0; }
|
||||
if ( successors[id] === undefined ) { successors[id] = []; }
|
||||
});
|
||||
// Second pass to count predecessors and successors
|
||||
$.each( this.nodes, function( id, node ) {
|
||||
$.each( node.input_terminals, function ( j, t ) {
|
||||
$.each( t.connectors, function ( k, c ) {
|
||||
// A connection exists from `other` to `node`
|
||||
var other = c.handle1.node;
|
||||
// node gains a predecessor
|
||||
n_pred[node.id] += 1;
|
||||
// other gains a successor
|
||||
successors[other.id].push( node.id );
|
||||
});
|
||||
});
|
||||
});
|
||||
// Assemble order, tracking levels
|
||||
node_ids_by_level = [];
|
||||
while ( true ) {
|
||||
// Everything without a predecessor
|
||||
level_parents = [];
|
||||
for ( var pred_k in n_pred ) {
|
||||
if ( n_pred[ pred_k ] == 0 ) {
|
||||
level_parents.push( pred_k );
|
||||
}
|
||||
}
|
||||
if ( level_parents.length == 0 ) {
|
||||
break;
|
||||
}
|
||||
node_ids_by_level.push( level_parents );
|
||||
// Remove the parents from this level, and decrement the number
|
||||
// of predecessors for each successor
|
||||
for ( var k in level_parents ) {
|
||||
var v = level_parents[k];
|
||||
delete n_pred[v];
|
||||
for ( var sk in successors[v] ) {
|
||||
n_pred[ successors[v][sk] ] -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( n_pred.length ) {
|
||||
// ERROR: CYCLE! Currently we do nothing
|
||||
return;
|
||||
}
|
||||
// Layout each level
|
||||
var all_nodes = this.nodes;
|
||||
var h_pad = 80; v_pad = 30;
|
||||
var left = h_pad;
|
||||
$.each( node_ids_by_level, function( i, ids ) {
|
||||
// We keep nodes in the same order in a level to give the user
|
||||
// some control over ordering
|
||||
ids.sort( function( a, b ) {
|
||||
return $(all_nodes[a].element).position().top - $(all_nodes[b].element).position().top;
|
||||
});
|
||||
// Position each node
|
||||
var max_width = 0;
|
||||
var top = v_pad;
|
||||
$.each( ids, function( j, id ) {
|
||||
var node = all_nodes[id];
|
||||
var element = $(node.element);
|
||||
$(element).css( { top: top, left: left } );
|
||||
max_width = Math.max( max_width, $(element).width() );
|
||||
top += $(element).height() + v_pad;
|
||||
});
|
||||
left += max_width + h_pad;
|
||||
});
|
||||
// Need to redraw all connectors
|
||||
$.each( all_nodes, function( _, node ) { node.redraw(); } );
|
||||
},
|
||||
bounds_for_all_nodes: function() {
|
||||
var xmin = Infinity, xmax = -Infinity,
|
||||
ymin = Infinity, ymax = -Infinity,
|
||||
p;
|
||||
$.each( this.nodes, function( id, node ) {
|
||||
e = $(node.element);
|
||||
p = e.position();
|
||||
xmin = Math.min( xmin, p.left );
|
||||
xmax = Math.max( xmax, p.left + e.width() );
|
||||
ymin = Math.min( ymin, p.top );
|
||||
ymax = Math.max( ymax, p.top + e.width() );
|
||||
});
|
||||
return { xmin: xmin, xmax: xmax, ymin: ymin, ymax: ymax };
|
||||
},
|
||||
fit_canvas_to_nodes: function() {
|
||||
// Math utils
|
||||
function round_up( x, n ) {
|
||||
return Math.ceil( x / n ) * n;
|
||||
}
|
||||
function fix_delta( x, n ) {
|
||||
if ( x < n|| x > 3*n ) {
|
||||
new_pos = ( Math.ceil( ( ( x % n ) ) / n ) + 1 ) * n;
|
||||
return ( - ( x - new_pos ) );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
// Span of all elements
|
||||
var bounds = this.bounds_for_all_nodes();
|
||||
var position = this.canvas_container.position();
|
||||
var parent = this.canvas_container.parent();
|
||||
// Determine amount we need to expand on top/left
|
||||
var xmin_delta = fix_delta( bounds.xmin, 100 );
|
||||
var ymin_delta = fix_delta( bounds.ymin, 100 );
|
||||
// May need to expand farther to fill viewport
|
||||
xmin_delta = Math.max( xmin_delta, position.left );
|
||||
ymin_delta = Math.max( ymin_delta, position.top );
|
||||
var left = position.left - xmin_delta;
|
||||
var top = position.top - ymin_delta;
|
||||
// Same for width/height
|
||||
var width = round_up( bounds.xmax + 100, 100 ) + xmin_delta;
|
||||
var height = round_up( bounds.ymax + 100, 100 ) + ymin_delta;
|
||||
width = Math.max( width, - left + parent.width() );
|
||||
height = Math.max( height, - top + parent.height() );
|
||||
// Grow the canvas container
|
||||
this.canvas_container.css( {
|
||||
left: left,
|
||||
top: top,
|
||||
width: width,
|
||||
height: height
|
||||
});
|
||||
// Move elements back if needed
|
||||
this.canvas_container.children().each( function() {
|
||||
var p = $(this).position();
|
||||
$(this).css( "left", p.left + xmin_delta );
|
||||
$(this).css( "top", p.top + ymin_delta );
|
||||
});
|
||||
}
|
||||
});
|
||||
return Workflow;
|
||||
});
|
||||
@@ -0,0 +1,195 @@
|
||||
define(['mvc/workflow/workflow-view-node'], function( NodeView ) {
|
||||
var Node = Backbone.Model.extend({
|
||||
initialize: function( app, attr ) {
|
||||
this.app = app;
|
||||
this.element = attr.element;
|
||||
this.input_terminals = {};
|
||||
this.output_terminals = {};
|
||||
this.tool_errors = {};
|
||||
},
|
||||
connectedOutputTerminals: function() {
|
||||
return this._connectedTerminals( this.output_terminals );
|
||||
},
|
||||
_connectedTerminals: function( terminals ) {
|
||||
var connectedTerminals = [];
|
||||
$.each( terminals, function( _, t ) {
|
||||
if( t.connectors.length > 0 ) {
|
||||
connectedTerminals.push( t );
|
||||
}
|
||||
} );
|
||||
return connectedTerminals;
|
||||
},
|
||||
hasConnectedOutputTerminals: function() {
|
||||
// return this.connectedOutputTerminals().length > 0; <- optimized this
|
||||
var outputTerminals = this.output_terminals;
|
||||
for( var outputName in outputTerminals ) {
|
||||
if( outputTerminals[ outputName ].connectors.length > 0 ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
connectedMappedInputTerminals: function() {
|
||||
return this._connectedMappedTerminals( this.input_terminals );
|
||||
},
|
||||
hasConnectedMappedInputTerminals: function() {
|
||||
// return this.connectedMappedInputTerminals().length > 0; <- optimized this
|
||||
var inputTerminals = this.input_terminals;
|
||||
for( var inputName in inputTerminals ) {
|
||||
var inputTerminal = inputTerminals[ inputName ];
|
||||
if( inputTerminal.connectors.length > 0 && inputTerminal.isMappedOver() ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
_connectedMappedTerminals: function( terminals ) {
|
||||
var mapped_outputs = [];
|
||||
$.each( terminals, function( _, t ) {
|
||||
var mapOver = t.mapOver();
|
||||
if( mapOver.isCollection ) {
|
||||
if( t.connectors.length > 0 ) {
|
||||
mapped_outputs.push( t );
|
||||
}
|
||||
}
|
||||
});
|
||||
return mapped_outputs;
|
||||
},
|
||||
mappedInputTerminals: function() {
|
||||
return this._mappedTerminals( this.input_terminals );
|
||||
},
|
||||
_mappedTerminals: function( terminals ) {
|
||||
var mappedTerminals = [];
|
||||
$.each( terminals, function( _, t ) {
|
||||
var mapOver = t.mapOver();
|
||||
if( mapOver.isCollection ) {
|
||||
mappedTerminals.push( t );
|
||||
}
|
||||
} );
|
||||
return mappedTerminals;
|
||||
},
|
||||
hasMappedOverInputTerminals: function() {
|
||||
var found = false;
|
||||
_.each( this.input_terminals, function( t ) {
|
||||
var mapOver = t.mapOver();
|
||||
if( mapOver.isCollection ) {
|
||||
found = true;
|
||||
}
|
||||
} );
|
||||
return found;
|
||||
},
|
||||
redraw : function () {
|
||||
$.each( this.input_terminals, function( _, t ) {
|
||||
t.redraw();
|
||||
});
|
||||
$.each( this.output_terminals, function( _, t ) {
|
||||
t.redraw();
|
||||
});
|
||||
},
|
||||
destroy : function () {
|
||||
$.each( this.input_terminals, function( k, t ) {
|
||||
t.destroy();
|
||||
});
|
||||
$.each( this.output_terminals, function( k, t ) {
|
||||
t.destroy();
|
||||
});
|
||||
this.app.workflow.remove_node( this );
|
||||
$(this.element).remove();
|
||||
},
|
||||
make_active : function () {
|
||||
$(this.element).addClass( "toolForm-active" );
|
||||
},
|
||||
make_inactive : function () {
|
||||
// Keep inactive nodes stacked from most to least recently active
|
||||
// by moving element to the end of parent's node list
|
||||
var element = this.element.get(0);
|
||||
(function(p) { p.removeChild( element ); p.appendChild( element ); })(element.parentNode);
|
||||
// Remove active class
|
||||
$(element).removeClass( "toolForm-active" );
|
||||
},
|
||||
init_field_data : function ( data ) {
|
||||
if ( data.type ) {
|
||||
this.type = data.type;
|
||||
}
|
||||
this.name = data.name;
|
||||
this.form_html = data.form_html;
|
||||
this.tool_state = data.tool_state;
|
||||
this.tool_errors = data.tool_errors;
|
||||
this.tooltip = data.tooltip ? data.tooltip : "";
|
||||
this.annotation = data.annotation;
|
||||
this.post_job_actions = data.post_job_actions ? data.post_job_actions : {};
|
||||
this.label = data.label;
|
||||
this.uuid = data.uuid;
|
||||
this.workflow_outputs = data.workflow_outputs ? data.workflow_outputs : [];
|
||||
|
||||
var node = this;
|
||||
var nodeView = new NodeView({
|
||||
el: this.element[ 0 ],
|
||||
node: node,
|
||||
});
|
||||
node.nodeView = nodeView;
|
||||
|
||||
$.each( data.data_inputs, function( i, input ) {
|
||||
nodeView.addDataInput( input );
|
||||
});
|
||||
if ( ( data.data_inputs.length > 0 ) && ( data.data_outputs.length > 0 ) ) {
|
||||
nodeView.addRule();
|
||||
}
|
||||
$.each( data.data_outputs, function( i, output ) {
|
||||
nodeView.addDataOutput( output );
|
||||
} );
|
||||
nodeView.render();
|
||||
this.app.workflow.node_changed( this, true);
|
||||
},
|
||||
update_field_data : function( data ) {
|
||||
var node = this;
|
||||
nodeView = node.nodeView;
|
||||
this.tool_state = data.tool_state;
|
||||
this.form_html = data.form_html;
|
||||
this.tool_errors = data.tool_errors;
|
||||
this.annotation = data['annotation'];
|
||||
if( "post_job_actions" in data ) {
|
||||
// Won't be present in response for data inputs
|
||||
var pja_in = $.parseJSON(data.post_job_actions);
|
||||
this.post_job_actions = pja_in ? pja_in : {};
|
||||
}
|
||||
node.nodeView.renderToolErrors();
|
||||
// Update input rows
|
||||
var old_body = nodeView.$( "div.inputs" );
|
||||
var new_body = nodeView.newInputsDiv();
|
||||
var newTerminalViews = {};
|
||||
_.each( data.data_inputs, function( input ) {
|
||||
var terminalView = node.nodeView.addDataInput( input, new_body );
|
||||
newTerminalViews[ input.name ] = terminalView;
|
||||
});
|
||||
// Cleanup any leftover terminals
|
||||
_.each( _.difference( _.values( nodeView.terminalViews ), _.values( newTerminalViews ) ), function( unusedView ) {
|
||||
unusedView.el.terminal.destroy();
|
||||
} );
|
||||
nodeView.terminalViews = newTerminalViews;
|
||||
// In general workflow editor assumes tool outputs don't change in # or
|
||||
// type (not really valid right?) but adding special logic here for
|
||||
// data collection input parameters that can have their collection
|
||||
// change.
|
||||
if( data.data_outputs.length == 1 && "collection_type" in data.data_outputs[ 0 ] ) {
|
||||
nodeView.updateDataOutput( data.data_outputs[ 0 ] );
|
||||
}
|
||||
old_body.replaceWith( new_body );
|
||||
// If active, reactivate with new form_html
|
||||
this.markChanged();
|
||||
this.redraw();
|
||||
},
|
||||
error : function ( text ) {
|
||||
var b = $(this.element).find( ".toolFormBody" );
|
||||
b.find( "div" ).remove();
|
||||
var tmp = "<div style='color: red; text-style: italic;'>" + text + "</div>";
|
||||
this.form_html = tmp;
|
||||
b.html( tmp );
|
||||
this.app.workflow.node_changed( this );
|
||||
},
|
||||
markChanged: function() {
|
||||
this.app.workflow.node_changed( this );
|
||||
}
|
||||
});
|
||||
return Node;
|
||||
});
|
||||
@@ -0,0 +1,488 @@
|
||||
define(['mvc/workflow/workflow-globals'], function( Globals ) {
|
||||
function CollectionTypeDescription( collectionType ) {
|
||||
this.collectionType = collectionType;
|
||||
this.isCollection = true;
|
||||
this.rank = collectionType.split(":").length;
|
||||
}
|
||||
$.extend( CollectionTypeDescription.prototype, {
|
||||
append: function( otherCollectionTypeDescription ) {
|
||||
if( otherCollectionTypeDescription === NULL_COLLECTION_TYPE_DESCRIPTION ) {
|
||||
return this;
|
||||
}
|
||||
if( otherCollectionTypeDescription === ANY_COLLECTION_TYPE_DESCRIPTION ) {
|
||||
return otherCollectionType;
|
||||
}
|
||||
return new CollectionTypeDescription( this.collectionType + ":" + otherCollectionTypeDescription.collectionType );
|
||||
},
|
||||
canMatch: function( otherCollectionTypeDescription ) {
|
||||
if( otherCollectionTypeDescription === NULL_COLLECTION_TYPE_DESCRIPTION ) {
|
||||
return false;
|
||||
}
|
||||
if( otherCollectionTypeDescription === ANY_COLLECTION_TYPE_DESCRIPTION ) {
|
||||
return true;
|
||||
}
|
||||
return otherCollectionTypeDescription.collectionType == this.collectionType;
|
||||
},
|
||||
canMapOver: function( otherCollectionTypeDescription ) {
|
||||
if( otherCollectionTypeDescription === NULL_COLLECTION_TYPE_DESCRIPTION ) {
|
||||
return false;
|
||||
}
|
||||
if( otherCollectionTypeDescription === ANY_COLLECTION_TYPE_DESCRIPTION ) {
|
||||
return false;
|
||||
}
|
||||
if( this.rank <= otherCollectionTypeDescription.rank ) {
|
||||
// Cannot map over self...
|
||||
return false;
|
||||
}
|
||||
var requiredSuffix = otherCollectionTypeDescription.collectionType
|
||||
return this._endsWith( this.collectionType, requiredSuffix );
|
||||
},
|
||||
effectiveMapOver: function( otherCollectionTypeDescription ) {
|
||||
var otherCollectionType = otherCollectionTypeDescription.collectionType;
|
||||
var effectiveCollectionType = this.collectionType.substring( 0, this.collectionType.length - otherCollectionType.length - 1 );
|
||||
return new CollectionTypeDescription( effectiveCollectionType );
|
||||
},
|
||||
equal: function( otherCollectionTypeDescription ) {
|
||||
return otherCollectionTypeDescription.collectionType == this.collectionType;
|
||||
},
|
||||
toString: function() {
|
||||
return "CollectionType[" + this.collectionType + "]";
|
||||
},
|
||||
_endsWith: function( str, suffix ) {
|
||||
return str.indexOf(suffix, str.length - suffix.length) !== -1;
|
||||
}
|
||||
} );
|
||||
|
||||
NULL_COLLECTION_TYPE_DESCRIPTION = {
|
||||
isCollection: false,
|
||||
canMatch: function( other ) { return false; },
|
||||
canMapOver: function( other ) {
|
||||
return false;
|
||||
},
|
||||
toString: function() {
|
||||
return "NullCollectionType[]";
|
||||
},
|
||||
append: function( otherCollectionType ) {
|
||||
return otherCollectionType;
|
||||
},
|
||||
equal: function( other ) {
|
||||
return other === this;
|
||||
}
|
||||
};
|
||||
|
||||
ANY_COLLECTION_TYPE_DESCRIPTION = {
|
||||
isCollection: true,
|
||||
canMatch: function( other ) { return NULL_COLLECTION_TYPE_DESCRIPTION !== other; },
|
||||
canMapOver: function( other ) {
|
||||
return false;
|
||||
},
|
||||
toString: function() {
|
||||
return "AnyCollectionType[]";
|
||||
},
|
||||
append: function( otherCollectionType ) {
|
||||
throw "Cannot append to ANY_COLLECTION_TYPE_DESCRIPTION";
|
||||
},
|
||||
equal: function( other ) {
|
||||
return other === this;
|
||||
}
|
||||
};
|
||||
|
||||
var TerminalMapping = Backbone.Model.extend( {
|
||||
initialize: function( attr ) {
|
||||
this.mapOver = attr.mapOver || NULL_COLLECTION_TYPE_DESCRIPTION;
|
||||
this.terminal = attr.terminal;
|
||||
this.terminal.terminalMapping = this;
|
||||
},
|
||||
disableMapOver: function() {
|
||||
this.setMapOver( NULL_COLLECTION_TYPE_DESCRIPTION );
|
||||
},
|
||||
setMapOver: function( collectionTypeDescription ) {
|
||||
// TODO: Can I use "attributes" or something to auto trigger "change"
|
||||
// event?
|
||||
this.mapOver = collectionTypeDescription;
|
||||
this.trigger("change");
|
||||
}
|
||||
} );
|
||||
|
||||
var Terminal = Backbone.Model.extend( {
|
||||
initialize: function( attr ) {
|
||||
this.element = attr.element;
|
||||
this.connectors = [];
|
||||
},
|
||||
connect: function ( connector ) {
|
||||
this.connectors.push( connector );
|
||||
if ( this.node ) {
|
||||
this.node.markChanged();
|
||||
}
|
||||
},
|
||||
disconnect: function ( connector ) {
|
||||
this.connectors.splice( $.inArray( connector, this.connectors ), 1 );
|
||||
if ( this.node ) {
|
||||
this.node.markChanged();
|
||||
this.resetMappingIfNeeded();
|
||||
}
|
||||
},
|
||||
redraw: function () {
|
||||
$.each( this.connectors, function( _, c ) {
|
||||
c.redraw();
|
||||
});
|
||||
},
|
||||
destroy: function () {
|
||||
$.each( this.connectors.slice(), function( _, c ) {
|
||||
c.destroy();
|
||||
});
|
||||
},
|
||||
destroyInvalidConnections: function( ) {
|
||||
_.each( this.connectors, function( connector ) {
|
||||
connector.destroyIfInvalid();
|
||||
} );
|
||||
},
|
||||
setMapOver : function( val ) {
|
||||
if( this.multiple ) {
|
||||
return; // Cannot set this to be multirun...
|
||||
}
|
||||
|
||||
if( ! this.mapOver().equal( val ) ) {
|
||||
this.terminalMapping.setMapOver( val );
|
||||
_.each( this.node.output_terminals, function( outputTerminal ) {
|
||||
outputTerminal.setMapOver( val );
|
||||
} );
|
||||
}
|
||||
},
|
||||
mapOver: function( ) {
|
||||
if ( ! this.terminalMapping ) {
|
||||
return NULL_COLLECTION_TYPE_DESCRIPTION;
|
||||
} else {
|
||||
return this.terminalMapping.mapOver;
|
||||
}
|
||||
},
|
||||
isMappedOver: function( ) {
|
||||
return this.terminalMapping && this.terminalMapping.mapOver.isCollection;
|
||||
},
|
||||
resetMapping: function() {
|
||||
this.terminalMapping.disableMapOver();
|
||||
},
|
||||
|
||||
resetMappingIfNeeded: function( ) {}, // Subclasses should override this...
|
||||
|
||||
} );
|
||||
|
||||
var OutputTerminal = Terminal.extend( {
|
||||
initialize: function( attr ) {
|
||||
Terminal.prototype.initialize.call( this, attr );
|
||||
this.datatypes = attr.datatypes;
|
||||
},
|
||||
|
||||
resetMappingIfNeeded: function( ) {
|
||||
// If inputs were only mapped over to preserve
|
||||
// an output just disconnected reset these...
|
||||
if( ! this.node.hasConnectedOutputTerminals() && ! this.node.hasConnectedMappedInputTerminals()){
|
||||
_.each( this.node.mappedInputTerminals(), function( mappedInput ) {
|
||||
mappedInput.resetMappingIfNeeded();
|
||||
} );
|
||||
}
|
||||
|
||||
var noMappedInputs = ! this.node.hasMappedOverInputTerminals();
|
||||
if( noMappedInputs ) {
|
||||
this.resetMapping();
|
||||
}
|
||||
},
|
||||
|
||||
resetMapping: function() {
|
||||
this.terminalMapping.disableMapOver();
|
||||
_.each( this.connectors, function( connector ) {
|
||||
var connectedInput = connector.handle2;
|
||||
if( connectedInput ) {
|
||||
// Not exactly right because this is still connected.
|
||||
// Either rewrite resetMappingIfNeeded or disconnect
|
||||
// and reconnect if valid.
|
||||
connectedInput.resetMappingIfNeeded();
|
||||
connector.destroyIfInvalid();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
} );
|
||||
|
||||
var BaseInputTerminal = Terminal.extend( {
|
||||
initialize: function( attr ) {
|
||||
Terminal.prototype.initialize.call( this, attr );
|
||||
this.update( attr.input ); // subclasses should implement this...
|
||||
},
|
||||
canAccept: function ( other ) {
|
||||
if( this._inputFilled() ) {
|
||||
return false;
|
||||
} else {
|
||||
return this.attachable( other );
|
||||
}
|
||||
},
|
||||
resetMappingIfNeeded: function( ) {
|
||||
var mapOver = this.mapOver();
|
||||
if( ! mapOver.isCollection ) {
|
||||
return;
|
||||
}
|
||||
// No output terminals are counting on this being mapped
|
||||
// over if connected inputs are still mapped over or if none
|
||||
// of the outputs are connected...
|
||||
var reset = this.node.hasConnectedMappedInputTerminals() ||
|
||||
( ! this.node.hasConnectedOutputTerminals() );
|
||||
if( reset ) {
|
||||
this.resetMapping();
|
||||
}
|
||||
},
|
||||
resetMapping: function() {
|
||||
this.terminalMapping.disableMapOver();
|
||||
if( ! this.node.hasMappedOverInputTerminals() ) {
|
||||
_.each( this.node.output_terminals, function( terminal) {
|
||||
// This shouldn't be called if there are mapped over
|
||||
// outputs.
|
||||
terminal.resetMapping();
|
||||
} );
|
||||
}
|
||||
},
|
||||
connected: function() {
|
||||
return this.connectors.length !== 0;
|
||||
},
|
||||
_inputFilled: function() {
|
||||
var inputFilled;
|
||||
if( ! this.connected() ) {
|
||||
inputFilled = false;
|
||||
} else {
|
||||
if( this.multiple ) {
|
||||
if(this._collectionAttached()) {
|
||||
// Can only attach one collection to multiple input
|
||||
// data parameter.
|
||||
inputsFilled = true;
|
||||
} else {
|
||||
inputFilled = false;
|
||||
}
|
||||
} else {
|
||||
inputFilled = true;
|
||||
}
|
||||
}
|
||||
return inputFilled;
|
||||
},
|
||||
_collectionAttached: function( ) {
|
||||
if( ! this.connected() ) {
|
||||
return false;
|
||||
} else {
|
||||
var firstOutput = this.connectors[ 0 ].handle1;
|
||||
if( ! firstOutput ){
|
||||
return false;
|
||||
} else {
|
||||
if( firstOutput.isCollection || firstOutput.isMappedOver() || firstOutput.datatypes.indexOf( "input_collection" ) > 0 ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
_mappingConstraints: function( ) {
|
||||
// If this is a connected terminal, return list of collection types
|
||||
// other terminals connected to node are constraining mapping to.
|
||||
if( ! this.node ) {
|
||||
return []; // No node - completely unconstrained
|
||||
}
|
||||
var mapOver = this.mapOver();
|
||||
if( mapOver.isCollection ) {
|
||||
return [ mapOver ];
|
||||
}
|
||||
|
||||
var constraints = [];
|
||||
if( ! this.node.hasConnectedOutputTerminals() ) {
|
||||
_.each( this.node.connectedMappedInputTerminals(), function( inputTerminal ) {
|
||||
constraints.push( inputTerminal.mapOver() );
|
||||
} );
|
||||
} else {
|
||||
// All outputs should have same mapOver status - least specific.
|
||||
constraints.push( _.first( _.values( this.node.output_terminals ) ).mapOver() );
|
||||
}
|
||||
return constraints;
|
||||
},
|
||||
_producesAcceptableDatatype: function( other ) {
|
||||
// other is a non-collection output...
|
||||
for ( var t in this.datatypes ) {
|
||||
var cat_outputs = new Array();
|
||||
cat_outputs = cat_outputs.concat(other.datatypes);
|
||||
if (other.node.post_job_actions){
|
||||
for (var pja_i in other.node.post_job_actions){
|
||||
var pja = other.node.post_job_actions[pja_i];
|
||||
if (pja.action_type == "ChangeDatatypeAction" && (pja.output_name == '' || pja.output_name == other.name) && pja.action_arguments){
|
||||
cat_outputs.push(pja.action_arguments['newtype']);
|
||||
}
|
||||
}
|
||||
}
|
||||
// FIXME: No idea what to do about case when datatype is 'input'
|
||||
for ( var other_datatype_i in cat_outputs ) {
|
||||
var other_datatype = cat_outputs[other_datatype_i];
|
||||
if ( other_datatype == "input" || other_datatype == "input_collection" || Globals.app.isSubType( cat_outputs[other_datatype_i], this.datatypes[t] ) ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
_otherCollectionType: function( other ) {
|
||||
var otherCollectionType = NULL_COLLECTION_TYPE_DESCRIPTION;
|
||||
if( other.isCollection ) {
|
||||
otherCollectionType = other.collectionType;
|
||||
}
|
||||
var otherMapOver = other.mapOver();
|
||||
if( otherMapOver.isCollection ) {
|
||||
otherCollectionType = otherMapOver.append(otherCollectionType);
|
||||
}
|
||||
return otherCollectionType;
|
||||
},
|
||||
} );
|
||||
|
||||
var InputTerminal = BaseInputTerminal.extend( {
|
||||
update: function( input ) {
|
||||
this.datatypes = input.extensions;
|
||||
this.multiple = input.multiple;
|
||||
this.collection = false;
|
||||
},
|
||||
connect: function( connector ) {
|
||||
BaseInputTerminal.prototype.connect.call( this, connector );
|
||||
var other_output = connector.handle1;
|
||||
if( ! other_output ) {
|
||||
return;
|
||||
}
|
||||
var otherCollectionType = this._otherCollectionType( other_output );
|
||||
if( otherCollectionType.isCollection ) {
|
||||
this.setMapOver( otherCollectionType );
|
||||
}
|
||||
},
|
||||
attachable: function( other ) {
|
||||
var otherCollectionType = this._otherCollectionType( other );
|
||||
var thisMapOver = this.mapOver();
|
||||
if( otherCollectionType.isCollection ) {
|
||||
if( this.multiple ) {
|
||||
if( this.connected() && ! this._collectionAttached() ) {
|
||||
// if single inputs attached, cannot also attach a
|
||||
// collection (yet...)
|
||||
return false;
|
||||
}
|
||||
if( otherCollectionType.rank == 1 ) {
|
||||
return this._producesAcceptableDatatype( other );
|
||||
} else {
|
||||
// TODO: Allow subcollection mapping over this as if it were
|
||||
// a list collection input.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if( thisMapOver.isCollection && thisMapOver.canMatch( otherCollectionType ) ) {
|
||||
return this._producesAcceptableDatatype( other );
|
||||
} else {
|
||||
// Need to check if this would break constraints...
|
||||
var mappingConstraints = this._mappingConstraints();
|
||||
if( mappingConstraints.every( _.bind( otherCollectionType.canMatch, otherCollectionType ) ) ) {
|
||||
return this._producesAcceptableDatatype( other );
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else if( thisMapOver.isCollection ) {
|
||||
// Attempting to match a non-collection output to an
|
||||
// explicitly collection input.
|
||||
return false;
|
||||
}
|
||||
return this._producesAcceptableDatatype( other );
|
||||
}
|
||||
});
|
||||
|
||||
var InputCollectionTerminal = BaseInputTerminal.extend( {
|
||||
update: function( input ) {
|
||||
this.multiple = false;
|
||||
this.collection = true;
|
||||
this.datatypes = input.extensions;
|
||||
if( input.collection_type ) {
|
||||
this.collectionType = new CollectionTypeDescription( input.collection_type );
|
||||
} else {
|
||||
this.collectionType = ANY_COLLECTION_TYPE_DESCRIPTION;
|
||||
}
|
||||
},
|
||||
connect: function( connector ) {
|
||||
BaseInputTerminal.prototype.connect.call( this, connector );
|
||||
var other = connector.handle1;
|
||||
if( ! other ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var effectiveMapOver = this._effectiveMapOver( other );
|
||||
this.setMapOver( effectiveMapOver );
|
||||
},
|
||||
_effectiveMapOver: function( other ) {
|
||||
var collectionType = this.collectionType;
|
||||
var otherCollectionType = this._otherCollectionType( other );
|
||||
if( ! collectionType.canMatch( otherCollectionType ) ) {
|
||||
return otherCollectionType.effectiveMapOver( collectionType );
|
||||
} else {
|
||||
return NULL_COLLECTION_TYPE_DESCRIPTION;
|
||||
}
|
||||
},
|
||||
_effectiveCollectionType: function( ) {
|
||||
var collectionType = this.collectionType;
|
||||
var thisMapOver = this.mapOver();
|
||||
return thisMapOver.append( collectionType );
|
||||
},
|
||||
attachable: function ( other ) {
|
||||
var otherCollectionType = this._otherCollectionType( other );
|
||||
if( otherCollectionType.isCollection ) {
|
||||
var effectiveCollectionType = this._effectiveCollectionType( );
|
||||
var thisMapOver = this.mapOver();
|
||||
if( effectiveCollectionType.canMatch( otherCollectionType ) ) {
|
||||
// Only way a direct match...
|
||||
return this._producesAcceptableDatatype( other );
|
||||
// Otherwise we need to mapOver
|
||||
} else if( thisMapOver.isCollection ) {
|
||||
// In this case, mapOver already set and we didn't match skipping...
|
||||
return false;
|
||||
} else if( otherCollectionType.canMapOver( this.collectionType ) ) {
|
||||
var effectiveMapOver = this._effectiveMapOver( other );
|
||||
if( ! effectiveMapOver.isCollection ) {
|
||||
return false;
|
||||
}
|
||||
// Need to check if this would break constraints...
|
||||
var mappingConstraints = this._mappingConstraints();
|
||||
if( mappingConstraints.every( effectiveMapOver.canMatch ) ) {
|
||||
return this._producesAcceptableDatatype( other );
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
var OutputCollectionTerminal = OutputTerminal.extend( {
|
||||
initialize: function( attr ) {
|
||||
Terminal.prototype.initialize.call( this, attr );
|
||||
this.datatypes = attr.datatypes;
|
||||
this.collectionType = new CollectionTypeDescription( attr.collection_type );
|
||||
this.isCollection = true;
|
||||
},
|
||||
update: function( output ) {
|
||||
var newCollectionType = new CollectionTypeDescription( output.collection_type );
|
||||
if( newCollectionType.collectionType != this.collectionType.collectionType ) {
|
||||
_.each( this.connectors, function( connector ) {
|
||||
// TODO: consider checking if connection valid before removing...
|
||||
connector.destroy();
|
||||
} );
|
||||
}
|
||||
this.collectionType = newCollectionType;
|
||||
}
|
||||
} );
|
||||
|
||||
return {
|
||||
InputTerminal : InputTerminal,
|
||||
OutputTerminal : OutputTerminal,
|
||||
InputCollectionTerminal : InputCollectionTerminal,
|
||||
OutputCollectionTerminal : OutputCollectionTerminal,
|
||||
TerminalMapping : TerminalMapping,
|
||||
|
||||
// test export
|
||||
CollectionTypeDescription : CollectionTypeDescription,
|
||||
NULL_COLLECTION_TYPE_DESCRIPTION : NULL_COLLECTION_TYPE_DESCRIPTION,
|
||||
ANY_COLLECTION_TYPE_DESCRIPTION : ANY_COLLECTION_TYPE_DESCRIPTION
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,124 @@
|
||||
define(['mvc/workflow/workflow-globals'], function( Globals ){
|
||||
|
||||
var DataInputView = Backbone.View.extend( {
|
||||
className: "form-row dataRow input-data-row",
|
||||
|
||||
initialize: function( options ){
|
||||
this.input = options.input;
|
||||
this.nodeView = options.nodeView;
|
||||
this.terminalElement = options.terminalElement;
|
||||
|
||||
this.$el.attr( "name", this.input.name )
|
||||
.html( this.input.label );
|
||||
|
||||
if( ! options.skipResize ) {
|
||||
this.$el.css({ position:'absolute',
|
||||
left: -1000,
|
||||
top: -1000,
|
||||
display:'none'});
|
||||
$('body').append(this.el);
|
||||
this.nodeView.updateMaxWidth( this.$el.outerWidth() );
|
||||
this.$el.css({ position:'',
|
||||
left:'',
|
||||
top:'',
|
||||
display:'' });
|
||||
this.$el.remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var DataOutputView = Backbone.View.extend( {
|
||||
className: "form-row dataRow",
|
||||
|
||||
initialize: function( options ) {
|
||||
this.output = options.output;
|
||||
this.terminalElement = options.terminalElement;
|
||||
this.nodeView = options.nodeView;
|
||||
|
||||
var output = this.output;
|
||||
var label = output.name;
|
||||
var node = this.nodeView.node;
|
||||
|
||||
var isInput = output.extensions.indexOf( 'input' ) >= 0 || output.extensions.indexOf( 'input_collection' ) >= 0;
|
||||
if ( ! isInput ) {
|
||||
label = label + " (" + output.extensions.join(", ") + ")";
|
||||
}
|
||||
this.$el.html( label )
|
||||
|
||||
if (node.type == 'tool'){
|
||||
var calloutView = new OutputCalloutView( {
|
||||
"label": label,
|
||||
"output": output,
|
||||
"node": node,
|
||||
});
|
||||
this.$el.append( calloutView.el );
|
||||
this.$el.hover( function() { calloutView.hoverImage() }, function() { calloutView.resetImage() } );
|
||||
}
|
||||
this.$el.css({ position:'absolute',
|
||||
left: -1000,
|
||||
top: -1000,
|
||||
display:'none'});
|
||||
$('body').append( this.el );
|
||||
this.nodeView.updateMaxWidth( this.$el.outerWidth() + 17 );
|
||||
this.$el.css({ position:'',
|
||||
left:'',
|
||||
top:'',
|
||||
display:'' })
|
||||
.detach();
|
||||
}
|
||||
});
|
||||
|
||||
var OutputCalloutView = Backbone.View.extend( {
|
||||
tagName: "div",
|
||||
|
||||
initialize: function( options ) {
|
||||
this.label = options.label;
|
||||
this.node = options.node;
|
||||
this.output = options.output;
|
||||
|
||||
var view = this;
|
||||
this.$el
|
||||
.attr( "class", 'callout '+this.label )
|
||||
.css( { display: 'none' } )
|
||||
.append(
|
||||
$("<div class='buttons'></div>").append(
|
||||
$("<img/>").attr('src', galaxy_config.root + 'static/images/fugue/asterisk-small-outline.png').click( function() {
|
||||
if ($.inArray(view.output.name, view.node.workflow_outputs) != -1){
|
||||
view.node.workflow_outputs.splice($.inArray(view.output.name, view.node.workflow_outputs), 1);
|
||||
view.$('img').attr('src', galaxy_config.root + 'static/images/fugue/asterisk-small-outline.png');
|
||||
}else{
|
||||
view.node.workflow_outputs.push(view.output.name);
|
||||
view.$('img').attr('src', galaxy_config.root + 'static/images/fugue/asterisk-small.png');
|
||||
}
|
||||
Globals.workflow.has_changes = true;
|
||||
Globals.canvas_manager.draw_overview();
|
||||
})))
|
||||
.tooltip({delay:500, title: "Mark dataset as a workflow output. All unmarked datasets will be hidden." });
|
||||
|
||||
this.$el.css({
|
||||
top: '50%',
|
||||
margin:'-8px 0px 0px 0px',
|
||||
right: 8
|
||||
});
|
||||
this.$el.show();
|
||||
this.resetImage();
|
||||
},
|
||||
|
||||
resetImage: function() {
|
||||
if ($.inArray( this.output.name, this.node.workflow_outputs) === -1){
|
||||
this.$('img').attr('src', galaxy_config.root + 'static/images/fugue/asterisk-small-outline.png');
|
||||
} else{
|
||||
this.$('img').attr('src', galaxy_config.root + 'static/images/fugue/asterisk-small.png');
|
||||
}
|
||||
},
|
||||
|
||||
hoverImage: function() {
|
||||
this.$('img').attr('src', galaxy_config.root + 'static/images/fugue/asterisk-small-yellow.png');
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
DataInputView : DataInputView,
|
||||
DataOutputView : DataOutputView
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,94 @@
|
||||
define(['mvc/workflow/workflow-view-terminals', 'mvc/workflow/workflow-view-data'], function( TerminalViews, DataViews ){
|
||||
return Backbone.View.extend( {
|
||||
initialize: function( options ){
|
||||
this.node = options.node;
|
||||
this.output_width = Math.max(150, this.$el.width());
|
||||
this.tool_body = this.$el.find( ".toolFormBody" );
|
||||
this.tool_body.find( "div" ).remove();
|
||||
this.newInputsDiv().appendTo( this.tool_body );
|
||||
this.terminalViews = {};
|
||||
this.outputTerminlViews = {};
|
||||
},
|
||||
|
||||
render: function() {
|
||||
this.renderToolErrors();
|
||||
this.$el.css( "width", Math.min(250, Math.max( this.$el.width(), this.output_width )));
|
||||
},
|
||||
|
||||
renderToolErrors: function( ) {
|
||||
if ( this.node.tool_errors ) {
|
||||
this.$el.addClass( "tool-node-error" );
|
||||
} else {
|
||||
this.$el.removeClass( "tool-node-error" );
|
||||
}
|
||||
},
|
||||
|
||||
newInputsDiv: function() {
|
||||
return $("<div class='inputs'></div>");
|
||||
},
|
||||
|
||||
updateMaxWidth: function( newWidth ) {
|
||||
this.output_width = Math.max( this.output_width, newWidth );
|
||||
},
|
||||
|
||||
addRule: function() {
|
||||
this.tool_body.append( $( "<div class='rule'></div>" ) );
|
||||
},
|
||||
|
||||
addDataInput: function( input, body ) {
|
||||
var skipResize = true;
|
||||
if( ! body ) {
|
||||
body = this.$( ".inputs" );
|
||||
// initial addition to node - resize input to help calculate node
|
||||
// width.
|
||||
skipResize = false;
|
||||
}
|
||||
var terminalView = this.terminalViews[ input.name ];
|
||||
var terminalViewClass = ( input.input_type == "dataset_collection" ) ? TerminalViews.InputCollectionTerminalView : TerminalViews.InputTerminalView;
|
||||
if( terminalView && ! ( terminalView instanceof terminalViewClass ) ) {
|
||||
terminalView.el.terminal.destroy();
|
||||
terminalView = null;
|
||||
}
|
||||
if( ! terminalView ) {
|
||||
terminalView = new terminalViewClass( {
|
||||
node: this.node,
|
||||
input: input
|
||||
} );
|
||||
} else {
|
||||
var terminal = terminalView.el.terminal;
|
||||
terminal.update( input );
|
||||
terminal.destroyInvalidConnections();
|
||||
}
|
||||
this.terminalViews[ input.name ] = terminalView;
|
||||
var terminalElement = terminalView.el;
|
||||
var inputView = new DataViews.DataInputView( {
|
||||
terminalElement: terminalElement,
|
||||
input: input,
|
||||
nodeView: this,
|
||||
skipResize: skipResize
|
||||
} );
|
||||
var ib = inputView.$el;
|
||||
body.append( ib.prepend( terminalView.terminalElements() ) );
|
||||
return terminalView;
|
||||
},
|
||||
|
||||
addDataOutput: function( output ) {
|
||||
var terminalViewClass = ( output.collection ) ? TerminalViews.OutputCollectionTerminalView : TerminalViews.OutputTerminalView;
|
||||
var terminalView = new terminalViewClass( {
|
||||
node: this.node,
|
||||
output: output
|
||||
} );
|
||||
var outputView = new DataViews.DataOutputView( {
|
||||
"output": output,
|
||||
"terminalElement": terminalView.el,
|
||||
"nodeView": this,
|
||||
} );
|
||||
this.tool_body.append( outputView.$el.append( terminalView.terminalElements() ) );
|
||||
},
|
||||
|
||||
updateDataOutput: function( output ) {
|
||||
var outputTerminal = this.node.output_terminals[ output.name ];
|
||||
outputTerminal.update( output );
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,238 @@
|
||||
define(['mvc/workflow/workflow-globals', 'mvc/workflow/workflow-terminals',
|
||||
'mvc/workflow/workflow-connector'], function( Globals, Terminals, Connector ) {
|
||||
|
||||
var TerminalMappingView = Backbone.View.extend( {
|
||||
tagName: "div",
|
||||
className: "fa-icon-button fa fa-folder-o",
|
||||
initialize: function( options ) {
|
||||
var mapText = "Run tool in parallel over collection";
|
||||
this.$el.tooltip( {delay: 500, title: mapText } );
|
||||
this.model.bind( "change", _.bind( this.render, this ) );
|
||||
},
|
||||
render: function() {
|
||||
if( this.model.mapOver.isCollection ) {
|
||||
this.$el.show();
|
||||
} else {
|
||||
this.$el.hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var InputTerminalMappingView = TerminalMappingView.extend( {
|
||||
events: {
|
||||
"click": "onClick",
|
||||
"mouseenter": "onMouseEnter",
|
||||
"mouseleave": "onMouseLeave",
|
||||
},
|
||||
onMouseEnter: function( e ) {
|
||||
var model = this.model;
|
||||
if( ! model.terminal.connected() && model.mapOver.isCollection ) {
|
||||
this.$el.css( "color", "red" );
|
||||
}
|
||||
},
|
||||
onMouseLeave: function( e ) {
|
||||
this.$el.css( "color", "black" );
|
||||
},
|
||||
onClick: function( e ) {
|
||||
var model = this.model;
|
||||
if( ! model.terminal.connected() && model.mapOver.isCollection ) {
|
||||
// TODO: Consider prompting...
|
||||
model.terminal.resetMapping();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var TerminalView = Backbone.View.extend( {
|
||||
setupMappingView: function( terminal ) {
|
||||
var terminalMapping = new this.terminalMappingClass( { terminal: terminal } );
|
||||
var terminalMappingView = new this.terminalMappingViewClass( { model: terminalMapping } );
|
||||
terminalMappingView.render();
|
||||
terminal.terminalMappingView = terminalMappingView;
|
||||
this.terminalMappingView = terminalMappingView;
|
||||
},
|
||||
terminalElements: function() {
|
||||
if( this.terminalMappingView ) {
|
||||
return [ this.terminalMappingView.el, this.el ];
|
||||
} else{
|
||||
return [ this.el ];
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var BaseInputTerminalView = TerminalView.extend( {
|
||||
className: "terminal input-terminal",
|
||||
initialize: function( options ) {
|
||||
var node = options.node;
|
||||
var input = options.input;
|
||||
var name = input.name;
|
||||
var terminal = this.terminalForInput( input );
|
||||
if( ! terminal.multiple ) {
|
||||
this.setupMappingView( terminal );
|
||||
}
|
||||
this.el.terminal = terminal;
|
||||
terminal.node = node;
|
||||
terminal.name = name;
|
||||
node.input_terminals[name] = terminal;
|
||||
},
|
||||
events: {
|
||||
"dropinit": "onDropInit",
|
||||
"dropstart": "onDropStart",
|
||||
"dropend": "onDropEnd",
|
||||
"drop": "onDrop",
|
||||
"hover": "onHover",
|
||||
},
|
||||
onDropInit: function( e, d ) {
|
||||
var terminal = this.el.terminal;
|
||||
// Accept a dragable if it is an output terminal and has a
|
||||
// compatible type
|
||||
return $(d.drag).hasClass( "output-terminal" ) && terminal.canAccept( d.drag.terminal );
|
||||
},
|
||||
onDropStart: function( e, d ) {
|
||||
if (d.proxy.terminal) {
|
||||
d.proxy.terminal.connectors[0].inner_color = "#BBFFBB";
|
||||
}
|
||||
},
|
||||
onDropEnd: function ( e, d ) {
|
||||
if (d.proxy.terminal) {
|
||||
d.proxy.terminal.connectors[0].inner_color = "#FFFFFF";
|
||||
}
|
||||
},
|
||||
onDrop: function( e, d ) {
|
||||
var terminal = this.el.terminal;
|
||||
new Connector( d.drag.terminal, terminal ).redraw();
|
||||
},
|
||||
onHover: function() {
|
||||
var element = this.el;
|
||||
var terminal = element.terminal;
|
||||
// If connected, create a popup to allow disconnection
|
||||
if ( terminal.connectors.length > 0 ) {
|
||||
// Create callout
|
||||
var t = $("<div class='callout'></div>")
|
||||
.css( { display: 'none' } )
|
||||
.appendTo( "body" )
|
||||
.append(
|
||||
$("<div class='button'></div>").append(
|
||||
$("<div/>").addClass("fa-icon-button fa fa-times").click( function() {
|
||||
$.each( terminal.connectors, function( _, x ) {
|
||||
if (x) {
|
||||
x.destroy();
|
||||
}
|
||||
});
|
||||
t.remove();
|
||||
})))
|
||||
.bind( "mouseleave", function() {
|
||||
$(this).remove();
|
||||
});
|
||||
// Position it and show
|
||||
t.css({
|
||||
top: $(element).offset().top - 2,
|
||||
left: $(element).offset().left - t.width(),
|
||||
'padding-right': $(element).width()
|
||||
}).show();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var InputTerminalView = BaseInputTerminalView.extend( {
|
||||
terminalMappingClass: Terminals.TerminalMapping,
|
||||
terminalMappingViewClass: InputTerminalMappingView,
|
||||
terminalForInput: function( input ) {
|
||||
return new Terminals.InputTerminal( { element: this.el, input: input } );
|
||||
}
|
||||
});
|
||||
|
||||
var InputCollectionTerminalView = BaseInputTerminalView.extend( {
|
||||
terminalMappingClass: Terminals.TerminalMapping,
|
||||
terminalMappingViewClass: InputTerminalMappingView,
|
||||
terminalForInput: function( input ) {
|
||||
return new Terminals.InputCollectionTerminal( { element: this.el, input: input } );
|
||||
}
|
||||
});
|
||||
|
||||
var BaseOutputTerminalView = TerminalView.extend( {
|
||||
className: "terminal output-terminal",
|
||||
initialize: function( options ) {
|
||||
var node = options.node;
|
||||
var output = options.output;
|
||||
var name = output.name;
|
||||
var terminal = this.terminalForOutput( output );
|
||||
this.setupMappingView( terminal );
|
||||
this.el.terminal = terminal;
|
||||
terminal.node = node;
|
||||
terminal.name = name;
|
||||
node.output_terminals[name] = terminal;
|
||||
},
|
||||
events: {
|
||||
"drag": "onDrag",
|
||||
"dragstart": "onDragStart",
|
||||
"dragend": "onDragEnd",
|
||||
},
|
||||
onDrag: function ( e, d ) {
|
||||
var onmove = function() {
|
||||
var po = $(d.proxy).offsetParent().offset(),
|
||||
x = d.offsetX - po.left,
|
||||
y = d.offsetY - po.top;
|
||||
$(d.proxy).css( { left: x, top: y } );
|
||||
d.proxy.terminal.redraw();
|
||||
// FIXME: global
|
||||
Globals.canvas_manager.update_viewport_overlay();
|
||||
};
|
||||
onmove();
|
||||
$("#canvas-container").get(0).scroll_panel.test( e, onmove );
|
||||
},
|
||||
onDragStart: function( e, d ) {
|
||||
$( d.available ).addClass( "input-terminal-active" );
|
||||
// Save PJAs in the case of change datatype actions.
|
||||
Globals.workflow.check_changes_in_active_form();
|
||||
// Drag proxy div
|
||||
var h = $( '<div class="drag-terminal" style="position: absolute;"></div>' )
|
||||
.appendTo( "#canvas-container" ).get(0);
|
||||
// Terminal and connection to display noodle while dragging
|
||||
h.terminal = new Terminals.OutputTerminal( { element: h } );
|
||||
var c = new Connector();
|
||||
c.dragging = true;
|
||||
c.connect( this.el.terminal, h.terminal );
|
||||
return h;
|
||||
},
|
||||
onDragEnd: function ( e, d ) {
|
||||
var connector = d.proxy.terminal.connectors[0];
|
||||
// check_changes_in_active_form may change the state and cause a
|
||||
// the connection to have already been destroyed. There must be better
|
||||
// ways to handle this but the following check fixes some serious GUI
|
||||
// bugs for now.
|
||||
if(connector) {
|
||||
connector.destroy();
|
||||
}
|
||||
$(d.proxy).remove();
|
||||
$( d.available ).removeClass( "input-terminal-active" );
|
||||
$("#canvas-container").get(0).scroll_panel.stop();
|
||||
}
|
||||
});
|
||||
|
||||
var OutputTerminalView = BaseOutputTerminalView.extend( {
|
||||
terminalMappingClass: Terminals.TerminalMapping,
|
||||
terminalMappingViewClass: TerminalMappingView,
|
||||
terminalForOutput: function( output ) {
|
||||
var type = output.extensions;
|
||||
var terminal = new Terminals.OutputTerminal( { element: this.el, datatypes: type } );
|
||||
return terminal;
|
||||
}
|
||||
});
|
||||
|
||||
var OutputCollectionTerminalView = BaseOutputTerminalView.extend( {
|
||||
terminalMappingClass: Terminals.TerminalMapping,
|
||||
terminalMappingViewClass: TerminalMappingView,
|
||||
terminalForOutput: function( output ) {
|
||||
var collection_type = output.collection_type;
|
||||
var terminal = new Terminals.OutputCollectionTerminal( { element: this.el, collection_type: collection_type, datatypes: output.extensions } );
|
||||
return terminal;
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
InputTerminalView : InputTerminalView,
|
||||
OutputTerminalView : OutputTerminalView,
|
||||
InputCollectionTerminalView : InputCollectionTerminalView,
|
||||
OutputCollectionTerminalView : OutputCollectionTerminalView
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,705 @@
|
||||
define('mvc/workflow/workflow-globals', {});
|
||||
define(['utils/utils', 'mvc/workflow/workflow-globals', 'mvc/workflow/workflow-manager', 'mvc/workflow/workflow-canvas', 'mvc/workflow/workflow-node', 'mvc/tools/tools-form-workflow'],
|
||||
function( Utils, Globals, Workflow, WorkflowCanvas, Node, ToolsForm ){
|
||||
// create form view
|
||||
return Backbone.View.extend({
|
||||
initialize: function(options) {
|
||||
var self = Globals.app = this;
|
||||
this.options = options;
|
||||
this.urls = options && options.urls || {};
|
||||
this.active_ajax_call = false;
|
||||
var close_editor = function() {
|
||||
self.workflow.check_changes_in_active_form();
|
||||
if ( workflow && self.workflow.has_changes ) {
|
||||
do_close = function() {
|
||||
window.onbeforeunload = undefined;
|
||||
window.document.location = self.urls.workflow_index;
|
||||
};
|
||||
window.show_modal( "Close workflow editor",
|
||||
"There are unsaved changes to your workflow which will be lost.",
|
||||
{
|
||||
"Cancel" : hide_modal,
|
||||
"Save Changes" : function() {
|
||||
save_current_workflow( null, do_close );
|
||||
}
|
||||
}, {
|
||||
"Don't Save": do_close
|
||||
} );
|
||||
} else {
|
||||
window.document.location = self.urls.workflow_index;
|
||||
}
|
||||
};
|
||||
var save_current_workflow = function ( eventObj, success_callback ) {
|
||||
show_message( "Saving workflow", "progress" );
|
||||
self.workflow.check_changes_in_active_form();
|
||||
if (!self.workflow.has_changes) {
|
||||
hide_modal();
|
||||
if ( success_callback ) {
|
||||
success_callback();
|
||||
}
|
||||
return;
|
||||
}
|
||||
self.workflow.rectify_workflow_outputs();
|
||||
var savefn = function(callback) {
|
||||
$.ajax( {
|
||||
url: self.urls.save_workflow,
|
||||
type: "POST",
|
||||
data: {
|
||||
id: self.options.id,
|
||||
workflow_data: function() { return JSON.stringify( self.workflow.to_simple() ); },
|
||||
"_": "true"
|
||||
},
|
||||
dataType: 'json',
|
||||
success: function( data ) {
|
||||
var body = $("<div></div>").text( data.message );
|
||||
if ( data.errors ) {
|
||||
body.addClass( "warningmark" );
|
||||
var errlist = $( "<ul/>" );
|
||||
$.each( data.errors, function( i, v ) {
|
||||
$("<li></li>").text( v ).appendTo( errlist );
|
||||
});
|
||||
body.append( errlist );
|
||||
} else {
|
||||
body.addClass( "donemark" );
|
||||
}
|
||||
self.workflow.name = data.name;
|
||||
self.workflow.has_changes = false;
|
||||
self.workflow.stored = true;
|
||||
self.showWorkflowParameters();
|
||||
if ( data.errors ) {
|
||||
window.show_modal( "Saving workflow", body, { "Ok" : hide_modal } );
|
||||
} else {
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
hide_modal();
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// We bind to ajaxStop because of auto-saving, since the form submission ajax
|
||||
// call needs to be completed so that the new data is saved
|
||||
if (self.active_ajax_call) {
|
||||
$(document).bind('ajaxStop.save_workflow', function() {
|
||||
$(document).unbind('ajaxStop.save_workflow');
|
||||
savefn();
|
||||
$(document).unbind('ajaxStop.save_workflow'); // IE7 needs it here
|
||||
self.active_ajax_call = false;
|
||||
});
|
||||
} else {
|
||||
savefn(success_callback);
|
||||
}
|
||||
};
|
||||
|
||||
if ( window.lt_ie_7 ) {
|
||||
window.show_modal(
|
||||
"Browser not supported",
|
||||
"Sorry, the workflow editor is not supported for IE6 and below."
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// Init searching.
|
||||
$("#tool-search-query").click( function (){
|
||||
$(this).focus();
|
||||
$(this).select();
|
||||
})
|
||||
.keyup( function () {
|
||||
// Remove italics.
|
||||
$(this).css("font-style", "normal");
|
||||
// Don't update if same value as last time
|
||||
if ( this.value.length < 3 ) {
|
||||
reset_tool_search(false);
|
||||
} else if ( this.value != this.lastValue ) {
|
||||
// Add class to denote that searching is active.
|
||||
$(this).addClass("search_active");
|
||||
// input.addClass(config.loadingClass);
|
||||
// Add '*' to facilitate partial matching.
|
||||
var q = this.value;
|
||||
// Stop previous ajax-request
|
||||
if (this.timer) {
|
||||
clearTimeout(this.timer);
|
||||
}
|
||||
// Start a new ajax-request in X ms
|
||||
$("#search-spinner").show();
|
||||
this.timer = setTimeout(function () {
|
||||
$.get(self.urls.tool_search, { q: q }, function (data) {
|
||||
// input.removeClass(config.loadingClass);
|
||||
// Show live-search if results and search-term aren't empty
|
||||
$("#search-no-results").hide();
|
||||
// Hide all tool sections.
|
||||
$(".toolSectionWrapper").hide();
|
||||
// This hides all tools but not workflows link (which is in a .toolTitle div).
|
||||
$(".toolSectionWrapper").find(".toolTitle").hide();
|
||||
if ( data.length != 0 ) {
|
||||
// Map tool ids to element ids and join them.
|
||||
var s = $.map( data, function( n, i ) { return "link-" + n; } );
|
||||
// First pass to show matching tools and their parents.
|
||||
$(s).each( function(index,id) {
|
||||
// Add class to denote match.
|
||||
$("[id='"+id+"']").parent().addClass("search_match");
|
||||
$("[id='"+id+"']").parent().show().parent().parent().show().parent().show();
|
||||
});
|
||||
// Hide labels that have no visible children.
|
||||
$(".toolPanelLabel").each( function() {
|
||||
var this_label = $(this);
|
||||
var next = this_label.next();
|
||||
var no_visible_tools = true;
|
||||
// Look through tools following label and, if none are visible, hide label.
|
||||
while (next.length !== 0 && next.hasClass("toolTitle")) {
|
||||
if (next.is(":visible")) {
|
||||
no_visible_tools = false;
|
||||
break;
|
||||
} else {
|
||||
next = next.next();
|
||||
}
|
||||
}
|
||||
if (no_visible_tools) {
|
||||
this_label.hide();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$("#search-no-results").show();
|
||||
}
|
||||
$("#search-spinner").hide();
|
||||
}, "json" );
|
||||
}, 400 );
|
||||
}
|
||||
this.lastValue = this.value;
|
||||
});
|
||||
|
||||
// Canvas overview management
|
||||
this.canvas_manager = Globals.canvas_manager = new WorkflowCanvas( this, $("#canvas-viewport"), $("#overview") );
|
||||
|
||||
// Initialize workflow state
|
||||
this.reset();
|
||||
|
||||
// get available datatypes for post job action options
|
||||
this.datatypes = JSON.parse($.ajax({
|
||||
url : galaxy_config.root + 'api/datatypes',
|
||||
async : false
|
||||
}).responseText);
|
||||
|
||||
// get datatype mapping options
|
||||
this.datatypes_mapping = JSON.parse($.ajax({
|
||||
url : galaxy_config.root + 'api/datatypes/mapping',
|
||||
async : false
|
||||
}).responseText);
|
||||
|
||||
// set mapping sub lists
|
||||
this.ext_to_type = this.datatypes_mapping.ext_to_class_name;
|
||||
this.type_to_type = this.datatypes_mapping.class_to_classes;
|
||||
|
||||
// Load workflow definition
|
||||
$.ajax( {
|
||||
url: self.urls.load_workflow,
|
||||
data: { id: self.options.id, "_": "true" },
|
||||
dataType: 'json',
|
||||
cache: false,
|
||||
success: function( data ) {
|
||||
self.reset();
|
||||
self.workflow.from_simple( data );
|
||||
self.workflow.has_changes = false;
|
||||
self.workflow.fit_canvas_to_nodes();
|
||||
self.scroll_to_nodes();
|
||||
self.canvas_manager.draw_overview();
|
||||
// Determine if any parameters were 'upgraded' and provide message
|
||||
upgrade_message = "";
|
||||
$.each( data.upgrade_messages, function( k, v ) {
|
||||
upgrade_message += ( "<li>Step " + ( parseInt(k, 10) + 1 ) + ": " + self.workflow.nodes[k].name + "<ul>");
|
||||
$.each( v, function( i, vv ) {
|
||||
upgrade_message += "<li>" + vv +"</li>";
|
||||
});
|
||||
upgrade_message += "</ul></li>";
|
||||
});
|
||||
if ( upgrade_message ) {
|
||||
window.show_modal( "Workflow loaded with changes",
|
||||
"Problems were encountered loading this workflow (possibly a result of tool upgrades). Please review the following parameters and then save.<ul>" + upgrade_message + "</ul>",
|
||||
{ "Continue" : hide_modal } );
|
||||
} else {
|
||||
hide_modal();
|
||||
}
|
||||
self.showWorkflowParameters();
|
||||
},
|
||||
beforeSubmit: function( data ) {
|
||||
show_message( "Loading workflow", "progress" );
|
||||
}
|
||||
});
|
||||
|
||||
// For autosave purposes
|
||||
$(document).ajaxStart( function() {
|
||||
self.active_ajax_call = true;
|
||||
$(document).bind( "ajaxStop.global", function() {
|
||||
self.active_ajax_call = false;
|
||||
});
|
||||
});
|
||||
|
||||
$(document).ajaxError( function ( e, x ) {
|
||||
// console.log( e, x );
|
||||
var message = x.responseText || x.statusText || "Could not connect to server";
|
||||
window.show_modal( "Server error", message, { "Ignore error" : hide_modal } );
|
||||
return false;
|
||||
});
|
||||
|
||||
window.make_popupmenu && make_popupmenu( $("#workflow-options-button"), {
|
||||
"Save" : save_current_workflow,
|
||||
"Run": function() {
|
||||
window.location = self.urls.run_workflow;
|
||||
},
|
||||
//"Create New" : create_new_workflow_dialog,
|
||||
"Edit Attributes" : edit_workflow_attributes,
|
||||
//"Edit Workflow Outputs": edit_workflow_outputs,
|
||||
"Auto Re-layout": layout_editor,
|
||||
//"Load a Workflow" : load_workflow,
|
||||
"Close": close_editor
|
||||
});
|
||||
|
||||
function edit_workflow_outputs(){
|
||||
self.workflow.clear_active_node();
|
||||
$('.right-content').hide();
|
||||
var new_content = "";
|
||||
for (var node_key in self.workflow.nodes){
|
||||
var node = self.workflow.nodes[node_key];
|
||||
if(node.type == 'tool'){
|
||||
new_content += "<div class='toolForm' style='margin-bottom:5px;'><div class='toolFormTitle'>Step " + node.id + " - " + node.name + "</div>";
|
||||
for (var ot_key in node.output_terminals){
|
||||
var output = node.output_terminals[ot_key];
|
||||
// if (node.workflow_outputs[node.id + "|" + output.name]){
|
||||
if ($.inArray(output.name, node.workflow_outputs) != -1){
|
||||
new_content += "<p>"+output.name +"<input type='checkbox' name='"+ node.id + "|" + output.name +"' checked /></p>";
|
||||
}
|
||||
else{
|
||||
new_content += "<p>"+output.name +"<input type='checkbox' name='"+ node.id + "|" + output.name +"' /></p>";
|
||||
}
|
||||
}
|
||||
new_content += "</div>";
|
||||
}
|
||||
}
|
||||
$("#output-fill-area").html(new_content);
|
||||
$("#output-fill-area input").bind('click', function(){
|
||||
var node_id = this.name.split('|')[0];
|
||||
var output_name = this.name.split('|')[1];
|
||||
if (this.checked){
|
||||
if($.inArray(output_name, self.workflow.nodes[node_id].workflow_outputs) == -1){
|
||||
self.workflow.nodes[node_id].workflow_outputs.push(output_name);
|
||||
}//else it's already in the array. Shouldn't happen, but forget it.
|
||||
}else{
|
||||
while ($.inArray(output_name, self.workflow.nodes[node_id].workflow_outputs) != -1){
|
||||
var ia = $.inArray(output_name, self.workflow.nodes[node_id].workflow_outputs);
|
||||
self.workflow.nodes[node_id].workflow_outputs = self.workflow.nodes[node_id].workflow_outputs.slice(0,ia).concat( self.workflow.nodes[node_id].workflow_outputs.slice(ia+1) );
|
||||
}
|
||||
}
|
||||
self.workflow.has_changes = true;
|
||||
});
|
||||
$('#workflow-output-area').show();
|
||||
}
|
||||
|
||||
function layout_editor() {
|
||||
self.workflow.layout();
|
||||
self.workflow.fit_canvas_to_nodes();
|
||||
self.scroll_to_nodes();
|
||||
self.canvas_manager.draw_overview();
|
||||
}
|
||||
|
||||
function edit_workflow_attributes() {
|
||||
self.workflow.clear_active_node();
|
||||
$('.right-content').hide();
|
||||
$('#edit-attributes').show();
|
||||
}
|
||||
|
||||
// On load, set the size to the pref stored in local storage if it exists
|
||||
overview_size = $.jStorage.get("overview-size");
|
||||
if (overview_size !== undefined) {
|
||||
$("#overview-border").css( {
|
||||
width: overview_size,
|
||||
height: overview_size
|
||||
});
|
||||
}
|
||||
|
||||
// Show viewport on load unless pref says it's off
|
||||
if ($.jStorage.get("overview-off")) {
|
||||
hide_overview();
|
||||
} else {
|
||||
show_overview();
|
||||
}
|
||||
|
||||
// Stores the size of the overview into local storage when it's resized
|
||||
$("#overview-border").bind( "dragend", function( e, d ) {
|
||||
var op = $(this).offsetParent();
|
||||
var opo = op.offset();
|
||||
var new_size = Math.max( op.width() - ( d.offsetX - opo.left ),
|
||||
op.height() - ( d.offsetY - opo.top ) );
|
||||
$.jStorage.set("overview-size", new_size + "px");
|
||||
});
|
||||
|
||||
function show_overview() {
|
||||
$.jStorage.set("overview-off", false);
|
||||
$("#overview-border").css("right", "0px");
|
||||
$("#close-viewport").css("background-position", "0px 0px");
|
||||
}
|
||||
|
||||
function hide_overview() {
|
||||
$.jStorage.set("overview-off", true);
|
||||
$("#overview-border").css("right", "20000px");
|
||||
$("#close-viewport").css("background-position", "12px 0px");
|
||||
}
|
||||
|
||||
// Lets the overview be toggled visible and invisible, adjusting the arrows accordingly
|
||||
$("#close-viewport").click( function() {
|
||||
if ( $("#overview-border").css("right") === "0px" ) {
|
||||
hide_overview();
|
||||
} else {
|
||||
show_overview();
|
||||
}
|
||||
});
|
||||
|
||||
// Unload handler
|
||||
window.onbeforeunload = function() {
|
||||
if ( workflow && self.workflow.has_changes ) {
|
||||
return "There are unsaved changes to your workflow which will be lost.";
|
||||
}
|
||||
};
|
||||
|
||||
// Tool menu
|
||||
$( "div.toolSectionBody" ).hide();
|
||||
$( "div.toolSectionTitle > span" ).wrap( "<a href='#'></a>" );
|
||||
var last_expanded = null;
|
||||
$( "div.toolSectionTitle" ).each( function() {
|
||||
var body = $(this).next( "div.toolSectionBody" );
|
||||
$(this).click( function() {
|
||||
if ( body.is( ":hidden" ) ) {
|
||||
if ( last_expanded ) last_expanded.slideUp( "fast" );
|
||||
last_expanded = body;
|
||||
body.slideDown( "fast" );
|
||||
}
|
||||
else {
|
||||
body.slideUp( "fast" );
|
||||
last_expanded = null;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Rename async.
|
||||
if (window.async_save_text) {
|
||||
async_save_text("workflow-name", "workflow-name", self.urls.rename_async, "new_name");
|
||||
|
||||
// Tag async. Simply have the workflow edit element generate a click on the tag element to activate tagging.
|
||||
$('#workflow-tag').click( function() {
|
||||
$('.tag-area').click();
|
||||
return false;
|
||||
});
|
||||
// Annotate async.
|
||||
async_save_text("workflow-annotation", "workflow-annotation", self.urls.annotate_async, "new_annotation", 25, true, 4);
|
||||
}
|
||||
},
|
||||
|
||||
// Global state for the whole workflow
|
||||
reset: function() {
|
||||
if ( this.workflow ) {
|
||||
this.workflow.remove_all();
|
||||
}
|
||||
this.workflow = Globals.workflow = new Workflow( this, $("#canvas-container") );
|
||||
},
|
||||
|
||||
scroll_to_nodes: function () {
|
||||
var cv = $("#canvas-viewport");
|
||||
var cc = $("#canvas-container");
|
||||
var top, left;
|
||||
if ( cc.width() < cv.width() ) {
|
||||
left = ( cv.width() - cc.width() ) / 2;
|
||||
} else {
|
||||
left = 0;
|
||||
}
|
||||
if ( cc.height() < cv.height() ) {
|
||||
top = ( cv.height() - cc.height() ) / 2;
|
||||
} else {
|
||||
top = 0;
|
||||
}
|
||||
cc.css( { left: left, top: top } );
|
||||
},
|
||||
|
||||
// Add a new step to the workflow by tool id
|
||||
add_node_for_tool: function ( id, title ) {
|
||||
node = this.workflow.create_node( 'tool', title, id );
|
||||
$.ajax( {
|
||||
url: this.urls.get_new_module_info,
|
||||
data: { type: "tool", tool_id: id, "_": "true" },
|
||||
global: false,
|
||||
dataType: "json",
|
||||
success: function( data ) {
|
||||
node.init_field_data( data );
|
||||
},
|
||||
error: function( x, e ) {
|
||||
var m = "error loading field data";
|
||||
if ( x.status === 0 ) {
|
||||
m += ", server unavailable";
|
||||
}
|
||||
node.error( m );
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
add_node_for_module: function ( type, title ) {
|
||||
node = this.workflow.create_node( type, title );
|
||||
$.ajax( {
|
||||
url: this.urls.get_new_module_info,
|
||||
data: { type: type, "_": "true" },
|
||||
dataType: "json",
|
||||
success: function( data ) {
|
||||
node.init_field_data( data );
|
||||
},
|
||||
error: function( x, e ) {
|
||||
var m = "error loading field data"
|
||||
if ( x.status == 0 ) {
|
||||
m += ", server unavailable"
|
||||
}
|
||||
node.error( m );
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// This function preloads how to display known pja's.
|
||||
display_pja: function (pja, node) {
|
||||
// DBTODO SANITIZE INPUTS.
|
||||
var self = this;
|
||||
$("#pja_container").append( get_pja_form(pja, node) );
|
||||
$("#pja_container>.toolForm:last>.toolFormTitle>.buttons").click(function (){
|
||||
action_to_rem = $(this).closest(".toolForm", ".action_tag").children(".action_tag:first").text();
|
||||
$(this).closest(".toolForm").remove();
|
||||
delete self.workflow.active_node.post_job_actions[action_to_rem];
|
||||
self.workflow.active_form_has_changes = true;
|
||||
});
|
||||
},
|
||||
|
||||
display_pja_list: function (){
|
||||
return pja_list;
|
||||
},
|
||||
|
||||
display_file_list: function (node){
|
||||
addlist = "<select id='node_data_list' name='node_data_list'>";
|
||||
for (var out_terminal in node.output_terminals){
|
||||
addlist += "<option value='" + out_terminal + "'>"+ out_terminal +"</option>";
|
||||
}
|
||||
addlist += "</select>";
|
||||
return addlist;
|
||||
},
|
||||
|
||||
new_pja: function (action_type, target, node){
|
||||
if (node.post_job_actions === undefined){
|
||||
//New tool node, set up dict.
|
||||
node.post_job_actions = {};
|
||||
}
|
||||
if (node.post_job_actions[action_type+target] === undefined) {
|
||||
var new_pja = {};
|
||||
new_pja.action_type = action_type;
|
||||
new_pja.output_name = target;
|
||||
node.post_job_actions[action_type+target] = null;
|
||||
node.post_job_actions[action_type+target] = new_pja;
|
||||
display_pja(new_pja, node);
|
||||
this.workflow.active_form_has_changes = true;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
showWorkflowParameters: function () {
|
||||
var parameter_re = /\$\{.+?\}/g;
|
||||
var workflow_parameters = [];
|
||||
var wf_parm_container = $("#workflow-parameters-container");
|
||||
var wf_parm_box = $("#workflow-parameters-box");
|
||||
var new_parameter_content = "";
|
||||
var matches = [];
|
||||
$.each(this.workflow.nodes, function (k, node){
|
||||
var form_matches = node.form_html.match(parameter_re);
|
||||
if (form_matches){
|
||||
matches = matches.concat(form_matches);
|
||||
}
|
||||
if (node.post_job_actions){
|
||||
$.each(node.post_job_actions, function(k, pja){
|
||||
if (pja.action_arguments){
|
||||
$.each(pja.action_arguments, function(k, action_argument){
|
||||
var arg_matches = action_argument.match(parameter_re);
|
||||
if (arg_matches){
|
||||
matches = matches.concat(arg_matches);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
if (matches){
|
||||
$.each(matches, function(k, element){
|
||||
if ($.inArray(element, workflow_parameters) === -1){
|
||||
workflow_parameters.push(element);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
if (workflow_parameters && workflow_parameters.length !== 0){
|
||||
$.each(workflow_parameters, function(k, element){
|
||||
new_parameter_content += "<div>" + element.substring(2, element.length -1) + "</div>";
|
||||
});
|
||||
wf_parm_container.html(new_parameter_content);
|
||||
wf_parm_box.show();
|
||||
}else{
|
||||
wf_parm_container.html(new_parameter_content);
|
||||
wf_parm_box.hide();
|
||||
}
|
||||
},
|
||||
|
||||
showToolForm: function ( text, node ) {
|
||||
// initialize tags and identifiers
|
||||
var cls = 'right-content';
|
||||
var id = cls + '-' + node.id;
|
||||
|
||||
// grab panel container
|
||||
var $container = $('#' + cls);
|
||||
|
||||
// remove previous notifications
|
||||
var $current = $container.find('#' + id);
|
||||
if ($current.length > 0 && $current.find('.section-row').length == 0) {
|
||||
$current.remove();
|
||||
}
|
||||
|
||||
// check if tool form already exists
|
||||
if ($container.find('#' + id).length == 0) {
|
||||
var $el = $('<div id="' + id + '" class="' + cls + '"/>');
|
||||
if (node.type == 'tool' && Utils.isJSON(text)) {
|
||||
var options = JSON.parse(text);
|
||||
options.node = node;
|
||||
options.datatypes = this.datatypes;
|
||||
$el.append((new ToolsForm.View(options)).$el);
|
||||
} else {
|
||||
$el.append(this._genericFormTemplate( text, node ));
|
||||
}
|
||||
$container.append($el);
|
||||
}
|
||||
|
||||
// hide everything
|
||||
$('.' + cls).hide();
|
||||
|
||||
// show current form
|
||||
$container.find('#' + id).show();
|
||||
$container.show();
|
||||
$container.scrollTop();
|
||||
},
|
||||
|
||||
_genericFormTemplate: function ( text, node ) {
|
||||
var $el = $('<div/>').html( text );
|
||||
if (node && node.id != 'no-node') {
|
||||
$el.find('.toolForm:first').after(this._genericStepAttributesTemplate( node ));
|
||||
var self = this;
|
||||
($el.find( 'form' ).length > 0) && $el.find( 'form' ).ajaxForm( {
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
success: function( data ) {
|
||||
self.workflow.active_form_has_changes = false;
|
||||
node.update_field_data( data );
|
||||
self.showWorkflowParameters();
|
||||
},
|
||||
beforeSubmit: function( data ) {
|
||||
data.push( { name: 'tool_state', value: node.tool_state } );
|
||||
data.push( { name: '_', value: 'true' } );
|
||||
}
|
||||
}).each( function() {
|
||||
var form = this;
|
||||
$(this).find('select[refresh_on_change="true"]').change( function() {
|
||||
$(form).submit();
|
||||
});
|
||||
$(this).find('input[refresh_on_change="true"]').change( function() {
|
||||
$(form).submit();
|
||||
});
|
||||
$(this).find('input, textarea, select').each( function() {
|
||||
$(this).bind('focus click', function() {
|
||||
self.workflow.active_form_has_changes = true;
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
return $el;
|
||||
},
|
||||
|
||||
_genericStepAttributesTemplate: function( node ) {
|
||||
return '<p>' +
|
||||
'<div class="metadataForm">' +
|
||||
'<div class="metadataFormTitle">' +
|
||||
'Edit Step Attributes' +
|
||||
'</div>' +
|
||||
'<div class="form-row">' +
|
||||
'<label>Annotation / Notes:</label>' +
|
||||
'<div style="margin-right: 10px;">' +
|
||||
'<textarea name="annotation" rows="3" style="width: 100%">' +
|
||||
node.annotation +
|
||||
'</textarea>' +
|
||||
'<div class="toolParamHelp">' +
|
||||
'Add an annotation or notes to this step; annotations are available when a workflow is viewed.' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</p>';
|
||||
},
|
||||
|
||||
isSubType: function ( child, parent ) {
|
||||
child = this.ext_to_type[child];
|
||||
parent = this.ext_to_type[parent];
|
||||
return ( this.type_to_type[child] ) && ( parent in this.type_to_type[child] );
|
||||
},
|
||||
|
||||
prebuildNode: function ( type, title_text, tool_id ) {
|
||||
var self = this;
|
||||
var f = $("<div class='toolForm toolFormInCanvas'></div>");
|
||||
var node = new Node( this, { element: f } );
|
||||
node.type = type;
|
||||
if ( type == 'tool' ) {
|
||||
node.tool_id = tool_id;
|
||||
}
|
||||
var title = $("<div class='toolFormTitle unselectable'>" + title_text + "</div>" );
|
||||
f.append( title );
|
||||
f.css( "left", $(window).scrollLeft() + 20 ); f.css( "top", $(window).scrollTop() + 20 );
|
||||
var b = $("<div class='toolFormBody'></div>");
|
||||
var tmp = "<div><img height='16' align='middle' src='" + galaxy_config.root + "static/images/loading_small_white_bg.gif'/> loading tool info...</div>";
|
||||
b.append( tmp );
|
||||
node.form_html = tmp;
|
||||
f.append( b );
|
||||
// Fix width to computed width
|
||||
// Now add floats
|
||||
var buttons = $("<div class='buttons' style='float: right;'></div>");
|
||||
buttons.append( $("<div/>").addClass("fa-icon-button fa fa-times").click( function( e ) {
|
||||
node.destroy();
|
||||
}));
|
||||
// Place inside container
|
||||
f.appendTo( "#canvas-container" );
|
||||
// Position in container
|
||||
var o = $("#canvas-container").position();
|
||||
var p = $("#canvas-container").parent();
|
||||
var width = f.width();
|
||||
var height = f.height();
|
||||
f.css( { left: ( - o.left ) + ( p.width() / 2 ) - ( width / 2 ), top: ( - o.top ) + ( p.height() / 2 ) - ( height / 2 ) } );
|
||||
buttons.prependTo( title );
|
||||
width += ( buttons.width() + 10 );
|
||||
f.css( "width", width );
|
||||
$(f).bind( "dragstart", function() {
|
||||
self.workflow.activate_node( node );
|
||||
}).bind( "dragend", function() {
|
||||
self.workflow.node_changed( this );
|
||||
self.workflow.fit_canvas_to_nodes();
|
||||
self.canvas_manager.draw_overview();
|
||||
}).bind( "dragclickonly", function() {
|
||||
self.workflow.activate_node( node );
|
||||
}).bind( "drag", function( e, d ) {
|
||||
// Move
|
||||
var po = $(this).offsetParent().offset(),
|
||||
x = d.offsetX - po.left,
|
||||
y = d.offsetY - po.top;
|
||||
$(this).css( { left: x, top: y } );
|
||||
// Redraw
|
||||
$(this).find( ".terminal" ).each( function() {
|
||||
this.terminal.redraw();
|
||||
});
|
||||
});
|
||||
return node;
|
||||
}
|
||||
});
|
||||
});
|
||||
+39
-27
@@ -1,6 +1,6 @@
|
||||
define([
|
||||
"libs/toastr",
|
||||
"mvc/groups/group-model"
|
||||
"toolshed/scripts/mvc/groups/group-model"
|
||||
],
|
||||
function(
|
||||
mod_toastr,
|
||||
@@ -49,7 +49,8 @@ var GroupDetailView = Backbone.View.extend({
|
||||
render: function(){
|
||||
var template = this.templateRow();
|
||||
this.$el.html( template( { group: this.model } ) );
|
||||
$("#center [data-toggle]").tooltip();
|
||||
$( "#center [data-toggle]" ).tooltip();
|
||||
$( "#center" ).css( 'overflow','auto' );
|
||||
},
|
||||
|
||||
templateRow: function() {
|
||||
@@ -57,7 +58,7 @@ var GroupDetailView = Backbone.View.extend({
|
||||
'<div>',
|
||||
'<h3><%= group.get("name") %></h3>',
|
||||
'<p class="" style="color:gray;">',
|
||||
'A group of <%= group.get("members").length %> members with <%= group.get("repositories").length %> repositories and a total of <%= group.get("total_downloads") %> combined tool downloads.</p>',
|
||||
'A group of <%= group.get("members").length %> members with <%= group.get("repositories").length %> repositories and a total of <%= group.get("total_downloads") %> combined repository clones.</p>',
|
||||
|
||||
'<h3>Members</h3>',
|
||||
'<table class="grid table table-condensed">',
|
||||
@@ -88,37 +89,48 @@ var GroupDetailView = Backbone.View.extend({
|
||||
'<thead>',
|
||||
'<th>Name</th>',
|
||||
'<th>Description</th>',
|
||||
'<th>Downloads</th>',
|
||||
'<th>Clones</th>',
|
||||
'<th>Owner</th>',
|
||||
'<th>Categories</th>',
|
||||
'<th>Created</th>',
|
||||
'<th>Updated</th>',
|
||||
'<th>Rating</th>',
|
||||
'<th>Verified</th>',
|
||||
'</thead>',
|
||||
'<tbody>',
|
||||
'<% _.each(group.get("repositories"), function(repo) { %>',
|
||||
'<tr>',
|
||||
'<td>',
|
||||
'<a data-toggle="tooltip" data-placement="top" title="Details of <%= repo.name %>" href="/view/<%= repo.owner %>/<%= repo.name %>" id="<%= repo.id %>"><%= repo.name %></a>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.description %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.times_downloaded %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.owner %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.time_created %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.ratings_mean %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.approved %>',
|
||||
'</td>',
|
||||
'</tr>',
|
||||
'<tr>',
|
||||
'<td>',
|
||||
'<a data-toggle="tooltip" data-placement="top" title="Details of <%= repo.name %>" href="/view/<%= repo.owner %>/<%= repo.name %>" id="<%= repo.id %>"><%= repo.name %></a>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.description %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.times_downloaded %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.owner %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<% _.each((repo.categories), function(cat) { %>',
|
||||
'<a data-toggle="tooltip" data-placement="top" title="Repositories in <%= cat.name %>" href="/repository/browse_repositories_in_category?id=<%= cat.id %>&use_panels=true"><%= cat.name %></a><br/>',
|
||||
// '<%= repo.categories %>',
|
||||
'<% }); %>',
|
||||
'</td>',
|
||||
'<td data-toggle="tooltip" data-placement="top" title="<%= repo.time_created_full %>">',
|
||||
'<%= repo.time_created %>',
|
||||
'</td>',
|
||||
'<td data-toggle="tooltip" data-placement="top" title="<%= repo.time_updated_full %>">',
|
||||
'<%= repo.time_updated %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.ratings_mean %>',
|
||||
'</td>',
|
||||
'<td>',
|
||||
'<%= repo.approved %>',
|
||||
'</td>',
|
||||
'</tr>',
|
||||
'<% }); %>',
|
||||
'</tbody>',
|
||||
'</table>',
|
||||
+9
-9
@@ -1,12 +1,12 @@
|
||||
define([
|
||||
"libs/toastr",
|
||||
"mvc/groups/group-model",
|
||||
"mvc/groups/group-listrow-view"
|
||||
"toolshed/scripts/mvc/groups/group-model",
|
||||
"toolshed/scripts/mvc/groups/group-listrow-view"
|
||||
|
||||
], function(
|
||||
mod_toastr,
|
||||
mod_group_model,
|
||||
mod_group_listrow_view
|
||||
mod_group_row
|
||||
){
|
||||
|
||||
var GroupListView = Backbone.View.extend({
|
||||
@@ -49,7 +49,7 @@ var GroupListView = Backbone.View.extend({
|
||||
this.options = _.extend( this.options, options );
|
||||
$( ".tooltip" ).hide();
|
||||
var template = this.templateGroupsList();
|
||||
this.$el.html( template( { length: 10, order: 'asc' } ) );
|
||||
this.$el.html( template( { length: window.globalTS.groups.collection.models.length } ) );
|
||||
this.renderRows( window.globalTS.groups.collection.models );
|
||||
$( "#center [data-toggle]" ).tooltip();
|
||||
$( "#center" ).css( 'overflow','auto' );
|
||||
@@ -71,7 +71,7 @@ var GroupListView = Backbone.View.extend({
|
||||
* @param {Group} model of the view that will be rendered
|
||||
*/
|
||||
renderOne: function( options ){
|
||||
var rowView = new mod_group_listrow_view.GroupListRowView( options );
|
||||
var rowView = new mod_group_row.GroupListRowView( options );
|
||||
this.$el.find( '#group_list_body' ).append( rowView.el );
|
||||
},
|
||||
|
||||
@@ -124,10 +124,10 @@ var GroupListView = Backbone.View.extend({
|
||||
tmpl_array.push('<% } else{ %>');
|
||||
tmpl_array.push('<table class="grid table table-condensed">');
|
||||
tmpl_array.push(' <thead>');
|
||||
tmpl_array.push(' <th style="width:30%;"><a class="sort-groups-link" title="Click to reverse order" href="#">name</a> <span title="Sorted alphabetically" class="fa fa-sort-alpha-<%- order %>"></span></th>');
|
||||
tmpl_array.push(' <th style="width:22%;">description</th>');
|
||||
tmpl_array.push(' <th style="width:22%;">members</th> ');
|
||||
tmpl_array.push(' <th style="width:26%;">repositories</th>');
|
||||
tmpl_array.push(' <th>Name</th>');
|
||||
// tmpl_array.push(' <th style="width:22%;">description</th>');
|
||||
tmpl_array.push(' <th>Members</th> ');
|
||||
tmpl_array.push(' <th>Repositories</th>');
|
||||
tmpl_array.push(' </thead>');
|
||||
tmpl_array.push(' <tbody id="group_list_body">');
|
||||
// group item views will attach here
|
||||
+1
-1
@@ -20,7 +20,7 @@ var GroupListRowView = Backbone.View.extend({
|
||||
return _.template([
|
||||
'<tr class="" data-id="<%- group.get("id") %>">',
|
||||
'<td><a href="groups#/<%= group.get("id") %>"><%= group.get("name") %></a></td>',
|
||||
'<td>description</td>',
|
||||
// '<td>description</td>',
|
||||
'<td><%= group.get("total_members") %></td>',
|
||||
'<td><%= group.get("total_repos") %></td>',
|
||||
'</tr>'
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
define([], function() {
|
||||
|
||||
// ============================================================================
|
||||
// LIBRARY RELATED MODELS
|
||||
// TS GROUP RELATED MODELS
|
||||
|
||||
var Group = Backbone.Model.extend({
|
||||
urlRoot: '/api/groups',
|
||||
@@ -1,3 +0,0 @@
|
||||
define( [], function() {
|
||||
return 'Remove this file';
|
||||
});
|
||||
+3
-3
@@ -3,9 +3,9 @@
|
||||
// MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
|
||||
|
||||
define([
|
||||
"mvc/groups/group-list-view",
|
||||
"mvc/groups/group-detail-view",
|
||||
"mvc/groups/group-model"
|
||||
'toolshed/scripts/mvc/groups/group-list-view',
|
||||
'toolshed/scripts/mvc/groups/group-detail-view',
|
||||
'toolshed/scripts/mvc/groups/group-model'
|
||||
],
|
||||
function(
|
||||
mod_group_list,
|
||||
@@ -143,8 +143,42 @@
|
||||
<datatype extension="pbm" type="galaxy.datatypes.images:Pbm" mimetype="image/pbm"/>
|
||||
<datatype extension="pgm" type="galaxy.datatypes.images:Pgm" mimetype="image/pgm"/>
|
||||
<datatype extension="rna_eps" type="galaxy.datatypes.sequence:RNADotPlotMatrix" mimetype="image/eps" display_in_upload="True"/>
|
||||
<!-- Proteomics Datatypes -->
|
||||
<datatype extension="pepxml" type="galaxy.datatypes.proteomics:PepXml" mimetype="application/xml" display_in_upload="True"/>
|
||||
<datatype extension="raw_pepxml" type="galaxy.datatypes.proteomics:PepXml" mimetype="application/xml" subclass="True"/>
|
||||
<datatype extension="peptideprophet_pepxml" type="galaxy.datatypes.proteomics:PepXml" mimetype="application/xml" subclass="True"/>
|
||||
<datatype extension="interprophet_pepxml" type="galaxy.datatypes.proteomics:PepXml" mimetype="application/xml" subclass="True"/>
|
||||
<datatype extension="protxml" type="galaxy.datatypes.proteomics:ProtXML" mimetype="application/xml" display_in_upload="True" />
|
||||
<datatype extension="trafoxml" type="galaxy.datatypes.xml:GenericXml" mimetype="application/xml"
|
||||
subclass="True" display_in_upload="True" description="Transformation of retention times"/>
|
||||
<datatype extension="qcml" type="galaxy.datatypes.xml:GenericXml" mimetype="application/xml"
|
||||
subclass="True" display_in_upload="True" description="Quality control data in XML format (https://code.google.com/p/qcml/)."/>
|
||||
<datatype extension="pepxml.tsv" type="galaxy.datatypes.proteomics:PepXmlReport" display_in_upload="true" />
|
||||
<datatype extension="protxml.tsv" type="galaxy.datatypes.proteomics:ProtXmlReport" display_in_upload="true" />
|
||||
<datatype extension="mascotdat" type="galaxy.datatypes.proteomics:MascotDat" display_in_upload="false" />
|
||||
<datatype extension="mzid" type="galaxy.datatypes.proteomics:MzIdentML" mimetype="application/xml" display_in_upload="true" />
|
||||
<datatype extension="idxml" type="galaxy.datatypes.proteomics:IdXML" mimetype="application/xml" display_in_upload="true" />
|
||||
<datatype extension="tandem" type="galaxy.datatypes.proteomics:TandemXML" mimetype="application/xml" display_in_upload="true" />
|
||||
<datatype extension="thermo.raw" type="galaxy.datatypes.proteomics:ThermoRAW" mimetype="application/octet-stream" display_in_upload="true" />
|
||||
<datatype extension="mzml" type="galaxy.datatypes.proteomics:MzML" mimetype="application/xml" display_in_upload="true"/>
|
||||
<datatype extension="mgf" type="galaxy.datatypes.proteomics:Mgf" display_in_upload="true" />
|
||||
<datatype extension="wiff" type="galaxy.datatypes.proteomics:Wiff" display_in_upload="true" />
|
||||
<datatype extension="mzxml" type="galaxy.datatypes.proteomics:MzXML" mimetype="application/xml" display_in_upload="true" />
|
||||
<datatype extension="ms2" type="galaxy.datatypes.proteomics:Ms2" display_in_upload="true" />
|
||||
<datatype extension="mzq" type="galaxy.datatypes.proteomics:MzQuantML" mimetype="application/xml" display_in_upload="true" />
|
||||
<datatype extension="traml" type="galaxy.datatypes.proteomics:TraML" mimetype="application/xml" display_in_upload="true" />
|
||||
<datatype extension="featurexml" type="galaxy.datatypes.proteomics:FeatureXML" mimetype="application/xml" display_in_upload="true" />
|
||||
<datatype extension="consensusxml" type="galaxy.datatypes.proteomics:ConsensusXML" mimetype="application/xml" display_in_upload="true" />
|
||||
<datatype extension="msp" type="galaxy.datatypes.proteomics:Msp" display_in_upload="true" />
|
||||
<datatype extension="splib_noindex" type="galaxy.datatypes.proteomics:SPLibNoIndex" display_in_upload="true" />
|
||||
<datatype extension="splib" type="galaxy.datatypes.proteomics:SPLib" display_in_upload="true" />
|
||||
<datatype extension="hlf" type="galaxy.datatypes.proteomics:XHunterAslFormat" mimetype="application/octet-stream" display_in_upload="true" />
|
||||
<datatype extension="idpdb" type="galaxy.datatypes.proteomics:IdpDB" display_in_upload="true" />
|
||||
<datatype extension="sf3" type="galaxy.datatypes.proteomics:Sf3" display_in_upload="true" />
|
||||
<datatype extension="cps" type="galaxy.datatypes.binary:Binary" subclass="True" display_in_upload="true" />
|
||||
<datatype extension="searchgui_archive" type="galaxy.datatypes.binary:CompressedArchive" subclass="True" display_in_upload="True"/>
|
||||
<datatype extension="peptideshaker_archive" type="galaxy.datatypes.binary:CompressedArchive" subclass="True" display_in_upload="True"/>
|
||||
<!-- End Proteomics Datatypes -->
|
||||
<datatype extension="eps" type="galaxy.datatypes.images:Eps" mimetype="image/eps"/>
|
||||
<datatype extension="rast" type="galaxy.datatypes.images:Rast" mimetype="image/rast"/>
|
||||
<datatype extension="laj" type="galaxy.datatypes.images:Laj"/>
|
||||
@@ -393,6 +427,18 @@
|
||||
<sniffer type="galaxy.datatypes.binary:Sra"/>
|
||||
<sniffer type="galaxy.datatypes.xml:Phyloxml"/>
|
||||
<sniffer type="galaxy.datatypes.xml:Owl"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:MzML"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:TandemXML"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:PepXml"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:Mgf"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:ProtXML"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:MzXML"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:TraML"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:MzIdentML"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:MzQuantML"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:Msp"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:SPLib"/>
|
||||
<sniffer type="galaxy.datatypes.proteomics:ThermoRAW"/>
|
||||
<sniffer type="galaxy.datatypes.xml:GenericXml"/>
|
||||
<sniffer type="galaxy.datatypes.sequence:Maf"/>
|
||||
<sniffer type="galaxy.datatypes.sequence:Lav"/>
|
||||
|
||||
@@ -836,9 +836,6 @@ use_interactive = True
|
||||
# Use new tool form
|
||||
#toolform_upgrade = True
|
||||
|
||||
# Use new tool form in workflow editor
|
||||
#workflow_toolform_upgrade = True
|
||||
|
||||
# Enable Galaxy to communicate directly with a sequencer
|
||||
#enable_sequencer_communication = False
|
||||
|
||||
@@ -974,6 +971,12 @@ use_interactive = True
|
||||
# option to retry externally, or set metadata manually (when possible).
|
||||
#retry_metadata_internally = True
|
||||
|
||||
# Very large metadata values can cause Galaxy crashes. This will allow
|
||||
# limiting the maximum metadata key size (in bytes used in memory, not the end
|
||||
# result database value size) Galaxy will attempt to save with a dataset. 0 to
|
||||
# disable this feature. 5000000 seems to be a reasonable size.
|
||||
#max_metadata_value_size = 0
|
||||
|
||||
# If (for example) you run on a cluster and your datasets (by default,
|
||||
# database/files/) are mounted read-only, this option will override tool output
|
||||
# paths to write outputs to the working directory instead, and the job manager
|
||||
|
||||
@@ -442,6 +442,13 @@
|
||||
<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.
|
||||
-->
|
||||
<expand macro="foohost_destination" id="foo_small" ncpus="1" walltime="1:00:00" />
|
||||
<expand macro="foohost_destination" id="foo_medium" ncpus="2" walltime="4:00:00" />
|
||||
<expand macro="foohost_destination" id="foo_large" ncpus="8" walltime="24:00:00" />
|
||||
<expand macro="foohost_destination" id="foo_longrunning" ncpus="1" walltime="48:00:00" />
|
||||
</destinations>
|
||||
<resources default="default">
|
||||
<!-- Group different parameters defined in job_resource_params_conf.xml
|
||||
@@ -515,4 +522,15 @@
|
||||
-->
|
||||
<limit type="output_size">10GB</limit>
|
||||
</limits>
|
||||
<macros>
|
||||
<xml name="foohost_destination" tokens="id,walltime,ncpus">
|
||||
<destination id="@ID@" runner="cli">
|
||||
<param id="shell_plugin">SecureShell</param>
|
||||
<param id="job_plugin">Torque</param>
|
||||
<param id="shell_username">galaxy</param>
|
||||
<param id="shell_hostname">foohost_destination.example.org</param>
|
||||
<param id="job_Resource_List">walltime=@WALLTIME@,ncpus=@NCPUS@</param>
|
||||
</destination>
|
||||
</xml>
|
||||
</macros>
|
||||
</job_conf>
|
||||
|
||||
@@ -23,9 +23,11 @@
|
||||
|
||||
<!-- Sample S3 Object Store
|
||||
<object_store type="s3">
|
||||
<auth access_key="...." secret_key="....." />
|
||||
<bucket name="unique_bucket_name_all_lowercase" use_reduced_redundancy="False" />
|
||||
<cache path="database/files/" size="1000" />
|
||||
<auth access_key="...." secret_key="....." />
|
||||
<bucket name="unique_bucket_name_all_lowercase" use_reduced_redundancy="False" />
|
||||
<cache path="database/object_store_cache" size="1000" />
|
||||
<extra_dir type="job_work" path="database/job_working_directory_s3"/>
|
||||
<extra_dir type="temp" path="database/tmp_s3"/>
|
||||
</object_store>
|
||||
-->
|
||||
|
||||
@@ -34,7 +36,9 @@
|
||||
<auth access_key="...." secret_key="....." />
|
||||
<bucket name="unique_bucket_name" use_reduced_redundancy="False" max_chunk_size="250"/>
|
||||
<connection host="" port="" is_secure="" conn_path="" multipart="True"/>
|
||||
<cache path="database/files/" size="1000" />
|
||||
<cache path="database/object_store_cache" size="1000" />
|
||||
<extra_dir type="job_work" path="database/job_working_directory_swift"/>
|
||||
<extra_dir type="temp" path="database/tmp_swift"/>
|
||||
</object_store>
|
||||
-->
|
||||
|
||||
|
||||
@@ -21,3 +21,7 @@ command_inject = --sig-proxy=true -e DEBUG=false
|
||||
# this falls back to galaxy.ini's galaxy_infrastructure_url and finally to the
|
||||
# Docker host of the spawned container if that is also not set.
|
||||
#galaxy_url =
|
||||
|
||||
# The Docker hostname. It can be useful to run the Docker daemon on a different
|
||||
# host than Galaxy.
|
||||
#docker_hostname = localhost
|
||||
|
||||
@@ -59,6 +59,24 @@ session_secret = changethisinproduction
|
||||
#toolshed_search_on = True
|
||||
#whoosh_index_dir = database/toolshed_whoosh_indexes
|
||||
|
||||
# The following boosts are used to customize this instance's TS search.
|
||||
# The higher the boost, the more importance the scoring algorithm gives to the
|
||||
# given field.
|
||||
|
||||
# For searching repositories at /api/repositories:
|
||||
#repo_name_boost = 0.9
|
||||
#repo_description_boost = 0.6
|
||||
#repo_long_description_boost = 0.5
|
||||
#repo_homepage_url_boost = 0.3
|
||||
#repo_remote_repository_url_boost = 0.2
|
||||
#repo_owner_username_boost = 0.3
|
||||
|
||||
# For searching tools at /api/tools
|
||||
#tool_name_boost = 1.2
|
||||
#tool_description_boost = 0.6
|
||||
#tool_help_boost = 0.4
|
||||
#tool_repo_owner_username = 0.3
|
||||
|
||||
# -- Analytics
|
||||
|
||||
# You can enter tracking code here to track visitor's behavior
|
||||
|
||||
+13
-16
@@ -10,16 +10,12 @@ import sys
|
||||
import urllib
|
||||
import xml.etree.ElementTree as ElementTree
|
||||
|
||||
try:
|
||||
URL = sys.argv[1]
|
||||
except IndexError:
|
||||
URL = "http://genome.cse.ucsc.edu/cgi-bin/das/dsn"
|
||||
|
||||
def getbuilds(url):
|
||||
try:
|
||||
page = urllib.urlopen(URL)
|
||||
page = urllib.urlopen(url)
|
||||
except:
|
||||
print "#Unable to open " + URL
|
||||
print "#Unable to open " + url
|
||||
print "?\tunspecified (?)"
|
||||
sys.exit(1)
|
||||
|
||||
@@ -27,29 +23,30 @@ def getbuilds(url):
|
||||
try:
|
||||
tree = ElementTree.fromstring(text)
|
||||
except:
|
||||
print "#Invalid xml passed back from " + URL
|
||||
print "#Invalid xml passed back from " + url
|
||||
print "?\tunspecified (?)"
|
||||
sys.exit(1)
|
||||
|
||||
print "#Harvested from " + URL
|
||||
print "#Harvested from " + url
|
||||
print "?\tunspecified (?)"
|
||||
for dsn in tree:
|
||||
build = dsn.find("SOURCE").attrib['id']
|
||||
description = dsn.find("DESCRIPTION").text.replace(" - Genome at UCSC","").replace(" Genome at UCSC","")
|
||||
description = dsn.find("DESCRIPTION").text.replace(" - Genome at UCSC", "").replace(" Genome at UCSC", "")
|
||||
|
||||
fields = description.split(" ")
|
||||
temp = fields[0]
|
||||
for i in range(len(fields)-1):
|
||||
if temp == fields[i+1]:
|
||||
fields.pop(i+1)
|
||||
for i in range(len(fields) - 1):
|
||||
if temp == fields[i + 1]:
|
||||
fields.pop(i + 1)
|
||||
else:
|
||||
temp = fields[i+1]
|
||||
temp = fields[i + 1]
|
||||
description = " ".join(fields)
|
||||
yield [build,description]
|
||||
yield [build, description]
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) > 1:
|
||||
URL = sys.argv[1]
|
||||
else:
|
||||
URL = "http://genome.cse.ucsc.edu/cgi-bin/das/dsn"
|
||||
for build in getbuilds(URL):
|
||||
print build[0]+"\t"+build[1]+" ("+build[0]+")"
|
||||
|
||||
print build[0] + "\t" + build[1] + " (" + build[0] + ")"
|
||||
|
||||
@@ -2,20 +2,16 @@
|
||||
<!-- Current Ensembl method of attaching user data via URL; archives older than ~November 2008 will use a different method -->
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="ensembl" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}${site_organism}/Location/View?contigviewbottom=bam:${bam_file.qp}=normal</url>
|
||||
|
||||
<param type="data" name="bam_file" url="galaxy_${DATASET_HASH}.bam" strip_https="True" />
|
||||
<param type="data" name="bai_file" url="galaxy_${DATASET_HASH}.bam.bai" metadata="bam_index" strip_https="True" />
|
||||
<param type="template" name="site_organism" strip="True" >
|
||||
|
||||
@@ -2,20 +2,16 @@
|
||||
<!-- Current Ensembl method of attaching user data via URL; archives older than ~November 2008 will use a different method -->
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="ensembl" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}${site_organism}/Location/View?r=${position};contigviewbottom=url:${gff_file.qp}=normal</url>
|
||||
|
||||
<param type="data" name="gff_file" url="galaxy_${DATASET_HASH}.gff" />
|
||||
<param type="template" name="site_organism" strip="True" >
|
||||
$site_organisms[ $site_dbkeys.index( $gff_file.dbkey ) ]
|
||||
@@ -38,24 +34,19 @@ ${chrom}:${start}-${end}
|
||||
#end if
|
||||
</param>
|
||||
</dynamic_links>
|
||||
|
||||
<!-- Old Ensembl method of attaching user data via URL -->
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="ensembl_data_url" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}${site_organism}/contigview?data_URL=${gff_file.qp}${position}</url>
|
||||
|
||||
<param type="data" name="gff_file" url="galaxy_${DATASET_HASH}.gff" />
|
||||
<param type="template" name="site_organism" strip="True" >
|
||||
$site_organisms[ $site_dbkeys.index( $gff_file.dbkey ) ]
|
||||
@@ -75,5 +66,4 @@ ${chrom}:${start}-${end}
|
||||
#end if
|
||||
</param>
|
||||
</dynamic_links>
|
||||
|
||||
</display>
|
||||
|
||||
@@ -2,20 +2,16 @@
|
||||
<!-- Current Ensembl method of attaching user data via URL; archives older than ~November 2008 will use a different method -->
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="ensembl" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}${site_organism}/Location/View?r=${position};contigviewbottom=url:${bed_file.qp}=normal</url>
|
||||
|
||||
<param type="data" name="bed_file" url="galaxy_${DATASET_HASH}.bed" format="bedstrict"/>
|
||||
<param type="template" name="site_organism" strip="True" >
|
||||
$site_organisms[ $site_dbkeys.index( $bed_file.dbkey ) ]
|
||||
@@ -38,24 +34,19 @@ ${chrom}:${int( start ) + 1}-${end}
|
||||
#end if
|
||||
</param>
|
||||
</dynamic_links>
|
||||
|
||||
<!-- Old Ensembl method of attaching user data via URL -->
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="ensembl_data_url" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}${site_organism}/contigview?data_URL=${bed_file.qp}${position}</url>
|
||||
|
||||
<param type="data" name="bed_file" url="galaxy_${DATASET_HASH}.bed" format="bedstrict"/>
|
||||
<param type="template" name="site_organism" strip="True" >
|
||||
$site_organisms[ $site_dbkeys.index( $bed_file.dbkey ) ]
|
||||
@@ -75,5 +66,4 @@ ${chrom}:${int( start ) + 1}-${end}
|
||||
#end if
|
||||
</param>
|
||||
</dynamic_links>
|
||||
|
||||
</display>
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
<display id="gbrowse_gff" version="1.0.0" name="display at GBrowse">
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="gbrowse" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_id to a Galaxy application configuration parameter and by dataset dbkey -->
|
||||
<filter>${site_id in $APP.datatypes_registry.get_display_sites('gbrowse')}</filter>
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}${site_organism}/?${position}eurl=${gff_file.qp}</url>
|
||||
<param type="data" name="gff_file" url="galaxy_${DATASET_HASH}.gff" />
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
<display id="gbrowse_interval_as_bed" version="1.0.0" name="display at GBrowse">
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="gbrowse" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_id to a Galaxy application configuration parameter and by dataset dbkey -->
|
||||
<filter>${site_id in $APP.datatypes_registry.get_display_sites('gbrowse')}</filter>
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}${site_organism}/?${position}eurl=${bed_file.qp}</url>
|
||||
<param type="data" name="bed_file" url="galaxy_${DATASET_HASH}.bed" format="bedstrict"/> <!-- Galaxy allows BED files to contain non-standard fields beyond the first 3 columns, gbrowse does not(?): force use of converter which will make strict BED6+ file -->
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
<display id="gbrowse_wig" version="1.0.0" name="display at GBrowse">
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="gbrowse" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_id to a Galaxy application configuration parameter and by dataset dbkey -->
|
||||
<filter>${site_id in $APP.datatypes_registry.get_display_sites('gbrowse')}</filter>
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}${site_organism}/?${position}eurl=${wig_file.qp}</url>
|
||||
<param type="data" name="wig_file" url="galaxy_${DATASET_HASH}.wig" format="wig"/>
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
<display id="igb_bam" version="0.0.0" name="display in IGB">
|
||||
<link id="View" name="View">
|
||||
<url>http://bioviz.org/igb/galaxy.html?version=${bam_file.dbkey}&feature_url_0=${bam_file.url}&sym_name_0=${niceName}&sym_method_0=${bam_file.url}&query_url=${bam_file.url}&server_url=galaxy</url>
|
||||
<param type="data" name="bam_file_for_name" viewable="False"/>
|
||||
<param type="template" name="niceName" viewable="False" strip="True">
|
||||
#import re
|
||||
#set nm=$bam_file_for_name.name
|
||||
${re.sub('\W',"_",nm)}
|
||||
</param>
|
||||
<param type="data" name="bai_file" url="${niceName}.bam.bai" metadata="bam_index" />
|
||||
<param type="data" name="bam_file" url="${niceName}.bam" />
|
||||
</link>
|
||||
|
||||
<link id="View" name="View">
|
||||
<url>http://bioviz.org/igb/galaxy.html?version=${bam_file.dbkey}&feature_url_0=${bam_file.url}&sym_name_0=${niceName}&sym_method_0=${bam_file.url}&query_url=${bam_file.url}&server_url=galaxy</url>
|
||||
<param type="data" name="bam_file_for_name" viewable="False"/>
|
||||
<param type="template" name="niceName" viewable="False" strip="True">
|
||||
#import re
|
||||
#set nm=$bam_file_for_name.name
|
||||
${re.sub('\W',"_",nm)}
|
||||
</param>
|
||||
<param type="data" name="bai_file" url="${niceName}.bam.bai" metadata="bam_index" />
|
||||
<param type="data" name="bam_file" url="${niceName}.bam" />
|
||||
</link>
|
||||
</display>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<display id="igb_bb" version="1.0.0" name="display in IGB">
|
||||
|
||||
<link id="View" name="View">
|
||||
<url>http://bioviz.org/igb/galaxy.html?version=${bigbed_file.dbkey}&loadresidues=false&feature_url_0=${bigbed_file.url}&sym_name_0=${niceName}&sym_method_0=${bigbed_file.url}&query_url=${bigbed_file.url}&server_url=galaxy</url>
|
||||
<param type="data" name="bigbed_file_for_name" viewable="False"/>
|
||||
@@ -11,4 +10,3 @@
|
||||
<param type="data" name="bigbed_file" url="${niceName}.bigbed" />
|
||||
</link>
|
||||
</display>
|
||||
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
<display id="igb_bed" version="1.0.0" name="display in IGB">
|
||||
|
||||
<link id="View" name="View">
|
||||
<url>$bioviz</url>
|
||||
<param type="data" name="bed_file_for_name" viewable="False"/>
|
||||
<param type="template" name="niceName" viewable="False" strip="True">
|
||||
#import re
|
||||
#set nm=$bed_file_for_name.name
|
||||
${re.sub('\W',"_",nm)}
|
||||
</param>
|
||||
<param type="data" name="bed_file" url="${niceName}.bed" />
|
||||
|
||||
<param type="template" name="bioviz" strip="True" >
|
||||
http://bioviz.org/igb/galaxy.html?version=${bed_file.dbkey}&loadresidues=false&feature_url_0=${bed_file.url}&sym_name_0=${niceName}&sym_method_0=${bed_file.url}&query_url=${bed_file.url}&server_url=galaxy
|
||||
<link id="View" name="View">
|
||||
<url>$bioviz</url>
|
||||
<param type="data" name="bed_file_for_name" viewable="False"/>
|
||||
<param type="template" name="niceName" viewable="False" strip="True">
|
||||
#import re
|
||||
#set nm=$bed_file_for_name.name
|
||||
${re.sub('\W',"_",nm)}
|
||||
</param>
|
||||
</link>
|
||||
<param type="data" name="bed_file" url="${niceName}.bed" />
|
||||
<param type="template" name="bioviz" strip="True" >
|
||||
http://bioviz.org/igb/galaxy.html?version=${bed_file.dbkey}&loadresidues=false&feature_url_0=${bed_file.url}&sym_name_0=${niceName}&sym_method_0=${bed_file.url}&query_url=${bed_file.url}&server_url=galaxy
|
||||
</param>
|
||||
</link>
|
||||
</display>
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
<display id="igb_bedgraph" version="1.0.0" name="display in IGB">
|
||||
|
||||
<link id="View" name="View">
|
||||
<url>$bioviz</url>
|
||||
<param type="data" name="bedgraph_file_for_name" viewable="False"/>
|
||||
<param type="template" name="niceName" viewable="False" strip="True">
|
||||
#import re
|
||||
#set nm=$bedgraph_file_for_name.name
|
||||
${re.sub('\W',"_",nm)}
|
||||
</param>
|
||||
<param type="data" name="bedgraph_file" url="${niceName}.bed.bedgraph" />
|
||||
|
||||
<param type="template" name="bioviz" strip="True" >
|
||||
http://bioviz.org/igb/galaxy.html?version=${bedgraph_file.dbkey}&loadresidues=false&feature_url_0=${bedgraph_file.url}&sym_name_0=${niceName}&sym_method_0=${bedgraph_file.url}&query_url=${bedgraph_file.url}&server_url=galaxy
|
||||
<link id="View" name="View">
|
||||
<url>$bioviz</url>
|
||||
<param type="data" name="bedgraph_file_for_name" viewable="False"/>
|
||||
<param type="template" name="niceName" viewable="False" strip="True">
|
||||
#import re
|
||||
#set nm=$bedgraph_file_for_name.name
|
||||
${re.sub('\W',"_",nm)}
|
||||
</param>
|
||||
</link>
|
||||
<param type="data" name="bedgraph_file" url="${niceName}.bed.bedgraph" />
|
||||
<param type="template" name="bioviz" strip="True" >
|
||||
http://bioviz.org/igb/galaxy.html?version=${bedgraph_file.dbkey}&loadresidues=false&feature_url_0=${bedgraph_file.url}&sym_name_0=${niceName}&sym_method_0=${bedgraph_file.url}&query_url=${bedgraph_file.url}&server_url=galaxy
|
||||
</param>
|
||||
</link>
|
||||
</display>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<display id="igb_bigwig" version="1.0.0" name="display in IGB">
|
||||
|
||||
<link id="View" name="View">
|
||||
<url>http://bioviz.org/igb/galaxy.html?version=${bigwig_file.dbkey}&loadresidues=false&feature_url_0=${bigwig_file.url}&sym_name_0=${niceName}&sym_method_0=${bigwig_file.url}&query_url=${bigwig_file.url}&server_url=galaxy</url>
|
||||
<param type="data" name="bigwig_file_for_name" viewable="False"/>
|
||||
@@ -18,5 +17,4 @@
|
||||
#end if
|
||||
</param>-->
|
||||
</link>
|
||||
|
||||
</display>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<display id="igb_gtf" version="1.0.0" name="display in IGB">
|
||||
|
||||
<link id="View" name="View">
|
||||
<url>$bioviz</url>
|
||||
<param type="data" name="gtf_file_for_name" viewable="False"/>
|
||||
@@ -9,9 +8,8 @@
|
||||
${re.sub('\W',"_",nm)}
|
||||
</param>
|
||||
<param type="data" name="gtf_file" url="${niceName}.gtf" />
|
||||
|
||||
<param type="template" name="bioviz" strip="True" >
|
||||
http://bioviz.org/igb/galaxy.html?version=${gtf_file.dbkey}&loadresidues=false&feature_url_0=${gtf_file.url}&sym_name_0=${niceName}&sym_method_0=${gtf_file.url}&query_url=${gtf_file.url}&server_url=galaxy
|
||||
</param>
|
||||
</link>
|
||||
</display>
|
||||
</display>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<display id="igb_wig" version="1.0.0" name="display in IGB">
|
||||
|
||||
<link id="View" name="View">
|
||||
<url>http://bioviz.org/igb/galaxy.html?version=${wig_file.dbkey}&${position}&loadresidues=false&feature_url_0=${wig_file.url}&sym_name_0=${niceName}&sym_method_0=${wig_file.url}&query_url=${wig_file.url}&server_url=galaxy</url>
|
||||
<param type="data" name="wig_file_for_name" viewable="False"/>
|
||||
@@ -19,4 +18,3 @@
|
||||
</param>
|
||||
</link>
|
||||
</display>
|
||||
|
||||
|
||||
@@ -1,22 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<display id="igv_bam" version="1.0.0" name="display with IGV">
|
||||
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="igv" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${$site_id.startswith( 'local_' ) or $dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${redirect_url}</url>
|
||||
|
||||
<param type="data" name="bam_file" url="galaxy_${DATASET_HASH}.bam" />
|
||||
<param type="data" name="bai_file" url="galaxy_${DATASET_HASH}.bam.bai" metadata="bam_index" />
|
||||
<param type="template" name="site_organism" strip="True" >
|
||||
@@ -26,63 +21,57 @@
|
||||
$bam_file.dbkey
|
||||
#end if
|
||||
</param>
|
||||
|
||||
<param type="template" name="jnlp" url="galaxy_${DATASET_HASH}.jnlp" viewable="True" mimetype="application/x-java-jnlp-file"><?xml version="1.0" encoding="utf-8"?>
|
||||
<jnlp
|
||||
spec="1.0+"
|
||||
codebase="${site_link}">
|
||||
<information>
|
||||
<title>IGV 1.5</title>
|
||||
<vendor>The Broad Institute</vendor>
|
||||
<homepage href="http://www.broadinstitute.org/igv"/>
|
||||
<description>IGV Software</description>
|
||||
<description kind="short">IGV</description>
|
||||
</information>
|
||||
<security>
|
||||
<all-permissions/>
|
||||
</security>
|
||||
<resources>
|
||||
|
||||
<j2se version="1.5+" initial-heap-size="256m" max-heap-size="1100m"/>
|
||||
<jar href="igv.jar" download="eager" main="true"/>
|
||||
<jar href="batik-codec.jar" download="eager"/>
|
||||
<property name="apple.laf.useScreenMenuBar" value="true"/>
|
||||
<property name="com.apple.mrj.application.growbox.intrudes" value="false"/>
|
||||
<property name="com.apple.mrj.application.live-resize" value="true"/>
|
||||
<property name="com.apple.macos.smallTabs" value="true"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="i386">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macintel.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="ppc">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="PowerPC">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Windows">
|
||||
<property name="sun.java2d.noddraw" value="true"/>
|
||||
<nativelib href="hdfnative-win.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Linux">
|
||||
<nativelib href="hdfnative-linux64.jar"/>
|
||||
</resources>
|
||||
|
||||
<application-desc main-class="org.broad.igv.ui.IGVMainFrame">
|
||||
<argument>-g</argument>
|
||||
<argument>${site_organism}</argument>
|
||||
<argument>${bam_file.url}</argument>
|
||||
</application-desc>
|
||||
</jnlp>
|
||||
</param>
|
||||
<param type="template" name="jnlp" url="galaxy_${DATASET_HASH}.jnlp" viewable="True" mimetype="application/x-java-jnlp-file"><![CDATA[
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<jnlp
|
||||
spec="1.0+"
|
||||
codebase="${site_link}">
|
||||
<information>
|
||||
<title>IGV 1.5</title>
|
||||
<vendor>The Broad Institute</vendor>
|
||||
<homepage href="http://www.broadinstitute.org/igv"/>
|
||||
<description>IGV Software</description>
|
||||
<description kind="short">IGV</description>
|
||||
</information>
|
||||
<security>
|
||||
<all-permissions/>
|
||||
</security>
|
||||
<resources>
|
||||
<j2se version="1.5+" initial-heap-size="256m" max-heap-size="1100m"/>
|
||||
<jar href="igv.jar" download="eager" main="true"/>
|
||||
<jar href="batik-codec.jar" download="eager"/>
|
||||
<property name="apple.laf.useScreenMenuBar" value="true"/>
|
||||
<property name="com.apple.mrj.application.growbox.intrudes" value="false"/>
|
||||
<property name="com.apple.mrj.application.live-resize" value="true"/>
|
||||
<property name="com.apple.macos.smallTabs" value="true"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="i386">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macintel.jar"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="ppc">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="PowerPC">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
<resources os="Windows">
|
||||
<property name="sun.java2d.noddraw" value="true"/>
|
||||
<nativelib href="hdfnative-win.jar"/>
|
||||
</resources>
|
||||
<resources os="Linux">
|
||||
<nativelib href="hdfnative-linux64.jar"/>
|
||||
</resources>
|
||||
<application-desc main-class="org.broad.igv.ui.IGVMainFrame">
|
||||
<argument>-g</argument>
|
||||
<argument>${site_organism}</argument>
|
||||
<argument>${bam_file.url}</argument>
|
||||
</application-desc>
|
||||
</jnlp>
|
||||
]]>
|
||||
</param>
|
||||
<param type="template" name="redirect_url" strip="True" >
|
||||
#if $site_id.startswith( 'local_' )
|
||||
${site_link}?file=${bam_file.qp}&genome=${site_organism}&merge=true&name=${qp( ( $bam_file.name or $DATASET_HASH ).replace( ',', ';' ) )}
|
||||
@@ -93,20 +82,13 @@
|
||||
#end if
|
||||
</param>
|
||||
</dynamic_links>
|
||||
|
||||
|
||||
<dynamic_links from_data_table="igv_broad_genomes" skip_startswith="#" id="value" name="name">
|
||||
|
||||
<!-- Our input data table is one line per dbkey -->
|
||||
<filter>${ $dataset.dbkey == $value }</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>http://www.broadinstitute.org/igv/projects/current/igv.php?sessionURL=${bam_file.qp}&genome=${bam_file.dbkey}&merge=true&name=${qp( ( $bam_file.name or $DATASET_HASH ).replace( ',', ';' ) )}</url>
|
||||
|
||||
<param type="data" name="bam_file" url="galaxy_${DATASET_HASH}.bam" />
|
||||
<param type="data" name="bai_file" url="galaxy_${DATASET_HASH}.bam.bai" metadata="bam_index" />
|
||||
|
||||
</dynamic_links>
|
||||
|
||||
</display>
|
||||
<!-- Dan Blankenberg -->
|
||||
|
||||
@@ -1,22 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<display id="igv_gff" version="1.0.0" name="display with IGV">
|
||||
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="igv" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${$site_id.startswith( 'local_' ) or $dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${redirect_url}</url>
|
||||
|
||||
<param type="data" name="gff_file" url="galaxy_${DATASET_HASH}.${dataset.ext}" />
|
||||
<param type="template" name="site_organism" strip="True" >
|
||||
#if ($dataset.dbkey in $site_dbkeys)
|
||||
@@ -25,63 +20,57 @@
|
||||
$gff_file.dbkey
|
||||
#end if
|
||||
</param>
|
||||
|
||||
<param type="template" name="jnlp" url="galaxy_${DATASET_HASH}.jnlp" viewable="True" mimetype="application/x-java-jnlp-file"><?xml version="1.0" encoding="utf-8"?>
|
||||
<jnlp
|
||||
spec="1.0+"
|
||||
codebase="${site_link}">
|
||||
<information>
|
||||
<title>IGV 1.5</title>
|
||||
<vendor>The Broad Institute</vendor>
|
||||
<homepage href="http://www.broadinstitute.org/igv"/>
|
||||
<description>IGV Software</description>
|
||||
<description kind="short">IGV</description>
|
||||
</information>
|
||||
<security>
|
||||
<all-permissions/>
|
||||
</security>
|
||||
<resources>
|
||||
|
||||
<j2se version="1.5+" initial-heap-size="256m" max-heap-size="1100m"/>
|
||||
<jar href="igv.jar" download="eager" main="true"/>
|
||||
<jar href="batik-codec.jar" download="eager"/>
|
||||
<property name="apple.laf.useScreenMenuBar" value="true"/>
|
||||
<property name="com.apple.mrj.application.growbox.intrudes" value="false"/>
|
||||
<property name="com.apple.mrj.application.live-resize" value="true"/>
|
||||
<property name="com.apple.macos.smallTabs" value="true"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="i386">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macintel.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="ppc">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="PowerPC">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Windows">
|
||||
<property name="sun.java2d.noddraw" value="true"/>
|
||||
<nativelib href="hdfnative-win.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Linux">
|
||||
<nativelib href="hdfnative-linux64.jar"/>
|
||||
</resources>
|
||||
|
||||
<application-desc main-class="org.broad.igv.ui.IGVMainFrame">
|
||||
<argument>-g</argument>
|
||||
<argument>${site_organism}</argument>
|
||||
<argument>${gff_file.url}</argument>
|
||||
</application-desc>
|
||||
</jnlp>
|
||||
</param>
|
||||
<param type="template" name="jnlp" url="galaxy_${DATASET_HASH}.jnlp" viewable="True" mimetype="application/x-java-jnlp-file"><![CDATA[
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<jnlp
|
||||
spec="1.0+"
|
||||
codebase="${site_link}">
|
||||
<information>
|
||||
<title>IGV 1.5</title>
|
||||
<vendor>The Broad Institute</vendor>
|
||||
<homepage href="http://www.broadinstitute.org/igv"/>
|
||||
<description>IGV Software</description>
|
||||
<description kind="short">IGV</description>
|
||||
</information>
|
||||
<security>
|
||||
<all-permissions/>
|
||||
</security>
|
||||
<resources>
|
||||
<j2se version="1.5+" initial-heap-size="256m" max-heap-size="1100m"/>
|
||||
<jar href="igv.jar" download="eager" main="true"/>
|
||||
<jar href="batik-codec.jar" download="eager"/>
|
||||
<property name="apple.laf.useScreenMenuBar" value="true"/>
|
||||
<property name="com.apple.mrj.application.growbox.intrudes" value="false"/>
|
||||
<property name="com.apple.mrj.application.live-resize" value="true"/>
|
||||
<property name="com.apple.macos.smallTabs" value="true"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="i386">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macintel.jar"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="ppc">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="PowerPC">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
<resources os="Windows">
|
||||
<property name="sun.java2d.noddraw" value="true"/>
|
||||
<nativelib href="hdfnative-win.jar"/>
|
||||
</resources>
|
||||
<resources os="Linux">
|
||||
<nativelib href="hdfnative-linux64.jar"/>
|
||||
</resources>
|
||||
<application-desc main-class="org.broad.igv.ui.IGVMainFrame">
|
||||
<argument>-g</argument>
|
||||
<argument>${site_organism}</argument>
|
||||
<argument>${gff_file.url}</argument>
|
||||
</application-desc>
|
||||
</jnlp>
|
||||
]]>
|
||||
</param>
|
||||
<param type="template" name="redirect_url" strip="True" >
|
||||
#if $site_id.startswith( 'local_' )
|
||||
${site_link}?file=${gff_file.qp}&genome=${site_organism}&merge=true&name=${qp( ( $gff_file.name or $DATASET_HASH ).replace( ',', ';' ) )}
|
||||
@@ -92,19 +81,12 @@
|
||||
#end if
|
||||
</param>
|
||||
</dynamic_links>
|
||||
|
||||
|
||||
<dynamic_links from_data_table="igv_broad_genomes" skip_startswith="#" id="value" name="name">
|
||||
|
||||
<!-- Our input data table is one line per dbkey -->
|
||||
<filter>${ $dataset.dbkey == $value }</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>http://www.broadinstitute.org/igv/projects/current/igv.php?sessionURL=${gff_file.qp}&genome=${gff_file.dbkey}&merge=true&name=${qp( ( $gff_file.name or $DATASET_HASH ).replace( ',', ';' ) )}</url>
|
||||
|
||||
<param type="data" name="gff_file" url="galaxy_${DATASET_HASH}.${dataset.ext}" />
|
||||
|
||||
</dynamic_links>
|
||||
|
||||
</display>
|
||||
<!-- Dan Blankenberg -->
|
||||
|
||||
@@ -1,22 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<display id="igv_interval_as_bed" version="1.0.0" name="display with IGV">
|
||||
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="igv" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${$site_id.startswith( 'local_' ) or $dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${redirect_url}</url>
|
||||
|
||||
<param type="data" name="bed_file" url="galaxy_${DATASET_HASH}.bed" format="bedstrict" />
|
||||
<param type="template" name="site_organism" strip="True" >
|
||||
#if ($dataset.dbkey in $site_dbkeys)
|
||||
@@ -25,63 +20,57 @@
|
||||
$bed_file.dbkey
|
||||
#end if
|
||||
</param>
|
||||
|
||||
<param type="template" name="jnlp" url="galaxy_${DATASET_HASH}.jnlp" viewable="True" mimetype="application/x-java-jnlp-file"><?xml version="1.0" encoding="utf-8"?>
|
||||
<jnlp
|
||||
spec="1.0+"
|
||||
codebase="${site_link}">
|
||||
<information>
|
||||
<title>IGV 1.5</title>
|
||||
<vendor>The Broad Institute</vendor>
|
||||
<homepage href="http://www.broadinstitute.org/igv"/>
|
||||
<description>IGV Software</description>
|
||||
<description kind="short">IGV</description>
|
||||
</information>
|
||||
<security>
|
||||
<all-permissions/>
|
||||
</security>
|
||||
<resources>
|
||||
|
||||
<j2se version="1.5+" initial-heap-size="256m" max-heap-size="1100m"/>
|
||||
<jar href="igv.jar" download="eager" main="true"/>
|
||||
<jar href="batik-codec.jar" download="eager"/>
|
||||
<property name="apple.laf.useScreenMenuBar" value="true"/>
|
||||
<property name="com.apple.mrj.application.growbox.intrudes" value="false"/>
|
||||
<property name="com.apple.mrj.application.live-resize" value="true"/>
|
||||
<property name="com.apple.macos.smallTabs" value="true"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="i386">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macintel.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="ppc">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="PowerPC">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Windows">
|
||||
<property name="sun.java2d.noddraw" value="true"/>
|
||||
<nativelib href="hdfnative-win.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Linux">
|
||||
<nativelib href="hdfnative-linux64.jar"/>
|
||||
</resources>
|
||||
|
||||
<application-desc main-class="org.broad.igv.ui.IGVMainFrame">
|
||||
<argument>-g</argument>
|
||||
<argument>${site_organism}</argument>
|
||||
<argument>${bed_file.url}</argument>
|
||||
</application-desc>
|
||||
</jnlp>
|
||||
</param>
|
||||
<param type="template" name="jnlp" url="galaxy_${DATASET_HASH}.jnlp" viewable="True" mimetype="application/x-java-jnlp-file"><![CDATA[
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<jnlp
|
||||
spec="1.0+"
|
||||
codebase="${site_link}">
|
||||
<information>
|
||||
<title>IGV 1.5</title>
|
||||
<vendor>The Broad Institute</vendor>
|
||||
<homepage href="http://www.broadinstitute.org/igv"/>
|
||||
<description>IGV Software</description>
|
||||
<description kind="short">IGV</description>
|
||||
</information>
|
||||
<security>
|
||||
<all-permissions/>
|
||||
</security>
|
||||
<resources>
|
||||
<j2se version="1.5+" initial-heap-size="256m" max-heap-size="1100m"/>
|
||||
<jar href="igv.jar" download="eager" main="true"/>
|
||||
<jar href="batik-codec.jar" download="eager"/>
|
||||
<property name="apple.laf.useScreenMenuBar" value="true"/>
|
||||
<property name="com.apple.mrj.application.growbox.intrudes" value="false"/>
|
||||
<property name="com.apple.mrj.application.live-resize" value="true"/>
|
||||
<property name="com.apple.macos.smallTabs" value="true"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="i386">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macintel.jar"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="ppc">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="PowerPC">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
<resources os="Windows">
|
||||
<property name="sun.java2d.noddraw" value="true"/>
|
||||
<nativelib href="hdfnative-win.jar"/>
|
||||
</resources>
|
||||
<resources os="Linux">
|
||||
<nativelib href="hdfnative-linux64.jar"/>
|
||||
</resources>
|
||||
<application-desc main-class="org.broad.igv.ui.IGVMainFrame">
|
||||
<argument>-g</argument>
|
||||
<argument>${site_organism}</argument>
|
||||
<argument>${bed_file.url}</argument>
|
||||
</application-desc>
|
||||
</jnlp>
|
||||
]]>
|
||||
</param>
|
||||
<param type="template" name="redirect_url" strip="True" >
|
||||
#if $site_id.startswith( 'local_' )
|
||||
${site_link}?file=${bed_file.qp}&genome=${site_organism}&merge=true&name=${qp( ( $bed_file.name or $DATASET_HASH ).replace( ',', ';' ) )}
|
||||
@@ -92,19 +81,12 @@
|
||||
#end if
|
||||
</param>
|
||||
</dynamic_links>
|
||||
|
||||
|
||||
<dynamic_links from_data_table="igv_broad_genomes" skip_startswith="#" id="value" name="name">
|
||||
|
||||
<!-- Our input data table is one line per dbkey -->
|
||||
<filter>${ $dataset.dbkey == $value }</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>http://www.broadinstitute.org/igv/projects/current/igv.php?sessionURL=${bed_file.qp}&genome=${bed_file.dbkey}&merge=true&name=${qp( ( $bed_file.name or $DATASET_HASH ).replace( ',', ';' ) )}</url>
|
||||
|
||||
<param type="data" name="bed_file" url="galaxy_${DATASET_HASH}.bed" format="bedstrict" />
|
||||
|
||||
</dynamic_links>
|
||||
|
||||
</display>
|
||||
<!-- Dan Blankenberg -->
|
||||
|
||||
@@ -1,22 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<display id="igv_vcf" version="1.0.0" name="display with IGV">
|
||||
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="igv" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_organisms" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${$site_id.startswith( 'local_' ) or $dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${redirect_url}</url>
|
||||
|
||||
<param type="data" name="bgzip_file" url="galaxy_${DATASET_HASH}.vcf.gz" format="vcf_bgzip" />
|
||||
<param type="data" name="tabix_file" dataset="bgzip_file" url="galaxy_${DATASET_HASH}.vcf.gz.tbi" format="tabix" />
|
||||
<param type="template" name="site_organism" strip="True" >
|
||||
@@ -26,63 +21,57 @@
|
||||
$bgzip_file.dbkey
|
||||
#end if
|
||||
</param>
|
||||
|
||||
<param type="template" name="jnlp" url="galaxy_${DATASET_HASH}.jnlp" viewable="True" mimetype="application/x-java-jnlp-file"><?xml version="1.0" encoding="utf-8"?>
|
||||
<jnlp
|
||||
spec="1.0+"
|
||||
codebase="${site_link}">
|
||||
<information>
|
||||
<title>IGV 1.5</title>
|
||||
<vendor>The Broad Institute</vendor>
|
||||
<homepage href="http://www.broadinstitute.org/igv"/>
|
||||
<description>IGV Software</description>
|
||||
<description kind="short">IGV</description>
|
||||
</information>
|
||||
<security>
|
||||
<all-permissions/>
|
||||
</security>
|
||||
<resources>
|
||||
|
||||
<j2se version="1.5+" initial-heap-size="256m" max-heap-size="1100m"/>
|
||||
<jar href="igv.jar" download="eager" main="true"/>
|
||||
<jar href="batik-codec.jar" download="eager"/>
|
||||
<property name="apple.laf.useScreenMenuBar" value="true"/>
|
||||
<property name="com.apple.mrj.application.growbox.intrudes" value="false"/>
|
||||
<property name="com.apple.mrj.application.live-resize" value="true"/>
|
||||
<property name="com.apple.macos.smallTabs" value="true"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="i386">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macintel.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="ppc">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Mac" arch="PowerPC">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Windows">
|
||||
<property name="sun.java2d.noddraw" value="true"/>
|
||||
<nativelib href="hdfnative-win.jar"/>
|
||||
</resources>
|
||||
|
||||
<resources os="Linux">
|
||||
<nativelib href="hdfnative-linux64.jar"/>
|
||||
</resources>
|
||||
|
||||
<application-desc main-class="org.broad.igv.ui.IGVMainFrame">
|
||||
<argument>-g</argument>
|
||||
<argument>${site_organism}</argument>
|
||||
<argument>${bgzip_file.url}</argument>
|
||||
</application-desc>
|
||||
</jnlp>
|
||||
</param>
|
||||
<param type="template" name="jnlp" url="galaxy_${DATASET_HASH}.jnlp" viewable="True" mimetype="application/x-java-jnlp-file"><![CDATA[
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<jnlp
|
||||
spec="1.0+"
|
||||
codebase="${site_link}">
|
||||
<information>
|
||||
<title>IGV 1.5</title>
|
||||
<vendor>The Broad Institute</vendor>
|
||||
<homepage href="http://www.broadinstitute.org/igv"/>
|
||||
<description>IGV Software</description>
|
||||
<description kind="short">IGV</description>
|
||||
</information>
|
||||
<security>
|
||||
<all-permissions/>
|
||||
</security>
|
||||
<resources>
|
||||
<j2se version="1.5+" initial-heap-size="256m" max-heap-size="1100m"/>
|
||||
<jar href="igv.jar" download="eager" main="true"/>
|
||||
<jar href="batik-codec.jar" download="eager"/>
|
||||
<property name="apple.laf.useScreenMenuBar" value="true"/>
|
||||
<property name="com.apple.mrj.application.growbox.intrudes" value="false"/>
|
||||
<property name="com.apple.mrj.application.live-resize" value="true"/>
|
||||
<property name="com.apple.macos.smallTabs" value="true"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="i386">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macintel.jar"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="ppc">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
<resources os="Mac" arch="PowerPC">
|
||||
<property name="apple.awt.graphics.UseQuartz" value="false"/>
|
||||
<nativelib href="hdfnative-macppc.jar"/>
|
||||
</resources>
|
||||
<resources os="Windows">
|
||||
<property name="sun.java2d.noddraw" value="true"/>
|
||||
<nativelib href="hdfnative-win.jar"/>
|
||||
</resources>
|
||||
<resources os="Linux">
|
||||
<nativelib href="hdfnative-linux64.jar"/>
|
||||
</resources>
|
||||
<application-desc main-class="org.broad.igv.ui.IGVMainFrame">
|
||||
<argument>-g</argument>
|
||||
<argument>${site_organism}</argument>
|
||||
<argument>${bgzip_file.url}</argument>
|
||||
</application-desc>
|
||||
</jnlp>
|
||||
]]>
|
||||
</param>
|
||||
<param type="template" name="redirect_url" strip="True" >
|
||||
#if $site_id.startswith( 'local_' )
|
||||
${site_link}?file=${bgzip_file.qp}&genome=${site_organism}&merge=true&name=${qp( ( $bgzip_file.name or $DATASET_HASH ).replace( ',', ';' ) )}
|
||||
@@ -93,20 +82,13 @@
|
||||
#end if
|
||||
</param>
|
||||
</dynamic_links>
|
||||
|
||||
|
||||
<dynamic_links from_data_table="igv_broad_genomes" skip_startswith="#" id="value" name="name">
|
||||
|
||||
<!-- Our input data table is one line per dbkey -->
|
||||
<filter>${ $dataset.dbkey == $value }</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>http://www.broadinstitute.org/igv/projects/current/igv.php?sessionURL=${bgzip_file.qp}&genome=$bgzip_file.dbkey&merge=true&name=${qp( ( $bgzip_file.name or $DATASET_HASH ).replace( ',', ';' ) )}</url>
|
||||
|
||||
<param type="data" name="bgzip_file" url="galaxy_${DATASET_HASH}.vcf.gz" format="vcf_bgzip" />
|
||||
<param type="data" name="tabix_file" dataset="bgzip_file" url="galaxy_${DATASET_HASH}.vcf.gz.tbi" format="tabix" />
|
||||
|
||||
</dynamic_links>
|
||||
|
||||
</display>
|
||||
<!-- Dan Blankenberg -->
|
||||
|
||||
@@ -1,25 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<display id="rviewer_interval" version="1.0.0" name="display at RViewer">
|
||||
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="rviewer" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_genome_versions" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}/application/service/datasets/add?datasetName=${qp($bed_file.name)}&genomeVersion=${qp( $site_genome_versions[ $site_dbkeys.index( $bed_file.dbkey ) ] )}&dataFormat=bed&dataUrl=${bed_file.qp}</url>
|
||||
|
||||
<param type="data" name="bed_file" format="bed" url="galaxy.bed" />
|
||||
|
||||
</dynamic_links>
|
||||
|
||||
|
||||
</display>
|
||||
|
||||
@@ -1,25 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<display id="rviewer_vcf" version="1.0.0" name="display at RViewer">
|
||||
|
||||
<!-- Load links from file: one line to one link -->
|
||||
<dynamic_links site_type="rviewer" skip_startswith="#" id="0" name="1">
|
||||
|
||||
<!-- Define parameters by column from file, allow splitting on builds -->
|
||||
<dynamic_param name="site_id" value="0"/>
|
||||
<dynamic_param name="site_name" value="1"/>
|
||||
<dynamic_param name="site_link" value="2"/>
|
||||
<dynamic_param name="site_dbkeys" value="3" split="True" separator="," />
|
||||
<dynamic_param name="site_genome_versions" value="4" split="True" separator="," />
|
||||
|
||||
<!-- Filter out some of the links based upon matching site_dbkeys to dataset dbkey -->
|
||||
<filter>${dataset.dbkey in $site_dbkeys}</filter>
|
||||
|
||||
<!-- We define url and params as normal, but values defined in dynamic_param are available by specified name -->
|
||||
<url>${site_link}/application/service/datasets/add?datasetName=${qp($vcf_file.name)}&genomeVersion=${qp( $site_genome_versions[ $site_dbkeys.index( $vcf_file.dbkey ) ] )}&dataFormat=vcf&dataUrl=${vcf_file.qp}</url>
|
||||
|
||||
<param type="data" name="vcf_file" url="galaxy.vcf" />
|
||||
|
||||
</dynamic_links>
|
||||
|
||||
|
||||
</display>
|
||||
|
||||
@@ -0,0 +1,282 @@
|
||||
Galaxy API Documentation
|
||||
************************
|
||||
|
||||
Background
|
||||
==========
|
||||
In addition to being accessible through a web interface, Galaxy can also be
|
||||
accessed programmatically, through shell scripts and other programs. The web
|
||||
interface is appropriate for things like exploratory analysis, visualization,
|
||||
construction of workflows, and rerunning workflows on new datasets.
|
||||
|
||||
The web interface is less suitable for things like
|
||||
- Connecting a Galaxy instance directly to your sequencer and running
|
||||
workflows whenever data is ready.
|
||||
- Running a workflow against multiple datasets (which can be done with the
|
||||
web interface, but is tedious).
|
||||
- When the analysis involves complex control, such as looping and
|
||||
branching.
|
||||
|
||||
The Galaxy API addresses these and other situations by exposing Galaxy
|
||||
internals through an additional interface, known as an Application Programming
|
||||
Interface, or API.
|
||||
|
||||
Quickstart
|
||||
==========
|
||||
|
||||
Log in as your user, navigate to the API Keys page in the User menu, and
|
||||
generate a new API key. Make a note of the API key, and then pull up a
|
||||
terminal. Now we'll use the display.py script in your galaxy/scripts/api
|
||||
directory for a short example::
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/histories
|
||||
Collection Members
|
||||
------------------
|
||||
#1: /api/histories/8c49be448cfe29bc
|
||||
name: Unnamed history
|
||||
id: 8c49be448cfe29bc
|
||||
#2: /api/histories/33b43b4e7093c91f
|
||||
name: output test
|
||||
id: 33b43b4e7093c91f
|
||||
|
||||
The result is a Collection of the histories of the user specified by the API
|
||||
key (you). To look at the details of a particular history, say #1 above, do
|
||||
the following::
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/histories/8c49be448cfe29bc
|
||||
Member Information
|
||||
------------------
|
||||
state_details: {'ok': 1, 'failed_metadata': 0, 'upload': 0, 'discarded': 0, 'running': 0, 'setting_metadata': 0, 'error': 0, 'new': 0, 'queued': 0, 'empty': 0}
|
||||
state: ok
|
||||
contents_url: /api/histories/8c49be448cfe29bc/contents
|
||||
id: 8c49be448cfe29bc
|
||||
name: Unnamed history
|
||||
|
||||
This gives detailed information about the specific member in question, in this
|
||||
case the History. To view history contents, do the following::
|
||||
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/histories/8c49be448cfe29bc/contents
|
||||
Collection Members
|
||||
------------------
|
||||
#1: /api/histories/8c49be448cfe29bc/contents/6f91353f3eb0fa4a
|
||||
name: Pasted Entry
|
||||
type: file
|
||||
id: 6f91353f3eb0fa4a
|
||||
|
||||
What we have here is another Collection of items containing all of the datasets
|
||||
in this particular history. Finally, to view details of a particular dataset
|
||||
in this collection, execute the following::
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/histories/8c49be448cfe29bc/contents/6f91353f3eb0fa4a
|
||||
Member Information
|
||||
------------------
|
||||
misc_blurb: 1 line
|
||||
name: Pasted Entry
|
||||
data_type: txt
|
||||
deleted: False
|
||||
file_name: /Users/yoplait/work/galaxy-stock/database/files/000/dataset_82.dat
|
||||
state: ok
|
||||
download_url: /datasets/6f91353f3eb0fa4a/display?to_ext=txt
|
||||
visible: True
|
||||
genome_build: ?
|
||||
model_class: HistoryDatasetAssociation
|
||||
file_size: 17
|
||||
metadata_data_lines: 1
|
||||
id: 6f91353f3eb0fa4a
|
||||
misc_info: uploaded txt file
|
||||
metadata_dbkey: ?
|
||||
|
||||
And now you've successfully used the API to request and select a history,
|
||||
browse the contents of that history, and then look at detailed information
|
||||
about a particular dataset.
|
||||
|
||||
For a more comprehensive Data Library example, set the following option in your
|
||||
galaxy.ini as well, and restart galaxy again::
|
||||
|
||||
admin_users = you@example.org
|
||||
library_import_dir = /path/to/some/directory
|
||||
|
||||
In the directory you specified for 'library_import_dir', create some
|
||||
subdirectories, and put (or symlink) files to import into Galaxy into those
|
||||
subdirectories.
|
||||
|
||||
In Galaxy, create an account that matches the address you put in 'admin_users',
|
||||
then browse to that user's preferences and generate a new API Key. Copy the
|
||||
key to your clipboard and then use these scripts::
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/libraries
|
||||
Collection Members
|
||||
------------------
|
||||
|
||||
0 elements in collection
|
||||
|
||||
% ./library_create_library.py my_key http://localhost:4096/api/libraries api_test 'API Test Library'
|
||||
Response
|
||||
--------
|
||||
/api/libraries/f3f73e481f432006
|
||||
name: api_test
|
||||
id: f3f73e481f432006
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/libraries
|
||||
Collection Members
|
||||
------------------
|
||||
/api/libraries/f3f73e481f432006
|
||||
name: api_test
|
||||
id: f3f73e481f432006
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/libraries/f3f73e481f432006
|
||||
Member Information
|
||||
------------------
|
||||
synopsis: None
|
||||
contents_url: /api/libraries/f3f73e481f432006/contents
|
||||
description: API Test Library
|
||||
name: api_test
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/libraries/f3f73e481f432006/contents
|
||||
Collection Members
|
||||
------------------
|
||||
/api/libraries/f3f73e481f432006/contents/28202595c0d2591f61ddda595d2c3670
|
||||
name: /
|
||||
type: folder
|
||||
id: 28202595c0d2591f61ddda595d2c3670
|
||||
|
||||
% ./library_create_folder.py my_key http://localhost:4096/api/libraries/f3f73e481f432006/contents 28202595c0d2591f61ddda595d2c3670 api_test_folder1 'API Test Folder 1'
|
||||
Response
|
||||
--------
|
||||
/api/libraries/f3f73e481f432006/contents/28202595c0d2591fa4f9089d2303fd89
|
||||
name: api_test_folder1
|
||||
id: 28202595c0d2591fa4f9089d2303fd89
|
||||
|
||||
% ./library_upload_from_import_dir.py my_key http://localhost:4096/api/libraries/f3f73e481f432006/contents 28202595c0d2591fa4f9089d2303fd89 bed bed hg19
|
||||
Response
|
||||
--------
|
||||
/api/libraries/f3f73e481f432006/contents/e9ef7fdb2db87d7b
|
||||
name: 2.bed
|
||||
id: e9ef7fdb2db87d7b
|
||||
/api/libraries/f3f73e481f432006/contents/3b7f6a31f80a5018
|
||||
name: 3.bed
|
||||
id: 3b7f6a31f80a5018
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/libraries/f3f73e481f432006/contents
|
||||
Collection Members
|
||||
------------------
|
||||
/api/libraries/f3f73e481f432006/contents/28202595c0d2591f61ddda595d2c3670
|
||||
name: /
|
||||
type: folder
|
||||
id: 28202595c0d2591f61ddda595d2c3670
|
||||
/api/libraries/f3f73e481f432006/contents/28202595c0d2591fa4f9089d2303fd89
|
||||
name: /api_test_folder1
|
||||
type: folder
|
||||
id: 28202595c0d2591fa4f9089d2303fd89
|
||||
/api/libraries/f3f73e481f432006/contents/e9ef7fdb2db87d7b
|
||||
name: /api_test_folder1/2.bed
|
||||
type: file
|
||||
id: e9ef7fdb2db87d7b
|
||||
/api/libraries/f3f73e481f432006/contents/3b7f6a31f80a5018
|
||||
name: /api_test_folder1/3.bed
|
||||
type: file
|
||||
id: 3b7f6a31f80a5018
|
||||
|
||||
% ./display.py my_key http://localhost:4096/api/libraries/f3f73e481f432006/contents/e9ef7fdb2db87d7b
|
||||
Member Information
|
||||
------------------
|
||||
misc_blurb: 68 regions
|
||||
metadata_endCol: 3
|
||||
data_type: bed
|
||||
metadata_columns: 6
|
||||
metadata_nameCol: 4
|
||||
uploaded_by: nate@...
|
||||
metadata_strandCol: 6
|
||||
name: 2.bed
|
||||
genome_build: hg19
|
||||
metadata_comment_lines: None
|
||||
metadata_startCol: 2
|
||||
metadata_chromCol: 1
|
||||
file_size: 4272
|
||||
metadata_data_lines: 68
|
||||
message:
|
||||
metadata_dbkey: hg19
|
||||
misc_info: uploaded bed file
|
||||
date_uploaded: 2010-06-22T17:01:51.266119
|
||||
metadata_column_types: str, int, int, str, int, str
|
||||
|
||||
Other parameters are valid when uploading, they are the same parameters as are
|
||||
used in the web form, like 'link_data_only' and etc.
|
||||
|
||||
The request and response format should be considered alpha and are subject to change.
|
||||
|
||||
API Design Guidelines
|
||||
=====================
|
||||
|
||||
The following section outlines guidelines related to extending and/or modifing
|
||||
the Galaxy API. The Galaxy API has grown in an ad-hoc fashion over time by
|
||||
many contributors and so clients SHOULD NOT expect the API will conform to
|
||||
these guidelines - but developers contributing to the Galaxy API SHOULD follow
|
||||
these guidelines.
|
||||
|
||||
- API functionality should include docstring documentation for consumption
|
||||
by readthedocs.org.
|
||||
- Developers should familiarize themselves with the HTTP status code definitions
|
||||
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html. The API responses
|
||||
should properly set the status code according to the result - in particular
|
||||
2XX responses should be used for successful requests, 4XX for various
|
||||
kinds of client errors, and 5XX for the errors on the server side.
|
||||
- If there is an error processing some part of request (one item in a list
|
||||
for instance), the status code should be set to reflect the error and the
|
||||
partial result may or may not be returned depending on the controller -
|
||||
this behavior should be documented.
|
||||
- API methods should throw a finite number of exceptions
|
||||
(defined in :doc:`galaxy.exceptions`) and these should subclass
|
||||
`MessageException` and not paste/wsgi HTTP exceptions. When possible,
|
||||
the framework itself should be responsible catching these exceptions,
|
||||
setting the status code, and building an error response.
|
||||
- Error responses should not consist of plain text strings - they should be
|
||||
dictionaries describing the error and containing the following::
|
||||
|
||||
{
|
||||
"status_code": 400,
|
||||
"err_code": 400007,
|
||||
"err_msg": "Request contained invalid parameter, action could not be completed.",
|
||||
"type": "error",
|
||||
"extra_error_info": "Extra information."
|
||||
}
|
||||
|
||||
Various error conditions (once a format has been chosen and framework to
|
||||
enforce it in place) should be spelled out in this document.
|
||||
- Backward compatibility is important and should be maintained when possible.
|
||||
If changing behavior in a non-backward compatibile way please ensure one
|
||||
of the following holds - there is a strong reason to believe no consumers
|
||||
depend on a behavior, the behavior is effectively broken, or the API
|
||||
method being modified has not been part of a tagged dist release.
|
||||
|
||||
The following bullet points represent good practices more than guidelines, please
|
||||
consider them when modifying the API.
|
||||
|
||||
- Functionality should not be copied and pasted between controllers -
|
||||
consider refactoring functionality into associated classes or short of
|
||||
that into Mixins (http://en.wikipedia.org/wiki/Composition_over_inheritance)
|
||||
or into Managers (:doc:`galaxy.managers`).
|
||||
- API additions are more permanent changes to Galaxy than many other potential
|
||||
changes and so a second opinion on API changes should be sought. (Consider a
|
||||
pull request!)
|
||||
- New API functionality should include functional tests. These functional
|
||||
tests should be implemented in Python and placed in
|
||||
`test/functional/api`. (Once such a framework is in place - it is not
|
||||
right now).
|
||||
- Changes to reflect modifications to the API should be pushed upstream to
|
||||
the BioBlend project if possible.
|
||||
|
||||
Longer term goals/notes.
|
||||
|
||||
- It would be advantageous to have a clearer separation of anonymous and
|
||||
admin handling functionality.
|
||||
- If at some point in the future, functionality needs to be added that
|
||||
breaks backward compatibility in a significant way to a component used by
|
||||
the community - a "dev" variant of the API will be established and
|
||||
the community should be alerted and given a timeframe for when the old
|
||||
behavior will be replaced with the new behavior.
|
||||
- Consistent standards for range-based requests, batch requests, filtered
|
||||
requests, etc... should be established and documented here.
|
||||
|
||||
|
||||
.. include:: lib/galaxy.webapps.galaxy.api.rst
|
||||
+2
-4
@@ -17,8 +17,6 @@ import sys, os, datetime
|
||||
####### REQUIRED GALAXY INCLUDES
|
||||
|
||||
sys.path.append(os.path.join(os.getcwd(), '../../lib'))
|
||||
import galaxy
|
||||
from galaxy import eggs
|
||||
|
||||
#######
|
||||
|
||||
@@ -103,7 +101,7 @@ pygments_style = 'sphinx'
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
html_theme = 'default'
|
||||
html_theme = 'sphinx_rtd_theme'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
@@ -274,6 +272,6 @@ class Mock(object):
|
||||
return Mock()
|
||||
|
||||
# adding pbs_python, DRMAA_python, markupsafe, and drmaa here had no effect.
|
||||
MOCK_MODULES = ['tables', 'decorator', 'numpy']
|
||||
MOCK_MODULES = ['tables', 'decorator']
|
||||
for mod_name in MOCK_MODULES:
|
||||
sys.modules[mod_name] = Mock()
|
||||
|
||||
@@ -42,7 +42,7 @@ Contents
|
||||
.. toctree::
|
||||
:maxdepth: 5
|
||||
|
||||
API Documentation <lib/galaxy.webapps.galaxy.api>
|
||||
API Documentation <api_doc>
|
||||
|
||||
Application Documentation <lib/modules>
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
fpconst Module
|
||||
==============
|
||||
|
||||
.. automodule:: fpconst
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
@@ -1,11 +1,20 @@
|
||||
actions Package
|
||||
===============
|
||||
galaxy.actions package
|
||||
======================
|
||||
|
||||
:mod:`admin` Module
|
||||
-------------------
|
||||
.. automodule:: galaxy.actions
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.actions.admin module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.actions.admin
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
galaxy.auth.providers package
|
||||
=============================
|
||||
|
||||
.. automodule:: galaxy.auth.providers
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.auth.providers.alwaysreject module
|
||||
-----------------------------------------
|
||||
|
||||
.. automodule:: galaxy.auth.providers.alwaysreject
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.auth.providers.ldap_ad module
|
||||
------------------------------------
|
||||
|
||||
.. automodule:: galaxy.auth.providers.ldap_ad
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.auth.providers.localdb module
|
||||
------------------------------------
|
||||
|
||||
.. automodule:: galaxy.auth.providers.localdb
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
galaxy.auth package
|
||||
===================
|
||||
|
||||
.. automodule:: galaxy.auth
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
galaxy.auth.providers
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
galaxy.dataset_collections package
|
||||
==================================
|
||||
|
||||
.. automodule:: galaxy.dataset_collections
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
galaxy.dataset_collections.types
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.dataset_collections.builder module
|
||||
-----------------------------------------
|
||||
|
||||
.. automodule:: galaxy.dataset_collections.builder
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.dataset_collections.matching module
|
||||
------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.dataset_collections.matching
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.dataset_collections.registry module
|
||||
------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.dataset_collections.registry
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.dataset_collections.structure module
|
||||
-------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.dataset_collections.structure
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.dataset_collections.subcollections module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.dataset_collections.subcollections
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.dataset_collections.type_description module
|
||||
--------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.dataset_collections.type_description
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
galaxy.dataset_collections.types package
|
||||
========================================
|
||||
|
||||
.. automodule:: galaxy.dataset_collections.types
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.dataset_collections.types.list module
|
||||
--------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.dataset_collections.types.list
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.dataset_collections.types.paired module
|
||||
----------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.dataset_collections.types.paired
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -1,259 +1,244 @@
|
||||
converters Package
|
||||
==================
|
||||
galaxy.datatypes.converters package
|
||||
===================================
|
||||
|
||||
:mod:`bed_to_genetrack_converter` Module
|
||||
----------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.bed_to_genetrack_converter
|
||||
.. automodule:: galaxy.datatypes.converters
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`bed_to_gff_converter` Module
|
||||
----------------------------------
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.datatypes.converters.bed_to_gff_converter module
|
||||
-------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.bed_to_gff_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`bedgraph_to_array_tree_converter` Module
|
||||
----------------------------------------------
|
||||
galaxy.datatypes.converters.bedgraph_to_array_tree_converter module
|
||||
-------------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.bedgraph_to_array_tree_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`bgzip` Module
|
||||
-------------------
|
||||
galaxy.datatypes.converters.bgzip module
|
||||
----------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.bgzip
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`fasta_to_len` Module
|
||||
--------------------------
|
||||
galaxy.datatypes.converters.fasta_to_len module
|
||||
-----------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.fasta_to_len
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`fasta_to_tabular_converter` Module
|
||||
----------------------------------------
|
||||
galaxy.datatypes.converters.fasta_to_tabular_converter module
|
||||
-------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.fasta_to_tabular_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`fastq_to_fqtoc` Module
|
||||
----------------------------
|
||||
galaxy.datatypes.converters.fastq_to_fqtoc module
|
||||
-------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.fastq_to_fqtoc
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`fastqsolexa_to_fasta_converter` Module
|
||||
--------------------------------------------
|
||||
galaxy.datatypes.converters.fastqsolexa_to_fasta_converter module
|
||||
-----------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.fastqsolexa_to_fasta_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`fastqsolexa_to_qual_converter` Module
|
||||
-------------------------------------------
|
||||
galaxy.datatypes.converters.fastqsolexa_to_qual_converter module
|
||||
----------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.fastqsolexa_to_qual_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`gff_to_bed_converter` Module
|
||||
----------------------------------
|
||||
galaxy.datatypes.converters.gff_to_bed_converter module
|
||||
-------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.gff_to_bed_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`gff_to_interval_index_converter` Module
|
||||
---------------------------------------------
|
||||
galaxy.datatypes.converters.gff_to_interval_index_converter module
|
||||
------------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.gff_to_interval_index_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`interval_to_bed_converter` Module
|
||||
---------------------------------------
|
||||
galaxy.datatypes.converters.interval_to_bed_converter module
|
||||
------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.interval_to_bed_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`interval_to_bedstrict_converter` Module
|
||||
---------------------------------------------
|
||||
galaxy.datatypes.converters.interval_to_bedstrict_converter module
|
||||
------------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.interval_to_bedstrict_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`interval_to_coverage` Module
|
||||
----------------------------------
|
||||
galaxy.datatypes.converters.interval_to_coverage module
|
||||
-------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.interval_to_coverage
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`interval_to_fli` Module
|
||||
-----------------------------
|
||||
galaxy.datatypes.converters.interval_to_fli module
|
||||
--------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.interval_to_fli
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`interval_to_interval_index_converter` Module
|
||||
--------------------------------------------------
|
||||
galaxy.datatypes.converters.interval_to_interval_index_converter module
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.interval_to_interval_index_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`interval_to_summary_tree_converter` Module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.interval_to_summary_tree_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`interval_to_tabix_converter` Module
|
||||
-----------------------------------------
|
||||
galaxy.datatypes.converters.interval_to_tabix_converter module
|
||||
--------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.interval_to_tabix_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`lped_to_fped_converter` Module
|
||||
------------------------------------
|
||||
galaxy.datatypes.converters.lped_to_fped_converter module
|
||||
---------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.lped_to_fped_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`lped_to_pbed_converter` Module
|
||||
------------------------------------
|
||||
galaxy.datatypes.converters.lped_to_pbed_converter module
|
||||
---------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.lped_to_pbed_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`maf_to_fasta_converter` Module
|
||||
------------------------------------
|
||||
galaxy.datatypes.converters.maf_to_fasta_converter module
|
||||
---------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.maf_to_fasta_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`maf_to_interval_converter` Module
|
||||
---------------------------------------
|
||||
galaxy.datatypes.converters.maf_to_interval_converter module
|
||||
------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.maf_to_interval_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`pbed_ldreduced_converter` Module
|
||||
--------------------------------------
|
||||
galaxy.datatypes.converters.pbed_ldreduced_converter module
|
||||
-----------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.pbed_ldreduced_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`pbed_to_lped_converter` Module
|
||||
------------------------------------
|
||||
galaxy.datatypes.converters.pbed_to_lped_converter module
|
||||
---------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.pbed_to_lped_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`picard_interval_list_to_bed6_converter` Module
|
||||
----------------------------------------------------
|
||||
galaxy.datatypes.converters.picard_interval_list_to_bed6_converter module
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.picard_interval_list_to_bed6_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`sam_or_bam_to_summary_tree_converter` Module
|
||||
--------------------------------------------------
|
||||
galaxy.datatypes.converters.pileup_to_interval_index_converter module
|
||||
---------------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.sam_or_bam_to_summary_tree_converter
|
||||
.. automodule:: galaxy.datatypes.converters.pileup_to_interval_index_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`sam_to_bam` Module
|
||||
------------------------
|
||||
galaxy.datatypes.converters.sam_to_bam module
|
||||
---------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.sam_to_bam
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`vcf_to_interval_index_converter` Module
|
||||
---------------------------------------------
|
||||
galaxy.datatypes.converters.vcf_to_interval_index_converter module
|
||||
------------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.vcf_to_interval_index_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`vcf_to_summary_tree_converter` Module
|
||||
-------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.vcf_to_summary_tree_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`vcf_to_vcf_bgzip` Module
|
||||
------------------------------
|
||||
galaxy.datatypes.converters.vcf_to_vcf_bgzip module
|
||||
---------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.vcf_to_vcf_bgzip
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`wiggle_to_array_tree_converter` Module
|
||||
--------------------------------------------
|
||||
galaxy.datatypes.converters.wiggle_to_array_tree_converter module
|
||||
-----------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.wiggle_to_array_tree_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`wiggle_to_simple_converter` Module
|
||||
----------------------------------------
|
||||
galaxy.datatypes.converters.wiggle_to_simple_converter module
|
||||
-------------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.converters.wiggle_to_simple_converter
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
galaxy.datatypes.dataproviders package
|
||||
======================================
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.datatypes.dataproviders.base module
|
||||
------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders.base
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.dataproviders.chunk module
|
||||
-------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders.chunk
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.dataproviders.column module
|
||||
--------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders.column
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.dataproviders.dataset module
|
||||
---------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders.dataset
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.dataproviders.decorators module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders.decorators
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.dataproviders.exceptions module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders.exceptions
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.dataproviders.external module
|
||||
----------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders.external
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.dataproviders.hierarchy module
|
||||
-----------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders.hierarchy
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.dataproviders.line module
|
||||
------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.dataproviders.line
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -1,27 +1,36 @@
|
||||
display_applications Package
|
||||
============================
|
||||
galaxy.datatypes.display_applications package
|
||||
=============================================
|
||||
|
||||
:mod:`application` Module
|
||||
-------------------------
|
||||
.. automodule:: galaxy.datatypes.display_applications
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.datatypes.display_applications.application module
|
||||
--------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.display_applications.application
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`parameters` Module
|
||||
------------------------
|
||||
galaxy.datatypes.display_applications.parameters module
|
||||
-------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.display_applications.parameters
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`util` Module
|
||||
------------------
|
||||
galaxy.datatypes.display_applications.util module
|
||||
-------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.display_applications.util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
+184
-142
@@ -1,146 +1,7 @@
|
||||
datatypes Package
|
||||
=================
|
||||
galaxy.datatypes package
|
||||
========================
|
||||
|
||||
:mod:`assembly` Module
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.assembly
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`binary` Module
|
||||
--------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.binary
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`checkers` Module
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.checkers
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`chrominfo` Module
|
||||
-----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.chrominfo
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`coverage` Module
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.coverage
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`data` Module
|
||||
------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.data
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`genetics` Module
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.genetics
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`images` Module
|
||||
--------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.images
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`interval` Module
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.interval
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`metadata` Module
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.metadata
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`ngsindex` Module
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.ngsindex
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`qualityscore` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.qualityscore
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`registry` Module
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.registry
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`sequence` Module
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.sequence
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`sniff` Module
|
||||
-------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.sniff
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`tabular` Module
|
||||
---------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.tabular
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`tracks` Module
|
||||
--------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.tracks
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`xml` Module
|
||||
-----------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.xml
|
||||
.. automodule:: galaxy.datatypes
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
@@ -151,6 +12,187 @@ Subpackages
|
||||
.. toctree::
|
||||
|
||||
galaxy.datatypes.converters
|
||||
galaxy.datatypes.dataproviders
|
||||
galaxy.datatypes.display_applications
|
||||
galaxy.datatypes.util
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.datatypes.assembly module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.assembly
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.binary module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.binary
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.checkers module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.checkers
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.chrominfo module
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.chrominfo
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.coverage module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.coverage
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.data module
|
||||
----------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.data
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.genetics module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.genetics
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.graph module
|
||||
-----------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.graph
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.images module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.images
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.interval module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.interval
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.metadata module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.metadata
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.msa module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.msa
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.ngsindex module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.ngsindex
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.proteomics module
|
||||
----------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.proteomics
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.qualityscore module
|
||||
------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.qualityscore
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.registry module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.registry
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.sequence module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.sequence
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.sniff module
|
||||
-----------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.sniff
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.tabular module
|
||||
-------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.tabular
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.text module
|
||||
----------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.text
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.tracks module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.tracks
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.xml module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.xml
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,27 +1,36 @@
|
||||
util Package
|
||||
============
|
||||
|
||||
:mod:`util` Package
|
||||
-------------------
|
||||
galaxy.datatypes.util package
|
||||
=============================
|
||||
|
||||
.. automodule:: galaxy.datatypes.util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`gff_util` Module
|
||||
----------------------
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.datatypes.util.generic_util module
|
||||
-----------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.util.generic_util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.datatypes.util.gff_util module
|
||||
-------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.util.gff_util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`image_util` Module
|
||||
------------------------
|
||||
galaxy.datatypes.util.image_util module
|
||||
---------------------------------------
|
||||
|
||||
.. automodule:: galaxy.datatypes.util.image_util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,27 +1,28 @@
|
||||
eggs Package
|
||||
============
|
||||
|
||||
:mod:`eggs` Package
|
||||
-------------------
|
||||
galaxy.eggs package
|
||||
===================
|
||||
|
||||
.. automodule:: galaxy.eggs
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`dist` Module
|
||||
------------------
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.eggs.dist module
|
||||
-----------------------
|
||||
|
||||
.. automodule:: galaxy.eggs.dist
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`scramble` Module
|
||||
----------------------
|
||||
galaxy.eggs.scramble module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.eggs.scramble
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
exceptions Package
|
||||
==================
|
||||
|
||||
:mod:`exceptions` Package
|
||||
-------------------------
|
||||
galaxy.exceptions package
|
||||
=========================
|
||||
|
||||
.. automodule:: galaxy.exceptions
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.exceptions.error_codes module
|
||||
------------------------------------
|
||||
|
||||
.. automodule:: galaxy.exceptions.error_codes
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
result_handlers Package
|
||||
=======================
|
||||
galaxy.external_services.result_handlers package
|
||||
================================================
|
||||
|
||||
:mod:`basic` Module
|
||||
-------------------
|
||||
.. automodule:: galaxy.external_services.result_handlers
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.external_services.result_handlers.basic module
|
||||
-----------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.external_services.result_handlers.basic
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,26 +1,7 @@
|
||||
external_services Package
|
||||
=========================
|
||||
galaxy.external_services package
|
||||
================================
|
||||
|
||||
:mod:`actions` Module
|
||||
---------------------
|
||||
|
||||
.. automodule:: galaxy.external_services.actions
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`parameters` Module
|
||||
------------------------
|
||||
|
||||
.. automodule:: galaxy.external_services.parameters
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`service` Module
|
||||
---------------------
|
||||
|
||||
.. automodule:: galaxy.external_services.service
|
||||
.. automodule:: galaxy.external_services
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
@@ -32,3 +13,31 @@ Subpackages
|
||||
|
||||
galaxy.external_services.result_handlers
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.external_services.actions module
|
||||
---------------------------------------
|
||||
|
||||
.. automodule:: galaxy.external_services.actions
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.external_services.parameters module
|
||||
------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.external_services.parameters
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.external_services.service module
|
||||
---------------------------------------
|
||||
|
||||
.. automodule:: galaxy.external_services.service
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
forms Package
|
||||
=============
|
||||
galaxy.forms package
|
||||
====================
|
||||
|
||||
:mod:`forms` Module
|
||||
-------------------
|
||||
.. automodule:: galaxy.forms
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.forms.forms module
|
||||
-------------------------
|
||||
|
||||
.. automodule:: galaxy.forms.forms
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
actions Package
|
||||
===============
|
||||
|
||||
:mod:`actions` Package
|
||||
----------------------
|
||||
galaxy.jobs.actions package
|
||||
===========================
|
||||
|
||||
.. automodule:: galaxy.jobs.actions
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`post` Module
|
||||
------------------
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.actions.post module
|
||||
-------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.actions.post
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,59 +1,36 @@
|
||||
deferred Package
|
||||
================
|
||||
|
||||
:mod:`deferred` Package
|
||||
-----------------------
|
||||
galaxy.jobs.deferred package
|
||||
============================
|
||||
|
||||
.. automodule:: galaxy.jobs.deferred
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`data_transfer` Module
|
||||
---------------------------
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.deferred.data_transfer module
|
||||
-----------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.deferred.data_transfer
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`genome_index` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.deferred.genome_index
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`genome_transfer` Module
|
||||
-----------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.deferred.genome_transfer
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`liftover_transfer` Module
|
||||
-------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.deferred.liftover_transfer
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`manual_data_transfer` Module
|
||||
----------------------------------
|
||||
galaxy.jobs.deferred.manual_data_transfer module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.deferred.manual_data_transfer
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`pacific_biosciences_smrt_portal` Module
|
||||
---------------------------------------------
|
||||
galaxy.jobs.deferred.pacific_biosciences_smrt_portal module
|
||||
-----------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.deferred.pacific_biosciences_smrt_portal
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
galaxy.jobs.metrics.collectl package
|
||||
====================================
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.collectl
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.metrics.collectl.cli module
|
||||
---------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.collectl.cli
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.metrics.collectl.processes module
|
||||
---------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.collectl.processes
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.metrics.collectl.stats module
|
||||
-----------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.collectl.stats
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.metrics.collectl.subsystems module
|
||||
----------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.collectl.subsystems
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
galaxy.jobs.metrics.instrumenters package
|
||||
=========================================
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.instrumenters
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.metrics.instrumenters.collectl module
|
||||
-------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.instrumenters.collectl
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.metrics.instrumenters.core module
|
||||
---------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.instrumenters.core
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.metrics.instrumenters.cpuinfo module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.instrumenters.cpuinfo
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.metrics.instrumenters.env module
|
||||
--------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.instrumenters.env
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.metrics.instrumenters.meminfo module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.instrumenters.meminfo
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.metrics.instrumenters.uname module
|
||||
----------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.instrumenters.uname
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
galaxy.jobs.metrics package
|
||||
===========================
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
galaxy.jobs.metrics.collectl
|
||||
galaxy.jobs.metrics.instrumenters
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.metrics.formatting module
|
||||
-------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.metrics.formatting
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -1,46 +1,11 @@
|
||||
jobs Package
|
||||
============
|
||||
|
||||
:mod:`jobs` Package
|
||||
-------------------
|
||||
galaxy.jobs package
|
||||
===================
|
||||
|
||||
.. automodule:: galaxy.jobs
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`handler` Module
|
||||
---------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.handler
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`manager` Module
|
||||
---------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.manager
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`mapper` Module
|
||||
--------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.mapper
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`transfer_manager` Module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.transfer_manager
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
@@ -48,7 +13,92 @@ Subpackages
|
||||
|
||||
galaxy.jobs.actions
|
||||
galaxy.jobs.deferred
|
||||
galaxy.jobs.metrics
|
||||
galaxy.jobs.rules
|
||||
galaxy.jobs.runners
|
||||
galaxy.jobs.splitters
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.command_factory module
|
||||
----------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.command_factory
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.datasets module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.datasets
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.error_level module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.error_level
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.handler module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.handler
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.manager module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.manager
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.mapper module
|
||||
-------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.mapper
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.output_checker module
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.output_checker
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.rule_helper module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.rule_helper
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.stock_rules module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.stock_rules
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.transfer_manager module
|
||||
-----------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.transfer_manager
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
cli_job Package
|
||||
===============
|
||||
|
||||
:mod:`cli_job` Package
|
||||
----------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.cli_job
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`torque` Module
|
||||
--------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.cli_job.torque
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
cli_shell Package
|
||||
=================
|
||||
|
||||
:mod:`cli_shell` Package
|
||||
------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.cli_shell
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`rsh` Module
|
||||
-----------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.cli_shell.rsh
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
galaxy.jobs.runners.lwr_client package
|
||||
======================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
galaxy.jobs.runners.lwr_client.staging
|
||||
galaxy.jobs.runners.lwr_client.transport
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.runners.lwr_client.action_mapper module
|
||||
---------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.action_mapper
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.amqp_exchange module
|
||||
---------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.amqp_exchange
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.amqp_exchange_factory module
|
||||
-----------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.amqp_exchange_factory
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.client module
|
||||
--------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.client
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.config_util module
|
||||
-------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.config_util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.decorators module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.decorators
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.destination module
|
||||
-------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.destination
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.interface module
|
||||
-----------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.interface
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.job_directory module
|
||||
---------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.job_directory
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.manager module
|
||||
---------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.manager
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.object_client module
|
||||
---------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.object_client
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.path_mapper module
|
||||
-------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.path_mapper
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.setup_handler module
|
||||
---------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.setup_handler
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.util module
|
||||
------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
galaxy.jobs.runners.lwr_client.staging package
|
||||
==============================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.staging
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.runners.lwr_client.staging.down module
|
||||
--------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.staging.down
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.staging.up module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.staging.up
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
galaxy.jobs.runners.lwr_client.transport package
|
||||
================================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.transport
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.runners.lwr_client.transport.curl module
|
||||
----------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.transport.curl
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr_client.transport.standard module
|
||||
--------------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr_client.transport.standard
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -1,76 +1,101 @@
|
||||
runners Package
|
||||
===============
|
||||
|
||||
:mod:`runners` Package
|
||||
----------------------
|
||||
galaxy.jobs.runners package
|
||||
===========================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`cli` Module
|
||||
-----------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.cli
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`condor` Module
|
||||
--------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.condor
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`drmaa` Module
|
||||
-------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.drmaa
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`local` Module
|
||||
-------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.local
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`lwr` Module
|
||||
-----------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`pbs` Module
|
||||
-----------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.pbs
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`tasks` Module
|
||||
-------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.tasks
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
galaxy.jobs.runners.cli_job
|
||||
galaxy.jobs.runners.cli_shell
|
||||
galaxy.jobs.runners.lwr_client
|
||||
galaxy.jobs.runners.state_handlers
|
||||
galaxy.jobs.runners.util
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.runners.cli module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.cli
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.condor module
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.condor
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.drmaa module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.drmaa
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.local module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.local
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.lwr module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.lwr
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.pbs module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.pbs
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.pulsar module
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.pulsar
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.slurm module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.slurm
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.state_handler_factory module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.state_handler_factory
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.tasks module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.tasks
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
galaxy.jobs.runners.state_handlers package
|
||||
==========================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.state_handlers
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.runners.state_handlers.resubmit module
|
||||
--------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.state_handlers.resubmit
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
galaxy.jobs.runners.util.cli.job package
|
||||
========================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.cli.job
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.runners.util.cli.job.slurm module
|
||||
---------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.cli.job.slurm
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.util.cli.job.slurm_torque module
|
||||
----------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.cli.job.slurm_torque
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.util.cli.job.torque module
|
||||
----------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.cli.job.torque
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
galaxy.jobs.runners.util.cli package
|
||||
====================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.cli
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
galaxy.jobs.runners.util.cli.job
|
||||
galaxy.jobs.runners.util.cli.shell
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.runners.util.cli.factory module
|
||||
-------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.cli.factory
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
galaxy.jobs.runners.util.cli.shell package
|
||||
==========================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.cli.shell
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.runners.util.cli.shell.local module
|
||||
-----------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.cli.shell.local
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.util.cli.shell.rsh module
|
||||
---------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.cli.shell.rsh
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
galaxy.jobs.runners.util.condor package
|
||||
=======================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.condor
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
galaxy.jobs.runners.util.job_script package
|
||||
===========================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.job_script
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
galaxy.jobs.runners.util package
|
||||
================================
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
galaxy.jobs.runners.util.cli
|
||||
galaxy.jobs.runners.util.condor
|
||||
galaxy.jobs.runners.util.job_script
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.runners.util.env module
|
||||
-----------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.env
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.util.external module
|
||||
----------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.external
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.jobs.runners.util.kill module
|
||||
------------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.runners.util.kill
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -1,19 +1,28 @@
|
||||
splitters Package
|
||||
=================
|
||||
galaxy.jobs.splitters package
|
||||
=============================
|
||||
|
||||
:mod:`basic` Module
|
||||
-------------------
|
||||
.. automodule:: galaxy.jobs.splitters
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.jobs.splitters.basic module
|
||||
----------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.splitters.basic
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`multi` Module
|
||||
-------------------
|
||||
galaxy.jobs.splitters.multi module
|
||||
----------------------------------
|
||||
|
||||
.. automodule:: galaxy.jobs.splitters.multi
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,92 +1,228 @@
|
||||
managers Package
|
||||
==================
|
||||
|
||||
:mod:`managers` Package
|
||||
-------------------------
|
||||
galaxy.managers package
|
||||
=======================
|
||||
|
||||
.. automodule:: galaxy.managers
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
:mod:`api_keys` Module
|
||||
------------------------------
|
||||
galaxy.managers.annotatable module
|
||||
----------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.annotatable
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.api_keys module
|
||||
-------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.api_keys
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
:mod:`base` Module
|
||||
------------------------------
|
||||
galaxy.managers.base module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.base
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
:mod:`citations` Module
|
||||
------------------------------
|
||||
galaxy.managers.citations module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.citations
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
:mod:`collections` Module
|
||||
------------------------------
|
||||
galaxy.managers.collections module
|
||||
----------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.collections
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
:mod:`collections_util` Module
|
||||
------------------------------
|
||||
galaxy.managers.collections_util module
|
||||
---------------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.collections_util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.configuration module
|
||||
------------------------------------
|
||||
|
||||
:mod:`context` Module
|
||||
.. automodule:: galaxy.managers.configuration
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.containers module
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.containers
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.context module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.context
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.datasets module
|
||||
-------------------------------
|
||||
|
||||
:mod:`folders` Module
|
||||
.. automodule:: galaxy.managers.datasets
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.deletable module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.deletable
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.folders module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.folders
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
:mod:`hdas` Module
|
||||
------------------------------
|
||||
galaxy.managers.hdas module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.hdas
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
:mod:`histories` Module
|
||||
------------------------------
|
||||
galaxy.managers.histories module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.histories
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
:mod:`lddas` Module
|
||||
------------------------------
|
||||
galaxy.managers.lddas module
|
||||
----------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.lddas
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
:mod:`libraries` Module
|
||||
------------------------------
|
||||
galaxy.managers.libraries module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.libraries
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.pages module
|
||||
----------------------------
|
||||
|
||||
:mod:`roles` Module
|
||||
.. automodule:: galaxy.managers.pages
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.ratable module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.ratable
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.rbac_secured module
|
||||
-----------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.rbac_secured
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.roles module
|
||||
----------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.roles
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
:mod:`tags` Module
|
||||
galaxy.managers.secured module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.secured
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.sharable module
|
||||
-------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.sharable
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.taggable module
|
||||
-------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.taggable
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.tags module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.tags
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.users module
|
||||
----------------------------
|
||||
|
||||
:mod:`workflows` Module
|
||||
------------------------------
|
||||
.. automodule:: galaxy.managers.users
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.visualizations module
|
||||
-------------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.visualizations
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.managers.workflows module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.managers.workflows
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,20 @@
|
||||
migrate Package
|
||||
===============
|
||||
galaxy.model.migrate package
|
||||
============================
|
||||
|
||||
:mod:`check` Module
|
||||
-------------------
|
||||
.. automodule:: galaxy.model.migrate
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.model.migrate.check module
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: galaxy.model.migrate.check
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
ext Package
|
||||
===========
|
||||
|
||||
:mod:`ext` Package
|
||||
------------------
|
||||
|
||||
.. automodule:: galaxy.model.orm.ext
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`assignmapper` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: galaxy.model.orm.ext.assignmapper
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
@@ -1,26 +1,44 @@
|
||||
orm Package
|
||||
===========
|
||||
|
||||
:mod:`orm` Package
|
||||
------------------
|
||||
galaxy.model.orm package
|
||||
========================
|
||||
|
||||
.. automodule:: galaxy.model.orm
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`logging_connection_proxy` Module
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.model.orm.engine_factory module
|
||||
--------------------------------------
|
||||
|
||||
.. automodule:: galaxy.model.orm.engine_factory
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.model.orm.logging_connection_proxy module
|
||||
------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.model.orm.logging_connection_proxy
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
galaxy.model.orm.now module
|
||||
---------------------------
|
||||
|
||||
.. toctree::
|
||||
.. automodule:: galaxy.model.orm.now
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.model.orm.scripts module
|
||||
-------------------------------
|
||||
|
||||
.. automodule:: galaxy.model.orm.scripts
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.model.orm.ext
|
||||
|
||||
|
||||
@@ -1,46 +1,11 @@
|
||||
model Package
|
||||
=============
|
||||
|
||||
:mod:`model` Package
|
||||
--------------------
|
||||
galaxy.model package
|
||||
====================
|
||||
|
||||
.. automodule:: galaxy.model
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`custom_types` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: galaxy.model.custom_types
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`item_attrs` Module
|
||||
------------------------
|
||||
|
||||
.. automodule:: galaxy.model.item_attrs
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`mapping` Module
|
||||
---------------------
|
||||
|
||||
.. automodule:: galaxy.model.mapping
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`mapping_tests` Module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.model.mapping_tests
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
@@ -48,4 +13,57 @@ Subpackages
|
||||
|
||||
galaxy.model.migrate
|
||||
galaxy.model.orm
|
||||
galaxy.model.tool_shed_install
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.model.base module
|
||||
------------------------
|
||||
|
||||
.. automodule:: galaxy.model.base
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.model.custom_types module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.model.custom_types
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.model.item_attrs module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.model.item_attrs
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.model.mapping module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: galaxy.model.mapping
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.model.search module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: galaxy.model.search
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.model.util module
|
||||
------------------------
|
||||
|
||||
.. automodule:: galaxy.model.util
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
galaxy.model.tool_shed_install.migrate package
|
||||
==============================================
|
||||
|
||||
.. automodule:: galaxy.model.tool_shed_install.migrate
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.model.tool_shed_install.migrate.check module
|
||||
---------------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.model.tool_shed_install.migrate.check
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
galaxy.model.tool_shed_install package
|
||||
======================================
|
||||
|
||||
.. automodule:: galaxy.model.tool_shed_install
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
Subpackages
|
||||
-----------
|
||||
|
||||
.. toctree::
|
||||
|
||||
galaxy.model.tool_shed_install.migrate
|
||||
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.model.tool_shed_install.mapping module
|
||||
---------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.model.tool_shed_install.mapping
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -1,19 +1,44 @@
|
||||
objectstore Package
|
||||
===================
|
||||
|
||||
:mod:`objectstore` Package
|
||||
--------------------------
|
||||
galaxy.objectstore package
|
||||
==========================
|
||||
|
||||
.. automodule:: galaxy.objectstore
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`s3_multipart_upload` Module
|
||||
---------------------------------
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.objectstore.pulsar module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: galaxy.objectstore.pulsar
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.objectstore.rods module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.objectstore.rods
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.objectstore.s3 module
|
||||
----------------------------
|
||||
|
||||
.. automodule:: galaxy.objectstore.s3
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
galaxy.objectstore.s3_multipart_upload module
|
||||
---------------------------------------------
|
||||
|
||||
.. automodule:: galaxy.objectstore.s3_multipart_upload
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
openid Package
|
||||
==============
|
||||
|
||||
:mod:`openid` Package
|
||||
---------------------
|
||||
galaxy.openid package
|
||||
=====================
|
||||
|
||||
.. automodule:: galaxy.openid
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
:mod:`providers` Module
|
||||
-----------------------
|
||||
Submodules
|
||||
----------
|
||||
|
||||
galaxy.openid.providers module
|
||||
------------------------------
|
||||
|
||||
.. automodule:: galaxy.openid.providers
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user