Merging heads

This commit is contained in:
Daniel Blankenberg
2008-09-25 15:05:07 -04:00
8 changed files with 47 additions and 38 deletions
+1 -1
View File
@@ -84,7 +84,7 @@ class Data( object ):
# flag the object as modified for SQLAlchemy.
if copy_from:
dataset.metadata = copy_from.metadata
def set_meta( self, dataset, **kwd ):
def set_meta( self, dataset, overwrite = True, **kwd ):
"""Unimplemented method, allows guessing of metadata from contents of file"""
return True
def set_readonly_meta( self, dataset ):
+35 -24
View File
@@ -64,8 +64,8 @@ class Interval( Tabular ):
else:
dataset.blurb = "%s regions" % util.commaify( str( line_count ) )
def set_meta( self, dataset, first_line_is_header=False, **kwd ):
Tabular.set_meta( self, dataset, skip=0 )
def set_meta( self, dataset, overwrite = True, first_line_is_header = False, **kwd ):
Tabular.set_meta( self, dataset, overwrite = overwrite, skip = 0 )
"""Tries to guess from the line the location number of the column for the chromosome, region start-end and strand"""
if dataset.has_data():
@@ -80,7 +80,8 @@ class Interval( Tabular ):
for index, col_name in enumerate( elems ):
if col_name in valid:
meta_name = valid[col_name]
setattr( dataset.metadata, meta_name, index+1 )
if overwrite or not dataset.metadata.element_is_set( meta_name ):
setattr( dataset.metadata, meta_name, index+1 )
values = alias_spec[ meta_name ]
start = values.index( col_name )
for lower in values[ start: ]:
@@ -94,26 +95,32 @@ class Interval( Tabular ):
if len( elems ) > 2:
for str in data.col1_startswith:
if line.lower().startswith( str ):
dataset.metadata.chromCol = 1
if overwrite or not dataset.metadata.element_is_set( 'chromCol' ):
dataset.metadata.chromCol = 1
try:
int( elems[1] )
dataset.metadata.startCol = 2
if overwrite or not dataset.metadata.element_is_set( 'startCol' ):
dataset.metadata.startCol = 2
except:
pass # Metadata default will be used
try:
int( elems[2] )
dataset.metadata.endCol = 3
if overwrite or not dataset.metadata.element_is_set( 'endCol' ):
dataset.metadata.endCol = 3
except:
pass # Metadata default will be used
if len( elems ) > 3:
try:
int( elems[3] )
except:
dataset.metadata.nameCol = 4
if overwrite or not dataset.metadata.element_is_set( 'nameCol' ):
dataset.metadata.nameCol = 4
if len( elems ) < 6 or elems[5] not in data.valid_strand:
dataset.metadata.strandCol = 0
if overwrite or not dataset.metadata.element_is_set( 'strandCol' ):
dataset.metadata.strandCol = 0
else:
dataset.metadata.strandCol = 6
if overwrite or not dataset.metadata.element_is_set( 'strandCol' ):
dataset.metadata.strandCol = 6
metadata_is_set = True
break
if metadata_is_set:
@@ -286,8 +293,9 @@ class Bed( Interval ):
MetadataElement( name="endCol", default=3, desc="End column", param=metadata.ColumnParameter )
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, visible=False )
###do we need to repeat these? they are the same as should be inherited from interval type
def set_meta( self, dataset, **kwd ):
def set_meta( self, dataset, overwrite = True, **kwd ):
"""Sets the metadata information for datasets previously determined to be in bed format."""
i = 0
if dataset.has_data():
@@ -300,15 +308,18 @@ class Bed( Interval ):
for startswith in data.col1_startswith:
if line.lower().startswith( startswith ):
if len( elems ) > 3:
dataset.metadata.nameCol = 4
if overwrite or not dataset.metadata.element_is_set( 'nameCol' ):
dataset.metadata.nameCol = 4
if len(elems) < 6:
dataset.metadata.strandCol = 0
if overwrite or not dataset.metadata.element_is_set( 'strandCol' ):
dataset.metadata.strandCol = 0
else:
dataset.metadata.strandCol = 6
if overwrite or not dataset.metadata.element_is_set( 'strandCol' ):
dataset.metadata.strandCol = 6
metadata_set = True
break
if metadata_set: break
Tabular.set_meta( self, dataset, skip=i )
Tabular.set_meta( self, dataset, overwrite = overwrite, skip = i )
def as_ucsc_display_file( self, dataset, **kwd ):
"""Returns file contents with only the bed data. If bed 6+, treat as interval."""
@@ -443,7 +454,7 @@ class Gff( Tabular ):
Tabular.__init__(self, **kwd)
self.add_display_app ( 'elegans', 'display in GBrowse', 'as_gbrowse_display_file', 'gbrowse_links' )
def set_meta( self, dataset, **kwd ):
def set_meta( self, dataset, overwrite = True, **kwd ):
i = 0
for i, line in enumerate( file ( dataset.file_name ) ):
line = line.rstrip('\r\n')
@@ -456,7 +467,7 @@ class Gff( Tabular ):
break
except:
pass
Tabular.set_meta( self, dataset, skip=i )
Tabular.set_meta( self, dataset, overwrite = overwrite, skip = i )
def make_html_table( self, dataset, skipchars=[] ):
"""Create HTML table, used for displaying peek"""
@@ -589,7 +600,7 @@ class Gff3( Gff ):
"""Initialize datatype, by adding GBrowse display app"""
Gff.__init__(self, **kwd)
def set_meta( self, dataset, **kwd ):
def set_meta( self, dataset, overwrite = True, **kwd ):
i = 0
for i, line in enumerate( file ( dataset.file_name ) ):
line = line.rstrip('\r\n')
@@ -614,7 +625,7 @@ class Gff3( Gff ):
phase = elems[7]
if valid_start and valid_end and start < end and strand in self.valid_gff3_strand and phase in self.valid_gff3_phase:
break
Tabular.set_meta( self, dataset, skip=i )
Tabular.set_meta( self, dataset, overwrite = overwrite, skip = i )
def sniff( self, filename ):
"""
@@ -692,7 +703,7 @@ class Wiggle( Tabular ):
def make_html_table( self, dataset ):
return Tabular.make_html_table( self, dataset, skipchars=['track', '#'] )
def set_meta( self, dataset, **kwd ):
def set_meta( self, dataset, overwrite = True, **kwd ):
i = 0
for i, line in enumerate( file ( dataset.file_name ) ):
line = line.rstrip('\r\n')
@@ -705,7 +716,7 @@ class Wiggle( Tabular ):
for str in data.col1_startswith:
if elems[0].lower().startswith(str):
break
Tabular.set_meta( self, dataset, skip=i )
Tabular.set_meta( self, dataset, overwrite = overwrite, skip = i )
def sniff( self, filename ):
"""
@@ -746,8 +757,8 @@ class CustomTrack ( Tabular ):
"""Initialize interval datatype, by adding UCSC display app"""
Tabular.__init__(self, **kwd)
self.add_display_app ( 'ucsc', 'display at UCSC', 'as_ucsc_display_file', 'ucsc_links' )
def set_meta( self, dataset, **kwd ):
Tabular.set_meta( self, dataset, skip=1 )
def set_meta( self, dataset, overwrite = True, **kwd ):
Tabular.set_meta( self, dataset, overwrite = overwrite, skip = 1 )
def display_peek( self, dataset ):
"""Returns formated html of peek"""
return Tabular.make_html_table( self, dataset, skipchars=['track', '#'] )
@@ -858,8 +869,8 @@ class GBrowseTrack ( Tabular ):
Tabular.__init__(self, **kwd)
self.add_display_app ('elegans', 'display in GBrowse', 'as_gbrowse_display_file', 'gbrowse_links' )
def set_meta( self, dataset, **kwd ):
Tabular.set_meta( self, dataset, skip=1 )
def set_meta( self, dataset, overwrite = True, **kwd ):
Tabular.set_meta( self, dataset, overwrite = overwrite, skip = 1 )
def make_html_table( self, dataset ):
return Tabular.make_html_table( self, dataset, skipchars=['track', '#'] )
+2
View File
@@ -185,6 +185,8 @@ class MetadataCollection:
self.parent._metadata = value
else:
self.bunch[name] = value
def element_is_set( self, name ):
return bool( self.bunch.get( name, False ) )
MetadataElement = Statement(MetadataElementSpec)
+1 -2
View File
@@ -190,8 +190,7 @@ class Registry( object ):
# initialization.
if data.has_data():
data.init_meta( copy_from=data )
if isinstance( data.datatype, tabular.Tabular ):
data.set_readonly_meta()
data.set_meta( overwrite = False )
data.set_peek()
return data
+2 -1
View File
@@ -164,7 +164,7 @@ class Maf( Alignment ):
def init_meta( self, dataset, copy_from=None ):
Alignment.init_meta( self, dataset, copy_from=copy_from )
def set_meta( self, dataset, first_line_is_header=False, **kwd ):
def set_meta( self, dataset, overwrite = True, **kwd ):
"""
Parses and sets species and chromosomes from MAF files.
"""
@@ -190,6 +190,7 @@ class Maf( Alignment ):
if i > 100000: break
except:
pass
#these metadata values are not accessable by users, always overwrite
dataset.metadata.species = species
dataset.metadata.species_chromosomes = species_chromosomes
+3 -2
View File
@@ -26,8 +26,8 @@ class Tabular( data.Text ):
data.Text.init_meta( self, dataset, copy_from=copy_from )
def set_readonly_meta( self, dataset, skip=1, **kwd ):
"""Resets the values of readonly metadata elements."""
Tabular.set_meta( self, dataset, skip=skip )
def set_meta( self, dataset, skip=1, **kwd ):
Tabular.set_meta( self, dataset, overwrite = True, skip = skip )
def set_meta( self, dataset, overwrite = True, skip = 1, **kwd ):
"""
Tries to determine the number of columns as well as those columns
that contain numerical values in the dataset. A skip parameter is
@@ -35,6 +35,7 @@ class Tabular( data.Text ):
their data type classes are responsible to determine how many invalid
comment lines should be skipped.
"""
#we treat 'overwrite' as always True (we always want to set tabular metadata when called)
if dataset.has_data():
column_types = []
+1 -6
View File
@@ -409,12 +409,7 @@ class JobWrapper( object ):
dataset.blurb = "error"
elif dataset.has_data():
# Only set metadata values if they are missing...
if dataset.missing_meta():
dataset.set_meta()
else:
# ...however, some tools add / remove columns,
# so we have to reset the readonly metadata values
dataset.set_readonly_meta()
dataset.set_meta( overwrite_exisiting = False )
dataset.set_peek()
else:
dataset.blurb = "empty"
+2 -2
View File
@@ -190,7 +190,7 @@ class Browser:
tc.fv("1", "password", pw)
tc.submit("Login")
tc.code(200)
if len(tc.get_browser()._browser.forms()) > 0:
if len(tc.get_browser().get_all_forms()) > 0:
# uh ohs, fail
p = userParser()
p.feed(tc.browser.get_html())
@@ -210,7 +210,7 @@ class Browser:
tc.fv("1", "confirm", pw)
tc.submit("Create")
tc.code(200)
if len(tc.get_browser()._browser.forms()) > 0:
if len(tc.get_browser().get_all_forms()) > 0:
p = userParser()
p.feed(tc.browser.get_html())
if p.already_exists: