diff mothur/lib/galaxy/datatypes/metagenomics.py @ 27:49058b1f8d3f

Update to mothur version 1.27 and add tool_dependencies.xml to automatically install mothur
author Jim Johnson <jj@umn.edu>
date Tue, 04 Dec 2012 11:05:19 -0600
parents 5c77423823cb
children 9c0cd3b92295
line wrap: on
line diff
--- a/mothur/lib/galaxy/datatypes/metagenomics.py	Wed May 16 13:12:05 2012 -0500
+++ b/mothur/lib/galaxy/datatypes/metagenomics.py	Tue Dec 04 11:05:19 2012 -0600
@@ -6,11 +6,7 @@
 
 import logging, os, os.path, sys, time, tempfile, shutil, string, glob, re
 import galaxy.model
-from galaxy.datatypes import data
 from galaxy.datatypes.sniff import *
-from galaxy.datatypes import metadata
-from galaxy.datatypes import tabular
-from galaxy.datatypes import sequence
 from galaxy.datatypes.metadata import MetadataElement
 from galaxy.datatypes.data import Text
 from galaxy.datatypes.tabular import Tabular
@@ -21,10 +17,8 @@
 pkg_resources.require("simplejson")
 import simplejson
 
-
 log = logging.getLogger(__name__)
 
-
 ## Mothur Classes 
 
 class Otu( Text ):
@@ -833,6 +827,54 @@
             close(fh)
         return False
 
+class CountTable(Tabular):
+    MetadataElement( name="groups", default=[], desc="Group Names", readonly=True, visible=True, no_value=[] )
+    file_ext = 'count_table'
+
+    def __init__(self, **kwd):
+        """
+        A table with first column names and following columns integer counts
+        # Example 1:
+        Representative_Sequence total   
+        U68630  1
+        U68595  1
+        U68600  1
+        # Example 2 (with group columns):
+        Representative_Sequence total   forest  pasture 
+        U68630  1       1       0       
+        U68595  1       1       0       
+        U68600  1       1       0       
+        U68591  1       1       0       
+        U68647  1       0       1       
+        """
+        Tabular.__init__( self, **kwd )
+        self.column_names = ['name','total']
+
+    def set_meta( self, dataset, overwrite = True, skip = 1, max_data_lines = None, **kwd ):
+        try:
+            data_lines = 0;
+            fh = open( dataset.file_name )
+            line = fh.readline()
+            if line:
+                line = line.strip()
+                colnames = line.split() 
+                if len(colnames) > 1:
+                    dataset.metadata.columns = len( colnames )
+                    if len(colnames) > 2:
+                        dataset.metadata.groups = colnames[2:]
+                    column_types = ['str']
+                    for i in range(1,len(colnames)):
+                        column_types.append('int')
+                    dataset.metadata.column_types = column_types
+                    dataset.metadata.comment_lines = 1
+            while line:
+                line = fh.readline()
+                if not line: break
+                data_lines += 1
+            dataset.metadata.data_lines = data_lines
+        finally:
+            close(fh)
+
 class RefTaxonomy(Tabular):
     file_ext = 'ref.taxonomy'
     """
@@ -1378,7 +1420,7 @@
     MetadataElement( name="column_names", default=[], desc="Column Names", readonly=False, visible=True, no_value=[] )
     file_ext = 'qiimeotutable'
     def init_meta( self, dataset, copy_from=None ):
-        tabular.Tabular.init_meta( self, dataset, copy_from=copy_from )
+        Tabular.init_meta( self, dataset, copy_from=copy_from )
     def set_meta( self, dataset, overwrite = True, skip = None, **kwd ):
         self.set_column_names(dataset) 
     def set_column_names(self, dataset):
@@ -1400,7 +1442,7 @@
     """
     file_ext = 'qiimedistmat'
     def init_meta( self, dataset, copy_from=None ):
-        tabular.Tabular.init_meta( self, dataset, copy_from=copy_from )
+        Tabular.init_meta( self, dataset, copy_from=copy_from )
     def set_meta( self, dataset, overwrite = True, skip = None, **kwd ):
         self.set_column_names(dataset) 
     def set_column_names(self, dataset):