From e12f40e9f6fd78babdfb893a4fe5b25864ed2f4a Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Tue, 11 Jan 2011 09:22:51 -0500 Subject: [PATCH] Fix for '? lines'. When setting the peek, if the number of lines is not known, an estimate is made based on a small read. --- lib/galaxy/datatypes/data.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/datatypes/data.py b/lib/galaxy/datatypes/data.py index afa4f351b1e..ee19a938c69 100644 --- a/lib/galaxy/datatypes/data.py +++ b/lib/galaxy/datatypes/data.py @@ -407,7 +407,15 @@ class Text( Data ): else: # Number of lines is not known ( this should not happen ), and auto-detect is # needed to set metadata - dataset.blurb = "? lines" + # This can happen when the file is larger than max_optional_metadata_filesize. + # Perform a rough estimate by extrapolating number of lines from a small read. + sample_size = min(self.max_optional_metadata_filesize, 1048576) + dataset_fh = open( dataset.file_name ) + dataset_read = dataset_fh.read(sample_size) + dataset_fh.close() + sample_lines = dataset_read.count('\n') + est_lines = int(sample_lines * (dataset.get_size() / float(sample_size))) + dataset.blurb = "~%s lines" % util.commaify(str(est_lines)) else: dataset.blurb = "%s lines" % util.commaify( str( line_count ) ) else: