From b5e10c72bcbb300b691a545aec1ba4e85c8aaaf0 Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Tue, 15 Dec 2009 23:42:25 +0000 Subject: [PATCH] Add flowcell/lane information for a library to the rest hts api. (Also catch a couple of bugs converting some fields to json.) --- .../frontend/experiments/experiments.py | 12 ++++++-- htsworkflow/frontend/samples/views.py | 29 +++++++++++-------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/htsworkflow/frontend/experiments/experiments.py b/htsworkflow/frontend/experiments/experiments.py index 4d9dac1..7f492a6 100755 --- a/htsworkflow/frontend/experiments/experiments.py +++ b/htsworkflow/frontend/experiments/experiments.py @@ -39,14 +39,20 @@ def flowcell_information(flowcell_id): 'library_name': lane.library.library_name, 'library_id': lane.library.id, 'library_species': lane.library.library_species.scientific_name, - 'pM': float(lane.pM), - 'read_length': fc.read_length + 'pM': unicode(lane.pM), + 'read_length': lane.flowcell.read_length } + + if fc.control_lane is None: + control_lane = None + else: + control_lane = int(fc.control_lane) + info = { 'advanced_run': fc.advanced_run, 'cluster_station_id': fc.cluster_station_id, 'cluster_station': fc.cluster_station.name, - 'control_lane': int(fc.control_lane), + 'control_lane': control_lane, # 'datarun_set': how should this be represented?, 'flowcell_id': fc.flowcell_id, 'id': fc.id, diff --git a/htsworkflow/frontend/samples/views.py b/htsworkflow/frontend/samples/views.py index a14b22c..9456712 100644 --- a/htsworkflow/frontend/samples/views.py +++ b/htsworkflow/frontend/samples/views.py @@ -2,6 +2,8 @@ import StringIO import logging import os +import sys + try: import json except ImportError, e: @@ -95,25 +97,21 @@ def library_to_flowcells(request, lib_id): return HttpResponse("Library %s does not exist" % (lib_id)) flowcell_list = [] - interesting_flowcells = {} # aka flowcells we're looking at - #for lane in LANE_LIST: + flowcell_run_results = {} # aka flowcells we're looking at for lane in lib.lane_set.all(): - #lane_library = getattr(lib, 'lane_%d_library' % (lane,)) - #for fc in lane_library.all(): fc = lane.flowcell 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) + if flowcell_id not in flowcell_run_results: + flowcell_run_results[flowcell_id] = get_flowcell_result_dict(flowcell_id) flowcell_list.append((fc.flowcell_id, lane.lane_number)) flowcell_list.sort() - lane_summary_list = [] eland_results = [] for fc, lane_number in flowcell_list: lane_summary, err_list = _summary_stats(fc, lane_number) - eland_results.extend(_make_eland_results(fc, lane_number, interesting_flowcells)) + eland_results.extend(_make_eland_results(fc, lane_number, flowcell_run_results)) lane_summary_list.extend(lane_summary) context = { @@ -310,9 +308,9 @@ def _summary_stats_old(flowcell_id, lane): summary_list.append("Summary report needs to be updated.") logging.error("Exception: " + str(e)) - print "----------------------------------" - print "-- DOES NOT SUPPORT PAIRED END ---" - print "----------------------------------" + print >>sys.stderr, "----------------------------------" + print >>sys.stderr, "-- DOES NOT SUPPORT PAIRED END ---" + print >>sys.stderr, "----------------------------------" lane_results = results.gerald.summary[0][lane] lrs = lane_results @@ -460,6 +458,12 @@ def library_dict(library_id): except Library.DoesNotExist, e: return None + #lane_info = lane_information(lib.lane_set) + lane_info = [] + for lane in lib.lane_set.all(): + lane_info.append( {'flowcell':lane.flowcell.flowcell_id, + 'lane_number': lane.lane_number} ) + info = { # 'affiliations'? # 'aligned_reads': lib.aligned_reads, @@ -473,6 +477,7 @@ def library_dict(library_id): 'experiment_type': lib.experiment_type.name, 'experiment_type_id': lib.experiment_type_id, 'id': lib.id, + 'lane_set': lane_info, 'library_id': lib.id, 'library_name': lib.library_name, 'library_species': lib.library_species.scientific_name, @@ -484,7 +489,7 @@ def library_dict(library_id): 'notes': lib.notes, 'replicate': lib.replicate, 'stopping_point': lib.stopping_point, - 'successful_pM': lib.successful_pM, + 'successful_pM': unicode(lib.successful_pM), 'undiluted_concentration': unicode(lib.undiluted_concentration) } if lib.library_type_id is None: -- 2.30.2