Skip to content

Commit

Permalink
Merge pull request #33 from ASaiM/dmnddb
Browse files Browse the repository at this point in the history
Add sniffer for dmnd files
  • Loading branch information
bgruening authored Jan 9, 2017
2 parents 5f0a413 + 50f9f74 commit f50272b
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 1 deletion.
3 changes: 2 additions & 1 deletion config/datatypes_conf.xml.sample
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<datatype extension="len" type="galaxy.datatypes.chrominfo:ChromInfo" display_in_upload="true">
<converter file="len_to_linecount.xml" target_datatype="linecount" />
</datatype>
<datatype extension="dmnddb" type="galaxy.datatypes.binary:Binary" subclass="True" display_in_upload="false"/>
<datatype extension="dmnd" type="galaxy.datatypes.binary:Binary:DMND" subclass="True" display_in_upload="false"/>
<datatype extension="bigbed" type="galaxy.datatypes.binary:BigBed" mimetype="application/octet-stream" display_in_upload="true">
<display file="ucsc/bigbed.xml" />
<display file="igb/bb.xml" />
Expand Down Expand Up @@ -593,6 +593,7 @@
<sniffer type="galaxy.datatypes.binary:Sff"/>
<sniffer type="galaxy.datatypes.binary:Sra"/>
<sniffer type="galaxy.datatypes.binary:NetCDF"/>
<sniffer type="galaxy.datatypes.binary:DMND" />
<sniffer type="galaxy.datatypes.triples:Rdf"/>
<sniffer type="galaxy.datatypes.blast:BlastXml"/>
<sniffer type="galaxy.datatypes.xml:Phyloxml"/>
Expand Down
33 changes: 33 additions & 0 deletions lib/galaxy/datatypes/binary.py
Original file line number Diff line number Diff line change
Expand Up @@ -1436,3 +1436,36 @@ def sniff( self, filename ):


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)
3 changes: 3 additions & 0 deletions lib/galaxy/datatypes/sniff.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Binary file added lib/galaxy/datatypes/test/diamond_db.dmnd
Binary file not shown.

0 comments on commit f50272b

Please sign in to comment.