From 258ada862ece5a06b8a86530cd9f22c355a80ac1 Mon Sep 17 00:00:00 2001 From: Slugger70 Date: Tue, 6 Nov 2018 17:50:12 +1100 Subject: [PATCH 1/5] Added a metadata element to the biom1 datatype --- lib/galaxy/datatypes/text.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/galaxy/datatypes/text.py b/lib/galaxy/datatypes/text.py index 0fbb0de78de..23256f7e14e 100644 --- a/lib/galaxy/datatypes/text.py +++ b/lib/galaxy/datatypes/text.py @@ -184,6 +184,7 @@ class Biom1(Json): MetadataElement(name="table_type", default="", desc="table_type", param=MetadataParameter, readonly=True, visible=True, optional=True, no_value="") MetadataElement(name="table_id", default=None, desc="table_id", param=MetadataParameter, readonly=True, visible=True, optional=True, no_value=None) MetadataElement(name="table_columns", default=[], desc="table_columns", param=MetadataParameter, readonly=True, visible=False, optional=True, no_value=[]) + MetadataElement(name="table_column_metadata_headers", default=[], desc="table_column_metadata_headers", param=MetadataParameter, readonly=True, visible=True, optional=True, no_value=[]) def set_peek(self, dataset, is_multi_byte=False): super(Biom1, self).set_peek(dataset) @@ -252,10 +253,26 @@ class Biom1(Json): ('table_columns', 'columns')]: try: metadata_value = json_dict.get(b_name, None) + if b_name == "columns" and metadata_value: + mks = list(metadata_value[0]['metadata'].keys()) + keep_columns = {} + for mk in mks: + keep_columns[mk] = None + for column in metadata_value: + for k in column['metadata']: + if not column['metadata'][k] is None: + keep_columns[k] = 1 + final_list = [] + for k in keep_columns: + if not keep_columns[k] is None: + final_list.append(k) + final_list.sort() + dataset.metadata.table_column_metadata_headers = final_list if b_name in b_transform: metadata_value = b_transform[b_name](metadata_value) setattr(dataset.metadata, m_name, metadata_value) except Exception: + log.exception("Something in the metadata detection for biom1 went wrong: " + str(Exception)) pass From 789f7b2d8dd72833e2c295535ca58fb9f46806b5 Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Tue, 6 Nov 2018 22:22:09 +1100 Subject: [PATCH 2/5] As per review Co-Authored-By: Slugger70 --- lib/galaxy/datatypes/text.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/datatypes/text.py b/lib/galaxy/datatypes/text.py index 23256f7e14e..31a5d7bd821 100644 --- a/lib/galaxy/datatypes/text.py +++ b/lib/galaxy/datatypes/text.py @@ -272,7 +272,7 @@ class Biom1(Json): metadata_value = b_transform[b_name](metadata_value) setattr(dataset.metadata, m_name, metadata_value) except Exception: - log.exception("Something in the metadata detection for biom1 went wrong: " + str(Exception)) + log.exception("Something in the metadata detection for biom1 went wrong") pass From fc53123a94c2ba625c1e6075e0e3a284bddf2d29 Mon Sep 17 00:00:00 2001 From: Slugger70 Date: Tue, 6 Nov 2018 22:28:00 +1100 Subject: [PATCH 3/5] Changes as per review --- lib/galaxy/datatypes/text.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/datatypes/text.py b/lib/galaxy/datatypes/text.py index 23256f7e14e..0b0ca757966 100644 --- a/lib/galaxy/datatypes/text.py +++ b/lib/galaxy/datatypes/text.py @@ -254,17 +254,15 @@ class Biom1(Json): try: metadata_value = json_dict.get(b_name, None) if b_name == "columns" and metadata_value: - mks = list(metadata_value[0]['metadata'].keys()) - keep_columns = {} - for mk in mks: - keep_columns[mk] = None + mks = metadata_value[0]['metadata'].keys() + keep_columns = { mk: None for mk in mks } for column in metadata_value: for k in column['metadata']: - if not column['metadata'][k] is None: + if column['metadata'][k] is not None: keep_columns[k] = 1 final_list = [] for k in keep_columns: - if not keep_columns[k] is None: + if keep_columns[k] is not None: final_list.append(k) final_list.sort() dataset.metadata.table_column_metadata_headers = final_list @@ -272,7 +270,7 @@ class Biom1(Json): metadata_value = b_transform[b_name](metadata_value) setattr(dataset.metadata, m_name, metadata_value) except Exception: - log.exception("Something in the metadata detection for biom1 went wrong: " + str(Exception)) + log.exception("Something in the metadata detection for biom1 went wrong.") pass From 0bc6e35ad60a1f3b4e5db5691cc26fb67728d2bc Mon Sep 17 00:00:00 2001 From: Slugger70 Date: Wed, 7 Nov 2018 10:23:31 +1100 Subject: [PATCH 4/5] Minor alteration for flake8 --- lib/galaxy/datatypes/text.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/datatypes/text.py b/lib/galaxy/datatypes/text.py index 0b0ca757966..a3b0fca18fe 100644 --- a/lib/galaxy/datatypes/text.py +++ b/lib/galaxy/datatypes/text.py @@ -255,7 +255,7 @@ class Biom1(Json): metadata_value = json_dict.get(b_name, None) if b_name == "columns" and metadata_value: mks = metadata_value[0]['metadata'].keys() - keep_columns = { mk: None for mk in mks } + keep_columns = {mk: None for mk in mks} for column in metadata_value: for k in column['metadata']: if column['metadata'][k] is not None: From 6dd098f747c89ba3494b64bb5a64dc078bb3d5db Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Wed, 7 Nov 2018 18:57:06 +0000 Subject: [PATCH 5/5] Simplify code --- lib/galaxy/datatypes/text.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/lib/galaxy/datatypes/text.py b/lib/galaxy/datatypes/text.py index a3b0fca18fe..c2e71444cf1 100644 --- a/lib/galaxy/datatypes/text.py +++ b/lib/galaxy/datatypes/text.py @@ -254,17 +254,12 @@ class Biom1(Json): try: metadata_value = json_dict.get(b_name, None) if b_name == "columns" and metadata_value: - mks = metadata_value[0]['metadata'].keys() - keep_columns = {mk: None for mk in mks} + keep_columns = set() for column in metadata_value: - for k in column['metadata']: - if column['metadata'][k] is not None: - keep_columns[k] = 1 - final_list = [] - for k in keep_columns: - if keep_columns[k] is not None: - final_list.append(k) - final_list.sort() + for k, v in column['metadata'].items(): + if v is not None: + keep_columns.add(k) + final_list = sorted(list(keep_columns)) dataset.metadata.table_column_metadata_headers = final_list if b_name in b_transform: metadata_value = b_transform[b_name](metadata_value)