This might actually generate soft file with raw & supplemental data.
[htsworkflow.git] / htsworkflow / submission / geo.py
index a3ac2f17b904c832c9996336bb74d0186f0ddef9..097bea1083af8c1ffc39b3edea9a6e94e0a63fcd 100644 (file)
@@ -8,7 +8,7 @@ from htsworkflow.submission.submission import Submission
 from htsworkflow.util.rdfhelp import \
      fromTypedNode, \
      geoSoftNS, \
-     simplifyUri, \
+     stripNamespace, \
      submissionOntology
 
 from django.conf import settings
@@ -17,8 +17,8 @@ from django.template import Context, loader
 LOGGER = logging.getLogger(__name__)
 
 class GEOSubmission(Submission):
-    def __init__(self, name, model):
-        super(GEOSubmission, self).__init__(name, model)
+    def __init__(self, name, model, host):
+        super(GEOSubmission, self).__init__(name, model, host)
 
     def make_soft(self, result_map):
         samples = []
@@ -31,9 +31,13 @@ class GEOSubmission(Submission):
         for lib_id, result_dir in result_map.items():
             an_analysis = self.get_submission_node(result_dir)
             metadata = self.get_sample_metadata(an_analysis)
-            if len(metadata) > 1:
-                errmsg = 'Confused there are more than one samples for %s'
-                LOGGER.debug(errmsg % (str(an_analysis,)))
+            if len(metadata) == 0:
+                errmsg = 'No metadata found for {0}'
+                LOGGER.error(errmsg.format(str(an_analysis),))
+                continue
+            elif len(metadata) > 1:
+                errmsg = 'Confused there are more than one sample for %s'
+                LOGGER.debug(errmsg % (str(an_analysis),))
             metadata = metadata[0]
             metadata['raw'] = self.get_raw_files(an_analysis)
             metadata['supplimental'] = self.get_sample_files(an_analysis)
@@ -107,7 +111,7 @@ class GEOSubmission(Submission):
 
         context = Context({
             'submission': str(analysis_node.uri),
-            'file_class': str(geoSoftNS['supplemental'])
+            'file_class': str(geoSoftNS['supplemental'].uri)
             })
 
         return self.execute_query(query_template, context)
@@ -119,7 +123,7 @@ class GEOSubmission(Submission):
 
         context = Context({
             'submission': str(analysis_node.uri),
-            'file_class': str(geoSoftNS['raw']),
+            'file_class': str(geoSoftNS['raw'].uri),
             })
 
         lanes = {}
@@ -203,7 +207,7 @@ class GEOSubmission(Submission):
     def query_to_soft_dictionary(self, results, heading):
         attributes = []
         for r in results:
-            name = simplifyUri(geoSoftNS, r['name'])
+            name = stripNamespace(geoSoftNS, r['name'])
             if name is not None:
                 if name.lower() == heading.lower():
                     name = '^' + name