Fixed a nasty bug, now it is possible to edit metadata on bed, interval files with more than 9 columns.

This commit is contained in:
Greg Von Kuster
2007-08-24 15:09:28 +00:00
parent 051765d337
commit c868f3180c
5 changed files with 29 additions and 22 deletions
+2 -2
View File
@@ -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 ):
+13 -6
View File
@@ -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)
+3 -8
View File
@@ -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
+8 -5
View File
@@ -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) )
+3 -1
View File
@@ -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: