From 0beac8fdf4835271ccafefd6a50f928afa055c2c Mon Sep 17 00:00:00 2001 From: M Bernt Date: Thu, 1 Nov 2018 23:46:41 +0100 Subject: [PATCH] rma: add RMA6 data type (MEGAN6 read-match archive) --- config/datatypes_conf.xml.sample | 2 ++ lib/galaxy/datatypes/binary.py | 23 +++++++++++++++++++++++ lib/galaxy/datatypes/test/diamond.rma | Bin 0 -> 1447 bytes 3 files changed, 25 insertions(+) create mode 100644 lib/galaxy/datatypes/test/diamond.rma 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 0000000000000000000000000000000000000000..abc824d7e0103a92f37b05bc6a3c1393127cb373 GIT binary patch literal 1447 zcmZ8h4@?tR7%v!!S7G81hkwx1MUe>DLd#UB>CqO8Yo)fOOku#$KHx}uSFTs2vKeBG z!JrJ;6eb(aIo%ioK@m)rF%tx%Fd=3RGXyqZ8&W`>e?Sd%??EBXFM02~`+a}z``-6^ z$Kx${&g1dC;6k!UP7vW*H4(|UmvSU&r<1{;Q2kl?It$pU>lMK8GF+ zoUhKg+|iXXS>Cz->Pe4aL&mDuRzXWwLsIX}v|ZZ!&F0*~5Z{2>_v3%5i}3I388iM7 zIcdKWSh%M^mejf>Nj#=H7ljBbk5g z*@xG0mmZF)3ss*BHVmtX#%NPkj?blKn-0+vj}j`*68Ro4c~fO))?;rEOt3GWPyPGs zi9$5+;KlEayEX@3j6YM`_CXEk?rpCwiMdiUe5K4#d0@+qU&mv+7Mv8FP4YZ7a8>iC zux8!1r}D!$D@@mZEDf$5A6;R{)V3{KbT2JrIJ^9Yf8sv{m%mhhUB?S3=V7ItM~=1o zZTN~(70U{THr0bDcQqEQ^e@tBak&-(SGB?(x~6K{-VH?o)=|~s8QL)wZ@-b z^|t#MMtrIV8AH(Cy;ZSOna?_ZckOzJFLjnVj)=vOu3u102^ka zNDD)oQdwZLn>ia_IzxXoV*=RhMc_*lD3c8niX*m(!^Q83B1J+0U#g=Hz+hn*eAF`> zY1RS~Iq{{0$wYCmt~m%g5avvVrMN5$Hg}gWm5ks^H6#m5-~emGEEKIXGAxjY1z`f* zLgp#*tiZ?tlOzZN!XO+vXaH-3UBsE-MsbcAOAyX6R<}VSoQZ{*>{ctoa&s_5#VFnl zON6-DNY2+Jp-Cziyp|tzqGx1GE?_0@gzijQkO5dg8^If98Dp`UK_03J1(+E+bLKcC z8Kl_;a4Si%!1Ovoxm$>(%&>d68wSS;9Y+lnP-Q5*=}$pS#TtqM2|8^(vsTB;+|8kHiI(Cf8vF$sEw4uWgm z)sd+9I640fB80IP5``f_L`8xK`oDkT49fF7G^^)#L}nyzJ!hZSr)SNcZoP2J?EAd_ F_CM_W6-NL7 literal 0 HcmV?d00001