diff --git a/config/datatypes_conf.xml.sample b/config/datatypes_conf.xml.sample index 71d09ed28d6..17e4ea9bd38 100644 --- a/config/datatypes_conf.xml.sample +++ b/config/datatypes_conf.xml.sample @@ -79,6 +79,9 @@ + + + @@ -766,6 +769,7 @@ + diff --git a/lib/galaxy/datatypes/converters/fastagz_to_fasta.xml b/lib/galaxy/datatypes/converters/fastagz_to_fasta.xml new file mode 100644 index 00000000000..eb0c4125601 --- /dev/null +++ b/lib/galaxy/datatypes/converters/fastagz_to_fasta.xml @@ -0,0 +1,11 @@ + diff --git a/lib/galaxy/datatypes/sequence.py b/lib/galaxy/datatypes/sequence.py index 55e1253f121..13e43e2bc1e 100644 --- a/lib/galaxy/datatypes/sequence.py +++ b/lib/galaxy/datatypes/sequence.py @@ -39,6 +39,7 @@ if sys.version_info > (3,): log = logging.getLogger(__name__) SNIFF_COMPRESSED_FASTQS = os.environ.get("GALAXY_ENABLE_BETA_COMPRESSED_FASTQ_SNIFFING", "0") == "1" +SNIFF_COMPRESSED_FASTAS = os.environ.get("GALAXY_ENABLE_BETA_COMPRESSED_FASTA_SNIFFING", "0") == "1" class SequenceSplitLocations(data.Text): @@ -311,6 +312,21 @@ class Alignment(data.Text): raise NotImplementedError("Can't split generic alignment files") +class FastaGz(Sequence, Binary): + """Class representing a generic compressed FASTA sequence""" + edam_format = "format_1929" + file_ext = "fasta.gz" + compressed = True + + def sniff(self, filename): + """Determines whether the file is in gzip-compressed FASTA format""" + if not SNIFF_COMPRESSED_FASTAS: + return False + if not is_gzip(filename): + return False + return Sequence.sniff(self, filename) + + class Fasta(Sequence): """Class representing a FASTA sequence""" edam_format = "format_1929" diff --git a/lib/galaxy/datatypes/sniff.py b/lib/galaxy/datatypes/sniff.py index 90c914d6f32..5658a746fa3 100644 --- a/lib/galaxy/datatypes/sniff.py +++ b/lib/galaxy/datatypes/sniff.py @@ -487,7 +487,7 @@ def handle_uploaded_dataset_file(filename, datatypes_registry, ext='auto'): AUTO_DETECT_EXTENSIONS = ['auto'] # should 'data' also cause auto detect? DECOMPRESSION_FUNCTIONS = dict(gzip=gzip.GzipFile, bz2=bz2.BZ2File) COMPRESSION_CHECK_FUNCTIONS = [('gzip', is_gzip), ('bz2', is_bz2)] -COMPRESSION_DATATYPES = dict(gzip=['bam', 'fastq.gz', 'fastqsanger.gz', 'fastqillumina.gz', 'fastqsolexa.gz', 'fastqcssanger.gz'], bz2=['fastq.bz2', 'fastqsanger.bz2', 'fastqillumina.bz2', 'fastqsolexa.bz2', 'fastqcssanger.bz2']) +COMPRESSION_DATATYPES = dict(gzip=['bam', 'fasta.gz', 'fastq.gz', 'fastqsanger.gz', 'fastqillumina.gz', 'fastqsolexa.gz', 'fastqcssanger.gz'], bz2=['fastq.bz2', 'fastqsanger.bz2', 'fastqillumina.bz2', 'fastqsolexa.bz2', 'fastqcssanger.bz2']) COMPRESSED_EXTENSIONS = [] for exts in COMPRESSION_DATATYPES.values(): COMPRESSED_EXTENSIONS.extend(exts)