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