Mercurial > repos > peterjc > mira_datatypes
diff mira.py @ 82:ae4607906a65 draft
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit 89578746a1c5b29c84a173d8b2709f086f69a7b6
author | peterjc |
---|---|
date | Mon, 17 Jun 2019 13:50:39 -0400 |
parents | 65ea1ef0181d |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mira.py Mon Jun 17 13:50:39 2019 -0400 @@ -0,0 +1,55 @@ +"""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): + """Determine if 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): + """Merge MIRA assembly files (not implemented). + + 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( + "No MIRA files to merge, %r, into %r" % (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)