mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
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:
@@ -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 ):
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) )
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user