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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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)