mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #5062 from nsoranzo/remove_wchartype_dep
Remove wchartype dependency and is_multi_byte [1/2]
This commit is contained in:
@@ -14,7 +14,7 @@ class SnapHmm(Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "SNAP HMM model"
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
|
||||
@@ -1088,7 +1088,7 @@ class TwoBit(Binary):
|
||||
dataset.peek = "Binary TwoBit format nucleotide file"
|
||||
dataset.blurb = nice_size(dataset.get_size())
|
||||
else:
|
||||
return super(TwoBit, self).set_peek(dataset, is_multi_byte)
|
||||
return super(TwoBit, self).set_peek(dataset)
|
||||
|
||||
def display_peek(self, dataset):
|
||||
try:
|
||||
|
||||
@@ -53,7 +53,7 @@ class BlastXml(GenericXml):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'NCBI Blast XML data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
|
||||
@@ -102,7 +102,7 @@ class Ply(object):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "Faces: %s, Vertices: %s" % (str(dataset.metadata.face), str(dataset.metadata.vertex))
|
||||
else:
|
||||
dataset.peek = 'File does not exist'
|
||||
@@ -429,7 +429,7 @@ class Vtk(object):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = self.get_blurb(dataset)
|
||||
else:
|
||||
dataset.peek = 'File does not exist'
|
||||
|
||||
@@ -195,7 +195,12 @@ class Data(object):
|
||||
max_optional_metadata_filesize = property(get_max_optional_metadata_filesize, set_max_optional_metadata_filesize)
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
"""
|
||||
Set the peek and blurb text
|
||||
|
||||
:param is_multi_byte: deprecated
|
||||
:type is_multi_byte: bool
|
||||
"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = ''
|
||||
dataset.blurb = 'data'
|
||||
@@ -838,7 +843,7 @@ class Text(Data):
|
||||
"""
|
||||
if not dataset.dataset.purged:
|
||||
# The file must exist on disk for the get_file_peek() method
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte, WIDTH=WIDTH, skipchars=skipchars, line_wrap=line_wrap)
|
||||
dataset.peek = get_file_peek(dataset.file_name, WIDTH=WIDTH, skipchars=skipchars, line_wrap=line_wrap)
|
||||
if line_count is None:
|
||||
# See if line_count is stored in the metadata
|
||||
if dataset.metadata.data_lines:
|
||||
@@ -1046,7 +1051,10 @@ def get_test_fname(fname):
|
||||
|
||||
def get_file_peek(file_name, is_multi_byte=False, WIDTH=256, LINE_COUNT=5, skipchars=None, line_wrap=True):
|
||||
"""
|
||||
Returns the first LINE_COUNT lines wrapped to WIDTH
|
||||
Returns the first LINE_COUNT lines wrapped to WIDTH.
|
||||
|
||||
:param is_multi_byte: deprecated
|
||||
:type is_multi_byte: bool
|
||||
|
||||
>>> fname = get_test_fname('4.bed')
|
||||
>>> get_file_peek(fname, LINE_COUNT=1)
|
||||
@@ -1061,20 +1069,12 @@ def get_file_peek(file_name, is_multi_byte=False, WIDTH=256, LINE_COUNT=5, skipc
|
||||
skipchars = []
|
||||
lines = []
|
||||
count = 0
|
||||
file_type = None
|
||||
data_checked = False
|
||||
with compression_utils.get_fileobj(file_name, "U") as temp:
|
||||
while count < LINE_COUNT:
|
||||
line = temp.readline(WIDTH)
|
||||
if line and not is_multi_byte and not data_checked:
|
||||
# See if we have a compressed or binary file
|
||||
for char in line:
|
||||
if ord(char) > 128:
|
||||
file_type = 'binary'
|
||||
break
|
||||
data_checked = True
|
||||
if file_type == 'binary':
|
||||
break
|
||||
try:
|
||||
line = temp.readline(WIDTH)
|
||||
except UnicodeDecodeError:
|
||||
return "binary file"
|
||||
if not line_wrap:
|
||||
if line.endswith('\n'):
|
||||
line = line[:-1]
|
||||
@@ -1091,11 +1091,4 @@ def get_file_peek(file_name, is_multi_byte=False, WIDTH=256, LINE_COUNT=5, skipc
|
||||
if not skip_line:
|
||||
lines.append(line)
|
||||
count += 1
|
||||
if file_type == 'binary':
|
||||
text = "%s file" % file_type
|
||||
else:
|
||||
try:
|
||||
text = util.unicodify('\n'.join(lines))
|
||||
except UnicodeDecodeError:
|
||||
text = "binary/unknown file"
|
||||
return text
|
||||
return '\n'.join(lines)
|
||||
|
||||
@@ -27,7 +27,7 @@ class Xgmml(xml.GenericXml):
|
||||
Set the peek and blurb text
|
||||
"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'XGMML data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -73,7 +73,7 @@ class Sif(tabular.Tabular):
|
||||
Set the peek and blurb text
|
||||
"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'SIF data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
|
||||
@@ -7,7 +7,6 @@ import zipfile
|
||||
from six.moves.urllib.parse import quote_plus
|
||||
|
||||
from galaxy.datatypes.binary import Binary
|
||||
from galaxy.datatypes.sniff import get_headers
|
||||
from galaxy.datatypes.text import Html as HtmlFromText
|
||||
from galaxy.util import nice_size
|
||||
from galaxy.util.image_util import check_image_type
|
||||
@@ -160,14 +159,8 @@ class Pdf(Image):
|
||||
|
||||
def sniff(self, filename):
|
||||
"""Determine if the file is in pdf format."""
|
||||
headers = get_headers(filename, None, 1)
|
||||
try:
|
||||
if headers[0][0].startswith("%PDF"):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
except IndexError:
|
||||
return False
|
||||
with open(filename, 'rb') as fh:
|
||||
return fh.read(4) == b"%PDF"
|
||||
|
||||
|
||||
Binary.register_sniffable_binary_format("pdf", "pdf", Pdf)
|
||||
|
||||
@@ -61,12 +61,11 @@ class GenericMolFile(data.Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
if (dataset.metadata.number_of_molecules == 1):
|
||||
dataset.blurb = "1 molecule"
|
||||
else:
|
||||
dataset.blurb = "%s molecules" % dataset.metadata.number_of_molecules
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
dataset.blurb = 'file purged from disk'
|
||||
@@ -471,7 +470,7 @@ class PHAR(GenericMolFile):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "pharmacophore"
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -524,7 +523,7 @@ class PDB(GenericMolFile):
|
||||
if not dataset.dataset.purged:
|
||||
atom_numbers = count_special_lines("^ATOM", dataset.file_name)
|
||||
hetatm_numbers = count_special_lines("^HETATM", dataset.file_name)
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "%s atoms and %s HET-atoms" % (atom_numbers, hetatm_numbers)
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -575,7 +574,7 @@ class PDBQT(GenericMolFile):
|
||||
if not dataset.dataset.purged:
|
||||
root_numbers = count_special_lines("^ROOT", dataset.file_name)
|
||||
branch_numbers = count_special_lines("^BRANCH", dataset.file_name)
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "%s roots and %s branches" % (root_numbers, branch_numbers)
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -587,7 +586,7 @@ class grd(data.Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "grids for docking"
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -621,12 +620,11 @@ class InChI(Tabular):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
if (dataset.metadata.number_of_molecules == 1):
|
||||
dataset.blurb = "1 molecule"
|
||||
else:
|
||||
dataset.blurb = "%s molecules" % dataset.metadata.number_of_molecules
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
dataset.blurb = 'file purged from disk'
|
||||
@@ -666,12 +664,11 @@ class SMILES(Tabular):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
if dataset.metadata.number_of_molecules == 1:
|
||||
dataset.blurb = "1 molecule"
|
||||
else:
|
||||
dataset.blurb = "%s molecules" % dataset.metadata.number_of_molecules
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
dataset.blurb = 'file purged from disk'
|
||||
@@ -727,12 +724,11 @@ class CML(GenericXml):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
if (dataset.metadata.number_of_molecules == 1):
|
||||
dataset.blurb = "1 molecule"
|
||||
else:
|
||||
dataset.blurb = "%s molecules" % dataset.metadata.number_of_molecules
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
dataset.blurb = 'file purged from disk'
|
||||
|
||||
@@ -17,7 +17,7 @@ class Hmmer(Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "HMMER Database"
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -104,12 +104,11 @@ class Stockholm_1_0(Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
if (dataset.metadata.number_of_models == 1):
|
||||
dataset.blurb = "1 alignment"
|
||||
else:
|
||||
dataset.blurb = "%s alignments" % dataset.metadata.number_of_models
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
dataset.blurb = 'file purged from disc'
|
||||
@@ -187,12 +186,11 @@ class MauveXmfa(Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
if (dataset.metadata.number_of_models == 1):
|
||||
dataset.blurb = "1 alignment"
|
||||
else:
|
||||
dataset.blurb = "%s alignments" % dataset.metadata.number_of_models
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
dataset.blurb = 'file purged from disc'
|
||||
|
||||
@@ -23,7 +23,7 @@ class Smat(Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "ESTScan scores matrices"
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -125,7 +125,7 @@ class PlantTribesKsComponents(Tabular):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
if (dataset.metadata.number_comp == 1):
|
||||
dataset.blurb = "1 significant component"
|
||||
else:
|
||||
@@ -159,7 +159,7 @@ class PlantTribesOrtho(PlantTribes):
|
||||
file_ext = "ptortho"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesOrtho, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesOrtho, self).set_peek(dataset)
|
||||
dataset.blurb = "Proteins orthogroup fasta files: %d items" % dataset.metadata.num_files
|
||||
|
||||
|
||||
@@ -171,7 +171,7 @@ class PlantTribesOrthoCodingSequence(PlantTribes):
|
||||
file_ext = "ptorthocs"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesOrthoCodingSequence, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesOrthoCodingSequence, self).set_peek(dataset)
|
||||
dataset.blurb = "Protein and coding sequences orthogroup fasta files: %d items" % dataset.metadata.num_files
|
||||
|
||||
|
||||
@@ -182,7 +182,7 @@ class PlantTribesTargetedGeneFamilies(PlantTribes):
|
||||
file_ext = "pttgf"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesTargetedGeneFamilies, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesTargetedGeneFamilies, self).set_peek(dataset)
|
||||
dataset.blurb = "Targeted gene families"
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@ class PlantTribesPhylogeneticTree(PlantTribes):
|
||||
file_ext = "pttree"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesPhylogeneticTree, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesPhylogeneticTree, self).set_peek(dataset)
|
||||
dataset.blurb = "Phylogenetic trees: %d items" % dataset.metadata.num_files
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@ class PlantTribesPhylip(PlantTribes):
|
||||
file_ext = "ptphylip"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesPhylip, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesPhylip, self).set_peek(dataset)
|
||||
dataset.blurb = "Orthogroup phylip multiple sequence alignments: %d items" % dataset.metadata.num_files
|
||||
|
||||
|
||||
@@ -216,7 +216,7 @@ class PlantTribesMultipleSequenceAlignment(PlantTribes):
|
||||
file_ext = "ptalign"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesMultipleSequenceAlignment, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesMultipleSequenceAlignment, self).set_peek(dataset)
|
||||
dataset.blurb = "Proteins orthogroup alignments: %d items" % dataset.metadata.num_files
|
||||
|
||||
|
||||
@@ -227,7 +227,7 @@ class PlantTribesMultipleSequenceAlignmentCodonAlignment(PlantTribes):
|
||||
file_ext = "ptalignca"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesMultipleSequenceAlignmentCodonAlignment, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesMultipleSequenceAlignmentCodonAlignment, self).set_peek(dataset)
|
||||
dataset.blurb = "Protein and coding sequences orthogroup alignments: %d items" % dataset.metadata.num_files
|
||||
|
||||
|
||||
@@ -238,7 +238,7 @@ class PlantTribesMultipleSequenceAlignmentTrimmed(PlantTribes):
|
||||
file_ext = "ptaligntrimmed"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesMultipleSequenceAlignmentTrimmed, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesMultipleSequenceAlignmentTrimmed, self).set_peek(dataset)
|
||||
dataset.blurb = "Trimmed proteins orthogroup alignments: %d items" % dataset.metadata.num_files
|
||||
|
||||
|
||||
@@ -249,7 +249,7 @@ class PlantTribesMultipleSequenceAlignmentTrimmedCodonAlignment(PlantTribes):
|
||||
file_ext = "ptaligntrimmedca"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesMultipleSequenceAlignmentTrimmedCodonAlignment, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesMultipleSequenceAlignmentTrimmedCodonAlignment, self).set_peek(dataset)
|
||||
dataset.blurb = "Trimmed protein and coding sequences orthogroup alignments: %d items" % dataset.metadata.num_files
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@ class PlantTribesMultipleSequenceAlignmentFiltered(PlantTribes):
|
||||
file_ext = "ptalignfiltered"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesMultipleSequenceAlignmentFiltered, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesMultipleSequenceAlignmentFiltered, self).set_peek(dataset)
|
||||
dataset.blurb = "Filtered proteins orthogroup alignments: %d items" % dataset.metadata.num_files
|
||||
|
||||
|
||||
@@ -271,5 +271,5 @@ class PlantTribesMultipleSequenceAlignmentFilteredCodonAlignment(PlantTribes):
|
||||
file_ext = "ptalignfilteredca"
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(PlantTribesMultipleSequenceAlignmentFilteredCodonAlignment, self).set_peek(dataset, is_multi_byte=is_multi_byte)
|
||||
super(PlantTribesMultipleSequenceAlignmentFilteredCodonAlignment, self).set_peek(dataset)
|
||||
dataset.blurb = "Filtered protein and coding sequences orthogroup alignments: %d items" % dataset.metadata.num_files
|
||||
|
||||
@@ -114,7 +114,7 @@ class ProteomicsXml(GenericXml):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = self.blurb
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -221,7 +221,7 @@ class Mgf(Text):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'mgf Mascot Generic Format'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -249,7 +249,7 @@ class MascotDat(Text):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'mascotdat Mascot Search Results'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -334,7 +334,7 @@ class SPLibNoIndex(Text):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'Spectral Library without index files'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -374,7 +374,7 @@ class SPLib(Msp):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'splib Spectral Library Format'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
|
||||
@@ -314,13 +314,14 @@ class Registry(object):
|
||||
def append_to_sniff_order():
|
||||
# Just in case any supported data types are not included in the config's sniff_order section.
|
||||
for ext, datatype in self.datatypes_by_extension.items():
|
||||
included = False
|
||||
for atype in self.sniff_order:
|
||||
if isinstance(atype, datatype.__class__):
|
||||
included = True
|
||||
break
|
||||
if not included:
|
||||
self.sniff_order.append(datatype)
|
||||
if hasattr(datatype, 'sniff'):
|
||||
included = False
|
||||
for atype in self.sniff_order:
|
||||
if isinstance(atype, datatype.__class__):
|
||||
included = True
|
||||
break
|
||||
if not included:
|
||||
self.sniff_order.append(datatype)
|
||||
append_to_sniff_order()
|
||||
|
||||
def _load_build_sites(self, root):
|
||||
|
||||
@@ -61,7 +61,7 @@ class SequenceSplitLocations(data.Text):
|
||||
try:
|
||||
parsed_data = json.load(open(dataset.file_name))
|
||||
# dataset.peek = json.dumps(data, sort_keys=True, indent=4)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = '%d sections' % len(parsed_data['sections'])
|
||||
except Exception:
|
||||
dataset.peek = 'Not FQTOC file'
|
||||
@@ -112,7 +112,7 @@ class Sequence(data.Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
if dataset.metadata.sequences:
|
||||
dataset.blurb = "%s sequences" % util.commaify(str(dataset.metadata.sequences))
|
||||
else:
|
||||
@@ -861,7 +861,7 @@ class Maf(Alignment):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
# The file must exist on disk for the get_file_peek() method
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
if dataset.metadata.blocks:
|
||||
dataset.blurb = "%s blocks" % util.commaify(str(dataset.metadata.blocks))
|
||||
else:
|
||||
|
||||
@@ -20,7 +20,6 @@ from galaxy.datatypes.binary import Binary
|
||||
from galaxy.util import (
|
||||
compression_utils,
|
||||
multi_byte,
|
||||
unicodify
|
||||
)
|
||||
from galaxy.util.checkers import (
|
||||
check_binary,
|
||||
@@ -204,17 +203,11 @@ def convert_newlines_sep2tabs(fname, in_place=True, patt="\\s+", tmp_dir=None, t
|
||||
return (i + 1, temp_name)
|
||||
|
||||
|
||||
def iter_headers(fname, sep, count=60, is_multi_byte=False, comment_designator=None):
|
||||
def iter_headers(fname, sep, count=60, comment_designator=None):
|
||||
with compression_utils.get_fileobj(fname) as in_file:
|
||||
idx = 0
|
||||
for line in in_file:
|
||||
line = line.rstrip('\n\r')
|
||||
if is_multi_byte:
|
||||
# TODO: fix this - sep is never found in line
|
||||
line = unicodify(line, 'utf-8')
|
||||
sep = sep.encode('utf-8')
|
||||
if comment_designator is not None and comment_designator != '':
|
||||
comment_designator = comment_designator.encode('utf-8')
|
||||
if comment_designator is not None and comment_designator != '' and line.startswith(comment_designator):
|
||||
continue
|
||||
yield line.split(sep)
|
||||
@@ -223,22 +216,22 @@ def iter_headers(fname, sep, count=60, is_multi_byte=False, comment_designator=N
|
||||
break
|
||||
|
||||
|
||||
def get_headers(fname, sep, count=60, is_multi_byte=False, comment_designator=None):
|
||||
def get_headers(fname, sep, count=60, comment_designator=None):
|
||||
"""
|
||||
Returns a list with the first 'count' lines split by 'sep', ignoring lines
|
||||
starting with 'comment_designator'
|
||||
|
||||
>>> fname = get_test_fname('complete.bed')
|
||||
>>> get_headers(fname,'\\t')
|
||||
[['chr7', '127475281', '127491632', 'NM_000230', '0', '+', '127486022', '127488767', '0', '3', '29,172,3225,', '0,10713,13126,'], ['chr7', '127486011', '127488900', 'D49487', '0', '+', '127486022', '127488767', '0', '2', '155,490,', '0,2399']]
|
||||
>>> get_headers(fname,'\\t') == [['chr7', '127475281', '127491632', 'NM_000230', '0', '+', '127486022', '127488767', '0', '3', '29,172,3225,', '0,10713,13126,'], ['chr7', '127486011', '127488900', 'D49487', '0', '+', '127486022', '127488767', '0', '2', '155,490,', '0,2399']]
|
||||
True
|
||||
>>> fname = get_test_fname('test.gff')
|
||||
>>> get_headers(fname, '\\t', count=5, comment_designator='#')
|
||||
[[''], ['chr7', 'bed2gff', 'AR', '26731313', '26731437', '.', '+', '.', 'score'], ['chr7', 'bed2gff', 'AR', '26731491', '26731536', '.', '+', '.', 'score'], ['chr7', 'bed2gff', 'AR', '26731541', '26731649', '.', '+', '.', 'score'], ['chr7', 'bed2gff', 'AR', '26731659', '26731841', '.', '+', '.', 'score']]
|
||||
>>> get_headers(fname, '\\t', count=5, comment_designator='#') == [[''], ['chr7', 'bed2gff', 'AR', '26731313', '26731437', '.', '+', '.', 'score'], ['chr7', 'bed2gff', 'AR', '26731491', '26731536', '.', '+', '.', 'score'], ['chr7', 'bed2gff', 'AR', '26731541', '26731649', '.', '+', '.', 'score'], ['chr7', 'bed2gff', 'AR', '26731659', '26731841', '.', '+', '.', 'score']]
|
||||
True
|
||||
"""
|
||||
return list(iter_headers(fname=fname, sep=sep, count=count, is_multi_byte=is_multi_byte, comment_designator=comment_designator))
|
||||
return list(iter_headers(fname=fname, sep=sep, count=count, comment_designator=comment_designator))
|
||||
|
||||
|
||||
def is_column_based(fname, sep='\t', skip=0, is_multi_byte=False):
|
||||
def is_column_based(fname, sep='\t', skip=0):
|
||||
"""
|
||||
Checks whether the file is column based with respect to a separator
|
||||
(defaults to tab separator).
|
||||
@@ -266,7 +259,10 @@ def is_column_based(fname, sep='\t', skip=0, is_multi_byte=False):
|
||||
>>> is_column_based(fname)
|
||||
True
|
||||
"""
|
||||
headers = get_headers(fname, sep, is_multi_byte=is_multi_byte)
|
||||
try:
|
||||
headers = get_headers(fname, sep)
|
||||
except UnicodeDecodeError:
|
||||
return False
|
||||
count = 0
|
||||
if not headers:
|
||||
return False
|
||||
@@ -284,7 +280,7 @@ def is_column_based(fname, sep='\t', skip=0, is_multi_byte=False):
|
||||
return True
|
||||
|
||||
|
||||
def guess_ext(fname, sniff_order, is_multi_byte=False):
|
||||
def guess_ext(fname, sniff_order):
|
||||
"""
|
||||
Returns an extension that can be used in the datatype factory to
|
||||
generate a data for the 'fname' file
|
||||
@@ -393,6 +389,9 @@ def guess_ext(fname, sniff_order, is_multi_byte=False):
|
||||
>>> fname = get_test_fname('biom2_sparse_otu_table_hdf5.biom')
|
||||
>>> guess_ext(fname, sniff_order)
|
||||
'biom2'
|
||||
>>> fname = get_test_fname('454Score.pdf')
|
||||
>>> guess_ext(fname, sniff_order)
|
||||
'pdf'
|
||||
"""
|
||||
file_ext = None
|
||||
for datatype in sniff_order:
|
||||
@@ -414,28 +413,16 @@ def guess_ext(fname, sniff_order, is_multi_byte=False):
|
||||
# to tsv but it doesn't have a sniffer - is TSV was sniffed just check
|
||||
# if it is an okay tabular and use that instead.
|
||||
if file_ext == 'tsv':
|
||||
if is_column_based(fname, '\t', 1, is_multi_byte=is_multi_byte):
|
||||
if is_column_based(fname, '\t', 1):
|
||||
file_ext = 'tabular'
|
||||
if file_ext is not None:
|
||||
return file_ext
|
||||
|
||||
headers = get_headers(fname, None)
|
||||
is_binary = False
|
||||
if is_multi_byte:
|
||||
is_binary = False
|
||||
else:
|
||||
for hdr in headers:
|
||||
for char in hdr:
|
||||
# old behavior had 'char' possibly having length > 1,
|
||||
# need to determine when/if this occurs
|
||||
is_binary = util.is_binary(char)
|
||||
if is_binary:
|
||||
break
|
||||
if is_binary:
|
||||
break
|
||||
if is_binary:
|
||||
try:
|
||||
get_headers(fname, None)
|
||||
except UnicodeDecodeError:
|
||||
return 'data' # default binary data type file extension
|
||||
if is_column_based(fname, '\t', 1, is_multi_byte=is_multi_byte):
|
||||
if is_column_based(fname, '\t', 1):
|
||||
return 'tabular' # default tabular data type file extension
|
||||
return 'txt' # default text data type file extension
|
||||
|
||||
@@ -489,14 +476,14 @@ def handle_compressed_file(filename, datatypes_registry, ext='auto'):
|
||||
return is_valid, ext
|
||||
|
||||
|
||||
def handle_uploaded_dataset_file(filename, datatypes_registry, ext='auto', is_multi_byte=False):
|
||||
def handle_uploaded_dataset_file(filename, datatypes_registry, ext='auto'):
|
||||
is_valid, ext = handle_compressed_file(filename, datatypes_registry, ext=ext)
|
||||
|
||||
if not is_valid:
|
||||
raise InappropriateDatasetContentError('The compressed uploaded file contains inappropriate content.')
|
||||
|
||||
if ext in AUTO_DETECT_EXTENSIONS:
|
||||
ext = guess_ext(filename, sniff_order=datatypes_registry.sniff_order, is_multi_byte=is_multi_byte)
|
||||
ext = guess_ext(filename, sniff_order=datatypes_registry.sniff_order)
|
||||
|
||||
if check_binary(filename):
|
||||
if not Binary.is_ext_unsniffable(ext) and not datatypes_registry.get_datatype_by_extension(ext).sniff(filename):
|
||||
|
||||
@@ -51,7 +51,7 @@ class TabularData(data.Text):
|
||||
raise NotImplementedError
|
||||
|
||||
def set_peek(self, dataset, line_count=None, is_multi_byte=False, WIDTH=256, skipchars=None):
|
||||
super(TabularData, self).set_peek(dataset, line_count=line_count, is_multi_byte=is_multi_byte, WIDTH=WIDTH, skipchars=skipchars, line_wrap=False)
|
||||
super(TabularData, self).set_peek(dataset, line_count=line_count, WIDTH=WIDTH, skipchars=skipchars, line_wrap=False)
|
||||
if dataset.metadata.comment_lines:
|
||||
dataset.blurb = "%s, %s comments" % (dataset.blurb, util.commaify(str(dataset.metadata.comment_lines)))
|
||||
|
||||
@@ -825,7 +825,7 @@ class Eland(Tabular):
|
||||
- LANE, TILEm X, Y, INDEX, READ_NO, SEQ, QUAL, POSITION, *STRAND, FILT must be correct
|
||||
- We will only check that up to the first 5 alignments are correctly formatted.
|
||||
"""
|
||||
with compression_utils.get_fileobj(filename, gzip_only=True) as fh:
|
||||
with compression_utils.get_fileobj(filename, compressed_formats=['gzip']) as fh:
|
||||
count = 0
|
||||
while True:
|
||||
line = fh.readline()
|
||||
|
||||
@@ -0,0 +1,545 @@
|
||||
%PDF-1.1
|
||||
%�â�ã�Ï�Ó\r
|
||||
1 0 obj
|
||||
<<
|
||||
/CreationDate (D:20080403110358)
|
||||
/ModDate (D:20080403110358)
|
||||
/Title (R Graphics Output)
|
||||
/Producer (R 2.6.2)
|
||||
/Creator (R)
|
||||
>>
|
||||
endobj
|
||||
2 0 obj
|
||||
<<
|
||||
/Type /Catalog
|
||||
/Pages 3 0 R
|
||||
>>
|
||||
endobj
|
||||
5 0 obj
|
||||
<<
|
||||
/Type /Font
|
||||
/Subtype /Type1
|
||||
/Name /F1
|
||||
/BaseFont /ZapfDingbats
|
||||
>>
|
||||
endobj
|
||||
6 0 obj
|
||||
<<
|
||||
/Type /Page
|
||||
/Parent 3 0 R
|
||||
/Contents 7 0 R
|
||||
/Resources 4 0 R
|
||||
>>
|
||||
endobj
|
||||
7 0 obj
|
||||
<<
|
||||
/Length 8 0 R
|
||||
>>
|
||||
stream
|
||||
q
|
||||
Q q 59.04 73.44 342.72 299.52 re W n
|
||||
0.000 0.000 0.000 RG
|
||||
2.25 w
|
||||
[] 0 d
|
||||
1 J
|
||||
1 j
|
||||
10.00 M
|
||||
73.40 149.79 m 86.76 149.79 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
80.08 100.85 m 80.08 149.79 l S
|
||||
80.08 296.61 m 80.08 263.98 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
76.74 100.85 m 83.42 100.85 l S
|
||||
76.74 296.61 m 83.42 296.61 l S
|
||||
73.40 149.79 m
|
||||
86.76 149.79 l
|
||||
86.76 263.98 l
|
||||
73.40 263.98 l
|
||||
73.40 149.79 l
|
||||
S
|
||||
2.25 w
|
||||
[] 0 d
|
||||
90.11 280.30 m 103.47 280.30 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
96.79 263.98 m 96.79 280.30 l S
|
||||
96.79 296.61 m 96.79 296.61 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
93.45 263.98 m 100.13 263.98 l S
|
||||
93.45 296.61 m 100.13 296.61 l S
|
||||
90.11 280.30 m
|
||||
103.47 280.30 l
|
||||
103.47 296.61 l
|
||||
90.11 296.61 l
|
||||
90.11 280.30 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 93.82 342.96 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
106.81 280.30 m 120.17 280.30 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
113.49 263.98 m 113.49 263.98 l S
|
||||
113.49 280.30 m 113.49 280.30 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
110.15 263.98 m 116.83 263.98 l S
|
||||
110.15 280.30 m 116.83 280.30 l S
|
||||
106.81 263.98 m
|
||||
120.17 263.98 l
|
||||
120.17 280.30 l
|
||||
106.81 280.30 l
|
||||
106.81 263.98 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 110.53 179.82 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
123.51 247.67 m 136.87 247.67 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
130.19 247.67 m 130.19 247.67 l S
|
||||
130.19 247.67 m 130.19 247.67 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
126.85 247.67 m 133.53 247.67 l S
|
||||
126.85 247.67 m 133.53 247.67 l S
|
||||
123.51 247.67 m
|
||||
136.87 247.67 l
|
||||
136.87 247.67 l
|
||||
123.51 247.67 l
|
||||
123.51 247.67 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 127.23 261.39 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
140.21 280.30 m 153.57 280.30 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
146.89 231.36 m 146.89 247.67 l S
|
||||
146.89 361.87 m 146.89 296.61 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
143.55 231.36 m 150.23 231.36 l S
|
||||
143.55 361.87 m 150.23 361.87 l S
|
||||
140.21 247.67 m
|
||||
153.57 247.67 l
|
||||
153.57 296.61 l
|
||||
140.21 296.61 l
|
||||
140.21 247.67 l
|
||||
S
|
||||
2.25 w
|
||||
[] 0 d
|
||||
156.91 280.30 m 170.27 280.30 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
163.59 198.73 m 163.59 231.36 l S
|
||||
163.59 280.30 m 163.59 280.30 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
160.25 198.73 m 166.93 198.73 l S
|
||||
160.25 280.30 m 166.93 280.30 l S
|
||||
156.91 231.36 m
|
||||
170.27 231.36 l
|
||||
170.27 280.30 l
|
||||
156.91 280.30 l
|
||||
156.91 231.36 l
|
||||
S
|
||||
2.25 w
|
||||
[] 0 d
|
||||
173.61 280.30 m 186.98 280.30 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
180.29 247.67 m 180.29 263.98 l S
|
||||
180.29 280.30 m 180.29 280.30 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
176.95 247.67 m 183.64 247.67 l S
|
||||
176.95 280.30 m 183.64 280.30 l S
|
||||
173.61 263.98 m
|
||||
186.98 263.98 l
|
||||
186.98 280.30 l
|
||||
173.61 280.30 l
|
||||
173.61 263.98 l
|
||||
S
|
||||
2.25 w
|
||||
[] 0 d
|
||||
190.32 247.67 m 203.68 247.67 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
197.00 247.67 m 197.00 247.67 l S
|
||||
197.00 263.98 m 197.00 263.98 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
193.66 247.67 m 200.34 247.67 l S
|
||||
193.66 263.98 m 200.34 263.98 l S
|
||||
190.32 247.67 m
|
||||
203.68 247.67 l
|
||||
203.68 263.98 l
|
||||
190.32 263.98 l
|
||||
190.32 247.67 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 194.03 294.02 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
207.02 263.98 m 220.38 263.98 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
213.70 247.67 m 213.70 247.67 l S
|
||||
213.70 263.98 m 213.70 263.98 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
210.36 247.67 m 217.04 247.67 l S
|
||||
210.36 263.98 m 217.04 263.98 l S
|
||||
207.02 247.67 m
|
||||
220.38 247.67 l
|
||||
220.38 263.98 l
|
||||
207.02 263.98 l
|
||||
207.02 247.67 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 210.74 342.96 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
223.72 263.98 m 237.08 263.98 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
230.40 263.98 m 230.40 263.98 l S
|
||||
230.40 280.30 m 230.40 280.30 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
227.06 263.98 m 233.74 263.98 l S
|
||||
227.06 280.30 m 233.74 280.30 l S
|
||||
223.72 263.98 m
|
||||
237.08 263.98 l
|
||||
237.08 280.30 l
|
||||
223.72 280.30 l
|
||||
223.72 263.98 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 227.44 163.51 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
240.42 280.30 m 253.78 280.30 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
247.10 263.98 m 247.10 263.98 l S
|
||||
247.10 280.30 m 247.10 280.30 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
243.76 263.98 m 250.44 263.98 l S
|
||||
243.76 280.30 m 250.44 280.30 l S
|
||||
240.42 263.98 m
|
||||
253.78 263.98 l
|
||||
253.78 280.30 l
|
||||
240.42 280.30 l
|
||||
240.42 263.98 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 244.14 179.82 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
257.12 263.98 m 270.48 263.98 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
263.80 247.67 m 263.80 247.67 l S
|
||||
263.80 280.30 m 263.80 280.30 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
260.46 247.67 m 267.14 247.67 l S
|
||||
260.46 280.30 m 267.14 280.30 l S
|
||||
257.12 247.67 m
|
||||
270.48 247.67 l
|
||||
270.48 280.30 l
|
||||
257.12 280.30 l
|
||||
257.12 247.67 l
|
||||
S
|
||||
2.25 w
|
||||
[] 0 d
|
||||
273.82 247.67 m 287.19 247.67 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
280.51 84.53 m 280.51 182.42 l S
|
||||
280.51 296.61 m 280.51 296.61 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
277.16 84.53 m 283.85 84.53 l S
|
||||
277.16 296.61 m 283.85 296.61 l S
|
||||
273.82 182.42 m
|
||||
287.19 182.42 l
|
||||
287.19 296.61 l
|
||||
273.82 296.61 l
|
||||
273.82 182.42 l
|
||||
S
|
||||
2.25 w
|
||||
[] 0 d
|
||||
290.53 280.30 m 303.89 280.30 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
297.21 280.30 m 297.21 280.30 l S
|
||||
297.21 280.30 m 297.21 280.30 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
293.87 280.30 m 300.55 280.30 l S
|
||||
293.87 280.30 m 300.55 280.30 l S
|
||||
290.53 280.30 m
|
||||
303.89 280.30 l
|
||||
303.89 280.30 l
|
||||
290.53 280.30 l
|
||||
290.53 280.30 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 294.25 294.02 Tm (l) Tj 0 Tr
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 294.25 228.76 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
307.23 263.98 m 320.59 263.98 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
313.91 247.67 m 313.91 247.67 l S
|
||||
313.91 280.30 m 313.91 280.30 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
310.57 247.67 m 317.25 247.67 l S
|
||||
310.57 280.30 m 317.25 280.30 l S
|
||||
307.23 247.67 m
|
||||
320.59 247.67 l
|
||||
320.59 280.30 l
|
||||
307.23 280.30 l
|
||||
307.23 247.67 l
|
||||
S
|
||||
2.25 w
|
||||
[] 0 d
|
||||
323.93 231.36 m 337.29 231.36 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
330.61 198.73 m 330.61 215.04 l S
|
||||
330.61 231.36 m 330.61 231.36 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
327.27 198.73 m 333.95 198.73 l S
|
||||
327.27 231.36 m 333.95 231.36 l S
|
||||
323.93 215.04 m
|
||||
337.29 215.04 l
|
||||
337.29 231.36 l
|
||||
323.93 231.36 l
|
||||
323.93 215.04 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 327.65 261.39 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
340.63 263.98 m 353.99 263.98 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
347.31 263.98 m 347.31 263.98 l S
|
||||
347.31 263.98 m 347.31 263.98 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
343.97 263.98 m 350.65 263.98 l S
|
||||
343.97 263.98 m 350.65 263.98 l S
|
||||
340.63 263.98 m
|
||||
353.99 263.98 l
|
||||
353.99 263.98 l
|
||||
340.63 263.98 l
|
||||
340.63 263.98 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 344.35 179.82 Tm (l) Tj 0 Tr
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 344.35 277.70 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
357.33 263.98 m 370.69 263.98 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
364.01 247.67 m 364.01 247.67 l S
|
||||
364.01 280.30 m 364.01 280.30 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
360.67 247.67 m 367.35 247.67 l S
|
||||
360.67 280.30 m 367.35 280.30 l S
|
||||
357.33 247.67 m
|
||||
370.69 247.67 l
|
||||
370.69 280.30 l
|
||||
357.33 280.30 l
|
||||
357.33 247.67 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 361.05 81.94 Tm (l) Tj 0 Tr
|
||||
2.25 w
|
||||
[] 0 d
|
||||
ET
|
||||
374.04 263.98 m 387.40 263.98 l S
|
||||
0.75 w
|
||||
[ 3.00 5.00] 0 d
|
||||
380.72 263.98 m 380.72 263.98 l S
|
||||
380.72 296.61 m 380.72 296.61 l S
|
||||
0.75 w
|
||||
[] 0 d
|
||||
377.38 263.98 m 384.06 263.98 l S
|
||||
377.38 296.61 m 384.06 296.61 l S
|
||||
374.04 263.98 m
|
||||
387.40 263.98 l
|
||||
387.40 296.61 l
|
||||
374.04 296.61 l
|
||||
374.04 263.98 l
|
||||
S
|
||||
BT
|
||||
/F1 1 Tf 1 Tr 7.48 0 0 7.48 377.75 163.51 Tm (l) Tj 0 Tr
|
||||
ET
|
||||
Q q
|
||||
0.000 0.000 0.000 RG
|
||||
0.75 w
|
||||
[] 0 d
|
||||
1 J
|
||||
1 j
|
||||
10.00 M
|
||||
59.04 133.47 m 59.04 296.61 l S
|
||||
59.04 133.47 m 51.84 133.47 l S
|
||||
59.04 215.04 m 51.84 215.04 l S
|
||||
59.04 296.61 m 51.84 296.61 l S
|
||||
BT
|
||||
0.000 0.000 0.000 rg
|
||||
/F2 1 Tf 0.00 12.00 -12.00 0.00 41.76 126.80 Tm (20) Tj
|
||||
/F2 1 Tf 0.00 12.00 -12.00 0.00 41.76 208.37 Tm (25) Tj
|
||||
/F2 1 Tf 0.00 12.00 -12.00 0.00 41.76 289.94 Tm (30) Tj
|
||||
ET
|
||||
Q q
|
||||
BT
|
||||
0.000 0.000 0.000 rg
|
||||
/F3 1 Tf 14.00 0.00 -0.00 14.00 147.76 397.45 Tm (boxplot of quality scores) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 130.36 18.72 Tm (position within read \(% of total length\)) Tj
|
||||
ET
|
||||
Q q
|
||||
0.000 0.000 0.000 RG
|
||||
0.75 w
|
||||
[] 0 d
|
||||
1 J
|
||||
1 j
|
||||
10.00 M
|
||||
59.04 73.44 m
|
||||
401.76 73.44 l
|
||||
401.76 372.96 l
|
||||
59.04 372.96 l
|
||||
59.04 73.44 l
|
||||
S
|
||||
63.38 73.44 m 380.72 73.44 l S
|
||||
63.38 73.44 m 63.38 66.24 l S
|
||||
80.08 73.44 m 80.08 66.24 l S
|
||||
96.79 73.44 m 96.79 66.24 l S
|
||||
113.49 73.44 m 113.49 66.24 l S
|
||||
130.19 73.44 m 130.19 66.24 l S
|
||||
146.89 73.44 m 146.89 66.24 l S
|
||||
163.59 73.44 m 163.59 66.24 l S
|
||||
180.29 73.44 m 180.29 66.24 l S
|
||||
197.00 73.44 m 197.00 66.24 l S
|
||||
213.70 73.44 m 213.70 66.24 l S
|
||||
230.40 73.44 m 230.40 66.24 l S
|
||||
247.10 73.44 m 247.10 66.24 l S
|
||||
263.80 73.44 m 263.80 66.24 l S
|
||||
280.51 73.44 m 280.51 66.24 l S
|
||||
297.21 73.44 m 297.21 66.24 l S
|
||||
313.91 73.44 m 313.91 66.24 l S
|
||||
330.61 73.44 m 330.61 66.24 l S
|
||||
347.31 73.44 m 347.31 66.24 l S
|
||||
364.01 73.44 m 364.01 66.24 l S
|
||||
380.72 73.44 m 380.72 66.24 l S
|
||||
BT
|
||||
0.000 0.000 0.000 rg
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 60.05 47.52 Tm (0) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 76.75 47.52 Tm (5) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 106.82 47.52 Tm (15) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 140.22 47.52 Tm (25) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 173.62 47.52 Tm (35) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 207.03 47.52 Tm (45) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 240.43 47.52 Tm (55) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 273.83 47.52 Tm (65) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 307.24 47.52 Tm (75) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 340.64 47.52 Tm (85) Tj
|
||||
/F2 1 Tf 12.00 0.00 -0.00 12.00 374.04 47.52 Tm (95) Tj
|
||||
ET
|
||||
Q
|
||||
endstream
|
||||
endobj
|
||||
8 0 obj
|
||||
8714
|
||||
endobj
|
||||
3 0 obj
|
||||
<<
|
||||
/Type /Pages
|
||||
/Kids [
|
||||
6 0 R
|
||||
]
|
||||
/Count 1
|
||||
/MediaBox [0 0 432 432]
|
||||
>>
|
||||
endobj
|
||||
4 0 obj
|
||||
<<
|
||||
/ProcSet [/PDF /Text]
|
||||
/Font << /F1 5 0 R /F2 10 0 R /F3 11 0 R >>
|
||||
/ExtGState << >>
|
||||
>>
|
||||
endobj
|
||||
9 0 obj
|
||||
<<
|
||||
/Type /Encoding
|
||||
/BaseEncoding /WinAnsiEncoding
|
||||
/Differences [ 45/minus 96/quoteleft
|
||||
144/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
|
||||
/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space]
|
||||
>>
|
||||
endobj
|
||||
10 0 obj <<
|
||||
/Type /Font
|
||||
/Subtype /Type1
|
||||
/Name /F2
|
||||
/BaseFont /Helvetica
|
||||
/Encoding 9 0 R
|
||||
>> endobj
|
||||
11 0 obj <<
|
||||
/Type /Font
|
||||
/Subtype /Type1
|
||||
/Name /F3
|
||||
/BaseFont /Helvetica-Bold
|
||||
/Encoding 9 0 R
|
||||
>> endobj
|
||||
xref
|
||||
0 12
|
||||
0000000000 65535 f
|
||||
0000000021 00000 n
|
||||
0000000163 00000 n
|
||||
0000009162 00000 n
|
||||
0000009245 00000 n
|
||||
0000000212 00000 n
|
||||
0000000295 00000 n
|
||||
0000000375 00000 n
|
||||
0000009142 00000 n
|
||||
0000009349 00000 n
|
||||
0000009606 00000 n
|
||||
0000009703 00000 n
|
||||
trailer
|
||||
<<
|
||||
/Size 12
|
||||
/Info 1 0 R
|
||||
/Root 2 0 R
|
||||
>>
|
||||
startxref
|
||||
9805
|
||||
%%EOF
|
||||
@@ -50,13 +50,10 @@ class Html(Text):
|
||||
True
|
||||
"""
|
||||
headers = iter_headers(filename, None)
|
||||
try:
|
||||
for i, hdr in enumerate(headers):
|
||||
if hdr and hdr[0].lower().find('<html>') >= 0:
|
||||
return True
|
||||
return False
|
||||
except Exception:
|
||||
return True
|
||||
for i, hdr in enumerate(headers):
|
||||
if hdr and hdr[0].lower().find('<html>') >= 0:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
class Json(Text):
|
||||
@@ -65,7 +62,7 @@ class Json(Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "JavaScript Object Notation (JSON)"
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -113,7 +110,7 @@ class Ipynb(Json):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "Jupyter Notebook"
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -186,7 +183,7 @@ class Biom1(Json):
|
||||
MetadataElement(name="table_columns", default=[], desc="table_columns", param=MetadataParameter, readonly=True, visible=False, optional=True, no_value=[])
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
super(Biom1, self).set_peek(dataset, is_multi_byte)
|
||||
super(Biom1, self).set_peek(dataset)
|
||||
if not dataset.dataset.purged:
|
||||
dataset.blurb = "Biological Observation Matrix v1"
|
||||
|
||||
@@ -270,7 +267,7 @@ class Obo(Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "Open Biomedical Ontology (OBO)"
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -309,7 +306,7 @@ class Arff(Text):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "Attribute-Relation File Format (ARFF)"
|
||||
dataset.blurb += ", %s comments, %s attributes" % (dataset.metadata.comment_lines, dataset.metadata.columns)
|
||||
else:
|
||||
@@ -503,20 +500,19 @@ class SnpSiftDbNSFP(Text):
|
||||
This is called only at upload to write the html file
|
||||
cannot rename the datasets here - they come with the default unfortunately
|
||||
"""
|
||||
self.regenerate_primary_file(dataset)
|
||||
return '<html><head><title>SnpSiftDbNSFP Composite Dataset</title></head></html>'
|
||||
|
||||
def regenerate_primary_file(self, dataset):
|
||||
"""
|
||||
cannot do this until we are setting metadata
|
||||
"""
|
||||
annotations = "dbNSFP Annotations: %s\n" % ','.join(dataset.metadata.annotation)
|
||||
f = open(dataset.file_name, 'a')
|
||||
if dataset.metadata.bgzip:
|
||||
bn = dataset.metadata.bgzip
|
||||
f.write(bn)
|
||||
f.write('\n')
|
||||
f.write(annotations)
|
||||
f.close()
|
||||
with open(dataset.file_name, 'a') as f:
|
||||
if dataset.metadata.bgzip:
|
||||
bn = dataset.metadata.bgzip
|
||||
f.write(bn)
|
||||
f.write('\n')
|
||||
f.write(annotations)
|
||||
|
||||
def set_meta(self, dataset, overwrite=True, **kwd):
|
||||
try:
|
||||
|
||||
@@ -31,7 +31,7 @@ class Triples(data.Data):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'Triple data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -55,7 +55,7 @@ class NTriples(data.Text, Triples):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'N-Triples triple data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -78,7 +78,7 @@ class N3(data.Text, Triples):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'Notation-3 Triple data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -105,7 +105,7 @@ class Turtle(data.Text, Triples):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'Turtle triple data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -132,7 +132,7 @@ class Rdf(xml.GenericXml, Triples):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'RDF/XML triple data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -158,7 +158,7 @@ class Jsonld(text.Json, Triples):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'JSON-LD triple data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -181,7 +181,7 @@ class HDT(binary.Binary, Triples):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'HDT triple data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
|
||||
@@ -21,7 +21,7 @@ class GenericXml(data.Text):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'XML data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -68,7 +68,7 @@ class MEMEXml(GenericXml):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'MEME XML data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -85,7 +85,7 @@ class CisML(GenericXml):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'CisML data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -104,7 +104,7 @@ class Phyloxml(GenericXml):
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
"""Set the peek and blurb text"""
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = 'Phyloxml data'
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
@@ -139,7 +139,7 @@ class Owl(GenericXml):
|
||||
|
||||
def set_peek(self, dataset, is_multi_byte=False):
|
||||
if not dataset.dataset.purged:
|
||||
dataset.peek = data.get_file_peek(dataset.file_name, is_multi_byte=is_multi_byte)
|
||||
dataset.peek = data.get_file_peek(dataset.file_name)
|
||||
dataset.blurb = "Web Ontology Language OWL"
|
||||
else:
|
||||
dataset.peek = 'file does not exist'
|
||||
|
||||
@@ -1287,15 +1287,9 @@ class JobWrapper(object, HasResourceParameters):
|
||||
dataset.metadata.from_JSON_dict(output_filename, path_rewriter=path_rewriter)
|
||||
try:
|
||||
assert context.get('line_count', None) is not None
|
||||
if (not dataset.datatype.composite_type and dataset.dataset.is_multi_byte()) or self.tool.is_multi_byte:
|
||||
dataset.set_peek(line_count=context['line_count'], is_multi_byte=True)
|
||||
else:
|
||||
dataset.set_peek(line_count=context['line_count'])
|
||||
dataset.set_peek(line_count=context['line_count'])
|
||||
except Exception:
|
||||
if (not dataset.datatype.composite_type and dataset.dataset.is_multi_byte()) or self.tool.is_multi_byte:
|
||||
dataset.set_peek(is_multi_byte=True)
|
||||
else:
|
||||
dataset.set_peek()
|
||||
dataset.set_peek()
|
||||
else:
|
||||
# Handle an empty dataset.
|
||||
dataset.blurb = "empty"
|
||||
|
||||
@@ -2071,8 +2071,8 @@ class DatasetInstance(object):
|
||||
"""Data consists of multi-byte characters"""
|
||||
return self.dataset.is_multi_byte()
|
||||
|
||||
def set_peek(self, is_multi_byte=False):
|
||||
return self.datatype.set_peek(self, is_multi_byte=is_multi_byte)
|
||||
def set_peek(self):
|
||||
return self.datatype.set_peek(self)
|
||||
|
||||
def init_meta(self, copy_from=None):
|
||||
return self.datatype.init_meta(self, copy_from=copy_from)
|
||||
|
||||
@@ -241,8 +241,8 @@ class DatasetInstance(object):
|
||||
"""Saves the data on the disc"""
|
||||
self.datatype.set_raw_data(self, data)
|
||||
|
||||
def set_peek(self, is_multi_byte=False):
|
||||
return self.datatype.set_peek(self, is_multi_byte=is_multi_byte)
|
||||
def set_peek(self):
|
||||
return self.datatype.set_peek(self)
|
||||
|
||||
def init_meta(self, copy_from=None):
|
||||
return self.datatype.init_meta(self, copy_from=copy_from)
|
||||
|
||||
@@ -168,77 +168,74 @@ def files_diff(file1, file2, attributes=None):
|
||||
if (line.startswith('+') and not line.startswith('+++')) or (line.startswith('-') and not line.startswith('---')):
|
||||
count += 1
|
||||
return count
|
||||
|
||||
if not filecmp.cmp(file1, file2):
|
||||
files_differ = False
|
||||
if attributes is None:
|
||||
attributes = {}
|
||||
decompress = attributes.get("decompress", None)
|
||||
if not decompress:
|
||||
local_file = open(file1, 'U').readlines()
|
||||
history_data = open(file2, 'U').readlines()
|
||||
if decompress:
|
||||
# None means all compressed formats are allowed
|
||||
compressed_formats = None
|
||||
else:
|
||||
local_file = get_fileobj(file1, 'U').readlines()
|
||||
history_data = get_fileobj(file2, 'U').readlines()
|
||||
compressed_formats = []
|
||||
is_pdf = False
|
||||
try:
|
||||
local_file = get_fileobj(file1, 'U', compressed_formats=compressed_formats).readlines()
|
||||
history_data = get_fileobj(file2, 'U', compressed_formats=compressed_formats).readlines()
|
||||
except UnicodeDecodeError:
|
||||
if file1.endswith('.pdf') or file2.endswith('.pdf'):
|
||||
is_pdf = True
|
||||
local_file = open(file1, 'rb').readlines()
|
||||
history_data = open(file2, 'rb').readlines()
|
||||
else:
|
||||
raise AssertionError("Binary data detected, not displaying diff")
|
||||
if attributes.get('sort', False):
|
||||
history_data.sort()
|
||||
# Why even bother with the check loop below, why not just use the diff output? This seems wasteful.
|
||||
if len(local_file) == len(history_data):
|
||||
for i in range(len(history_data)):
|
||||
if local_file[i].rstrip('\r\n') != history_data[i].rstrip('\r\n'):
|
||||
files_differ = True
|
||||
break
|
||||
else:
|
||||
files_differ = True
|
||||
if files_differ:
|
||||
allowed_diff_count = int(attributes.get('lines_diff', 0))
|
||||
diff = list(difflib.unified_diff(local_file, history_data, "local_file", "history_data"))
|
||||
diff_lines = get_lines_diff(diff)
|
||||
if diff_lines > allowed_diff_count:
|
||||
if 'GALAXY_TEST_RAW_DIFF' in os.environ:
|
||||
diff_slice = diff
|
||||
allowed_diff_count = int(attributes.get('lines_diff', 0))
|
||||
diff = list(difflib.unified_diff(local_file, history_data, "local_file", "history_data"))
|
||||
diff_lines = get_lines_diff(diff)
|
||||
if diff_lines > allowed_diff_count:
|
||||
if 'GALAXY_TEST_RAW_DIFF' in os.environ:
|
||||
diff_slice = diff
|
||||
else:
|
||||
if len(diff) < 60:
|
||||
diff_slice = diff[0:40]
|
||||
else:
|
||||
if len(diff) < 60:
|
||||
diff_slice = diff[0:40]
|
||||
else:
|
||||
diff_slice = diff[:25] + ["********\n", "*SNIP *\n", "********\n"] + diff[-25:]
|
||||
# FIXME: This pdf stuff is rather special cased and has not been updated to consider lines_diff
|
||||
# due to unknown desired behavior when used in conjunction with a non-zero lines_diff
|
||||
# PDF forgiveness can probably be handled better by not special casing by __extension__ here
|
||||
# and instead using lines_diff or a regular expression matching
|
||||
# or by creating and using a specialized pdf comparison function
|
||||
if file1.endswith('.pdf') or file2.endswith('.pdf'):
|
||||
# PDF files contain creation dates, modification dates, ids and descriptions that change with each
|
||||
# new file, so we need to handle these differences. As long as the rest of the PDF file does
|
||||
# not differ we're ok.
|
||||
valid_diff_strs = ['description', 'createdate', 'creationdate', 'moddate', 'id', 'producer', 'creator']
|
||||
valid_diff = False
|
||||
invalid_diff_lines = 0
|
||||
for line in diff_slice:
|
||||
# Make sure to lower case strings before checking.
|
||||
line = line.lower()
|
||||
# Diff lines will always start with a + or - character, but handle special cases: '--- local_file \n', '+++ history_data \n'
|
||||
if (line.startswith('+') or line.startswith('-')) and line.find('local_file') < 0 and line.find('history_data') < 0:
|
||||
for vdf in valid_diff_strs:
|
||||
if line.find(vdf) < 0:
|
||||
valid_diff = False
|
||||
else:
|
||||
valid_diff = True
|
||||
# Stop checking as soon as we know we have a valid difference
|
||||
break
|
||||
if not valid_diff:
|
||||
invalid_diff_lines += 1
|
||||
log.info('## files diff on %s and %s lines_diff=%d, found diff = %d, found pdf invalid diff = %d' % (file1, file2, allowed_diff_count, diff_lines, invalid_diff_lines))
|
||||
if invalid_diff_lines > allowed_diff_count:
|
||||
# Print out diff_slice so we can see what failed
|
||||
log.info("###### diff_slice ######")
|
||||
raise AssertionError("".join(diff_slice))
|
||||
else:
|
||||
log.info('## files diff on %s and %s lines_diff=%d, found diff = %d' % (file1, file2, allowed_diff_count, diff_lines))
|
||||
for line in diff_slice:
|
||||
for char in line:
|
||||
if ord(char) > 128:
|
||||
raise AssertionError("Binary data detected, not displaying diff")
|
||||
diff_slice = diff[:25] + ["********\n", "*SNIP *\n", "********\n"] + diff[-25:]
|
||||
# FIXME: This pdf stuff is rather special cased and has not been updated to consider lines_diff
|
||||
# due to unknown desired behavior when used in conjunction with a non-zero lines_diff
|
||||
# PDF forgiveness can probably be handled better by not special casing by __extension__ here
|
||||
# and instead using lines_diff or a regular expression matching
|
||||
# or by creating and using a specialized pdf comparison function
|
||||
if is_pdf:
|
||||
# PDF files contain creation dates, modification dates, ids and descriptions that change with each
|
||||
# new file, so we need to handle these differences. As long as the rest of the PDF file does
|
||||
# not differ we're ok.
|
||||
valid_diff_strs = ['description', 'createdate', 'creationdate', 'moddate', 'id', 'producer', 'creator']
|
||||
valid_diff = False
|
||||
invalid_diff_lines = 0
|
||||
for line in diff_slice:
|
||||
# Make sure to lower case strings before checking.
|
||||
line = line.lower()
|
||||
# Diff lines will always start with a + or - character, but handle special cases: '--- local_file \n', '+++ history_data \n'
|
||||
if (line.startswith('+') or line.startswith('-')) and line.find('local_file') < 0 and line.find('history_data') < 0:
|
||||
for vdf in valid_diff_strs:
|
||||
if line.find(vdf) < 0:
|
||||
valid_diff = False
|
||||
else:
|
||||
valid_diff = True
|
||||
# Stop checking as soon as we know we have a valid difference
|
||||
break
|
||||
if not valid_diff:
|
||||
invalid_diff_lines += 1
|
||||
log.info('## files diff on %s and %s lines_diff=%d, found diff = %d, found pdf invalid diff = %d' % (file1, file2, allowed_diff_count, diff_lines, invalid_diff_lines))
|
||||
if invalid_diff_lines > allowed_diff_count:
|
||||
# Print out diff_slice so we can see what failed
|
||||
log.info("###### diff_slice ######")
|
||||
raise AssertionError("".join(diff_slice))
|
||||
else:
|
||||
log.info('## files diff on %s and %s lines_diff=%d, found diff = %d' % (file1, file2, allowed_diff_count, diff_lines))
|
||||
raise AssertionError("".join(diff_slice))
|
||||
|
||||
|
||||
def files_re_match(file1, file2, attributes=None):
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import gzip
|
||||
import io
|
||||
import sys
|
||||
import zipfile
|
||||
|
||||
@@ -9,32 +10,44 @@ from .checkers import (
|
||||
|
||||
if sys.version_info < (3, 3):
|
||||
import bz2file as bz2
|
||||
gzip.GzipFile.read1 = gzip.GzipFile.read # workaround for https://bugs.python.org/issue12591
|
||||
else:
|
||||
import bz2
|
||||
|
||||
|
||||
def get_fileobj(filename, mode="r", gzip_only=False, bz2_only=False, zip_only=False):
|
||||
def get_fileobj(filename, mode="r", compressed_formats=None):
|
||||
"""
|
||||
Returns a fileobj. If the file is compressed, return appropriate file reader.
|
||||
Returns a fileobj. If the file is compressed, return an appropriate file
|
||||
reader. In text mode, always use 'utf-8' encoding.
|
||||
|
||||
:param filename: path to file that should be opened
|
||||
:param mode: mode to pass to opener
|
||||
:param gzip_only: only open file if file is gzip compressed or not compressed
|
||||
:param bz2_only: only open file if file is bz2 compressed or not compressed
|
||||
:param zip_only: only open file if file is zip compressed or not compressed
|
||||
:param compressed_formats: list of allowed compressed file formats among
|
||||
'bz2', 'gzip' and 'zip'. If left to None, all 3 formats are allowed
|
||||
"""
|
||||
if compressed_formats is None:
|
||||
compressed_formats = ['bz2', 'gzip', 'zip']
|
||||
# Remove 't' from mode, which may cause an error for compressed files
|
||||
mode = mode.replace('t', '')
|
||||
# the various compression readers don't support 'U' mode,
|
||||
# so we open in 'r'.
|
||||
if mode == 'U':
|
||||
cmode = 'r'
|
||||
else:
|
||||
cmode = mode
|
||||
if not bz2_only and not zip_only and is_gzip(filename):
|
||||
return gzip.GzipFile(filename, cmode)
|
||||
if not gzip_only and not zip_only and is_bz2(filename):
|
||||
return bz2.BZ2File(filename, cmode)
|
||||
if not bz2_only and not gzip_only and zipfile.is_zipfile(filename):
|
||||
if 'gzip' in compressed_formats and is_gzip(filename):
|
||||
fh = gzip.GzipFile(filename, cmode)
|
||||
elif 'bz2' in compressed_formats and is_bz2(filename):
|
||||
fh = bz2.BZ2File(filename, cmode)
|
||||
elif 'zip' in compressed_formats and zipfile.is_zipfile(filename):
|
||||
# Return fileobj for the first file in a zip file.
|
||||
with zipfile.ZipFile(filename, cmode) as zh:
|
||||
return zh.open(zh.namelist()[0], cmode)
|
||||
return open(filename, mode)
|
||||
fh = zh.open(zh.namelist()[0], cmode)
|
||||
elif 'b' in mode:
|
||||
return open(filename, mode)
|
||||
else:
|
||||
return io.open(filename, mode, encoding='utf-8')
|
||||
if 'b' not in mode:
|
||||
return io.TextIOWrapper(fh, encoding='utf-8')
|
||||
else:
|
||||
return fh
|
||||
|
||||
@@ -4,8 +4,8 @@ import shutil
|
||||
|
||||
import galaxy.tools
|
||||
from galaxy import util
|
||||
from galaxy.datatypes.sniff import is_column_based
|
||||
from galaxy.util import checkers
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.util.expressions import ExpressionContext
|
||||
from galaxy.web.form_builder import SelectField
|
||||
from tool_shed.util import basic_util
|
||||
@@ -125,20 +125,6 @@ def generate_message_for_invalid_tools(app, invalid_file_tups, repository, metad
|
||||
return message
|
||||
|
||||
|
||||
def get_headers(fname, sep, count=60, is_multi_byte=False):
|
||||
"""Returns a list with the first 'count' lines split by 'sep'."""
|
||||
headers = []
|
||||
for idx, line in enumerate(open(fname)):
|
||||
line = line.rstrip('\n\r')
|
||||
if is_multi_byte:
|
||||
line = unicodify(line, 'utf-8')
|
||||
sep = sep.encode('utf-8')
|
||||
headers.append(line.split(sep))
|
||||
if idx == count:
|
||||
break
|
||||
return headers
|
||||
|
||||
|
||||
def get_tool_path_install_dir(partial_install_dir, shed_tool_conf_dict, tool_dict, config_elems):
|
||||
for elem in config_elems:
|
||||
if elem.tag == 'tool':
|
||||
@@ -184,26 +170,6 @@ def handle_missing_index_file(app, tool_path, sample_files, repository_tools_tup
|
||||
return repository_tools_tups, sample_files_copied
|
||||
|
||||
|
||||
def is_column_based(fname, sep='\t', skip=0, is_multi_byte=False):
|
||||
"""See if the file is column based with respect to a separator."""
|
||||
headers = get_headers(fname, sep, is_multi_byte=is_multi_byte)
|
||||
count = 0
|
||||
if not headers:
|
||||
return False
|
||||
for hdr in headers[skip:]:
|
||||
if hdr and hdr[0] and not hdr[0].startswith('#'):
|
||||
if len(hdr) > 1:
|
||||
count = len(hdr)
|
||||
break
|
||||
if count < 2:
|
||||
return False
|
||||
for hdr in headers[skip:]:
|
||||
if hdr and hdr[0] and not hdr[0].startswith('#'):
|
||||
if len(hdr) != count:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def is_data_index_sample_file(file_path):
|
||||
"""
|
||||
Attempt to determine if a .sample file is appropriate for copying to ~/tool-data when
|
||||
|
||||
@@ -5,4 +5,4 @@ AATACTTTCGGCGCCCTAAACCAGCTCACTGGGG
|
||||
@1831_573_1050/1
|
||||
TTTATGGGTATGGCCGCTCACAGGCCAGCGGCCT
|
||||
+
|
||||
;@@17?@=>7??@A8?==@4A?A4)&+.'&+'1,
|
||||
;@@17?@=>7??@A8?==@4A?A4)&+.'&+'1,
|
||||
|
||||
@@ -5,4 +5,4 @@ GAATTGATCAGGACATAGGACAACTGTAGGCACCAT
|
||||
@HANNIBAL_1_FC302VTAAXX:2:1:156:340
|
||||
GAGTTCTCGTCGCCTGTAGGCACCATCAATCGTATG
|
||||
+HANNIBAL_1_FC302VTAAXX:2:1:156:340
|
||||
40 15 40 17 6 36 40 40 40 25 40 9 35 33 40 14 14 18 15 17 19 28 31 4 24 18 27 14 15 18 2 8 12 8 11 9
|
||||
40 15 40 17 6 36 40 40 40 25 40 9 35 33 40 14 14 18 15 17 19 28 31 4 24 18 27 14 15 18 2 8 12 8 11 9
|
||||
|
||||
@@ -1 +1 @@
|
||||
This is a different line of text.
|
||||
This is a different line of text.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
This is a line of text.
|
||||
This is a different line of text.
|
||||
This is a line of text.
|
||||
This is a different line of text.
|
||||
This is a different line of text.
|
||||
|
||||
@@ -105,7 +105,7 @@ def __main__():
|
||||
# here import checks that upload tool performs
|
||||
if enhanced_handling:
|
||||
try:
|
||||
ext = sniff.handle_uploaded_dataset_file(filename, datatypes_registry, ext=data_dict['ext'], is_multi_byte=is_multi_byte)
|
||||
ext = sniff.handle_uploaded_dataset_file(filename, datatypes_registry, ext=data_dict['ext'])
|
||||
except Exception as e:
|
||||
stop_err(str(e))
|
||||
info = dict(type='dataset',
|
||||
|
||||
@@ -124,7 +124,7 @@ def add_file(dataset, registry, json_file, output_path):
|
||||
# Is dataset content multi-byte?
|
||||
elif dataset.is_multi_byte:
|
||||
data_type = 'multi-byte char'
|
||||
ext = sniff.guess_ext(dataset.path, registry.sniff_order, is_multi_byte=True)
|
||||
ext = sniff.guess_ext(dataset.path, registry.sniff_order)
|
||||
# Is dataset content supported sniffable binary?
|
||||
else:
|
||||
# FIXME: This ignores the declared sniff order in datatype_conf.xml
|
||||
|
||||
Reference in New Issue
Block a user