Fix for displaying BED6+ at UCSC.

This commit is contained in:
Daniel Blankenberg
2007-03-09 19:54:46 +00:00
parent 468a0eb711
commit 3ffb34a41c
2 changed files with 31 additions and 3 deletions
+30
View File
@@ -197,6 +197,36 @@ class Bed( Interval ):
def set_meta( self, dataset ):
# metadata already set
pass
def as_bedfile( self, dataset ):
'''Returns a file that contains only the bed data. If bed 6+, treat as interval.'''
for line in open(dataset.file_name):
line = line.strip()
if line == "" or line.startswith("#"): continue
fields = line.split('\t')
#check to see if this file doesn't conform to strict genome browser accepted bed
try:
if len(fields)>12: return Interval.as_bedfile(self, dataset) #too many fields
if len(fields)>6:
if len(fields) > 6:
int(fields[6])
if len(fields) > 7:
int(fields[7])
if len(fields) > 8:
if int(fields[8]) != 0: return Interval.as_bedfile(self, dataset)
if len(fields) > 9:
int(fields[9])
if len(fields) > 10:
fields2 = fields[10].rstrip(",").split(",") #remove trailing comma and split on comma
for field in fields2: int(field)
if len(fields) > 11:
fields2 = fields[11].rstrip(",").split(",") #remove trailing comma and split on comma
for field in fields2: int(field)
except: return Interval.as_bedfile(self, dataset)
#only check first line for proper form
break
try: return dataset.file_name
except: return "This item contains no content"
class Gff( Tabular ):
"""Tab delimited data in Gff format"""
+1 -3
View File
@@ -117,9 +117,7 @@ class Universe(common.Root):
"""Returns a bed file"""
data = self.app.model.Dataset.get( id )
if data:
if isinstance(data.datatype, datatypes.interval.Bed):
return self.display(trans, id=data.id)
elif isinstance(data.datatype, datatypes.interval.Interval):
if isinstance(data.datatype, datatypes.interval.Interval):
mime = data.get_mime()
trans.response.set_content_type(mime)
file_name = data.as_bedfile()