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