diff --git a/config/datatypes_conf.xml.sample b/config/datatypes_conf.xml.sample index 9f054936e65..4e38c97b638 100644 --- a/config/datatypes_conf.xml.sample +++ b/config/datatypes_conf.xml.sample @@ -54,6 +54,7 @@ + @@ -734,6 +735,7 @@ + diff --git a/lib/galaxy/datatypes/binary.py b/lib/galaxy/datatypes/binary.py index c4189b28ce1..5fed1320953 100644 --- a/lib/galaxy/datatypes/binary.py +++ b/lib/galaxy/datatypes/binary.py @@ -2168,6 +2168,29 @@ class DAA(Binary): return f.read(8) == self._magic +class RMA6(Binary): + """ + Class describing an RMA6 (MEGAN6 read-match archive) file + >>> from galaxy.datatypes.sniff import get_test_fname + >>> fname = get_test_fname('diamond.rma') + >>> DAA().sniff(fname) + True + >>> fname = get_test_fname('interval.interval') + >>> DAA().sniff(fname) + False + """ + file_ext = "rma6" + + def __init__(self, **kwd): + Binary.__init__(self, **kwd) + self._magic = binascii.unhexlify("000003f600000006") + + def sniff(self, filename): + # The first 8 bytes of any daa file are 0x3c0e53476d3ee36b + with open(filename, 'rb') as f: + return f.read(8) == self._magic + + class DMND(Binary): """ Class describing an DMND file diff --git a/lib/galaxy/datatypes/test/diamond.rma b/lib/galaxy/datatypes/test/diamond.rma new file mode 100644 index 00000000000..abc824d7e01 Binary files /dev/null and b/lib/galaxy/datatypes/test/diamond.rma differ