From 26d48c876cd2bd39bd8c0e404d54e6de520ce1df Mon Sep 17 00:00:00 2001 From: Pierrick Roger Mele Date: Mon, 26 Jun 2017 16:41:39 +0200 Subject: [PATCH 1/4] Fix empty tabular output error when using discover_datasets. --- lib/galaxy/datatypes/tabular.py | 12 +++++++++--- tools/mtbls-dwnld | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) create mode 120000 tools/mtbls-dwnld diff --git a/lib/galaxy/datatypes/tabular.py b/lib/galaxy/datatypes/tabular.py index cc28fba8ab9..6c0a9f22d2b 100644 --- a/lib/galaxy/datatypes/tabular.py +++ b/lib/galaxy/datatypes/tabular.py @@ -978,19 +978,25 @@ class BaseCSV( TabularData ): data_row = next(reader) for row in reader: pass + except StopIteration: + pass except csv.Error as e: raise Exception('CSV reader error - line %d: %s' % (reader.line_num, e)) # Guess column types column_types = [] - for cell in data_row: - column_types.append(self.guess_type(cell)) + if data_row is not None: + for cell in data_row: + column_types.append(self.guess_type(cell)) # Set metadata dataset.metadata.data_lines = reader.line_num - 1 dataset.metadata.comment_lines = 1 dataset.metadata.column_types = column_types - dataset.metadata.columns = max( len( header_row ), len( data_row ) ) + if data_row is None: + dataset.metadata.columns = len( header_row ) + else: + dataset.metadata.columns = max( len( header_row ), len( data_row ) ) dataset.metadata.column_names = header_row dataset.metadata.delimiter = reader.dialect.delimiter diff --git a/tools/mtbls-dwnld b/tools/mtbls-dwnld new file mode 120000 index 00000000000..9652011afd3 --- /dev/null +++ b/tools/mtbls-dwnld @@ -0,0 +1 @@ +/home/pierrick/dev/mtbls-dwnld \ No newline at end of file From 4b9b3724e87e7ea0c6b81da36df5f6b00124c6c6 Mon Sep 17 00:00:00 2001 From: Pierrick Roger Mele Date: Wed, 28 Jun 2017 10:17:49 +0200 Subject: [PATCH 2/4] Remove tool symbolic link added by accident. --- tools/mtbls-dwnld | 1 - 1 file changed, 1 deletion(-) delete mode 120000 tools/mtbls-dwnld diff --git a/tools/mtbls-dwnld b/tools/mtbls-dwnld deleted file mode 120000 index 9652011afd3..00000000000 --- a/tools/mtbls-dwnld +++ /dev/null @@ -1 +0,0 @@ -/home/pierrick/dev/mtbls-dwnld \ No newline at end of file From 8b0187317564d70b3a5bc5f67ee78461879fd43e Mon Sep 17 00:00:00 2001 From: Pierrick Roger Mele Date: Thu, 6 Jul 2017 08:41:49 +0200 Subject: [PATCH 3/4] Implement Nicola Sorenzo's proposal for set_meta() method. --- lib/galaxy/datatypes/tabular.py | 57 ++++++++++++++++----------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/lib/galaxy/datatypes/tabular.py b/lib/galaxy/datatypes/tabular.py index 6c0a9f22d2b..e8032398eeb 100644 --- a/lib/galaxy/datatypes/tabular.py +++ b/lib/galaxy/datatypes/tabular.py @@ -968,38 +968,37 @@ class BaseCSV( TabularData ): return False def set_meta( self, dataset, **kwd ): - with open(dataset.file_name, 'r') as csvfile: - # Parse file with the correct dialect - reader = csv.reader(csvfile, self.dialect) - data_row = None - header_row = None - try: - header_row = next(reader) - data_row = next(reader) - for row in reader: + column_types = [] + header_row = [] + data_row = [] + data_lines = 0 + if dataset.has_data(): + with open(dataset.file_name, 'r') as csvfile: + # Parse file with the correct dialect + reader = csv.reader(csvfile, self.dialect) + try: + header_row = next(reader) + data_row = next(reader) + for row in reader: + pass + except StopIteration: pass - except StopIteration: - pass - except csv.Error as e: - raise Exception('CSV reader error - line %d: %s' % (reader.line_num, e)) + except csv.Error as e: + raise Exception('CSV reader error - line %d: %s' % (reader.line_num, e)) + else: + data_lines = reader.line_num - 1 - # Guess column types - column_types = [] - if data_row is not None: - for cell in data_row: - column_types.append(self.guess_type(cell)) - - # Set metadata - dataset.metadata.data_lines = reader.line_num - 1 - dataset.metadata.comment_lines = 1 - dataset.metadata.column_types = column_types - if data_row is None: - dataset.metadata.columns = len( header_row ) - else: - dataset.metadata.columns = max( len( header_row ), len( data_row ) ) - dataset.metadata.column_names = header_row - dataset.metadata.delimiter = reader.dialect.delimiter + # Guess column types + for cell in data_row: + column_types.append(self.guess_type(cell)) + # Set metadata + dataset.metadata.data_lines = data_lines + dataset.metadata.comment_lines = int(bool(header_row)) + dataset.metadata.column_types = column_types + dataset.metadata.columns = max( len( header_row ), len( data_row ) ) + dataset.metadata.column_names = header_row + dataset.metadata.delimiter = self.dialect.delimiter @dataproviders.decorators.has_dataproviders class CSV( BaseCSV ): From 2a737d0b794d03d16774bcd6250561eda92d9abc Mon Sep 17 00:00:00 2001 From: Pierrick Roger Mele Date: Thu, 6 Jul 2017 16:08:57 +0200 Subject: [PATCH 4/4] Set two blank lines before class definition, in order for travis linting to pass. --- lib/galaxy/datatypes/tabular.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/galaxy/datatypes/tabular.py b/lib/galaxy/datatypes/tabular.py index e8032398eeb..f9539aa4456 100644 --- a/lib/galaxy/datatypes/tabular.py +++ b/lib/galaxy/datatypes/tabular.py @@ -1000,6 +1000,7 @@ class BaseCSV( TabularData ): dataset.metadata.column_names = header_row dataset.metadata.delimiter = self.dialect.delimiter + @dataproviders.decorators.has_dataproviders class CSV( BaseCSV ): """