diff --git a/config/datatypes_conf.xml.sample b/config/datatypes_conf.xml.sample
index a9ee8c5eeaa..7c18036cfc7 100644
--- a/config/datatypes_conf.xml.sample
+++ b/config/datatypes_conf.xml.sample
@@ -38,6 +38,7 @@
+
@@ -606,6 +607,7 @@
+
diff --git a/lib/galaxy/datatypes/binary.py b/lib/galaxy/datatypes/binary.py
index 87882101b50..161d25a854a 100644
--- a/lib/galaxy/datatypes/binary.py
+++ b/lib/galaxy/datatypes/binary.py
@@ -1436,3 +1436,36 @@ class NetCDF( Binary ):
Binary.register_sniffable_binary_format("netcdf", "netcdf", NetCDF)
+
+
+class DMND( Binary ):
+ """
+ Class describing an DMND file
+ >>> from galaxy.datatypes.sniff import get_test_fname
+ >>> fname = get_test_fname( 'diamond_db.dmnd' )
+ >>> DMND().sniff( fname )
+ True
+ >>> fname = get_test_fname( 'interval.interval' )
+ >>> DMND().sniff( fname )
+ False
+ """
+ file_ext = "dmnd"
+ edam_format = ""
+
+ def __init__( self, **kwd ):
+ Binary.__init__( self, **kwd )
+ self._magic = binascii.unhexlify("6d18ee15a4f84a02")
+
+ def sniff( self, filename ):
+ # The first 8 bytes of any dmnd file are 0x24af8a415ee186d
+
+ try:
+ header = open( filename, 'rb' ).read(8)
+ if header == self._magic:
+ return True
+ return False
+ except:
+ return False
+
+
+Binary.register_sniffable_binary_format("dmnd", "dmnd", DMND)
diff --git a/lib/galaxy/datatypes/sniff.py b/lib/galaxy/datatypes/sniff.py
index d7bfdd0a95b..7188bafdba5 100644
--- a/lib/galaxy/datatypes/sniff.py
+++ b/lib/galaxy/datatypes/sniff.py
@@ -356,6 +356,9 @@ def guess_ext( fname, sniff_order, is_multi_byte=False ):
>>> fname = get_test_fname('1.gg')
>>> guess_ext(fname, sniff_order)
'gg'
+ >>> fname = get_test_fname('diamond_db.dmnd')
+ >>> guess_ext(fname, sniff_order)
+ 'dmnd'
"""
file_ext = None
for datatype in sniff_order:
diff --git a/lib/galaxy/datatypes/test/diamond_db.dmnd b/lib/galaxy/datatypes/test/diamond_db.dmnd
new file mode 100644
index 00000000000..b5322de5617
Binary files /dev/null and b/lib/galaxy/datatypes/test/diamond_db.dmnd differ