Merge branch 'dev' of https://github.com/galaxyproject/galaxy into Reports_TTClean

This commit is contained in:
Airistotal
2015-06-30 09:50:13 -05:00
359 changed files with 10788 additions and 7049 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
-706
View File
@@ -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 + '">&#9660;</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);
}
};
+1 -1
View File
@@ -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;
}
});
});
@@ -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>',
@@ -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
@@ -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,7 +1,7 @@
define([], function() {
// ============================================================================
// LIBRARY RELATED MODELS
// TS GROUP RELATED MODELS
var Group = Backbone.Model.extend({
urlRoot: '/api/groups',
-3
View File
@@ -1,3 +0,0 @@
define( [], function() {
return 'Remove this file';
});
@@ -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,
+46
View File
@@ -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"/>
+6 -3
View File
@@ -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
+18
View File
@@ -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>
+8 -4
View File
@@ -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
+18
View File
@@ -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
View File
@@ -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"/>
+11 -12
View File
@@ -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}&amp;feature_url_0=${bam_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${bam_file.url}&amp;query_url=${bam_file.url}&amp;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}&amp;feature_url_0=${bam_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${bam_file.url}&amp;query_url=${bam_file.url}&amp;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>
-2
View File
@@ -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}&amp;loadresidues=false&amp;feature_url_0=${bigbed_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${bigbed_file.url}&amp;query_url=${bigbed_file.url}&amp;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>
+12 -14
View File
@@ -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}&amp;loadresidues=false&amp;feature_url_0=${bed_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${bed_file.url}&amp;query_url=${bed_file.url}&amp;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}&amp;loadresidues=false&amp;feature_url_0=${bed_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${bed_file.url}&amp;query_url=${bed_file.url}&amp;server_url=galaxy
</param>
</link>
</display>
+12 -14
View File
@@ -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}&amp;loadresidues=false&amp;feature_url_0=${bedgraph_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${bedgraph_file.url}&amp;query_url=${bedgraph_file.url}&amp;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}&amp;loadresidues=false&amp;feature_url_0=${bedgraph_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${bedgraph_file.url}&amp;query_url=${bedgraph_file.url}&amp;server_url=galaxy
</param>
</link>
</display>
-2
View File
@@ -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}&amp;loadresidues=false&amp;feature_url_0=${bigwig_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${bigwig_file.url}&amp;query_url=${bigwig_file.url}&amp;server_url=galaxy</url>
<param type="data" name="bigwig_file_for_name" viewable="False"/>
@@ -18,5 +17,4 @@
#end if
</param>-->
</link>
</display>
+1 -3
View File
@@ -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}&amp;loadresidues=false&amp;feature_url_0=${gtf_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${gtf_file.url}&amp;query_url=${gtf_file.url}&amp;server_url=galaxy
</param>
</link>
</display>
</display>
-2
View File
@@ -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}&amp;${position}&amp;loadresidues=false&amp;feature_url_0=${wig_file.url}&amp;sym_name_0=${niceName}&amp;sym_method_0=${wig_file.url}&amp;query_url=${wig_file.url}&amp;server_url=galaxy</url>
<param type="data" name="wig_file_for_name" viewable="False"/>
@@ -19,4 +18,3 @@
</param>
</link>
</display>
+51 -69
View File
@@ -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">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;jnlp
spec=&quot;1.0+&quot;
codebase=&quot;${site_link}&quot;&gt;
&lt;information&gt;
&lt;title&gt;IGV 1.5&lt;/title&gt;
&lt;vendor&gt;The Broad Institute&lt;/vendor&gt;
&lt;homepage href=&quot;http://www.broadinstitute.org/igv&quot;/&gt;
&lt;description&gt;IGV Software&lt;/description&gt;
&lt;description kind=&quot;short&quot;&gt;IGV&lt;/description&gt;
&lt;/information&gt;
&lt;security&gt;
&lt;all-permissions/&gt;
&lt;/security&gt;
&lt;resources&gt;
&lt;j2se version=&quot;1.5+&quot; initial-heap-size=&quot;256m&quot; max-heap-size=&quot;1100m&quot;/&gt;
&lt;jar href=&quot;igv.jar&quot; download=&quot;eager&quot; main=&quot;true&quot;/&gt;
&lt;jar href=&quot;batik-codec.jar&quot; download=&quot;eager&quot;/&gt;
&lt;property name=&quot;apple.laf.useScreenMenuBar&quot; value=&quot;true&quot;/&gt;
&lt;property name=&quot;com.apple.mrj.application.growbox.intrudes&quot; value=&quot;false&quot;/&gt;
&lt;property name=&quot;com.apple.mrj.application.live-resize&quot; value=&quot;true&quot;/&gt;
&lt;property name=&quot;com.apple.macos.smallTabs&quot; value=&quot;true&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;i386&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macintel.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;ppc&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macppc.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;PowerPC&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macppc.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Windows&quot;&gt;
&lt;property name=&quot;sun.java2d.noddraw&quot; value=&quot;true&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-win.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Linux&quot;&gt;
&lt;nativelib href=&quot;hdfnative-linux64.jar&quot;/&gt;
&lt;/resources&gt;
&lt;application-desc main-class=&quot;org.broad.igv.ui.IGVMainFrame&quot;&gt;
&lt;argument&gt;-g&lt;/argument&gt;
&lt;argument&gt;${site_organism}&lt;/argument&gt;
&lt;argument&gt;${bam_file.url}&lt;/argument&gt;
&lt;/application-desc&gt;
&lt;/jnlp&gt;
</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}&amp;genome=${site_organism}&amp;merge=true&amp;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}&amp;genome=${bam_file.dbkey}&amp;merge=true&amp;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 -->
+51 -69
View File
@@ -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">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;jnlp
spec=&quot;1.0+&quot;
codebase=&quot;${site_link}&quot;&gt;
&lt;information&gt;
&lt;title&gt;IGV 1.5&lt;/title&gt;
&lt;vendor&gt;The Broad Institute&lt;/vendor&gt;
&lt;homepage href=&quot;http://www.broadinstitute.org/igv&quot;/&gt;
&lt;description&gt;IGV Software&lt;/description&gt;
&lt;description kind=&quot;short&quot;&gt;IGV&lt;/description&gt;
&lt;/information&gt;
&lt;security&gt;
&lt;all-permissions/&gt;
&lt;/security&gt;
&lt;resources&gt;
&lt;j2se version=&quot;1.5+&quot; initial-heap-size=&quot;256m&quot; max-heap-size=&quot;1100m&quot;/&gt;
&lt;jar href=&quot;igv.jar&quot; download=&quot;eager&quot; main=&quot;true&quot;/&gt;
&lt;jar href=&quot;batik-codec.jar&quot; download=&quot;eager&quot;/&gt;
&lt;property name=&quot;apple.laf.useScreenMenuBar&quot; value=&quot;true&quot;/&gt;
&lt;property name=&quot;com.apple.mrj.application.growbox.intrudes&quot; value=&quot;false&quot;/&gt;
&lt;property name=&quot;com.apple.mrj.application.live-resize&quot; value=&quot;true&quot;/&gt;
&lt;property name=&quot;com.apple.macos.smallTabs&quot; value=&quot;true&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;i386&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macintel.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;ppc&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macppc.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;PowerPC&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macppc.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Windows&quot;&gt;
&lt;property name=&quot;sun.java2d.noddraw&quot; value=&quot;true&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-win.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Linux&quot;&gt;
&lt;nativelib href=&quot;hdfnative-linux64.jar&quot;/&gt;
&lt;/resources&gt;
&lt;application-desc main-class=&quot;org.broad.igv.ui.IGVMainFrame&quot;&gt;
&lt;argument&gt;-g&lt;/argument&gt;
&lt;argument&gt;${site_organism}&lt;/argument&gt;
&lt;argument&gt;${gff_file.url}&lt;/argument&gt;
&lt;/application-desc&gt;
&lt;/jnlp&gt;
</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}&amp;genome=${site_organism}&amp;merge=true&amp;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}&amp;genome=${gff_file.dbkey}&amp;merge=true&amp;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 -->
+51 -69
View File
@@ -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">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;jnlp
spec=&quot;1.0+&quot;
codebase=&quot;${site_link}&quot;&gt;
&lt;information&gt;
&lt;title&gt;IGV 1.5&lt;/title&gt;
&lt;vendor&gt;The Broad Institute&lt;/vendor&gt;
&lt;homepage href=&quot;http://www.broadinstitute.org/igv&quot;/&gt;
&lt;description&gt;IGV Software&lt;/description&gt;
&lt;description kind=&quot;short&quot;&gt;IGV&lt;/description&gt;
&lt;/information&gt;
&lt;security&gt;
&lt;all-permissions/&gt;
&lt;/security&gt;
&lt;resources&gt;
&lt;j2se version=&quot;1.5+&quot; initial-heap-size=&quot;256m&quot; max-heap-size=&quot;1100m&quot;/&gt;
&lt;jar href=&quot;igv.jar&quot; download=&quot;eager&quot; main=&quot;true&quot;/&gt;
&lt;jar href=&quot;batik-codec.jar&quot; download=&quot;eager&quot;/&gt;
&lt;property name=&quot;apple.laf.useScreenMenuBar&quot; value=&quot;true&quot;/&gt;
&lt;property name=&quot;com.apple.mrj.application.growbox.intrudes&quot; value=&quot;false&quot;/&gt;
&lt;property name=&quot;com.apple.mrj.application.live-resize&quot; value=&quot;true&quot;/&gt;
&lt;property name=&quot;com.apple.macos.smallTabs&quot; value=&quot;true&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;i386&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macintel.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;ppc&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macppc.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;PowerPC&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macppc.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Windows&quot;&gt;
&lt;property name=&quot;sun.java2d.noddraw&quot; value=&quot;true&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-win.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Linux&quot;&gt;
&lt;nativelib href=&quot;hdfnative-linux64.jar&quot;/&gt;
&lt;/resources&gt;
&lt;application-desc main-class=&quot;org.broad.igv.ui.IGVMainFrame&quot;&gt;
&lt;argument&gt;-g&lt;/argument&gt;
&lt;argument&gt;${site_organism}&lt;/argument&gt;
&lt;argument&gt;${bed_file.url}&lt;/argument&gt;
&lt;/application-desc&gt;
&lt;/jnlp&gt;
</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}&amp;genome=${site_organism}&amp;merge=true&amp;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}&amp;genome=${bed_file.dbkey}&amp;merge=true&amp;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 -->
+51 -69
View File
@@ -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">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;jnlp
spec=&quot;1.0+&quot;
codebase=&quot;${site_link}&quot;&gt;
&lt;information&gt;
&lt;title&gt;IGV 1.5&lt;/title&gt;
&lt;vendor&gt;The Broad Institute&lt;/vendor&gt;
&lt;homepage href=&quot;http://www.broadinstitute.org/igv&quot;/&gt;
&lt;description&gt;IGV Software&lt;/description&gt;
&lt;description kind=&quot;short&quot;&gt;IGV&lt;/description&gt;
&lt;/information&gt;
&lt;security&gt;
&lt;all-permissions/&gt;
&lt;/security&gt;
&lt;resources&gt;
&lt;j2se version=&quot;1.5+&quot; initial-heap-size=&quot;256m&quot; max-heap-size=&quot;1100m&quot;/&gt;
&lt;jar href=&quot;igv.jar&quot; download=&quot;eager&quot; main=&quot;true&quot;/&gt;
&lt;jar href=&quot;batik-codec.jar&quot; download=&quot;eager&quot;/&gt;
&lt;property name=&quot;apple.laf.useScreenMenuBar&quot; value=&quot;true&quot;/&gt;
&lt;property name=&quot;com.apple.mrj.application.growbox.intrudes&quot; value=&quot;false&quot;/&gt;
&lt;property name=&quot;com.apple.mrj.application.live-resize&quot; value=&quot;true&quot;/&gt;
&lt;property name=&quot;com.apple.macos.smallTabs&quot; value=&quot;true&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;i386&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macintel.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;ppc&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macppc.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Mac&quot; arch=&quot;PowerPC&quot;&gt;
&lt;property name=&quot;apple.awt.graphics.UseQuartz&quot; value=&quot;false&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-macppc.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Windows&quot;&gt;
&lt;property name=&quot;sun.java2d.noddraw&quot; value=&quot;true&quot;/&gt;
&lt;nativelib href=&quot;hdfnative-win.jar&quot;/&gt;
&lt;/resources&gt;
&lt;resources os=&quot;Linux&quot;&gt;
&lt;nativelib href=&quot;hdfnative-linux64.jar&quot;/&gt;
&lt;/resources&gt;
&lt;application-desc main-class=&quot;org.broad.igv.ui.IGVMainFrame&quot;&gt;
&lt;argument&gt;-g&lt;/argument&gt;
&lt;argument&gt;${site_organism}&lt;/argument&gt;
&lt;argument&gt;${bgzip_file.url}&lt;/argument&gt;
&lt;/application-desc&gt;
&lt;/jnlp&gt;
</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}&amp;genome=${site_organism}&amp;merge=true&amp;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}&amp;genome=$bgzip_file.dbkey&amp;merge=true&amp;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 -->
-8
View File
@@ -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)}&amp;genomeVersion=${qp( $site_genome_versions[ $site_dbkeys.index( $bed_file.dbkey ) ] )}&amp;dataFormat=bed&amp;dataUrl=${bed_file.qp}</url>
<param type="data" name="bed_file" format="bed" url="galaxy.bed" />
</dynamic_links>
</display>
-8
View File
@@ -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)}&amp;genomeVersion=${qp( $site_genome_versions[ $site_dbkeys.index( $vcf_file.dbkey ) ] )}&amp;dataFormat=vcf&amp;dataUrl=${vcf_file.qp}</url>
<param type="data" name="vcf_file" url="galaxy.vcf" />
</dynamic_links>
</display>
+282
View File
@@ -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
View File
@@ -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()
+1 -1
View File
@@ -42,7 +42,7 @@ Contents
.. toctree::
:maxdepth: 5
API Documentation <lib/galaxy.webapps.galaxy.api>
API Documentation <api_doc>
Application Documentation <lib/modules>
-7
View File
@@ -1,7 +0,0 @@
fpconst Module
==============
.. automodule:: fpconst
:members:
:undoc-members:
:show-inheritance:
+13 -4
View File
@@ -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:
+36
View File
@@ -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:
+15
View File
@@ -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:
+66 -81
View File
@@ -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
View File
@@ -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:
+18 -9
View File
@@ -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:
+10 -9
View File
@@ -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:
+14 -5
View File
@@ -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:
+31 -22
View File
@@ -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:
+13 -4
View File
@@ -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:
+8 -7
View File
@@ -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:
+12 -35
View File
@@ -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:
+28
View File
@@ -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:
+87 -37
View File
@@ -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:
+88 -63
View File
@@ -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:
+15 -6
View File
@@ -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:
+174 -38
View File
@@ -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:
+13 -4
View File
@@ -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:
-19
View File
@@ -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:
+28 -10
View File
@@ -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
+55 -37
View File
@@ -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:
+32 -7
View File
@@ -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:
+8 -7
View File
@@ -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