diff --git a/lib/galaxy/config/sample/datatypes_conf.xml.sample b/lib/galaxy/config/sample/datatypes_conf.xml.sample index f0f96237e80b..315525bc6183 100644 --- a/lib/galaxy/config/sample/datatypes_conf.xml.sample +++ b/lib/galaxy/config/sample/datatypes_conf.xml.sample @@ -361,6 +361,7 @@ + @@ -1079,6 +1080,7 @@ + diff --git a/lib/galaxy/datatypes/binary.py b/lib/galaxy/datatypes/binary.py index 853a6e402977..a3e384e9aa4e 100644 --- a/lib/galaxy/datatypes/binary.py +++ b/lib/galaxy/datatypes/binary.py @@ -3759,6 +3759,35 @@ def sniff(self, filename: str) -> bool: return Fast5Archive.sniff(self, filename) +class Pod5(Binary): + """ + Class describing a Pod5 file + + >>> from galaxy.datatypes.sniff import get_test_fname + >>> fname = get_test_fname('test.pod5') + >>> Pod5().sniff(fname) + True + """ + + file_ext = "pod5" + + def sniff(self, filename: str) -> bool: + expected_signature = bytes( + [0x8B, 0x50, 0x4F, 0x44, 0x0D, 0x0A, 0x1A, 0x0A] + ) + try: + with open(filename, "rb") as f: + first_8_bytes = f.read(8) + f.seek(-8, 2) + last_8_bytes = f.read(8) + return ( + first_8_bytes == expected_signature + and last_8_bytes == expected_signature + ) + except Exception: + return False + + class SearchGuiArchive(CompressedArchive): """Class describing a SearchGUI archive""" diff --git a/lib/galaxy/datatypes/test/test.pod5 b/lib/galaxy/datatypes/test/test.pod5 new file mode 100644 index 000000000000..00f793821b9c Binary files /dev/null and b/lib/galaxy/datatypes/test/test.pod5 differ