diff --git a/lib/galaxy/datatypes/interval.py b/lib/galaxy/datatypes/interval.py index 2655271c9d2..850965c6448 100644 --- a/lib/galaxy/datatypes/interval.py +++ b/lib/galaxy/datatypes/interval.py @@ -41,7 +41,7 @@ class Interval( Tabular ): MetadataElement( name="chromCol", desc="Chrom column", param=metadata.ColumnParameter ) MetadataElement( name="startCol", desc="Start column", param=metadata.ColumnParameter ) MetadataElement( name="endCol", desc="End column", param=metadata.ColumnParameter ) - MetadataElement( name="strandCol", desc="Strand column", param=metadata.ColumnParameter, optional=True, no_value=0 ) + MetadataElement( name="strandCol", desc="Strand column (click box & select)", param=metadata.ColumnParameter, optional=True, no_value=0 ) MetadataElement( name="columns", default=3, desc="Number of columns", readonly=True ) @@ -199,7 +199,7 @@ class Bed( Interval ): MetadataElement( name="chromCol", default=1, desc="Chrom column", param=metadata.ColumnParameter ) MetadataElement( name="startCol", default=2, desc="Start column", param=metadata.ColumnParameter ) MetadataElement( name="endCol", default=3, desc="End column", param=metadata.ColumnParameter ) - MetadataElement( name="strandCol", desc="Strand column", param=metadata.ColumnParameter, optional=True, no_value=0 ) + MetadataElement( name="strandCol", desc="Strand column (click box & select)", param=metadata.ColumnParameter, optional=True, no_value=0 ) MetadataElement( name="columns", default=3, desc="Number of columns", readonly=True ) def missing_meta( self, dataset ): diff --git a/lib/galaxy/datatypes/metadata.py b/lib/galaxy/datatypes/metadata.py index c8057b6a5d5..377ff0fa53b 100644 --- a/lib/galaxy/datatypes/metadata.py +++ b/lib/galaxy/datatypes/metadata.py @@ -1,8 +1,11 @@ -import sys +import sys, logging + from galaxy.util.bunch import Bunch from galaxy.util.odict import odict from galaxy.web import form_builder +log = logging.getLogger( __name__ ) + # Taken in part from Elixir and how they do it: http://elixir.ematia.de STATEMENTS = "__galaxy_statements__" @@ -183,8 +186,10 @@ class SelectParameter( MetadataParameter ): def __setattr__(self, name, value): MetadataParameter.__setattr__(self, name, value) if name in ['value']: - if value is None: MetadataParameter.__setattr__(self, name, []) - elif not isinstance(value, list): MetadataParameter.__setattr__(self, name, [value]) + if value is None: + MetadataParameter.__setattr__(self, name, []) + elif not isinstance(value, list): + MetadataParameter.__setattr__(self, name, [value]) def __str__(self): if self.value in [None, []]: @@ -192,9 +197,7 @@ class SelectParameter( MetadataParameter ): return ",".join(map(str,self.value)) def get_html_field( self, value=None, other_values={} ): - field = form_builder.SelectField( self.spec.name, - multiple=self.spec.get("multiple"), - display=self.spec.get("display") ) + field = form_builder.SelectField( self.spec.name, multiple=self.spec.get("multiple"), display=self.spec.get("display") ) for value, label in self.values or [(value, value) for value in self.value]: try: if value in self.value: @@ -239,4 +242,8 @@ class ColumnParameter( RangeParameter ): RangeParameter.__init__( self, spec, value, context ) column_range = range( 1, context.metadata.columns+1, 1 ) self.values = zip( column_range, column_range ) + + @classmethod + def marshal( cls, value ): + return int(value) diff --git a/lib/galaxy/datatypes/tabular.py b/lib/galaxy/datatypes/tabular.py index 5b4070b82c8..1b5f56d3712 100644 --- a/lib/galaxy/datatypes/tabular.py +++ b/lib/galaxy/datatypes/tabular.py @@ -94,19 +94,14 @@ class Tabular( data.Text ): data.Text.before_edit( self, dataset ) try: maxcols = 0 - count = 0 - for line in open( dataset.file_name ): + for i, line in enumerate ( file( dataset.file_name )): line = line.rstrip('\r\n') if line and not line.startswith( '#' ): - count += 1 - """ - We should be able to figure out the number of columns within 30 lines - """ - if count > 30: - break cols = len( line.split("\t") ) if cols > maxcols: maxcols = cols + if i == 30: + break setattr( dataset.metadata, "columns", maxcols ) except: pass diff --git a/lib/galaxy/web/controllers/root.py b/lib/galaxy/web/controllers/root.py index 257321ba49f..9361d7978b9 100644 --- a/lib/galaxy/web/controllers/root.py +++ b/lib/galaxy/web/controllers/root.py @@ -176,10 +176,15 @@ class Universe( BaseController ): p = util.Params(kwd, safe=False) if p.change: + """ + Ths user clicked the Save button on the 'Set data type' form + """ trans.app.datatypes_registry.change_datatype( data, p.datatype ) trans.app.model.flush() elif p.save: - + """ + The user clicked the Save button on the 'Set other attributes' form + """ data.name = p.name data.info = p.info @@ -191,8 +196,7 @@ class Universe( BaseController ): continue optional = p.get("is_"+name, None) if optional and optional == 'true': - # optional element... - # == 'true' actually means it is NOT checked (and therefore ommitted) + # optional element... == 'true' actually means it is NOT checked (and therefore ommitted) setattr(data.metadata,name,None) else: setattr(data.metadata,name,spec.unwrap(p.get(name, None), p)) @@ -219,8 +223,7 @@ class Universe( BaseController ): metadata = list() # a list of MetadataParemeters for name, spec in data.datatype.metadata_spec.items(): - metadata.append( spec.wrap( data.metadata.get(name), - data ) ) + metadata.append( spec.wrap( data.metadata.get(name), data ) ) datatypes = [x for x in trans.app.datatypes_registry.datatypes_by_extension.iterkeys()] trans.log_event( "Opened edit view on dataset %s" % str(id) ) diff --git a/tools/new_operations/operation_filter.py b/tools/new_operations/operation_filter.py index ed66b3dc1a5..c0762d7a9a7 100644 --- a/tools/new_operations/operation_filter.py +++ b/tools/new_operations/operation_filter.py @@ -30,7 +30,9 @@ def validate_input( trans, error_map, param_values, page_param_map ): else: strandCol = 0 except: - error_map[name] = "The attributes of this dataset are not the correct format." + error_msg = "The attributes of this dataset are not properly set. " + \ + "Click the pencil icon in the history item to set the chrom, start, end and strand columns." + error_map[name] = error_msg data_param_names.add( name ) if len( dbkeys ) > 1: for name in data_param_names: