Commit message:
Uploaded v0.0.1, previously only on the Test Tool Shed |
added:
README.rst datatypes_conf.xml mira.py |
b |
diff -r 000000000000 -r ddd2e3362c5e README.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.rst Fri Nov 21 06:38:46 2014 -0500 |
b |
@@ -0,0 +1,112 @@ +Galaxy datatypes for MIRA Assembly Format (MAF) +=============================================== + +These Galaxy datatypes are copyright 2013 by Peter Cock, The James Hutton +Institute (formerly SCRI, Scottish Crop Research Institute), UK. All rights reserved. + +See the licence text below (MIT licence). + +This code defines a 'mira' datatype within Galaxy for the MIRA Assembly Format +(specifically v2 of the format introduced by MIRA 4.0 and the development +preview releases of MIRA v3.9). See http://chevreux.org/projects_mira.html +and https://sourceforge.net/projects/mira-assembler/ for background. + +This format is not to be confused with the existing 'maf' datatype within Galaxy +for the unrelated Multiple (sequence) Alignment Format (MAF). + +It is available from the Galaxy Tool Shed at: +http://toolshed.g2.bx.psu.edu/view/peterjc/mira_datatypes + + +History +======= + +======= ====================================================================== +Version Changes +------- ---------------------------------------------------------------------- +v0.0.1 - First public release +======= ====================================================================== + + +Installation +============ + +Doing this automatically via the Galaxy Tool Shed is probably simplest, and will +happen automatically as a dependency of the Galaxy wrapper for MIRA v4.0. + + +Manual Installation +=================== + +Normally you would install this via the Galaxy ToolShed, which would move +the provided mira.py file into a suitable location and process the +datatypes_conf.xml entry to be combined with your local configuration. + +However, if you really want to this should work for a manual install. Add +the following lines to the datatypes_conf.xml file in the Galaxy main folder:: + + <datatype extension="mira" type="galaxy.datatypes.mira:MiraAssemblyFormat" mimetype="text/plain" display_in_upload="true"/> + +and later in the sniffer section:: + + <sniffer type="galaxy.datatypes.mira:MiraAssemblyFormat"/> + +Also create the file lib/galaxy/datatypes/mira.py by moving, copying or linking +the mira.py file provided in this tar-ball. Finally add 'import mira' near +the start of file lib/galaxy/datatypes/registry.py (after the other import +lines). + + +Bug Reports +=========== + +You can file an issue here https://github.com/peterjc/pico_galaxy/issues or ask +us on the Galaxy development list http://lists.bx.psu.edu/listinfo/galaxy-dev + + +Developers +========== + +Development is done on this GitHub repository: +https://github.com/peterjc/pico_galaxy + +For making the "Galaxy Tool Shed" http://toolshed.g2.bx.psu.edu/ tarball I use +the following command from the mira_datatypes folder:: + + $ tar -czf mira_datatypes.tar.gz README.rst datatypes_conf.xml mira.py + +Check this worked:: + + $ tar -tzf mira_datatypes.tar.gz + README.rst + datatypes_conf.xml + mira.py + +For development, rather than having a local ToolShed running, I currently +use a symlink from lib/galaxy/datatypes/mira.py to the actual file as +described above. + + +Licence (MIT) +============= + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +NOTE: This is the licence for the Galaxy MIRA datatypes **only**. MIRA itself +is available and licenced separately. |
b |
diff -r 000000000000 -r ddd2e3362c5e datatypes_conf.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datatypes_conf.xml Fri Nov 21 06:38:46 2014 -0500 |
b |
@@ -0,0 +1,12 @@ +<?xml version="1.0"?> +<datatypes> + <datatype_files> + <datatype_file name="mira.py"/> + </datatype_files> + <registration> + <datatype extension="mira" type="galaxy.datatypes.mira:MiraAssemblyFormat" mimetype="text/plain" display_in_upload="true"/> + </registration> + <sniffers> + <sniffer type="galaxy.datatypes.mira:MiraAssemblyFormat"/> + </sniffers> +</datatypes> |
b |
diff -r 000000000000 -r ddd2e3362c5e mira.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mira.py Fri Nov 21 06:38:46 2014 -0500 |
b |
@@ -0,0 +1,48 @@ +""" +MiraAssemblyFormat class for the 'mira' format within Galaxy +""" + +from galaxy.datatypes.data import Text + + +class MiraAssemblyFormat(Text): + """MIRA Assembly Format data""" + file_ext = "mira" + + def sniff( self, filename ): + """Determines whether the file is a MIRA Assembly Format file. + + Note currently this only detects MIRA Assembly Format v2.0, + as used in MIRA v3.9 and v4.0. + + It does not detect MIRA Assembly Format v1 as used in both + MIRA v3.2 and v3.4. + """ + h = open(filename) + line = h.readline() + if line.rstrip() != "@Version\t2\t0": + h.close() + return False + line = h.readline() + if line.rstrip() != "@Program\tMIRALIB": + h.close() + return False + return True + + def merge(split_files, output_file): + """Merging multiple MIRA files is non-trivial and may not be possible...""" + if len(split_files) == 1: + #For one file only, use base class method (move/copy) + return Text.merge(split_files, output_file) + if not split_files: + raise ValueError("Given no MIRA, %r, to merge into %s" \ + % (split_files, output_file)) + raise NotImplementedError("Merging MIRA Assembly Files has not been implemented") + merge = staticmethod(merge) + + def split( cls, input_datasets, subdir_generator_function, split_params): + """Split a MIRA Assembly File (not implemented for now).""" + if split_params is None: + return None + raise NotImplementedError("Can't yet split a MIRA Assembly Format file") + merge = staticmethod(merge) |