From 58d2b637ba9ac87e1ed1173aebcafe51e6f34a46 Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Sat, 4 Apr 2009 00:37:42 +0000 Subject: [PATCH] Update the library_detail page --- htsworkflow/frontend/samples/views.py | 104 +++++++++--------- htsworkflow/frontend/settings.py | 12 +- .../templates/samples/library_detail.html | 47 +++++++- 3 files changed, 103 insertions(+), 60 deletions(-) diff --git a/htsworkflow/frontend/samples/views.py b/htsworkflow/frontend/samples/views.py index d6647d1..3a37a8c 100644 --- a/htsworkflow/frontend/samples/views.py +++ b/htsworkflow/frontend/samples/views.py @@ -10,6 +10,7 @@ from htsworkflow.util import makebed from htsworkflow.util import opener from django.http import HttpResponse +from django.shortcuts import render_to_response from django.template import RequestContext from django.template.loader import get_template @@ -62,70 +63,41 @@ def library_to_flowcells(request, lib_id): """ Display information about all the flowcells a library has been run on. """ - t = get_template("samples/library_detail.html") try: lib = Library.objects.get(library_id=lib_id) except: return HttpResponse("Library %s does not exist" % (lib_id)) - - output = [] - - output.append('Library ID: %s' % (lib.library_id)) - output.append('Name: %s' % (lib.library_name)) - output.append('Species: %s' % (lib.library_species.scientific_name)) - output.append('') - - output.append('FLOWCELL - LANE:') - - output.extend([ '%s - Lane 1 %s' % (fc.flowcell_id, _files(fc.flowcell_id, 1)) for fc in lib.lane_1_library.all() ]) - output.extend([ '%s - Lane 2 %s' % (fc.flowcell_id, _files(fc.flowcell_id, 2)) for fc in lib.lane_2_library.all() ]) - output.extend([ '%s - Lane 3 %s' % (fc.flowcell_id, _files(fc.flowcell_id, 3)) for fc in lib.lane_3_library.all() ]) - output.extend([ '%s - Lane 4 %s' % (fc.flowcell_id, _files(fc.flowcell_id, 4)) for fc in lib.lane_4_library.all() ]) - output.extend([ '%s - Lane 5 %s' % (fc.flowcell_id, _files(fc.flowcell_id, 5)) for fc in lib.lane_5_library.all() ]) - output.extend([ '%s - Lane 6 %s' % (fc.flowcell_id, _files(fc.flowcell_id, 6)) for fc in lib.lane_6_library.all() ]) - output.extend([ '%s - Lane 7 %s' % (fc.flowcell_id, _files(fc.flowcell_id, 7)) for fc in lib.lane_7_library.all() ]) - output.extend([ '%s - Lane 8 %s' % (fc.flowcell_id, _files(fc.flowcell_id, 8)) for fc in lib.lane_8_library.all() ]) - - record_count = lib.lane_1_library.count() + \ - lib.lane_2_library.count() + \ - lib.lane_3_library.count() + \ - lib.lane_4_library.count() + \ - lib.lane_5_library.count() + \ - lib.lane_6_library.count() + \ - lib.lane_7_library.count() + \ - lib.lane_8_library.count() - + flowcell_list = [] - flowcell_list.extend([ (fc.flowcell_id, 1) for fc in lib.lane_1_library.all() ]) - flowcell_list.extend([ (fc.flowcell_id, 2) for fc in lib.lane_2_library.all() ]) - flowcell_list.extend([ (fc.flowcell_id, 3) for fc in lib.lane_3_library.all() ]) - flowcell_list.extend([ (fc.flowcell_id, 4) for fc in lib.lane_4_library.all() ]) - flowcell_list.extend([ (fc.flowcell_id, 5) for fc in lib.lane_5_library.all() ]) - flowcell_list.extend([ (fc.flowcell_id, 6) for fc in lib.lane_6_library.all() ]) - flowcell_list.extend([ (fc.flowcell_id, 7) for fc in lib.lane_7_library.all() ]) - flowcell_list.extend([ (fc.flowcell_id, 8) for fc in lib.lane_8_library.all() ]) + interesting_flowcells = {} # aka flowcells we're looking at + for lane in LANE_LIST: + lane_library = getattr(lib, 'lane_%d_library' % (lane,)) + for fc in lane_library.all(): + flowcell_id, id = parse_flowcell_id(fc.flowcell_id) + if flowcell_id not in interesting_flowcells: + interesting_flowcells[flowcell_id] = get_flowcell_result_dict(flowcell_id) + flowcell_list.append((fc.flowcell_id, lane)) + flowcell_list.sort() lane_summary_list = [] + eland_results = [] for fc, lane in flowcell_list: lane_summary, err_list = _summary_stats(fc, lane) + eland_results.extend(_make_eland_results(fc, lane, interesting_flowcells)) lane_summary_list.extend(lane_summary) - - for err in err_list: - output.append(err) - - output.append('
') - output.append(t.render(RequestContext(request, {'lane_summary_list': lane_summary_list}))) - output.append('
') - - if record_count == 0: - output.append("None Found") - - return HttpResponse('
\n'.join(output)) + return render_to_response( + 'samples/library_detail.html', + {'lib': lib, + 'eland_results': eland_results, + 'lane_summary_list': lane_summary_list, + }, + context_instance = RequestContext(request)) + def summaryhtm_fc_cnm(request, fc_id, cnm): """ returns a Summary.htm file if it exists. @@ -335,7 +307,39 @@ def get_eland_result_type(pathname): return 'result' else: return 'unknown' - + +def _make_eland_results(flowcell_id, lane, interesting_flowcells): + + cur_fc = interesting_flowcells[flowcell_id] + results = [] + for cycle in cur_fc.keys(): + result_path = cur_fc[cycle]['eland_results'][lane] + result_link = make_result_link(flowcell_id, cycle, lane, result_path) + results.append({'flowcell_id': flowcell_id, + 'cycle': cycle, + 'lane': lane, + 'summary_url': make_summary_url(flowcell_id, cycle), + 'result_url': result_link[0], + 'result_label': result_link[1], + 'bed_url': result_link[2], + }) + return results + +def make_summary_url(flowcell_id, cycle_name): + url = '/results/%s/%s/summary/' % (flowcell_id, cycle_name) + return url + +def make_result_link(flowcell_id, cycle_name, lane, eland_result_path): + 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,) + bed_url = None + if result_type == 'result': + bed_url_pattern = '/results/%s/%s/bedfile/%s' + bed_url = bed_url_pattern % (flowcell_id, cycle_name, lane) + + return (result_url, result_label, bed_url) + def _files(flowcell_id, lane): """ Sets up available files for download diff --git a/htsworkflow/frontend/settings.py b/htsworkflow/frontend/settings.py index eb30b90..fe5b243 100644 --- a/htsworkflow/frontend/settings.py +++ b/htsworkflow/frontend/settings.py @@ -163,8 +163,10 @@ options_to_dict(ALLOWED_IPS, 'allowed_hosts') ALLOWED_ANALYS_IPS = {'127.0.0.1': '127.0.0.1'} options_to_dict(ALLOWED_ANALYS_IPS, 'allowed_analysis_hosts') -#UPLOADTO_HOME = os.path.abspath('../../uploads') -#UPLOADTO_CONFIG_FILE = os.path.join(UPLOADTO_HOME, 'eland_config') -#UPLOADTO_ELAND_RESULT_PACKS = os.path.join(UPLOADTO_HOME, 'eland_results') -#UPLOADTO_BED_PACKS = os.path.join(UPLOADTO_HOME, 'bed_packs') -RESULT_HOME_DIR='/Users/diane/proj/solexa/results/flowcells' + +UPLOADTO_HOME = os.path.abspath('/home/www/gaworkflow/uploads') +UPLOADTO_CONFIG_FILE = os.path.join(UPLOADTO_HOME, 'eland_config') +UPLOADTO_ELAND_RESULT_PACKS = os.path.join(UPLOADTO_HOME, 'eland_results') +UPLOADTO_BED_PACKS = os.path.join(UPLOADTO_HOME, 'bed_packs') + +RESULT_HOME_DIR=os.path.abspath('/woldlab/loxcyc/data00/solexa-sequence/flowcells') diff --git a/htsworkflow/frontend/templates/samples/library_detail.html b/htsworkflow/frontend/templates/samples/library_detail.html index 56c937f..fbaf1a0 100644 --- a/htsworkflow/frontend/templates/samples/library_detail.html +++ b/htsworkflow/frontend/templates/samples/library_detail.html @@ -1,7 +1,4 @@ {% load humanize %} - -
-
+

About this library

+Library ID: {{ lib.library_id }}
+Name: {{ lib.library_name }}
+Species: {{ lib.library_species.scientific_name }}
+Affiliations: + + +

Raw Result Files

+ + + + + + + + + + +{% for result in eland_results %} + + + + + + + + +{% endfor %} +
CycleFlowcellLaneSummaryElandBed
{{ result.cycle }}{{ result.flowcell_id }}{{ result.lane }}Summary{{ result.result_label }} + {% if result.bed_url %} + Bed + {% endif %} +
+ +

Lane Summary Statistics

{% block summary_stats %} @@ -87,11 +123,12 @@


+

Count of multi-reads

{% for lane in lane_summary_list %} -

+

{{lane.cycle_width}} {{ lane.flowcell_id }} lane {{ lane.lane_id }} {% if lane.end %} end {{ lane.end }}{% endif %} -

+