Update the django app to report "raw reads" for a sequence lane.
[htsworkflow.git] / htsworkflow / frontend / samples / views.py
index 3a37a8c68e1d2cd754e1c4129d213d235f68b2e7..86c15117e8c2440d3ff7d088053a054f2047c8ff 100644 (file)
@@ -9,7 +9,7 @@ from htsworkflow.frontend import settings
 from htsworkflow.util import makebed
 from htsworkflow.util import opener
 
-from django.http import HttpResponse
+from django.http import HttpResponse, HttpResponseRedirect
 from django.shortcuts import render_to_response
 from django.template import RequestContext
 from django.template.loader import get_template
@@ -142,9 +142,12 @@ def result_fc_cnm_eland_lane(request, fc_id, cnm, lane):
     
     filepath = erd[lane]
     
-    f = opener.autoopen(filepath, 'r')
+    #f = opener.autoopen(filepath, 'r')
+    # return HttpResponse(f, mimetype="application/x-elandresult")
+
+    f = open(filepath, 'r')
+    return HttpResponse(f, mimetype='application/x-bzip2')
     
-    return HttpResponse(f, mimetype="application/x-elandresult")
 
 
 def bedfile_fc_cnm_eland_lane_ucsc(request, fc_id, cnm, lane):
@@ -219,7 +222,10 @@ def _summary_stats(flowcell_id, lane_id):
                 eland_summary.flowcell_id = flowcell_id
                 eland_summary.clusters = gerald_summary[end][lane_id].cluster
                 eland_summary.cycle_width = cycle_width
-                eland_summary.summarized_reads = runfolder.summarize_mapped_reads(eland_summary.genome_map, eland_summary.mapped_reads)
+               if hasattr(eland_summary, 'genome_map'):
+                    eland_summary.summarized_reads = runfolder.summarize_mapped_reads( 
+                                                       eland_summary.genome_map, 
+                                                       eland_summary.mapped_reads)
 
                 # grab some more information out of the flowcell db
                 flowcell = FlowCell.objects.get(flowcell_id=fc_id)
@@ -310,10 +316,13 @@ def get_eland_result_type(pathname):
 
 def _make_eland_results(flowcell_id, lane, interesting_flowcells):
 
-    cur_fc = interesting_flowcells[flowcell_id]
+    cur_fc = interesting_flowcells.get(flowcell_id, None)
+    if cur_fc is None:
+      return []
+
     results = []
     for cycle in cur_fc.keys():
-        result_path = cur_fc[cycle]['eland_results'][lane]
+        result_path = cur_fc[cycle]['eland_results'].get(lane, None)
         result_link = make_result_link(flowcell_id, cycle, lane, result_path)
         results.append({'flowcell_id': flowcell_id,
                         'cycle': cycle, 
@@ -330,6 +339,9 @@ def make_summary_url(flowcell_id, cycle_name):
     return url
 
 def make_result_link(flowcell_id, cycle_name, lane, eland_result_path):
+    if eland_result_path is None:
+        return ("", "", "")
+
     result_type = get_eland_result_type(eland_result_path)
     result_url = '/results/%s/%s/eland_result/%s' % (flowcell_id, cycle_name, lane)
     result_label = 'eland %s' % (result_type,)
@@ -374,4 +386,8 @@ def _files(flowcell_id, lane):
         return ''
     
     return '(' + '|'.join(output) + ')'
-            
+
+def library_id_to_admin_url(request, lib_id):
+    lib = Library.objects.get(library_id=lib_id)
+    return HttpResponseRedirect('/admin/samples/library/%s' % (lib.id,))
+