Mercurial > repos > peterjc > mira_datatypes
annotate mira.py @ 74:e30e2d1d17e7 draft
planemo upload for repository https://github.com/peterjc/pico_galaxy/tree/master/datatypes/mira_datatypes commit d4e11b67b826d88a69f81b7a208d23bddc8526a4
| author | peterjc |
|---|---|
| date | Mon, 21 Jan 2019 12:18:07 -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) |
