diff mira.py @ 35:c4dd9b813f4a draft

planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit 88f38e2217a04df96c1c33c111f8c071ef014333
author peterjc
date Mon, 21 Aug 2017 12:31:26 -0400
parents 94e05a9e3957
children 2bd1f1175fb2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mira.py	Mon Aug 21 12:31:26 2017 -0400
@@ -0,0 +1,48 @@
+"""
+MiraAssemblyFormat class for the 'mira' format within Galaxy
+"""
+
+from galaxy.datatypes.data import Text
+
+
+class MiraAssemblyFormat(Text):
+    """MIRA Assembly Format  data"""
+    file_ext = "mira"
+
+    def sniff(self, filename):
+        """Determines whether the file is a MIRA Assembly Format file.
+
+        Note currently this only detects MIRA Assembly Format v2.0,
+        as used in MIRA v3.9 and v4.0.
+
+        It does not detect MIRA Assembly Format v1 as used in both
+        MIRA v3.2 and v3.4.
+        """
+        h = open(filename)
+        line = h.readline()
+        if line.rstrip() != "@Version\t2\t0":
+            h.close()
+            return False
+        line = h.readline()
+        if line.rstrip() != "@Program\tMIRALIB":
+            h.close()
+            return False
+        return True
+
+    def merge(split_files, output_file):
+        """Merging multiple MIRA files is non-trivial and may not be possible..."""
+        if len(split_files) == 1:
+            # For one file only, use base class method (move/copy)
+            return Text.merge(split_files, output_file)
+        if not split_files:
+            raise ValueError("Given no MIRA, %r, to merge into %s"
+                             % (split_files, output_file))
+        raise NotImplementedError("Merging MIRA Assembly Files has not been implemented")
+    merge = staticmethod(merge)
+
+    def split(cls, input_datasets, subdir_generator_function, split_params):
+        """Split a MIRA Assembly File (not implemented for now)."""
+        if split_params is None:
+            return None
+        raise NotImplementedError("Can't yet split a MIRA Assembly Format file")
+    merge = staticmethod(merge)