From 4e8217f19ad0bcf90a08bb7024b9d20d4e50c86f Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Wed, 1 Apr 2009 00:49:19 +0000 Subject: [PATCH] Show the "Amplified from sample" as the parent library id and allow searching on that on the public library index. Additionally detect if we have an eland_multi or eland extended file and make the url to download those different files. (and change the link name slightly to reflect you're getting a different file.) finally don't bother showing the bed downloader for newer file types as the bed convertor doesn't work on them. --- htsworkflow/frontend/samples/models.py | 6 ++-- htsworkflow/frontend/samples/results.py | 2 +- htsworkflow/frontend/samples/views.py | 35 +++++++++++++++---- .../templates/samples/library_index.html | 4 ++- 4 files changed, 35 insertions(+), 12 deletions(-) diff --git a/htsworkflow/frontend/samples/models.py b/htsworkflow/frontend/samples/models.py index 19190ee..26d7185 100644 --- a/htsworkflow/frontend/samples/models.py +++ b/htsworkflow/frontend/samples/models.py @@ -120,8 +120,8 @@ class Library(models.Model): library_species = models.ForeignKey(Species) # new field 2008 Mar 5, alter table samples_library add column "hidden" NOT NULL default 0; hidden = models.BooleanField() - cell_line = models.ForeignKey(Cellline) - condition = models.ForeignKey(Condition) + cell_line = models.ForeignKey(Cellline, null=True) + condition = models.ForeignKey(Condition, null=True) antibody = models.ForeignKey(Antibody,blank=True,null=True) # New field Aug/25/08. SQL: alter table fctracker_library add column "lib_affiliation" varchar(256) NULL; affiliations = models.ManyToManyField(Affiliation,related_name='library_affiliations',null=True) @@ -149,7 +149,7 @@ class Library(models.Model): ('Done', 'Completed'), ) stopping_point = models.CharField(max_length=25, choices=PROTOCOL_END_POINTS, default='Done') - amplified_from_sample = models.ForeignKey('self', blank=True, null=True) + amplified_from_sample = models.ForeignKey('self', blank=True, null=True, related_name='amplified_into_sample') undiluted_concentration = models.DecimalField("Concentration", max_digits=5, decimal_places=2, blank=True, null=True, diff --git a/htsworkflow/frontend/samples/results.py b/htsworkflow/frontend/samples/results.py index d7cb77e..c2419cd 100644 --- a/htsworkflow/frontend/samples/results.py +++ b/htsworkflow/frontend/samples/results.py @@ -71,7 +71,7 @@ def get_flowcell_result_dict(flowcell_id): d[c_dir]['eland_results'] = {} - result_filepaths = glob.glob(os.path.join(c_dir_path, 's_*_eland_result.txt*')) + result_filepaths = glob.glob(os.path.join(c_dir_path, 's_*_eland_*')) for filepath in result_filepaths: diff --git a/htsworkflow/frontend/samples/views.py b/htsworkflow/frontend/samples/views.py index b6561a6..d6647d1 100644 --- a/htsworkflow/frontend/samples/views.py +++ b/htsworkflow/frontend/samples/views.py @@ -30,6 +30,10 @@ def create_library_context(cl): summary['library_id'] = lib.library_id summary['library_name'] = lib.library_name summary['species_name' ] = lib.library_species.scientific_name + if lib.amplified_from_sample is not None: + summary['amplified_from'] = lib.amplified_from_sample.library_id + else: + summary['amplified_from'] = '' lanes_run = 0 for lane_id in LANE_LIST: lane = getattr(lib, 'lane_%d_library' % (lane_id,)) @@ -42,8 +46,8 @@ def create_library_context(cl): def library(request): # build changelist fcl = ChangeList(request, Library, - list_filter=['library_species','affiliations'], - search_fields=['library_id', 'library_name'], + list_filter=['affiliations', 'library_species'], + search_fields=['library_id', 'library_name', 'amplified_from_sample__library_id'], list_per_page=200, queryset=Library.objects.filter(hidden__exact=0) ) @@ -318,12 +322,26 @@ def _summary_stats_old(flowcell_id, lane): return (dict_list, err_list, summary_list) - +def get_eland_result_type(pathname): + """ + Guess the eland result file type from the filename + """ + path, filename = os.path.split(pathname) + if 'extended' in filename: + return 'extended' + elif 'multi' in filename: + return 'multi' + elif 'result' in filename: + return 'result' + else: + return 'unknown' def _files(flowcell_id, lane): """ Sets up available files for download """ + lane = int(lane) + flowcell_id, id = parse_flowcell_id(flowcell_id) d = get_flowcell_result_dict(flowcell_id) @@ -340,10 +358,13 @@ def _files(flowcell_id, lane): % (flowcell_id, c_name, c_name)) erd = d[c_name]['eland_results'] - - if int(lane) in erd: - output.append('eland_result(%s)' % (flowcell_id, c_name, lane, c_name)) - output.append('bedfile(%s)' % (flowcell_id, c_name, lane, c_name)) + if lane in erd: + result_type = get_eland_result_type(erd[lane]) + result_url_pattern = 'eland %s(%s)' + output.append(result_url_pattern % (flowcell_id, c_name, lane, result_type, c_name)) + if result_type == 'result': + bed_url_pattern = 'bedfile(%s)' + output.append(bed_url_pattern % (flowcell_id, c_name, lane, c_name)) if len(output) == 0: return '' diff --git a/htsworkflow/frontend/templates/samples/library_index.html b/htsworkflow/frontend/templates/samples/library_index.html index 4263846..afae22b 100644 --- a/htsworkflow/frontend/templates/samples/library_index.html +++ b/htsworkflow/frontend/templates/samples/library_index.html @@ -29,6 +29,7 @@ + @@ -36,8 +37,9 @@ - {% for lib in library_list%} + {% for lib in library_list %} + -- 2.30.2
Parent Library ID Species Library Name
{{ lib.amplified_from }} {{ lib.library_id }} {{ lib.species_name }} {{ lib.library_name }}