Mercurial > repos > peterjc > mira_datatypes
diff mira.py @ 0:ddd2e3362c5e draft default tip
Uploaded v0.0.1, previously only on the Test Tool Shed
author | peterjc |
---|---|
date | Fri, 21 Nov 2014 06:38:46 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mira.py Fri Nov 21 06:38:46 2014 -0500 @@ -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)