Next changeset 1:6a7d52777409 (2014-06-03) |
Commit message:
Uploaded |
added:
metagenomics_datatypes/ReadMe.txt metagenomics_datatypes/datatypes_conf.xml metagenomics_datatypes/metagenomics.py |
b |
diff -r 000000000000 -r ccba8612695e metagenomics_datatypes/ReadMe.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/metagenomics_datatypes/ReadMe.txt Thu May 29 00:39:20 2014 -0400 |
b |
@@ -0,0 +1,29 @@ +Galaxy datatypes required by the Metagenomics Workflow +====================================================================== + +This wrapper for the metagenomics datatypes is based on the Mothur +toolsuite wrapper of James E Johnson - University of Minnesota. + +This wrapper will automatically register the datatypes required by +the Metagenomics Workflow. + + +Disclaimer +====================================================================== + +This source code is provided by QFAB Bioinformatics "as is", in the hope +that it will be useful, and any express or implied warranties, including, +but not limited to, the implied warranties of merchantability and fitness +for a particular purpose are disclaimed. +IN NO EVENT SHALL QFAB BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES HOWEVER CAUSED AND ON ANY +THEORY +OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE +CODE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License +====================================================================== +This work by QFAB Bioinformatics (as part of the GVL project +http://genome.edu.au) is licensed under a Creative Commons +Attribution-NonCommercial-ShareAlike 4.0 International License. |
b |
diff -r 000000000000 -r ccba8612695e metagenomics_datatypes/datatypes_conf.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/metagenomics_datatypes/datatypes_conf.xml Thu May 29 00:39:20 2014 -0400 |
b |
@@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<datatypes> + <datatype_files> + <datatype_file name="metagenomics.py"/> + </datatype_files> + <registration> + <datatype extension="rabund" type="galaxy.datatypes.metagenomics:Rabund" display_in_upload="true"/> + <datatype extension="otu" type="galaxy.datatypes.metagenomics:Otu" display_in_upload="true"/> + <datatype extension="list" type="galaxy.datatypes.metagenomics:OtuList" display_in_upload="true"/> + <datatype extension="sabund" type="galaxy.datatypes.metagenomics:Sabund" display_in_upload="true"/> + <datatype extension="rabund" type="galaxy.datatypes.metagenomics:Rabund" display_in_upload="true"/> + <datatype extension="grpabund" type="galaxy.datatypes.metagenomics:GroupRabund" display_in_upload="true"/> + <datatype extension="shared" type="galaxy.datatypes.metagenomics:SharedRabund" display_in_upload="true"/> + <datatype extension="relabund" type="galaxy.datatypes.metagenomics:RelAbund" display_in_upload="true"/> + <datatype extension="accnos" type="galaxy.datatypes.metagenomics:AccNos" display_in_upload="true"/> + <datatype extension="tre" type="galaxy.datatypes.data:Newick" display_in_upload="true"/> + <datatype extension="nhx" type="galaxy.datatypes.metagenomics:Nhx" display_in_upload="true"/> + <datatype extension="nex" type="galaxy.datatypes.metagenomics:Nexus" display_in_upload="true"/> + </registration> + <sniffers> + <sniffer type="galaxy.datatypes.metagenomics:Rabund"/> + <sniffer type="galaxy.datatypes.metagenomics:Otu"/> + <sniffer type="galaxy.datatypes.metagenomics:Sabund"/> + <sniffer type="galaxy.datatypes.metagenomics:GroupAbund"/> + <sniffer type="galaxy.datatypes.metagenomics:SharedRabund"/> + <sniffer type="galaxy.datatypes.metagenomics:RelAbund"/> + <sniffer type="galaxy.datatypes.metagenomics:Newick"/> + <sniffer type="galaxy.datatypes.metagenomics:Nexus"/> + </sniffers> +</datatypes> |
b |
diff -r 000000000000 -r ccba8612695e metagenomics_datatypes/metagenomics.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/metagenomics_datatypes/metagenomics.py Thu May 29 00:39:20 2014 -0400 |
[ |
b'@@ -0,0 +1,384 @@\n+"""\n+metagenomics class\n+"""\n+\n+import logging, os, os.path, sys, time, tempfile, shutil, string, glob, re\n+import galaxy.model\n+from galaxy.datatypes.sniff import *\n+from galaxy.datatypes.metadata import MetadataElement\n+from galaxy.datatypes.data import Text, Data\n+from galaxy.datatypes.tabular import Tabular\n+from galaxy.datatypes.sequence import Fasta\n+from galaxy import util\n+from galaxy.datatypes.images import Html\n+\n+log = logging.getLogger(__name__)\n+\n+class Otu( Text ):\n+ file_ext = \'otu\'\n+ MetadataElement( name="columns", default=0, desc="Number of columns", readonly=True, visible=True, no_value=0 )\n+ MetadataElement( name="labels", default=[], desc="Label Names", readonly=True, visible=True, no_value=[] )\n+ def __init__(self, **kwd):\n+ Text.__init__( self, **kwd )\n+ def set_meta( self, dataset, overwrite = True, **kwd ):\n+ if dataset.has_data():\n+ label_names = set()\n+ ncols = 0\n+ data_lines = 0\n+ comment_lines = 0\n+ try:\n+ fh = open( dataset.file_name )\n+ for line in fh:\n+ fields = line.strip().split(\'\\t\')\n+ if len(fields) >= 2:\n+ data_lines += 1\n+ ncols = max(ncols,len(fields))\n+ label_names.add(fields[0])\n+ else:\n+ comment_lines += 1\n+ # Set the discovered metadata values for the dataset\n+ dataset.metadata.data_lines = data_lines\n+ dataset.metadata.columns = ncols\n+ dataset.metadata.labels = []\n+ dataset.metadata.labels += label_names\n+ dataset.metadata.labels.sort()\n+ finally:\n+ fh.close()\n+\n+ def sniff( self, filename ):\n+ """\n+ Determines whether the file is a otu (operational taxonomic unit) format\n+ """\n+ try:\n+ fh = open( filename )\n+ count = 0\n+ while True:\n+ line = fh.readline()\n+ line = line.strip()\n+ if not line:\n+ break #EOF\n+ if line:\n+ if line[0] != \'@\':\n+ linePieces = line.split(\'\\t\')\n+ if len(linePieces) < 2:\n+ return False\n+ try:\n+ check = int(linePieces[1])\n+ if check + 2 != len(linePieces):\n+ return False\n+ except ValueError:\n+ return False\n+ count += 1\n+ if count == 5:\n+ return True\n+ fh.close()\n+ if count < 5 and count > 0:\n+ return True\n+ except:\n+ pass\n+ finally:\n+ fh.close()\n+ return False\n+\n+class OtuList( Otu ):\n+ file_ext = \'list\'\n+ def __init__(self, **kwd):\n+ """\n+ # http://www.mothur.org/wiki/List_file\n+ The first column is a label that represents the distance that sequences were assigned to OTUs.\n+ The number in the second column is the number of OTUs that have been formed.\n+ Subsequent columns contain the names of sequences within each OTU separated by a comma.\n+ distance_label otu_count OTU1 OTU2 OTUn\n+ """\n+ Otu.__init__( self, **kwd )\n+ def init_meta( self, dataset, copy_from=None ):\n+ Otu.init_meta( self, dataset, copy_from=copy_from )\n+ def set_meta( self, dataset, overwrite = True, **kwd ):\n+ Otu.set_meta(self,dataset, overwrite = True, **kwd )\n+ """\n+ # too many columns to be stored in metadata\n+ if dataset != None and dataset.metadata.columns > 2:\n+ for i in range(2,dataset.metadata.columns):\n+ dataset.metadat'..b'ng from for that row. Next is the number of OTUs that were found between each of the groups and is the number of columns that follow.\n+ Finally, the remaining columns indicate the relative abundance of each OTU from that group.\n+ """\n+ GroupAbund.__init__( self, **kwd )\n+ def init_meta( self, dataset, copy_from=None ):\n+ GroupAbund.init_meta( self, dataset, copy_from=copy_from )\n+ def sniff( self, filename ):\n+ """\n+ Determines whether the file is a otu (operational taxonomic unit) Relative Abundance format\n+ label<TAB>group<TAB>count[<TAB>value(1..n)]\n+ The first line is column headings as of Mothur v 1.20\n+ """\n+ # return GroupAbund.sniff(self,filename,False)\n+ isme = GroupAbund.sniff(self,filename,False)\n+ return isme\n+\n+class AccNos(Tabular):\n+ file_ext = \'accnos\'\n+ def __init__(self, **kwd):\n+ """A list of names"""\n+ Tabular.__init__( self, **kwd )\n+ self.column_names = [\'name\']\n+ self.columns = 1\n+\n+class Newick( Text ):\n+ """\n+ The Newick Standard for representing trees in computer-readable form makes use of the correspondence between trees and nested parentheses.\n+ http://evolution.genetics.washington.edu/phylip/newicktree.html\n+ http://en.wikipedia.org/wiki/Newick_format\n+ Example:\n+ (B,(A,C,E),D);\n+ or example with branch lengths:\n+ (B:6.0,(A:5.0,C:3.0,E:4.0):5.0,D:11.0);\n+ or an example with embedded comments but no branch lengths:\n+ ((a [&&PRIME S=x], b [&&PRIME S=y]), c [&&PRIME S=z]);\n+ Example with named interior noe:\n+ (B:6.0,(A:5.0,C:3.0,E:4.0)Ancestor1:5.0,D:11.0);\n+ """\n+ file_ext = \'tre\'\n+\n+ def __init__(self, **kwd):\n+ Text.__init__( self, **kwd )\n+\n+ def sniff( self, filename ): ## TODO\n+ """\n+ Determine whether the file is in Newick format\n+ Note: Last non-space char of a tree should be a semicolon: \';\'\n+ Usually the first char will be a open parenthesis: \'(\'\n+ (,,(,)); no nodes are named\n+ (A,B,(C,D)); leaf nodes are named\n+ (A,B,(C,D)E)F; all nodes are named\n+ (:0.1,:0.2,(:0.3,:0.4):0.5); all but root node have a distance to parent\n+ (:0.1,:0.2,(:0.3,:0.4):0.5):0.0; all have a distance to parent\n+ (A:0.1,B:0.2,(C:0.3,D:0.4):0.5); distances and leaf names (popular)\n+ (A:0.1,B:0.2,(C:0.3,D:0.4)E:0.5)F; distances and all names\n+ ((B:0.2,(C:0.3,D:0.4)E:0.5)F:0.1)A; a tree rooted on a leaf node (rare)\n+ """\n+ if not os.path.exists(filename):\n+ return False\n+ try:\n+ ## For now, guess this is a Newick file if it starts with a \'(\' and ends with a \';\'\n+ flen = os.path.getsize(filename)\n+ fh = open( filename )\n+ len = min(flen,2000)\n+ # check end of the file for a semicolon\n+ fh.seek(-len,os.SEEK_END)\n+ buf = fh.read(len).strip()\n+ buf = buf.strip()\n+ if not buf.endswith(\';\'):\n+ return False\n+ # See if this starts with a open parenthesis\n+ if len < flen:\n+ fh.seek(0)\n+ buf = fh.read(len).strip()\n+ if buf.startswith(\'(\'):\n+ return True\n+ except:\n+ pass\n+ finally:\n+ close(fh)\n+ return False\n+\n+class Nhx( Newick ):\n+ """\n+ New Hampshire eXtended Newick with embedded\n+ The Newick Standard for representing trees in computer-readable form makes use of the correspondence between trees and nested parentheses.\n+ http://evolution.genetics.washington.edu/phylip/newicktree.html\n+ http://en.wikipedia.org/wiki/Newick_format\n+ Example:\n+ (gene1_Hu[&&NHX:S=Hu_Homo_sapiens], (gene2_Hu[&&NHX:S=Hu_Homo_sapiens], gene2_Mu[&&NHX:S=Mu_Mus_musculus]));\n+ """\n+ file_ext = \'nhx\'\n' |