Merge pull request #421 from jmchilton/lint_2

Pep-8 lint fixes (1)
This commit is contained in:
John Chilton
2015-07-04 09:20:05 -05:00
6 changed files with 118 additions and 113 deletions
+4 -4
View File
@@ -8,6 +8,7 @@ from galaxy.exceptions import ActionInputError
log = logging.getLogger( __name__ )
class AdminActions( object ):
"""
Mixin for controllers that provide administrative functionality.
@@ -22,7 +23,7 @@ class AdminActions( object ):
create_amount = False
if not params.name or not params.description:
raise ActionInputError( "Enter a valid name and a description." )
elif self.sa_session.query( self.app.model.Quota ).filter( self.app.model.Quota.table.c.name==params.name ).first():
elif self.sa_session.query( self.app.model.Quota ).filter( self.app.model.Quota.table.c.name == params.name ).first():
raise ActionInputError( "Quota names must be unique and a quota with that name already exists, so choose another name." )
elif not params.get( 'amount', None ):
raise ActionInputError( "Enter a valid quota amount." )
@@ -60,7 +61,7 @@ class AdminActions( object ):
def _rename_quota( self, quota, params ):
if not params.name:
raise ActionInputError( 'Enter a valid name' )
elif params.name != quota.name and self.sa_session.query( self.app.model.Quota ).filter( self.app.model.Quota.table.c.name==params.name ).first():
elif params.name != quota.name and self.sa_session.query( self.app.model.Quota ).filter( self.app.model.Quota.table.c.name == params.name ).first():
raise ActionInputError( 'A quota with that name already exists' )
else:
old_name = quota.name
@@ -150,7 +151,7 @@ class AdminActions( object ):
message += ', '.join( names )
return message
def _undelete_quota( self, quota, params = None):
def _undelete_quota( self, quota, params=None):
quotas = util.listify( quota )
names = []
for q in quotas:
@@ -197,4 +198,3 @@ class AdminActions( object ):
self.sa_session.flush()
message += ', '.join( names )
return message
+40 -36
View File
@@ -16,6 +16,7 @@ from galaxy.datatypes.metadata import MetadataElement
log = logging.getLogger(__name__)
class Amos( data.Text ):
"""Class describing the AMOS assembly file """
edam_format = "format_2561"
@@ -53,17 +54,18 @@ class Amos( data.Text ):
while not isAmos:
line = fh.readline()
if not line:
break #EOF
break # EOF
line = line.strip()
if line: #first non-empty line
if line: # first non-empty line
if line.startswith( '{' ):
if re.match(r'{(RED|CTG|TLE)$',line):
if re.match(r'{(RED|CTG|TLE)$', line):
isAmos = True
fh.close()
except:
pass
return isAmos
class Sequences( sequence.Fasta ):
"""Class describing the Sequences file generated by velveth """
@@ -83,24 +85,25 @@ class Sequences( sequence.Fasta ):
while True:
line = fh.readline()
if not line:
break #EOF
break # EOF
line = line.strip()
if line: #first non-empty line
if line: # first non-empty line
if line.startswith( '>' ):
if not re.match(r'>[^\t]+\t\d+\t\d+$',line):
if not re.match(r'>[^\t]+\t\d+\t\d+$', line):
break
#The next line.strip() must not be '', nor startwith '>'
# The next line.strip() must not be '', nor startwith '>'
line = fh.readline().strip()
if line == '' or line.startswith( '>' ):
break
return True
else:
break #we found a non-empty line, but it's not a fasta header
break # we found a non-empty line, but it's not a fasta header
fh.close()
except:
pass
return False
class Roadmaps( data.Text ):
"""Class describing the Sequences file generated by velveth """
edam_format = "format_2561"
@@ -119,23 +122,24 @@ class Roadmaps( data.Text ):
while True:
line = fh.readline()
if not line:
break #EOF
break # EOF
line = line.strip()
if line: #first non-empty line
if not re.match(r'\d+\t\d+\t\d+$',line):
if line: # first non-empty line
if not re.match(r'\d+\t\d+\t\d+$', line):
break
#The next line.strip() should be 'ROADMAP 1'
# The next line.strip() should be 'ROADMAP 1'
line = fh.readline().strip()
if not re.match(r'ROADMAP \d+$',line):
if not re.match(r'ROADMAP \d+$', line):
break
return True
else:
break #we found a non-empty line, but it's not a fasta header
break # we found a non-empty line, but it's not a fasta header
fh.close()
except:
pass
return False
class Velvet( Html ):
MetadataElement( name="base_name", desc="base name for velveth dataset", default="velvet", readonly=True, set_in_upload=True)
MetadataElement( name="paired_end_reads", desc="has paired-end reads", default="False", readonly=False, set_in_upload=True)
@@ -147,17 +151,17 @@ class Velvet( Html ):
def __init__( self, **kwd ):
Html.__init__( self, **kwd )
self.add_composite_file( 'Sequences', mimetype = 'text/html', description = 'Sequences', substitute_name_with_metadata = None, is_binary = False )
self.add_composite_file( 'Roadmaps', mimetype = 'text/html', description = 'Roadmaps', substitute_name_with_metadata = None, is_binary = False )
self.add_composite_file( 'Log', mimetype = 'text/html', description = 'Log', optional = 'True', substitute_name_with_metadata = None, is_binary = False )
self.add_composite_file( 'Sequences', mimetype='text/html', description='Sequences', substitute_name_with_metadata=None, is_binary=False )
self.add_composite_file( 'Roadmaps', mimetype='text/html', description='Roadmaps', substitute_name_with_metadata=None, is_binary=False )
self.add_composite_file( 'Log', mimetype='text/html', description='Log', optional='True', substitute_name_with_metadata=None, is_binary=False )
def generate_primary_file( self, dataset = None ):
log.debug( "Velvet log info %s %s" % ('JJ generate_primary_file',dataset))
def generate_primary_file( self, dataset=None ):
log.debug( "Velvet log info %s %s" % ('JJ generate_primary_file', dataset))
rval = ['<html><head><title>Velvet Galaxy Composite Dataset </title></head><p/>']
rval.append('<div>This composite dataset is composed of the following files:<p/><ul>')
for composite_name, composite_file in self.get_composite_files( dataset = dataset ).iteritems():
for composite_name, composite_file in self.get_composite_files( dataset=dataset ).iteritems():
fn = composite_name
log.debug( "Velvet log info %s %s %s" % ('JJ generate_primary_file',fn,composite_file))
log.debug( "Velvet log info %s %s %s" % ('JJ generate_primary_file', fn, composite_file))
opt_text = ''
if composite_file.optional:
opt_text = ' (optional)'
@@ -168,7 +172,7 @@ class Velvet( Html ):
rval.append( '</ul></div></html>' )
return "\n".join( rval )
def regenerate_primary_file(self,dataset):
def regenerate_primary_file(self, dataset):
"""
cannot do this until we are setting metadata
"""
@@ -176,23 +180,23 @@ class Velvet( Html ):
gen_msg = ''
try:
efp = dataset.extra_files_path
log_path = os.path.join(efp,'Log')
f = open(log_path,'r')
log_path = os.path.join(efp, 'Log')
f = open(log_path, 'r')
log_content = f.read(1000)
f.close()
log_msg = re.sub('/\S*/','',log_content)
log_msg = re.sub('/\S*/', '', log_content)
log.debug( "Velveth log info %s" % log_msg)
paired_end_reads = re.search('-(short|long)Paired', log_msg) != None
paired_end_reads = re.search('-(short|long)Paired', log_msg) is not None
dataset.metadata.paired_end_reads = paired_end_reads
long_reads = re.search('-long', log_msg) != None
long_reads = re.search('-long', log_msg) is not None
dataset.metadata.long_reads = long_reads
short2_reads = re.search('-short(Paired)?2', log_msg) != None
short2_reads = re.search('-short(Paired)?2', log_msg) is not None
dataset.metadata.short2_reads = short2_reads
dataset.info = re.sub('.*velveth \S+','hash_length',re.sub('\n',' ',log_msg))
dataset.info = re.sub('.*velveth \S+', 'hash_length', re.sub('\n', ' ', log_msg))
if paired_end_reads:
gen_msg = gen_msg + ' Paired-End Reads'
gen_msg = gen_msg + ' Paired-End Reads'
if long_reads:
gen_msg = gen_msg + ' Long Reads'
gen_msg = gen_msg + ' Long Reads'
if len(gen_msg) > 0:
gen_msg = 'Uses: ' + gen_msg
except:
@@ -200,12 +204,12 @@ class Velvet( Html ):
log.debug( "Velveth log info %s" % gen_msg)
rval = ['<html><head><title>Velvet Galaxy Composite Dataset </title></head><p/>']
# rval.append('<div>Generated:<p/><code> %s </code></div>' %(re.sub('\n','<br>',log_msg)))
rval.append('<div>Generated:<p/> %s </div>' %(gen_msg))
rval.append('<div>Generated:<p/> %s </div>' % (gen_msg))
rval.append('<div>Velveth dataset:<p/><ul>')
for composite_name, composite_file in self.get_composite_files( dataset = dataset ).iteritems():
for composite_name, composite_file in self.get_composite_files( dataset=dataset ).iteritems():
fn = composite_name
log.debug( "Velvet log info %s %s %s" % ('JJ regenerate_primary_file',fn,composite_file))
if re.search('Log',fn) == None:
log.debug( "Velvet log info %s %s %s" % ('JJ regenerate_primary_file', fn, composite_file))
if re.search('Log', fn) is None:
opt_text = ''
if composite_file.optional:
opt_text = ' (optional)'
@@ -214,7 +218,7 @@ class Velvet( Html ):
else:
rval.append( '<li><a href="%s" type="text/plain">%s</a>%s</li>' % ( fn, fn, opt_text ) )
rval.append( '</ul></div></html>' )
f = file(dataset.file_name,'w')
f = file(dataset.file_name, 'w')
f.write("\n".join( rval ))
f.write('\n')
f.close()
+61 -63
View File
@@ -11,7 +11,6 @@ import shutil
import struct
import subprocess
import tempfile
import re
import warnings
import zipfile
@@ -35,6 +34,7 @@ log = logging.getLogger(__name__)
# Currently these supported binary data types must be manually set on upload
class Binary( data.Data ):
"""Binary data"""
edam_format = "format_2333"
@@ -89,7 +89,7 @@ class Binary( data.Data ):
to_ext = dataset.extension
valid_chars = '.,^_-()[]0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
fname = ''.join(c in valid_chars and c or '_' for c in dataset.name)[0:150]
trans.response.set_content_type( "application/octet-stream" ) #force octet-stream so Safari doesn't append mime extensions to filename
trans.response.set_content_type( "application/octet-stream" ) # force octet-stream so Safari doesn't append mime extensions to filename
trans.response.headers["Content-Disposition"] = 'attachment; filename="Galaxy%s-[%s].%s"' % (dataset.hid, fname, to_ext)
return open( dataset.file_name )
@@ -100,7 +100,7 @@ class Ab1( Binary ):
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "Binary ab1 sequence file"
dataset.peek = "Binary ab1 sequence file"
dataset.blurb = data.nice_size( dataset.get_size() )
else:
dataset.peek = 'file does not exist'
@@ -134,7 +134,6 @@ class Idat( Binary ):
Binary.register_sniffable_binary_format("idat", "idat", Idat)
class CompressedArchive( Binary ):
"""
Class describing an compressed binary file
@@ -145,7 +144,7 @@ class CompressedArchive( Binary ):
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "Compressed binary file"
dataset.peek = "Compressed binary file"
dataset.blurb = data.nice_size( dataset.get_size() )
else:
dataset.peek = 'file does not exist'
@@ -209,7 +208,7 @@ class Bam( Binary ):
if stderr:
if exit_code != 0:
shutil.rmtree(tmp_dir) # clean up
raise Exception, "Error merging BAM files: %s" % stderr
raise Exception( "Error merging BAM files: %s" % stderr )
else:
print stderr
os.unlink(stderr_name)
@@ -243,11 +242,11 @@ class Bam( Binary ):
# seconds to index with samtools, and 45 minutes to sort, so indexing is relatively inexpensive.
if self._is_coordinate_sorted( file_name ):
return False
index_name = tempfile.NamedTemporaryFile( prefix = "bam_index" ).name
stderr_name = tempfile.NamedTemporaryFile( prefix = "bam_index_stderr" ).name
index_name = tempfile.NamedTemporaryFile( prefix="bam_index" ).name
stderr_name = tempfile.NamedTemporaryFile( prefix="bam_index_stderr" ).name
command = 'samtools index %s %s' % ( file_name, index_name )
proc = subprocess.Popen( args=command, shell=True, stderr=open( stderr_name, 'wb' ) )
exit_code = proc.wait()
proc.wait()
stderr = open( stderr_name ).read().strip()
if stderr:
try:
@@ -276,28 +275,28 @@ class Bam( Binary ):
on an output dataset after the content is initially generated.
"""
# Use samtools to sort the Bam file
##$ samtools sort
##Usage: samtools sort [-on] [-m <maxMem>] <in.bam> <out.prefix>
## Sort alignments by leftmost coordinates. File <out.prefix>.bam will be created.
## This command may also create temporary files <out.prefix>.%d.bam when the
## whole alignment cannot be fitted into memory ( controlled by option -m ).
#do this in a unique temp directory, because of possible <out.prefix>.%d.bam temp files
# $ samtools sort
# Usage: samtools sort [-on] [-m <maxMem>] <in.bam> <out.prefix>
# Sort alignments by leftmost coordinates. File <out.prefix>.bam will be created.
# This command may also create temporary files <out.prefix>.%d.bam when the
# whole alignment cannot be fitted into memory ( controlled by option -m ).
# do this in a unique temp directory, because of possible <out.prefix>.%d.bam temp files
if not self.dataset_content_needs_grooming( file_name ):
# Don't re-sort if already sorted
return
tmp_dir = tempfile.mkdtemp()
tmp_sorted_dataset_file_name_prefix = os.path.join( tmp_dir, 'sorted' )
stderr_name = tempfile.NamedTemporaryFile( dir = tmp_dir, prefix = "bam_sort_stderr" ).name
samtools_created_sorted_file_name = "%s.bam" % tmp_sorted_dataset_file_name_prefix #samtools accepts a prefix, not a filename, it always adds .bam to the prefix
stderr_name = tempfile.NamedTemporaryFile( dir=tmp_dir, prefix="bam_sort_stderr" ).name
samtools_created_sorted_file_name = "%s.bam" % tmp_sorted_dataset_file_name_prefix # samtools accepts a prefix, not a filename, it always adds .bam to the prefix
command = "samtools sort %s %s" % ( file_name, tmp_sorted_dataset_file_name_prefix )
proc = subprocess.Popen( args=command, shell=True, cwd=tmp_dir, stderr=open( stderr_name, 'wb' ) )
exit_code = proc.wait()
#Did sort succeed?
# Did sort succeed?
stderr = open( stderr_name ).read().strip()
if stderr:
if exit_code != 0:
shutil.rmtree( tmp_dir) #clean up
raise Exception, "Error Grooming BAM file contents: %s" % stderr
shutil.rmtree( tmp_dir) # clean up
raise Exception( "Error Grooming BAM file contents: %s" % stderr )
else:
print stderr
# Move samtools_created_sorted_file_name to our output dataset location
@@ -309,20 +308,20 @@ class Bam( Binary ):
def init_meta( self, dataset, copy_from=None ):
Binary.init_meta( self, dataset, copy_from=copy_from )
def set_meta( self, dataset, overwrite = True, **kwd ):
def set_meta( self, dataset, overwrite=True, **kwd ):
""" Creates the index for the BAM file. """
# These metadata values are not accessible by users, always overwrite
index_file = dataset.metadata.bam_index
if not index_file:
index_file = dataset.metadata.spec['bam_index'].param.new_file( dataset = dataset )
index_file = dataset.metadata.spec['bam_index'].param.new_file( dataset=dataset )
# Create the Bam index
##$ samtools index
##Usage: samtools index <in.bam> [<out.index>]
stderr_name = tempfile.NamedTemporaryFile( prefix = "bam_index_stderr" ).name
# $ samtools index
# Usage: samtools index <in.bam> [<out.index>]
stderr_name = tempfile.NamedTemporaryFile( prefix="bam_index_stderr" ).name
command = [ 'samtools', 'index', dataset.file_name, index_file.file_name ]
proc = subprocess.Popen( args=command, stderr=open( stderr_name, 'wb' ) )
exit_code = proc.wait()
#Did index succeed?
# Did index succeed?
if exit_code == -6:
# SIGABRT, most likely samtools 1.0+ which does not accept the index name parameter.
dataset_symlink = os.path.join( os.path.dirname( index_file.file_name ),
@@ -339,8 +338,8 @@ class Bam( Binary ):
stderr = open( stderr_name ).read().strip()
if stderr:
if exit_code != 0:
os.unlink( stderr_name ) #clean up
raise Exception, "Error Setting BAM Metadata: %s" % stderr
os.unlink( stderr_name ) # clean up
raise Exception( "Error Setting BAM Metadata: %s" % stderr )
else:
print stderr
dataset.metadata.bam_index = index_file
@@ -371,7 +370,7 @@ class Bam( Binary ):
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "Binary bam alignments file"
dataset.peek = "Binary bam alignments file"
dataset.blurb = data.nice_size( dataset.get_size() )
else:
dataset.peek = 'file does not exist'
@@ -383,14 +382,12 @@ class Bam( Binary ):
except:
return "Binary bam alignments file (%s)" % ( data.nice_size( dataset.get_size() ) )
# ------------- Dataproviders
# pipe through samtools view
#ALSO: (as Sam)
# ALSO: (as Sam)
# bam does not use '#' to indicate comments/headers - we need to strip out those headers from the std. providers
#TODO:?? seems like there should be an easier way to do/inherit this - metadata.comment_char?
#TODO: incorporate samtools options to control output: regions first, then flags, etc.
# TODO:?? seems like there should be an easier way to do/inherit this - metadata.comment_char?
# TODO: incorporate samtools options to control output: regions first, then flags, etc.
@dataproviders.decorators.dataprovider_factory( 'line', dataproviders.line.FilteredLineDataProvider.settings )
def line_dataprovider( self, dataset, **settings ):
samtools_source = dataproviders.dataset.SamtoolsDataProvider( dataset )
@@ -417,13 +414,13 @@ class Bam( Binary ):
# these can't be used directly - may need BamColumn, BamDict (Bam metadata -> column/dict)
# OR - see genomic_region_dataprovider
#@dataproviders.decorators.dataprovider_factory( 'dataset-column', dataproviders.column.ColumnarDataProvider.settings )
#def dataset_column_dataprovider( self, dataset, **settings ):
# @dataproviders.decorators.dataprovider_factory( 'dataset-column', dataproviders.column.ColumnarDataProvider.settings )
# def dataset_column_dataprovider( self, dataset, **settings ):
# settings[ 'comment_char' ] = '@'
# return super( Sam, self ).dataset_column_dataprovider( dataset, **settings )
#@dataproviders.decorators.dataprovider_factory( 'dataset-dict', dataproviders.column.DictDataProvider.settings )
#def dataset_dict_dataprovider( self, dataset, **settings ):
# @dataproviders.decorators.dataprovider_factory( 'dataset-dict', dataproviders.column.DictDataProvider.settings )
# def dataset_dict_dataprovider( self, dataset, **settings ):
# settings[ 'comment_char' ] = '@'
# return super( Sam, self ).dataset_dict_dataprovider( dataset, **settings )
@@ -443,10 +440,10 @@ class Bam( Binary ):
@dataproviders.decorators.dataprovider_factory( 'genomic-region', dataproviders.column.ColumnarDataProvider.settings )
def genomic_region_dataprovider( self, dataset, **settings ):
# GenomicRegionDataProvider currently requires a dataset as source - may not be necc.
#TODO:?? consider (at least) the possible use of a kwarg: metadata_source (def. to source.dataset),
# TODO:?? consider (at least) the possible use of a kwarg: metadata_source (def. to source.dataset),
# or remove altogether...
#samtools_source = dataproviders.dataset.SamtoolsDataProvider( dataset )
#return dataproviders.dataset.GenomicRegionDataProvider( samtools_source, metadata_source=dataset,
# samtools_source = dataproviders.dataset.SamtoolsDataProvider( dataset )
# return dataproviders.dataset.GenomicRegionDataProvider( samtools_source, metadata_source=dataset,
# 2, 3, 3, **settings )
# instead, set manually and use in-class column gen
@@ -469,6 +466,7 @@ class Bam( Binary ):
Binary.register_sniffable_binary_format("bam", "bam", Bam)
class Bcf( Binary):
"""Class describing a BCF file"""
edam_format = "format_3020"
@@ -487,21 +485,21 @@ class Bcf( Binary):
except:
return False
def set_meta( self, dataset, overwrite = True, **kwd ):
def set_meta( self, dataset, overwrite=True, **kwd ):
""" Creates the index for the BCF file. """
# These metadata values are not accessible by users, always overwrite
index_file = dataset.metadata.bcf_index
if not index_file:
index_file = dataset.metadata.spec['bcf_index'].param.new_file( dataset = dataset )
index_file = dataset.metadata.spec['bcf_index'].param.new_file( dataset=dataset )
# Create the bcf index
##$ bcftools index
##Usage: bcftools index <in.bcf>
# $ bcftools index
# Usage: bcftools index <in.bcf>
dataset_symlink = os.path.join( os.path.dirname( index_file.file_name ),
'__dataset_%d_%s' % ( dataset.id, os.path.basename( index_file.file_name ) ) )
os.symlink( dataset.file_name, dataset_symlink )
stderr_name = tempfile.NamedTemporaryFile( prefix = "bcf_index_stderr" ).name
stderr_name = tempfile.NamedTemporaryFile( prefix="bcf_index_stderr" ).name
command = [ 'bcftools', 'index', dataset_symlink ]
proc = subprocess.Popen( args=command, stderr=open( stderr_name, 'wb' ) )
exit_code = proc.wait()
@@ -510,8 +508,8 @@ class Bcf( Binary):
stderr = open( stderr_name ).read().strip()
if stderr:
if exit_code != 0:
os.unlink( stderr_name ) #clean up
raise Exception, "Error Setting BCF Metadata: %s" % stderr
os.unlink( stderr_name ) # clean up
raise Exception( "Error Setting BCF Metadata: %s" % stderr )
else:
print stderr
dataset.metadata.bcf_index = index_file
@@ -527,7 +525,7 @@ class H5( Binary ):
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "Binary h5 file"
dataset.peek = "Binary h5 file"
dataset.blurb = data.nice_size( dataset.get_size() )
else:
dataset.peek = 'file does not exist'
@@ -549,7 +547,7 @@ class Scf( Binary ):
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "Binary scf sequence file"
dataset.peek = "Binary scf sequence file"
dataset.blurb = data.nice_size( dataset.get_size() )
else:
dataset.peek = 'file does not exist'
@@ -585,7 +583,7 @@ class Sff( Binary ):
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "Binary sff file"
dataset.peek = "Binary sff file"
dataset.blurb = data.nice_size( dataset.get_size() )
else:
dataset.peek = 'file does not exist'
@@ -627,7 +625,7 @@ class BigWig(Binary):
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "Binary UCSC %s file" % self._name
dataset.peek = "Binary UCSC %s file" % self._name
dataset.blurb = data.nice_size( dataset.get_size() )
else:
dataset.peek = 'file does not exist'
@@ -699,7 +697,7 @@ class SQlite ( Binary ):
def init_meta( self, dataset, copy_from=None ):
Binary.init_meta( self, dataset, copy_from=copy_from )
def set_meta( self, dataset, overwrite = True, **kwd ):
def set_meta( self, dataset, overwrite=True, **kwd ):
try:
tables = []
columns = dict()
@@ -708,7 +706,7 @@ class SQlite ( Binary ):
c = conn.cursor()
tables_query = "SELECT name,sql FROM sqlite_master WHERE type='table' ORDER BY name"
rslt = c.execute(tables_query).fetchall()
for table,sql in rslt:
for table, sql in rslt:
tables.append(table)
try:
col_query = 'SELECT * FROM %s LIMIT 0' % table
@@ -742,12 +740,12 @@ class SQlite ( Binary ):
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "SQLite Database"
dataset.peek = "SQLite Database"
lines = ['SQLite Database']
if dataset.metadata.tables:
for table in dataset.metadata.tables:
try:
lines.append('%s [%s]' % (table,dataset.metadata.table_row_count[table]))
lines.append('%s [%s]' % (table, dataset.metadata.table_row_count[table]))
except:
continue
dataset.peek = '\n'.join(lines)
@@ -762,7 +760,6 @@ class SQlite ( Binary ):
except:
return "SQLite Database (%s)" % ( data.nice_size( dataset.get_size() ) )
@dataproviders.decorators.dataprovider_factory( 'sqlite', dataproviders.dataset.SQliteDataProvider.settings )
def sqlite_dataprovider( self, dataset, **settings ):
dataset_source = dataproviders.dataset.DatasetDataProvider( dataset )
@@ -779,7 +776,7 @@ class SQlite ( Binary ):
return dataproviders.dataset.SQliteDataDictProvider( dataset_source, **settings )
#Binary.register_sniffable_binary_format("sqlite", "sqlite", SQlite)
# Binary.register_sniffable_binary_format("sqlite", "sqlite", SQlite)
class GeminiSQLite( SQlite ):
@@ -788,8 +785,8 @@ class GeminiSQLite( SQlite ):
readonly=True, visible=True, no_value='0.10.0' )
file_ext = "gemini.sqlite"
def set_meta( self, dataset, overwrite = True, **kwd ):
super( GeminiSQLite, self ).set_meta( dataset, overwrite = overwrite, **kwd )
def set_meta( self, dataset, overwrite=True, **kwd ):
super( GeminiSQLite, self ).set_meta( dataset, overwrite=overwrite, **kwd )
try:
conn = sqlite.connect( dataset.file_name )
c = conn.cursor()
@@ -821,7 +818,7 @@ class GeminiSQLite( SQlite ):
def set_peek( self, dataset, is_multi_byte=False ):
if not dataset.dataset.purged:
dataset.peek = "Gemini SQLite Database, version %s" % ( dataset.metadata.gemini_version or 'unknown' )
dataset.peek = "Gemini SQLite Database, version %s" % ( dataset.metadata.gemini_version or 'unknown' )
dataset.blurb = data.nice_size( dataset.get_size() )
else:
dataset.peek = 'file does not exist'
@@ -841,7 +838,8 @@ Binary.register_sniffable_binary_format("sqlite", "sqlite", SQlite)
class Xlsx(Binary):
"""Class for Excel 2007 (xlsx) files"""
file_ext="xlsx"
file_ext = "xlsx"
def sniff( self, filename ):
# Xlsx is compressed in zip format and must not be uncompressed in Galaxy.
try:
@@ -878,7 +876,7 @@ class Sra( Binary ):
def set_peek(self, dataset, is_multi_byte=False):
if not dataset.dataset.purged:
dataset.peek = 'Binary sra file'
dataset.peek = 'Binary sra file'
dataset.blurb = data.nice_size(dataset.get_size())
else:
dataset.peek = 'file does not exist'
+12 -6
View File
@@ -1,4 +1,3 @@
import os
import re
import bz2
import gzip
@@ -18,8 +17,9 @@ except ImportError:
except:
PIL = None
def check_image( file_path ):
if PIL != None:
if PIL is not None:
try:
im = PIL.open( file_path )
except:
@@ -28,10 +28,11 @@ def check_image( file_path ):
return im
return False
else:
if imghdr.what( file_path ) != None:
if imghdr.what( file_path ) is not None:
return True
return False
def check_html( file_path, chunk=None ):
if chunk is None:
temp = open( file_path, "U" )
@@ -58,6 +59,7 @@ def check_html( file_path, chunk=None ):
temp.close()
return False
def check_binary( name, file_path=True ):
# Handles files if file_path is True or text if file_path is False
is_binary = False
@@ -65,7 +67,6 @@ def check_binary( name, file_path=True ):
temp = open( name, "U" )
else:
temp = StringIO( name )
chars_read = 0
try:
for char in temp.read( 100 ):
if util.is_binary( char ):
@@ -75,6 +76,7 @@ def check_binary( name, file_path=True ):
temp.close( )
return is_binary
def check_gzip( file_path ):
# This method returns a tuple of booleans representing ( is_gzipped, is_valid )
# Make sure we have a gzipped file
@@ -95,7 +97,7 @@ def check_gzip( file_path ):
return ( True, True )
except:
return( False, False )
CHUNK_SIZE = 2**15 # 32Kb
CHUNK_SIZE = 2 ** 15 # 32Kb
gzipped_file = gzip.GzipFile( file_path, mode='rb' )
chunk = gzipped_file.read( CHUNK_SIZE )
gzipped_file.close()
@@ -104,6 +106,7 @@ def check_gzip( file_path ):
return ( True, False )
return ( True, True )
def check_bz2( file_path ):
try:
temp = open( file_path, "U" )
@@ -113,7 +116,7 @@ def check_bz2( file_path ):
return ( False, False )
except:
return( False, False )
CHUNK_SIZE = 2**15 # reKb
CHUNK_SIZE = 2 ** 15 # reKb
bzipped_file = bz2.BZ2File( file_path, mode='rb' )
chunk = bzipped_file.read( CHUNK_SIZE )
bzipped_file.close()
@@ -122,15 +125,18 @@ def check_bz2( file_path ):
return ( True, False )
return ( True, True )
def check_zip( file_path ):
if zipfile.is_zipfile( file_path ):
return True
return False
def is_bz2( file_path ):
is_bz2, is_valid = check_bz2( file_path )
return is_bz2
def is_gzip( file_path ):
is_gzipped, is_valid = check_gzip( file_path )
return is_gzipped
-1
View File
@@ -7,4 +7,3 @@ class ChromInfo( Tabular ):
file_ext = "len"
MetadataElement( name="chrom", default=1, desc="Chrom column", param=metadata.ColumnParameter )
MetadataElement( name="length", default=2, desc="Length column", param=metadata.ColumnParameter )
+1 -3
View File
@@ -13,6 +13,7 @@ from galaxy.datatypes.tabular import Tabular
log = logging.getLogger(__name__)
class LastzCoverage( Tabular ):
file_ext = "coverage"
@@ -28,7 +29,6 @@ class LastzCoverage( Tabular ):
"""
# Maybe if we import here people will still be able to use Galaxy when numpy kills it
eggs.require("numpy>=1.2.1")
#from numpy.lib import format
import numpy
range = end - start
@@ -55,5 +55,3 @@ class LastzCoverage( Tabular ):
resolution = min( resolution, 10000 )
resolution = max( resolution, 1 )
return resolution