Mercurial > repos > peterjc > mira_datatypes
annotate mira.py @ 37:5fd060dc934d draft
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit 88f38e2217a04df96c1c33c111f8c071ef014333
author | peterjc |
---|---|
date | Mon, 04 Sep 2017 12:36:31 -0400 |
parents | 94e05a9e3957 |
children | 2bd1f1175fb2 |
rev | line source |
---|---|
3
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
1 """ |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
2 MiraAssemblyFormat class for the 'mira' format within Galaxy |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
3 """ |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
4 |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
5 from galaxy.datatypes.data import Text |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
6 |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
7 |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
8 class MiraAssemblyFormat(Text): |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
9 """MIRA Assembly Format data""" |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
10 file_ext = "mira" |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
11 |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
12 def sniff(self, filename): |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
13 """Determines whether the file is a MIRA Assembly Format file. |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
14 |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
15 Note currently this only detects MIRA Assembly Format v2.0, |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
16 as used in MIRA v3.9 and v4.0. |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
17 |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
18 It does not detect MIRA Assembly Format v1 as used in both |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
19 MIRA v3.2 and v3.4. |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
20 """ |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
21 h = open(filename) |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
22 line = h.readline() |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
23 if line.rstrip() != "@Version\t2\t0": |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
24 h.close() |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
25 return False |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
26 line = h.readline() |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
27 if line.rstrip() != "@Program\tMIRALIB": |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
28 h.close() |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
29 return False |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
30 return True |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
31 |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
32 def merge(split_files, output_file): |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
33 """Merging multiple MIRA files is non-trivial and may not be possible...""" |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
34 if len(split_files) == 1: |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
35 # For one file only, use base class method (move/copy) |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
36 return Text.merge(split_files, output_file) |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
37 if not split_files: |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
38 raise ValueError("Given no MIRA, %r, to merge into %s" |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
39 % (split_files, output_file)) |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
40 raise NotImplementedError("Merging MIRA Assembly Files has not been implemented") |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
41 merge = staticmethod(merge) |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
42 |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
43 def split(cls, input_datasets, subdir_generator_function, split_params): |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
44 """Split a MIRA Assembly File (not implemented for now).""" |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
45 if split_params is None: |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
46 return None |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
47 raise NotImplementedError("Can't yet split a MIRA Assembly Format file") |
94e05a9e3957
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit fd979d17340cde155de176604744831d9597c6b6
peterjc
parents:
diff
changeset
|
48 merge = staticmethod(merge) |