From 300d66fb114c40dcc12bfb2ea8599c1bac35383f Mon Sep 17 00:00:00 2001
From: Greg Von Kuster
Date: Wed, 21 Nov 2007 18:48:37 +0000
Subject: [PATCH] Modified tools using the tag approach for
dynamic options to use the new tag approach. I modified the
microbial import tool to use the older approach last week
and will modify it to use the new approach next week. A few tools
still use the oldest dynamic_options attribute approach, but modifying them
to use the new tag will be trivial. I'll do this when I return.
---
lib/galaxy/tools/dynamic_options.py | 620 +++++++++---------
.../encode_import_all_latest_datasets.xml | 20 +-
...ncode_import_chromatin_and_chromosomes.xml | 22 +-
tools/data_source/encode_import_gencode.xml | 20 +-
.../encode_import_genes_and_transcripts.xml | 20 +-
...import_multi-species_sequence_analysis.xml | 20 +-
...encode_import_transcription_regulation.xml | 20 +-
tools/data_source/microbial_import.xml | 97 ++-
tools/data_source/microbial_import_code.py | 207 +-----
tools/encode/random_intervals.xml | 7 +-
tools/extract/extractAxt_wrapper.xml | 7 +-
tools/extract/extract_GFF_Features.xml | 65 +-
tools/extract/genebed_maf_to_fasta.xml | 23 +-
tools/extract/interval2maf.xml | 78 ++-
.../extract/interval_maf_to_merged_fasta.xml | 29 +-
tools/extract/phastOdds/phastOdds_tool.xml | 7 +-
tools/filters/axt_to_concat_fasta.xml | 10 +-
tools/filters/axt_to_fasta.xml | 10 +-
tools/filters/axt_to_lav.xml | 10 +-
tools/filters/maf/maf_filter.xml | 18 +-
tools/filters/maf/maf_limit_to_species.xml | 4 +-
tools/filters/maf/maf_stats.xml | 11 +-
tools/filters/maf/maf_thread_for_species.xml | 4 +-
tools/filters/maf/maf_to_bed.xml | 4 +-
tools/filters/maf/maf_to_fasta.xml | 8 +-
tools/regVariation/getIndels_3way.xml | 4 +-
tools/regVariation/quality_filter.xml | 8 +-
.../aggregate_binned_scores_in_intervals.xml | 7 +-
28 files changed, 653 insertions(+), 707 deletions(-)
diff --git a/lib/galaxy/tools/dynamic_options.py b/lib/galaxy/tools/dynamic_options.py
index 7e0063b977b..c1010a29e4e 100644
--- a/lib/galaxy/tools/dynamic_options.py
+++ b/lib/galaxy/tools/dynamic_options.py
@@ -8,8 +8,20 @@ class DynamicOptions( object ):
def __init__( self, elem ):
# FIXME: Pushing these things in as options ends up being pretty ugly.
# We should find a way to make this work through the validation mechanism.
- self.no_data_option = ( 'No data available for this build', 'None', True )
+ self.no_data_option = [ ( 'No data available for this build', 'None', True ) ]
+ self.no_elems_option = [ ( 'No elements to display, please choose another column', 'None', True ) ]
+ self.unspecified_build_option = [ ( 'unspecified', '?', True ) ]
+ self.build_not_set_option = [ ( 'Build not set, click the pencil icon in your history item to set the build', 'None', True ) ]
+ self.wait_for_maf_option = [ ( 'You must wait for the MAF file to be created before you can use this tool.', 'None', True ) ]
self.from_file = elem.get( 'from_file', None )
+ if self.from_file is not None:
+ self.from_file = self.from_file.strip()
+ try:
+ i = self.from_file.rindex( "/" )
+ self.data_file = self.from_file[ i+1: ]
+ except:
+ self.data_file = self.from_file
+ else: self.data_file = None
if elem.tag == 'select_options':
self.data_ref = elem.get( 'data_ref', None )
self.param_ref = elem.get( 'param_ref', None )
@@ -17,18 +29,19 @@ class DynamicOptions( object ):
assert self.func is not None, "Value for option generator function not found"
self.func_params = elem.findall( 'func_param' )
else: #elem.tag =='options'
- self.name_col = int( elem.get( 'name_col', None ) )
- assert self.name_col is not None, "Value for option generator name_col not found"
- self.value_col = int( elem.get( 'value_col', None ) )
- assert self.value_col is not None, "Value for option generator value_col not found"
self.filters = elem.findall( 'filter' )
+ self.data_ref = None
for filter in self.filters:
filter_type = filter.get( 'type', None )
- assert filter_type is not None, "type attribute missing from filter"
- filter_type = filter_type.strip()
- if filter_type == 'data_meta':
- # We're using metadata information from self.data_ref
+ assert filter_type is not None, "Required 'type' attribute missing from filter"
+ if filter_type.strip() == 'data_meta':
self.data_ref = filter.get( 'data_ref', None )
+ assert self.data_ref is not None, "Required 'data_ref' attribute missing from 'data_meta' filter"
+ self.data_ref = self.data_ref.strip()
+ elif filter_type.strip() == 'param_meta':
+ self.param_ref = filter.get( 'param_ref', None )
+ assert self.param_ref is not None, "Required 'param_ref' attribute missing from 'param_meta' filter"
+ self.param_ref = self.param_ref.strip()
#FIXME: this attr is used only by microbial import, so shouldn't be at this level
self.microbe_info = None
def get_dataset( self, trans, other_values ):
@@ -37,46 +50,291 @@ class DynamicOptions( object ):
# Get the value of the associated DataToolParameter (a dataset)
dataset = other_values[ self.data_ref ]
if dataset is None or dataset == '':
- """
- Both of these values indicate that no dataset is selected. However, 'None' indicates that the dataset is optional
- while '' indicates that it is not. Currently dynamically generated select lists do not work well with optional datasets.
- """
+ # Both of these values indicate that no dataset is selected. However, 'None'
+ # indicates that the dataset is optional while '' indicates that it is not.
+ # Currently dynamically generated select lists do not work well with optional datasets.
return None
return dataset
def get_param_value( self, trans, other_values ):
if self.param_ref is None: return None
assert self.param_ref in other_values, "Value for associated parameter %s not found" %self.param_ref.name
return other_values[ self.param_ref ]
- def load_from_file( self, key=None, value=None, col=None, sep='\t' ):
- """key: build, value: dbkey, col: 0"""
+ def get_unique_elems( self, elems ):
+ seen = set()
+ return [ x for x in elems if x not in seen and not seen.add( x ) ]
+ def get_options( self, trans, other_values ):
+ filters = {}
+ key = None
+ # Check for filters and build a dictionary from them
+ for filter in self.filters:
+ filter_type = filter.get( 'type', None )
+ assert filter_type is not None, "type attribute missing from filter"
+ filter_type = filter_type.strip()
+ if filter_type == 'data_meta':
+ filters[ 'data_meta' ] = {}
+ dataset = self.get_dataset( trans, other_values )
+ if dataset is None: return []
+ key = filter.get( 'key', None )
+ assert key is not None, "key attribute missing from data_meta filter"
+ filters[ 'data_meta' ][ 'key' ] = key.strip()
+ value = filter.get( 'value', None )
+ if value is not None: value = value.strip()
+ else:
+ if key == 'build': value = dataset.get_dbkey()
+ elif key == 'file_name': value = dataset.get_file_name()
+ elif key == 'species': value = dataset.metadata.species
+ elif key == 'maf': pass # value does not need to be set, maf tools require special handling - see below
+ filters[ 'data_meta' ][ 'value' ] = value
+ if self.data_file == 'maf_index.loc' and key == 'build' and value == '?':
+ return self.build_not_set_option
+ elif filter_type == 'param_meta':
+ filters[ 'param_meta' ] = {}
+ key = filter.get( 'key', None )
+ assert key is not None, "key attribute missing from param_meta filter"
+ filters[ 'param_meta' ][ 'key' ] = key.strip()
+ value = self.get_param_value( trans, other_values )
+ filters[ 'param_meta' ][ 'value' ] = value
+ elif filter_type == 'column':
+ n = filter.get( 'name', None )
+ assert n is not None, "column filters require a 'name' attribute"
+ n = n.strip()
+ v = filter.get( 'value', None )
+ assert v is not None, "column filters require a 'value' attribute"
+ v = v.strip()
+ try:
+ filters[ 'columns' ][ n ] = v
+ except:
+ filters[ 'columns' ] = {}
+ filters[ 'columns' ][ n ] = v
+ elif filter_type == 'param':
+ # TODO: I'm not sure I like the way 'param' filters are implemented, I may be rethinking this approach...
+ n = filter.get( 'name', None )
+ assert n is not None, "param filters require a 'name' attribute"
+ n = n.strip()
+ v = filter.get( 'value', None )
+ assert v is not None, "param filters require a 'value' attribute"
+ v = v.strip()
+ try:
+ filters[ 'params' ][ n ] = v
+ except:
+ filters[ 'params' ] = {}
+ filters[ 'params' ][ n ] = v
+ # Now that we've parsed our filters, we need to see if the tool is a maf tool which requires special handling
+ try: key = filters[ 'data_meta' ][ 'key' ]
+ except: key == None
+ if key == 'maf':
+ maf_source = filters[ 'params' ][ 'maf_source' ]
+ if maf_source == 'cached':
+ maf_uid = filters[ 'param_meta' ][ 'value' ]
+ if maf_uid is None: return self.no_data_option
+ if maf_uid == 'None': return self.build_not_set_option
+ elif maf_source == 'user':
+ dataset = self.get_dataset( trans, other_values )
+ if dataset is None: return self.wait_for_maf_option
+ filters[ 'data_meta' ][ 'key' ] = 'species'
+ filters[ 'data_meta' ][ 'value' ] = dataset.metadata.species
+ return self.generate_options( filters )
+ def generate_options( self, filters={}, sep='\t' ):
+ # Extract the info from the tool's options filters, if any
+ try: key = filters[ 'data_meta' ][ 'key' ]
+ except: key = None
+ try: value = filters[ 'data_meta' ][ 'value' ]
+ except: value = None
+ if key is None and value is None:
+ # Look for param_meta filter
+ try: key = filters[ 'param_meta' ][ 'key' ]
+ except: key = None
+ try: value = filters[ 'param_meta' ][ 'value' ]
+ except: value = None
+ try: name_col = int( filters[ 'columns' ][ 'name_col' ] )
+ except: name_col = None
+ try: value_col = int( filters[ 'columns' ][ 'value_col' ] )
+ except: value_col = None
+ try: encode_group = filters[ 'params' ][ 'encode_group' ]
+ except: encode_group = None
+ try: build = filters[ 'params' ][ 'build' ]
+ except: build = None
+ try: maf_source = filters[ 'params' ][ 'maf_source' ]
+ except: maf_source = None
+
+ # Order of the following conditionals is critical
+ if encode_group is not None and build is not None:
+ return self.generate_from_file_for_encode( encode_group, build )
+ elif key == 'species':
+ return self.generate_from_dataset_for_species( value )
+ elif key == 'maf':
+ return self.generate_from_file_for_maf( maf_source, value )
+ elif key == 'file_name':
+ return self.generate_from_dataset( value, value_col )
+ elif key == 'build':
+ build_col = int( filters[ 'columns' ][ 'build_col' ].strip() )
+ return self.generate_from_file_for_build( value, build_col, name_col, value_col )
+ elif key is None:
+ return self.generate_from_file( name_col, value_col )
+ def generate_from_file_for_encode( self, encode_group, build, sep='\t' ):
+ options = []
+ def generate():
+ encode_sets = {}
+ for line in open( self.from_file ):
+ line = line.rstrip( '\r\n' )
+ if line and not line.startswith( '#' ):
+ try:
+ fields = line.split( sep )
+ encode_group = fields[ 0 ]
+ build = fields[ 1 ]
+ description = fields[ 2 ]
+ uid = fields[ 3 ]
+ path = fields[ 4 ]
+ try: file_type = fields[ 5 ]
+ except: file_type = "bed"
+ #TODO: will remove this later, when galaxy can handle gff files
+ if file_type != "bed": continue
+ if not os.path.isfile( path ): continue
+ except: continue
+ try: temp = encode_sets[ encode_group ]
+ except: encode_sets[ encode_group ] = {}
+ try:
+ encode_sets[ encode_group ][ build ].append( ( description, uid, False ) )
+ except:
+ encode_sets[ encode_group ][ build ] = []
+ encode_sets[ encode_group ][ build] .append( ( description, uid, False ) )
+ #Order by description and date, highest date on top and bold
+ for group in encode_sets:
+ for build in encode_sets[ group ]:
+ ordered_build = []
+ for description, uid, selected in encode_sets[ group ][ build ]:
+ item = {}
+ item[ 'date' ] = 0
+ item[ 'description' ] = ""
+ item[ 'uid' ] = uid
+ item[ 'selected' ] = selected
+ item[ 'partitioned' ] = False
+ if description[ -21: ] == '[gencode_partitioned]':
+ item[ 'date' ] = description[ -31:-23 ]
+ item[ 'description' ] = description[ 0:-32 ]
+ item[ 'partitioned' ] = True
+ else:
+ item[ 'date' ] = description[ -9:-1 ]
+ item[ 'description' ] = description[ 0:-10 ]
+
+ for i in range( len( ordered_build ) ):
+ ordered_description, ordered_uid, ordered_selected, ordered_item = ordered_build[ i ]
+ if item[ 'description' ] < ordered_item[ 'description' ]:
+ ordered_build.insert( i, ( description, uid, selected, item ) )
+ break
+ if item[ 'description' ] == ordered_item[ 'description' ] and item[ 'partitioned' ] == ordered_item[ 'partitioned' ]:
+ if int( item[ 'date' ] ) > int( ordered_item[ 'date' ] ):
+ ordered_build.insert( i, ( description, uid, selected, item ) )
+ break
+ else: ordered_build.append( ( description, uid, selected, item ) )
+ last_desc = None
+ last_partitioned = None
+ for i in range( len( ordered_build ) ) :
+ description, uid, selected, item = ordered_build[ i ]
+ if item[ 'partitioned' ] != last_partitioned or last_desc != item[ 'description' ]:
+ last_desc = item[ 'description' ]
+ description = "" + description + " "
+ else:
+ last_desc = item[ 'description' ]
+ last_partitioned = item[ 'partitioned' ]
+ encode_sets[ group ][ build ][ i ] = ( description, uid, selected )
+ return encode_sets
+ d = generate()
+ if len( d ) < 1:
+ return self.no_data_option
+ else:
+ try: options = d[ encode_group ][ build ][ 0: ]
+ except: return self.no_data_option
+ return options
+ def generate_from_dataset_for_species( self, value ):
+ options = []
+ for species in value:
+ options.append( ( species, species, False ) )
+ return options
+ def generate_from_file_for_maf( self, maf_source, maf_uid, sep='\t' ):
options = []
d = {}
- tool_type = None
-
+ # We will only reach here if the maf-source param value is 'cached'
for line in open( self.from_file ):
line = line.rstrip( '\r\n' )
if line and not line.startswith( '#' ):
+ fields = line.split( sep )
try:
- fields = line.split( sep )
- if key == 'build':
- if col is not None:
- if fields[ col ].strip() == 'align': # tool is: Extract blastz alignments1
- tool_type = 'blastz'
- try: d[ fields[ self.name_col ] ].append( fields[ self.value_col ] )
- except: d[ fields[ self.name_col ] ] = [ fields[ self.value_col ] ]
- else: # tool is one of: aggregate_scores_in_intervals2, phastOdds_for_intervals, random_intervals1
- tool_type = 'intervals'
- if not fields[ col ] in d:
- d[ fields[ col ] ] = []
- d[ fields[ col ] ].append( (fields[ self.name_col ], fields[ self.value_col ]) )
- else:
- options.append( (fields[ self.name_col ], fields[ self.value_col ], False) )
- elif key == 'some future key':
- pass
- else: # tool is one of: axt_to_concat_fasta, axt_to_fasta, axt_to_lav_1
- options.append( (fields[ self.name_col ], fields[ self.value_col ], False) )
+ name_col_data = fields[ 0 ] # ENCODE TBA (hg17)
+ value_col_data = fields[ 1 ] # ENCODE_TBA_hg17
+ builds_col_data = fields[ 2 ] # armadillo=armadillo,baboon=baboon,galGal2=chicken,...
+ build_list = []
+ builds = builds_col_data.split( ',' )
+ for build in builds:
+ this_build = build.split( '=' )[ 0 ]
+ build_list.append( this_build )
+ d[ value_col_data ] = {}
+ d[ value_col_data ][ 'description' ] = name_col_data
+ d[ value_col_data ][ 'builds' ] = build_list
except: continue
- if tool_type == 'blastz':
+ for key in d[ maf_uid ][ 'builds' ]:
+ options.append( ( key, key, False ) )
+ if not options: return self.no_data_option
+ return options
+ def generate_from_dataset( self, value, value_col, sep='\t' ):
+ options = []
+ elem_list = []
+ try: in_file = open( value, "r" )
+ except: return self.no_data_option
+ try:
+ for line in in_file:
+ line = line.rstrip( "\r\n" )
+ if line and not line.startswith( '#' ):
+ elems = line.split( sep )
+ elem_list.append( elems[ value_col ] )
+ except: pass
+ in_file.close()
+ if not( elem_list ): return self.no_elems_option
+ elem_list = self.get_unique_elems( elem_list )
+ for elem in elem_list:
+ options.append( ( elem, elem, False ) )
+ return options
+ def generate_from_file_for_build( self, value, build_col, name_col, value_col, sep='\t' ):
+ options = []
+ d = {}
+ for line in open( self.from_file ):
+ line = line.rstrip( '\r\n' )
+ if line and not line.startswith( '#' ):
+ fields = line.split( sep )
+ # TDDO: regenerate the following data files so that they follow a column standard.
+ # build_col = 0 - put build values in column 0
+ # name_col = 1 - put the select list description values in column 1
+ # value_col = 2 - put the select list value values in column 2
+ # This will allow us to eliminate the following data_file conditionals
+ #
+ # TODO: the alignseq.loc file is currently ony used by the "Extract blastz alignments1"
+ # tool, which seems to be deprecated. Can we eliminate it altogether?
+ if self.data_file == 'alignseq.loc':
+ if fields[ build_col ].strip() == 'align':
+ try: d[ fields[ name_col ] ].append( fields[ value_col ] )
+ except: d[ fields[ name_col ] ] = [ fields[ value_col ] ]
+ elif self.data_file == 'regions.loc' or self.data_file == 'phastOdds.loc' or self.data_file == 'binned_scores.loc':
+ if not fields[ build_col ] in d:
+ d[ fields[ build_col ] ] = []
+ d[ fields[ build_col ] ].append( (fields[ name_col ], fields[ value_col ]) )
+ elif self.data_file == 'maf_index.loc':
+ try:
+ maf_desc = fields[ name_col ] # ENCODE TBA (hg17)
+ maf_uid = fields[ value_col ] # ENCODE_TBA_hg17
+ builds = fields[ build_col ] # armadillo=armadillo,baboon=baboon,galGal2=chicken,...
+ build_list = []
+ split_builds = builds.split( ',' )
+ for build in split_builds:
+ this_build = build.split( '=' )[0]
+ build_list.append( this_build )
+ d[ maf_uid ] = {}
+ d[ maf_uid ][ 'description' ] = maf_desc
+ d[ maf_uid ][ 'builds' ] = build_list
+ except: continue
+
+ # TODO: the alignseq.loc file is currently ony used by the "Extract blastz alignments1"
+ # tool, which seems to be deprecated. Can we eliminate it altogether?
+ if self.data_file == 'alignseq.loc':
# FIXME: We need a database of descriptive names corresponding to dbkeys.
# We need to resolve the musMusX <--> mmX confusion
if value[ 0:2 ] == "mm": value = value.replace( 'mm', 'musMus' )
@@ -84,279 +342,27 @@ class DynamicOptions( object ):
if value in d:
for val in d[ value ]:
options.append( ( val, val, False ) )
- elif tool_type == 'intervals':
+ elif self.data_file == 'regions.loc' or self.data_file == 'phastOdds.loc' or self.data_file == 'binned_scores.loc':
if value in d:
for (key, val) in d[ value ]:
- options.append( (key, val, False) )
- else: # tool_type is some future tool type
- pass
- if key == 'build' and not options: return [ ('unspecified', '?', True ) ]
+ options.append( ( key, val, False ) )
+ elif self.data_file == 'maf_index.loc':
+ for key in d:
+ if value in d[ key ][ 'builds' ]:
+ options.append( ( d[ key ][ 'description' ], key, False ) )
+ if not options:
+ return self.no_data_option
+ if not options:
+ return self.unspecified_build_option
return options
- def get_options( self, trans, other_values ):
- """
- Used by the following tools so far...
- random_intervals1 - associated data file: /depot/data2/galaxy/regions.loc
- phastOdds_for_intervals - associated data file: /depot/data2/galaxy/phastOdds.loc
- aggregate_scores_in_intervals2 - associated data file: /depot/data2/galaxy/binned_scores.loc
- axt_to_concat_fasta - associated data file: static/ucsc/builds.txt
- axt_to_fasta - associated data file: static/ucsc/builds.txt
- axt_to_lav_1 - - associated data file: static/ucsc/builds.txt
- Extract blastz alignments1 - associated data file: /depot/data2/galaxy/alignseq.loc
- """
- # Check for filters first and process any that we find
- for filter in self.filters:
- filter_type = filter.get( 'type', None )
- assert filter_type is not None, "type attribute missing from filter"
- filter_type = filter_type.strip()
- if filter_type == 'data_meta':
- # We're using metadata information from self.data_ref
- dataset = self.get_dataset( trans, other_values )
- if dataset is None:
- return options
- key = filter.get( 'key', None )
- assert key is not None, "key attribute missing from data_meta filter"
- key = key.strip()
- value = filter.get( 'value', None )
- assert value is not None, "value attribute missing from data_meta filter"
- value = value.strip()
- col = filter.get( 'col', None )
- assert col is not None, "col attribute missing from data_meta filter"
- col = int( col.strip() )
- if key == 'build': # value must be 'dbkey'
- value = eval( '''dataset.%s''' %value )
- elif key == 'some other future key':
- pass
- return self.load_from_file( key=key, value=value, col=col, sep='\t' )
- elif filter_type == 'some other future type':
- pass
- # We must not have found a filter, so we'll generate the list generically
- return self.load_from_file()
-
- """
- TODO: the following functions should be generalized so that they are not specific to
- certain tools (e.g., encode). We may need to standardize data file formats to be able to do this.
- Comments in the functions show the tools that use them along with associated data files, if any
- """
- def load_from_file_for_maf( self ):
- d = {}
+ def generate_from_file( self, name_col, value_col, sep='\t' ):
+ options = []
for line in open( self.from_file ):
line = line.rstrip( '\r\n' )
if line and not line.startswith( '#' ):
- fields = line.split('\t')
- try:
- maf_desc = fields[0]
- maf_uid = fields[1]
- builds = fields[2]
- build_list = []
- split_builds = builds.split( ',' )
- for build in split_builds:
- this_build = build.split( '=' )[0]
- build_list.append( this_build )
- paths = fields[3]
- d[maf_uid] = {}
- d[maf_uid]['description'] = maf_desc
- d[maf_uid]['builds'] = build_list
- except: continue
- return d
- def get_options_for_maf( self, trans, other_values ):
- """
- Used by the following tools:
- maf_stats1 - associated data file: /depot/data2/galaxy/maf_index.loc
- GeneBed_Maf_Fasta1 - associated data file: /depot/data2/galaxy/maf_index.loc
- """
- options = []
- dataset = self.get_dataset( trans, other_values )
- if dataset is None:
- return options
- if dataset.dbkey == '?':
- return [( 'Build not set', 'None', True )]
- d = self.load_from_file_for_maf()
- for key in d:
- if dataset.dbkey in d[key]['builds']:
- options.append( ( d[key]['description'], key, False ) )
- if len( options ) < 1:
- return [self.no_data_option]
- return options
- def get_options_for_species( self, trans, other_values ):
- """
- Used by the following tools:
- MAF_Limit_To_Species1 - no associated data file
- MAF_Thread_For_Species1 - no associated data file
- MAF_To_BED1 - no associated data file
- MAF_To_Fasta_Concat1 - no associated data file
-
- TODO: multiple tools with same ID
- MAF_To_Fasta1 (maf_to_fasta_multiple_sets.xml) - no associated data file
- MAF_To_Fasta1 (maf_to_fasta.xml) - no associated data file
- GeneBed_Maf_Fasta_User1 - no associated data file
- """
- options = []
- dataset = self.get_dataset( trans, other_values )
- if dataset is None:
- return options
- for species in dataset.metadata.species:
- options.append( ( species, species, False ) )
- return options
- def get_options_for_species_for_maf( self, trans, other_values ):
- """
- Used by the following tools:
- GeneBed_Maf_Fasta1 - associated data file: /depot/data2/galaxy/maf_index.loc
- """
- options = []
- assert len( self.func_params ) == 1, "Value for 'maf_source' not found"
- for func_param in self.func_params:
- if func_param.get( 'name' ).strip() == 'maf_source':
- maf_source = func_param.get( 'value' ).strip()
- if maf_source == 'cached':
- d = self.load_from_file_for_maf()
- maf_uid = self.get_param_value( trans, other_values )
- if maf_uid is None:
- return [self.no_data_option]
- if maf_uid == 'None':
- return [( 'Build not set, click pencil icon in your history item to associate a build ', 'None', True )]
- for key in d[maf_uid]['builds']:
- options.append( (key, key, False) )
- if len( options ) < 1:
- return [self.no_data_option]
- else: # maf_source == 'user'
- dataset = self.get_dataset( trans, other_values )
- if dataset is None:
- return [( "You must wait for the MAF file to be created before you can use this tool. ", 'None', True )]
- for species in dataset.metadata.species:
- options.append( ( species, species, False ) )
- return options
- def get_options_for_features( self, trans, other_values ):
- """
- Used by the following tools:
- Extract_features1 - no associated data file (tool uses data from selected dataset)
- """
- def get_unique_elems( elems ):
- seen = set()
- return [x for x in elems if x not in seen and not seen.add(x)]
-
- assert len( self.func_params ) == 1, "Value for 'index' not found"
- for func_param in self.func_params:
- if func_param.get( 'name' ).strip() == 'index':
- index = func_param.get( 'value' ).strip()
- assert index is not None, "Value for 'index' not properly set"
- options = []
- elem_list = []
- dataset = self.get_dataset( trans, other_values )
- if dataset is None:
- return options
- datafile = dataset.get_file_name()
- try:
- in_file = open( datafile, "r" )
- except:
- return [self.no_data_option]
- try:
- for line in in_file:
- line = line.rstrip( "\r\n" )
- if line and not line.startswith( '#' ):
- elems = line.split( '\t' )
- elem_list.append( elems[int( index )] )
- except: pass
- in_file.close()
- if not( elem_list ):
- options.append( ( 'No elements to display, please choose another column', 'None', True ) )
- return options
- elem_list = get_unique_elems( elem_list )
- for elem in elem_list:
- options.append( ( elem, elem, False ) )
- return options
- def get_options_for_encode( self, trans, other_values ):
- """
- Used by the following tools:
- encode_import_all_latest_datasets1 - associated data file: /depot/data2/galaxy/encode_datasets.loc
- encode_import_chromatin_and_chromosomes1 - associated data file: /depot/data2/galaxy/encode_datasets.loc
- encode_import_gencode1 - associated data file: /depot/data2/galaxy/encode_datasets.loc
- encode_import_genes_and_transcripts1 - associated data file: /depot/data2/galaxy/encode_datasets.loc
- encode_import_multi-species_sequence_analysis1 - associated data file: /depot/data2/galaxy/encode_datasets.loc
- encode_import_transcription_regulation1 - associated data file: /depot/data2/galaxy/encode_datasets.loc
- """
- assert len( self.func_params ) == 2, "Values for 'build' and 'encode group' not found"
- for func_param in self.func_params:
- if func_param.get( 'name' ).strip() == 'build':
- build = func_param.get( 'value' ).strip()
- elif func_param.get( 'name' ).strip() == 'encode_group':
- encode_group = func_param.get( 'value' ).strip()
- assert build and encode_group, "Values for 'build' and 'encode group' not properly set"
- options = []
- def load_from_file_for_encode():
- encode_sets = {}
- for line in open( self.from_file ):
- line = line.rstrip( '\r\n' )
- if line and not line.startswith( '#' ):
- try:
- fields = line.split( "\t" )
- encode_group = fields[0]
- build = fields[1]
- description = fields[2]
- uid = fields[3]
- path = fields[4]
- try: file_type = fields[5]
- except: file_type = "bed"
- #TODO: will remove this later, when galaxy can handle gff files
- if file_type != "bed": continue
- if not os.path.isfile(path): continue
- except:
- continue
- try: temp = encode_sets[encode_group]
- except: encode_sets[encode_group] = {}
- try:
- encode_sets[encode_group][build].append((description, uid, False))
- except:
- encode_sets[encode_group][build]=[]
- encode_sets[encode_group][build].append((description, uid, False))
- #Order by description and date, highest date on top and bold
- for group in encode_sets:
- for build in encode_sets[ group ]:
- ordered_build = []
- for description, uid, selected in encode_sets[ group ][ build ]:
- item = {}
- item['date']=0
- item['description'] = ""
- item['uid'] = uid
- item['selected'] = selected
- item['partitioned'] = False
- if description[-21:] == '[gencode_partitioned]':
- item['date'] = description[-31:-23]
- item['description'] = description[0:-32]
- item['partitioned'] = True
- else:
- item['date'] = description[-9:-1]
- item['description'] = description[0:-10]
-
- for i in range(len(ordered_build)):
- ordered_description, ordered_uid, ordered_selected, ordered_item = ordered_build[i]
- if item['description'] < ordered_item['description']:
- ordered_build.insert( i, (description, uid, selected, item) )
- break
- if item['description'] == ordered_item['description'] and item['partitioned'] == ordered_item['partitioned']:
- if int(item['date']) > int(ordered_item['date']):
- ordered_build.insert( i, (description, uid, selected, item) )
- break
- else: ordered_build.append( (description, uid, selected, item) )
- last_desc = None
- last_partitioned = None
- for i in range(len(ordered_build)) :
- description, uid, selected, item = ordered_build[i]
- if item['partitioned'] != last_partitioned or last_desc != item['description']:
- last_desc = item['description']
- description = "" + description + " "
- else:
- last_desc = item['description']
- last_partitioned = item['partitioned']
- encode_sets[group][build][i] = (description, uid, selected)
- return encode_sets
- d = load_from_file_for_encode()
- if len( d ) < 1:
- return [self.no_data_option]
- else:
- try:
- options = d[encode_group][build][0:]
- except:
- options.append( self.no_data_option )
+ fields = line.split( sep )
+ # TODO: this option list should be sorted
+ options.append( ( fields[ name_col ], fields[ value_col ], False ) )
return options
def load_from_file_for_microbial( self ):
self.from_file = "/depot/data2/galaxy/microbes/microbial_data.loc"
@@ -441,11 +447,15 @@ class DynamicOptions( object ):
kingdoms.sort()
for kingdom in kingdoms:
options.append( (kingdom, kingdom, False) )
+ if options:
+ options[0] = ( options[0][0], options[0][1], True)
return options
def get_options_for_orgs_by_kingdom( self, trans, other_values ):
if self.microbe_info == None: self.load_from_file_for_microbial()
options = []
- kingdom = self.get_param_value( trans, other_values )
+ for func_param in self.func_params:
+ if func_param.get( 'name' ) == 'kingdom':
+ kingdom = other_values[ func_param.get( 'value' ) ]
orgs = self.microbe_info[kingdom].keys()
#need to sort by name
swap_test = False
@@ -460,10 +470,8 @@ class DynamicOptions( object ):
options.append( ( "" + self.microbe_info[kingdom][org]['name'] + " (about) ", org, False ) )
else:
options.append( ( self.microbe_info[kingdom][org]['name'] + " (about) ", org, False ) )
- """
if options:
options[0] = ( options[0][0], options[0][1], True)
- """
return options
def get_options_for_kingdom_org_feature( self, trans, other_values ):
if self.microbe_info == None: self.load_from_file_for_microbial()
diff --git a/tools/data_source/encode_import_all_latest_datasets.xml b/tools/data_source/encode_import_all_latest_datasets.xml
index 76d2772268e..03f47320780 100644
--- a/tools/data_source/encode_import_all_latest_datasets.xml
+++ b/tools/data_source/encode_import_all_latest_datasets.xml
@@ -6,17 +6,17 @@
hg16 (most recent datasets in bold)
$hg16
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/tools/data_source/encode_import_chromatin_and_chromosomes.xml b/tools/data_source/encode_import_chromatin_and_chromosomes.xml
index a2a14362f91..9985f645c74 100644
--- a/tools/data_source/encode_import_chromatin_and_chromosomes.xml
+++ b/tools/data_source/encode_import_chromatin_and_chromosomes.xml
@@ -5,18 +5,18 @@
hg17 (most recent datasets in bold)
$hg17
hg16 (most recent datasets in bold)
$hg16
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/tools/data_source/encode_import_gencode.xml b/tools/data_source/encode_import_gencode.xml
index 57421d901f7..9b64d3cc55b 100644
--- a/tools/data_source/encode_import_gencode.xml
+++ b/tools/data_source/encode_import_gencode.xml
@@ -6,17 +6,17 @@
hg16 (most recent datasets in bold)
$hg16
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/tools/data_source/encode_import_genes_and_transcripts.xml b/tools/data_source/encode_import_genes_and_transcripts.xml
index 54e7845f95b..d93740d1c71 100644
--- a/tools/data_source/encode_import_genes_and_transcripts.xml
+++ b/tools/data_source/encode_import_genes_and_transcripts.xml
@@ -6,17 +6,17 @@
hg16 (most recent datasets in bold)
$hg16
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/tools/data_source/encode_import_multi-species_sequence_analysis.xml b/tools/data_source/encode_import_multi-species_sequence_analysis.xml
index 15145d44fd7..d6cbed08adf 100644
--- a/tools/data_source/encode_import_multi-species_sequence_analysis.xml
+++ b/tools/data_source/encode_import_multi-species_sequence_analysis.xml
@@ -6,17 +6,17 @@
hg16 (most recent datasets in bold)
$hg16
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/tools/data_source/encode_import_transcription_regulation.xml b/tools/data_source/encode_import_transcription_regulation.xml
index dffdd6ec3fc..83dceedd494 100644
--- a/tools/data_source/encode_import_transcription_regulation.xml
+++ b/tools/data_source/encode_import_transcription_regulation.xml
@@ -6,17 +6,17 @@
hg16 (most recent datasets in bold)
$hg16
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/tools/data_source/microbial_import.xml b/tools/data_source/microbial_import.xml
index 6265c5121d2..4dc76e95c54 100644
--- a/tools/data_source/microbial_import.xml
+++ b/tools/data_source/microbial_import.xml
@@ -2,35 +2,82 @@
microbial_import.py $CDS,$tRNA,$rRNA,$sequence,$GeneMark,$GeneMarkHMM,$Glimmer3 $output
-
-
Select the Desired Kingdom
$kingdom
-
-
+
+
Select the Desired Kingdom
$kingdom
+
+
+
+
-
-
Select the Desired Organism
$org
-
-
+
+
Select the Desired Organism
$org
+
+
+
+
+
+
-
-
Select Desired Coding Sequences
$CDS
-
Select Desired tRNA
$tRNA
-
Select Desired rRNA
$rRNA
-
Select Desired DNA Sequences
$sequence
-
Select Desired GeneMark Annotations
$GeneMark
-
Select Desired GeneMarkHMM Annotations
$GeneMarkHMM
-
Select Desired Glimmer3 Annotations
$Glimmer3
-
-
-
-
-
-
-
-
-
+
+
Select Desired Coding Sequences
$CDS
+
Select Desired tRNA
$tRNA
+
Select Desired rRNA
$rRNA
+
Select Desired DNA Sequences
$sequence
+
Select Desired GeneMark Annotations
$GeneMark
+
Select Desired GeneMarkHMM Annotations
$GeneMarkHMM
+
Select Desired Glimmer3 Annotations
$Glimmer3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/data_source/microbial_import_code.py b/tools/data_source/microbial_import_code.py
index db80ae9bbbc..bbdd0b878a5 100644
--- a/tools/data_source/microbial_import_code.py
+++ b/tools/data_source/microbial_import_code.py
@@ -1,200 +1,4 @@
-#build list of available data
-import os, sys
-
-
-
-microbe_info= {}
-
-def init():
- try:
- orgs = {}
- for line in open( "/depot/data2/galaxy/microbes/microbial_data.loc" ):
- if line[0:1] == "#" : continue
-
- fields = line.split('\t')
- #read each line, if not enough fields, go to next line
- try:
- info_type = fields.pop(0)
- if info_type.upper() == "ORG":
- #ORG 12521 Clostridium perfringens SM101 bacteria Firmicutes CP000312,CP000313,CP000314,CP000315 http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=genomeprj&cmd=Retrieve&dopt=Overview&list_uids=12521
- org_num = fields.pop(0)
- name = fields.pop(0)
- kingdom = fields.pop(0)
- group = fields.pop(0)
- chromosomes = fields.pop(0)
- info_url = fields.pop(0)
- link_site = fields.pop(0).replace("\r","").replace("\n","")
- if org_num not in orgs:
- orgs[org_num]={}
- orgs[org_num]['chrs']={}
- orgs[org_num]['name']= name
- orgs[org_num]['kingdom']= kingdom
- orgs[org_num]['group']= group
- orgs[org_num]['chromosomes']= chromosomes
- orgs[org_num]['info_url']= info_url
- orgs[org_num]['link_site']= link_site
-
- elif info_type.upper() == "CHR":
- #CHR 12521 CP000315 Clostridium perfringens phage phiSM101, complete genome 38092 110684521 CP000315.1
- org_num = fields.pop(0)
- chr_acc = fields.pop(0)
- name = fields.pop(0)
- length = fields.pop(0)
- gi = fields.pop(0)
- gb = fields.pop(0)
- info_url = fields.pop(0).replace("\r","").replace("\n","")
-
- chr = {}
- chr['name']=name
- chr['length']=length
- chr['gi']=gi
- chr['gb']=gb
- chr['info_url']=info_url
-
- if org_num not in orgs:
- orgs[org_num]={}
- orgs[org_num]['chrs']={}
- orgs[org_num]['chrs'][chr_acc] = chr
-
-
- elif info_type.upper() == "DATA":
- #DATA 12521_12521_CDS 12521 CP000315 CDS bed /home/djb396/alignments/playground/bacteria/12521/CP000315.CDS.bed
- uid = fields.pop(0)
- org_num = fields.pop(0)
- chr_acc = fields.pop(0)
- feature = fields.pop(0)
- filetype = fields.pop(0)
- path = fields.pop(0).replace("\r","").replace("\n","")
- data = {}
- data['filetype']=filetype
- data['path']=path
- data['feature']=feature
-
- if org_num not in orgs:
- orgs[org_num]={}
- orgs[org_num]['chrs']={}
- if 'data' not in orgs[org_num]['chrs'][chr_acc]:
- orgs[org_num]['chrs'][chr_acc]['data']={}
- orgs[org_num]['chrs'][chr_acc]['data'][uid] = data
-
- else: continue
- except:
- continue
- for org_num in orgs:
- org = orgs[org_num]
- if org['kingdom'] not in microbe_info:
- microbe_info[org['kingdom']]={}
-
- #if org['group'] not in microbe_info[org['kingdom']]:
- # microbe_info[org['kingdom']][org['group']]={}
-
- if org_num not in microbe_info[org['kingdom']]:
- microbe_info[org['kingdom']][org_num]=org
- except Exception, exc:
- print >>sys.stdout, 'microbial_import_code.py initialization error -> %s' % exc
-
-init()
-
-
-def get_kingdoms():
- ret_val = []
- kingdoms = microbe_info.keys()
- kingdoms.sort()
- for kingdom in kingdoms:
- ret_val.append((kingdom,kingdom,False))
- if ret_val:
- ret_val[0]= (ret_val[0][0],ret_val[0][1],True)
- return ret_val
-
-def get_orgs_by_kingdom(kingdom):
- ret_val = []
- orgs = microbe_info[kingdom].keys()
-
- #need to sort by name
- swap_test = False
- for i in range(0, len(orgs) - 1):
- for j in range(0, len(orgs) - i - 1):
- if microbe_info[kingdom][orgs[j]]['name'] > microbe_info[kingdom][orgs[j + 1]]['name']:
- orgs[j], orgs[j + 1] = orgs[j + 1], orgs[j]
- swap_test = True
- if swap_test == False:
- break
-
- for org in orgs:
- if microbe_info[kingdom][org]['link_site'] == "UCSC":
- ret_val.append((""+microbe_info[kingdom][org]['name']+" (about) ",org,False))
- else:
- ret_val.append((microbe_info[kingdom][org]['name']+" (about) ",org,False))
- if ret_val:
- ret_val[0]= (ret_val[0][0],ret_val[0][1],True)
- return ret_val
-
-def get_data(kingdom,group,org,feature):
- ret_val = []
- chroms = microbe_info[kingdom][group][org]['chrs'].keys()
- chroms.sort()
- for chr in chroms:
- for data in microbe_info[kingdom][group][org]['chrs'][chr]['data']:
- if microbe_info[kingdom][group][org]['chrs'][chr]['data'][data]['feature']==feature:
- ret_val.append((microbe_info[kingdom][group][org]['chrs'][chr]['name']+" (about) ",data,False))
- return ret_val
-
-
-def get_groups(kingdom):
- ret_val = []
- groups = microbe_info[kingdom].keys()
- groups.sort()
- for group in groups:
- ret_val.append((group,group,False))
- if ret_val:
- ret_val[0]= (ret_val[0][0],ret_val[0][1],True)
- return ret_val
-
-def get_orgs(kingdom,group):
- ret_val = []
- orgs = microbe_info[kingdom][group].keys()
-
- #need to sort by name
- swap_test = False
- for i in range(0, len(orgs) - 1):
- for j in range(0, len(orgs) - i - 1):
- if microbe_info[kingdom][group][orgs[j]]['name'] > microbe_info[kingdom][group][orgs[j + 1]]['name']:
- orgs[j], orgs[j + 1] = orgs[j + 1], orgs[j]
- swap_test = True
- if swap_test == False:
- break
-
- for org in orgs:
- if microbe_info[kingdom][group][org]['link_site'] == "UCSC":
- ret_val.append((""+microbe_info[kingdom][group][org]['name']+" (about) ",org,False))
- else:
- ret_val.append((microbe_info[kingdom][group][org]['name']+" (about) ",org,False))
- if ret_val:
- ret_val[0]= (ret_val[0][0],ret_val[0][1],True)
- return ret_val
-
-def get_data(kingdom,group,org,feature):
- ret_val = []
- chroms = microbe_info[kingdom][group][org]['chrs'].keys()
- chroms.sort()
- for chr in chroms:
- for data in microbe_info[kingdom][group][org]['chrs'][chr]['data']:
- if microbe_info[kingdom][group][org]['chrs'][chr]['data'][data]['feature']==feature:
- ret_val.append((microbe_info[kingdom][group][org]['chrs'][chr]['name']+" (about) ",data,False))
- return ret_val
-
-def get_data_by_kingdom_org_feature(kingdom,org,feature):
- ret_val = []
- chroms = microbe_info[kingdom][org]['chrs'].keys()
- chroms.sort()
- for chr in chroms:
- for data in microbe_info[kingdom][org]['chrs'][chr]['data']:
- if microbe_info[kingdom][org]['chrs'][chr]['data'][data]['feature']==feature:
- ret_val.append((microbe_info[kingdom][org]['chrs'][chr]['name']+" (about) ",data,False))
- return ret_val
-
-
#post processing, set build for data and add additional data to history
from galaxy import datatypes, config, jobs
from shutil import copyfile
@@ -203,11 +7,12 @@ def exec_after_process(app, inp_data, out_data, param_dict, tool, stdout, stderr
if history == None:
print "unknown history!"
return
- kingdom = param_dict.get('kingdom',None)
- group = param_dict.get('group',None)
- org = param_dict.get('org',None)
+ kingdom = param_dict.get( 'kingdom', None )
+ #group = param_dict.get( 'group', None )
+ org = param_dict.get( 'org', None )
- if not (kingdom or group or org):
+ #if not (kingdom or group or org):
+ if not (kingdom or org):
print "Parameters are not available."
new_stdout = ""
@@ -222,7 +27,7 @@ def exec_after_process(app, inp_data, out_data, param_dict, tool, stdout, stderr
file_type = fields[4]
name, data = out_data.items()[0]
basic_name = data.name
- data.name = data.name + " (" + microbe_info[kingdom][org]['chrs'][chr]['data'][description]['feature'] +" for "+microbe_info[kingdom][org]['name']+":"+chr + ")"
+ data.name = data.name + " (" + microbe_info[kingdom][org]['chrs'][chr]['data'][description]['feature'] +" for " + microbe_info[kingdom][org]['name'] + ":" + chr + ")"
data.dbkey = dbkey
data.info = data.name
data = app.datatypes_registry.change_datatype( data, file_type )
diff --git a/tools/encode/random_intervals.xml b/tools/encode/random_intervals.xml
index e9867696465..df4ebe083c6 100644
--- a/tools/encode/random_intervals.xml
+++ b/tools/encode/random_intervals.xml
@@ -14,8 +14,11 @@
None
-
-
+
+
+
+
+
diff --git a/tools/extract/extractAxt_wrapper.xml b/tools/extract/extractAxt_wrapper.xml
index a92df9d5a8c..a52912a0b48 100644
--- a/tools/extract/extractAxt_wrapper.xml
+++ b/tools/extract/extractAxt_wrapper.xml
@@ -4,8 +4,11 @@
-
-
+
+
+
+
+
diff --git a/tools/extract/extract_GFF_Features.xml b/tools/extract/extract_GFF_Features.xml
index 3816a167af4..c7f7f3ef5a2 100644
--- a/tools/extract/extract_GFF_Features.xml
+++ b/tools/extract/extract_GFF_Features.xml
@@ -12,39 +12,44 @@
Column 8 / Frame
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
**What it does**
diff --git a/tools/extract/genebed_maf_to_fasta.xml b/tools/extract/genebed_maf_to_fasta.xml
index c800da27044..697f74f3d25 100644
--- a/tools/extract/genebed_maf_to_fasta.xml
+++ b/tools/extract/genebed_maf_to_fasta.xml
@@ -14,19 +14,26 @@
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
-
-
-
+
+
+
+
diff --git a/tools/extract/interval2maf.xml b/tools/extract/interval2maf.xml
index 236b022e936..c37efe31496 100644
--- a/tools/extract/interval2maf.xml
+++ b/tools/extract/interval2maf.xml
@@ -1,44 +1,50 @@
given a set of genomic intervals
- #if $maf_source_type.maf_source == "user":#interval2maf.py --dbkey=$input1_dbkey --chromCol=$input1_chromCol --startCol=$input1_startCol --endCol=$input1_endCol --strandCol=$input1_strandCol --mafFile=$maf_source_type.mafFile --interval_file=$input1 --output_file=$out_file1
-#else:#interval2maf.py --dbkey=$input1_dbkey --chromCol=$input1_chromCol --startCol=$input1_startCol --endCol=$input1_endCol --strandCol=$input1_strandCol --mafType=$maf_source_type.mafType --interval_file=$input1 --output_file=$out_file1
-#end if
+
+ #if $maf_source_type.maf_source == "user":#interval2maf.py --dbkey=$input1_dbkey --chromCol=$input1_chromCol --startCol=$input1_startCol --endCol=$input1_endCol --strandCol=$input1_strandCol --mafFile=$maf_source_type.mafFile --interval_file=$input1 --output_file=$out_file1
+ #else:#interval2maf.py --dbkey=$input1_dbkey --chromCol=$input1_chromCol --startCol=$input1_startCol --endCol=$input1_endCol --strandCol=$input1_strandCol --mafType=$maf_source_type.mafType --interval_file=$input1 --output_file=$out_file1
+ #end if
-
-
-
- Locally Cached Alignments
- Alignments in Your History
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Locally Cached Alignments
+ Alignments in Your History
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
**What it does**
This tool takes genomic coordinates, superimposes them on multiple alignments (in MAF format) stored on the Galaxy site or from your history, and excises alignment blocks corresponding to each set of coordinates. Alignment blocks that extend past START and/or END positions of an interval are trimmed. Note that a single genomic interval may correspond to two or more alignment blocks.
diff --git a/tools/extract/interval_maf_to_merged_fasta.xml b/tools/extract/interval_maf_to_merged_fasta.xml
index 19c0a18b33d..e33ac1fc30b 100644
--- a/tools/extract/interval_maf_to_merged_fasta.xml
+++ b/tools/extract/interval_maf_to_merged_fasta.xml
@@ -15,20 +15,27 @@
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/extract/phastOdds/phastOdds_tool.xml b/tools/extract/phastOdds/phastOdds_tool.xml
index 8681d682424..7587de985d1 100644
--- a/tools/extract/phastOdds/phastOdds_tool.xml
+++ b/tools/extract/phastOdds/phastOdds_tool.xml
@@ -4,8 +4,11 @@
-
-
+
+
+
+
+
diff --git a/tools/filters/axt_to_concat_fasta.xml b/tools/filters/axt_to_concat_fasta.xml
index cb9db77a911..96144009be4 100644
--- a/tools/filters/axt_to_concat_fasta.xml
+++ b/tools/filters/axt_to_concat_fasta.xml
@@ -4,10 +4,16 @@
-
+
+
+
+
-
+
+
+
+
diff --git a/tools/filters/axt_to_fasta.xml b/tools/filters/axt_to_fasta.xml
index 0370cc692c6..67cdc3465e0 100644
--- a/tools/filters/axt_to_fasta.xml
+++ b/tools/filters/axt_to_fasta.xml
@@ -4,10 +4,16 @@
-
+
+
+
+
-
+
+
+
+
diff --git a/tools/filters/axt_to_lav.xml b/tools/filters/axt_to_lav.xml
index 747cca001f4..b46794e6226 100644
--- a/tools/filters/axt_to_lav.xml
+++ b/tools/filters/axt_to_lav.xml
@@ -5,10 +5,16 @@
-
+
+
+
+
-
+
+
+
+
diff --git a/tools/filters/maf/maf_filter.xml b/tools/filters/maf/maf_filter.xml
index 776decd3525..4c88ebd0949 100644
--- a/tools/filters/maf/maf_filter.xml
+++ b/tools/filters/maf/maf_filter.xml
@@ -5,7 +5,11 @@
-
+
+
+
+
+
Strand
@@ -21,7 +25,11 @@
-
-
+
+
+
+
+
Strand
@@ -54,7 +62,11 @@
-
+
+
+
+
+
Strand
diff --git a/tools/filters/maf/maf_limit_to_species.xml b/tools/filters/maf/maf_limit_to_species.xml
index 283d918c34c..8baf143d170 100644
--- a/tools/filters/maf/maf_limit_to_species.xml
+++ b/tools/filters/maf/maf_limit_to_species.xml
@@ -12,7 +12,9 @@
No
-
+
+
+
diff --git a/tools/filters/maf/maf_stats.xml b/tools/filters/maf/maf_stats.xml
index 5ec4ad77d50..712cb8b766a 100644
--- a/tools/filters/maf/maf_stats.xml
+++ b/tools/filters/maf/maf_stats.xml
@@ -19,9 +19,14 @@
-
-
-
+
+
+
+
+
+
+
+
diff --git a/tools/filters/maf/maf_thread_for_species.xml b/tools/filters/maf/maf_thread_for_species.xml
index ceabb33aa55..dc31122722b 100644
--- a/tools/filters/maf/maf_thread_for_species.xml
+++ b/tools/filters/maf/maf_thread_for_species.xml
@@ -4,7 +4,9 @@
-
+
+
+
diff --git a/tools/filters/maf/maf_to_bed.xml b/tools/filters/maf/maf_to_bed.xml
index 40e5b45e4ca..eb37d597f46 100644
--- a/tools/filters/maf/maf_to_bed.xml
+++ b/tools/filters/maf/maf_to_bed.xml
@@ -4,7 +4,9 @@
-
+
+
+
include blocks with missing species
diff --git a/tools/filters/maf/maf_to_fasta.xml b/tools/filters/maf/maf_to_fasta.xml
index 810f35ab770..564b2a559bc 100644
--- a/tools/filters/maf/maf_to_fasta.xml
+++ b/tools/filters/maf/maf_to_fasta.xml
@@ -14,7 +14,9 @@
-
+
+
+
include blocks with missing species
@@ -23,7 +25,9 @@
-
+
+
+
diff --git a/tools/regVariation/getIndels_3way.xml b/tools/regVariation/getIndels_3way.xml
index c59a931c9ac..c13a5c09f31 100644
--- a/tools/regVariation/getIndels_3way.xml
+++ b/tools/regVariation/getIndels_3way.xml
@@ -7,7 +7,9 @@
-
+
+
+
diff --git a/tools/regVariation/quality_filter.xml b/tools/regVariation/quality_filter.xml
index 8ab54d02fa8..8de918b1084 100644
--- a/tools/regVariation/quality_filter.xml
+++ b/tools/regVariation/quality_filter.xml
@@ -19,10 +19,14 @@
-
+
+
+
-
+
+
+
diff --git a/tools/stats/aggregate_binned_scores_in_intervals.xml b/tools/stats/aggregate_binned_scores_in_intervals.xml
index c36e4d687e8..e930e7e8867 100644
--- a/tools/stats/aggregate_binned_scores_in_intervals.xml
+++ b/tools/stats/aggregate_binned_scores_in_intervals.xml
@@ -4,8 +4,11 @@
-
-
+
+
+
+
+