diff --git a/lib/galaxy/config/sample/datatypes_conf.xml.sample b/lib/galaxy/config/sample/datatypes_conf.xml.sample index a2a06762d36..d64cf64a53d 100644 --- a/lib/galaxy/config/sample/datatypes_conf.xml.sample +++ b/lib/galaxy/config/sample/datatypes_conf.xml.sample @@ -367,6 +367,7 @@ + diff --git a/lib/galaxy/datatypes/binary.py b/lib/galaxy/datatypes/binary.py index 024dd39d65c..095d41c0a1e 100644 --- a/lib/galaxy/datatypes/binary.py +++ b/lib/galaxy/datatypes/binary.py @@ -1584,7 +1584,7 @@ class CuffDiffSQlite(SQlite): try: return dataset.peek except Exception: - return "CuffDiff SQLite Database, version %s" % (dataset.metadata.gemini_version or 'unknown') + return "CuffDiff SQLite Database, version %s" % (dataset.metadata.cuffdiff_version or 'unknown') class MzSQlite(SQlite): @@ -1854,12 +1854,66 @@ class GAFASQLite(SQlite): log.warning("%s, set_meta Exception: %s", self, e) def sniff(self, filename): - if super(IdpDB, self).sniff(filename): + if super(GAFASQLite, self).sniff(filename): table_names = frozenset({'gene', 'gene_family', 'gene_family_member', 'meta', 'transcript'}) return self.sniff_table_names(filename, table_names) return False +class NcbiTaxonomySQlite(SQlite): + """Class describing the NCBI Taxonomy database stored in SQLite as done by rust-ncbitaxonomy""" + MetadataElement(name='ncbitaxonomy_schema_version', default='20200501095116', param=MetadataParameter, desc='ncbitaxonomy schema version', + readonly=True, visible=True, no_value='20200501095116') + MetadataElement(name="taxon_count", default=[], param=MetadataParameter, desc="Count of taxa in the taxonomy", + readonly=True, visible=True, no_value=[]) + + file_ext = 'ncbitaxonomy.sqlite' + + def set_meta(self, dataset, overwrite=True, **kwd): + super(NcbiTaxonomySQlite, self).set_meta(dataset, overwrite=overwrite, **kwd) + try: + conn = sqlite.connect(dataset.file_name) + c = conn.cursor() + version_query = 'SELECT version FROM __diesel_schema_migrations ORDER BY run_on DESC LIMIT 1' + results = c.execute(version_query).fetchall() + if len(results) == 0: + raise Exception('version not found in __diesel_schema_migrations table') + dataset.metadata.ncbitaxonomy_schema_version = results[0][0] + taxons_query = 'SELECT count(name) FROM taxonomy' + results = c.execute(taxons_query).fetchall() + if len(results) == 0: + raise Exception('could not count size of taxonomy table') + dataset.metadata.taxon_count = results[0][0] + except Exception as e: + log.warning("%s, set_meta Exception: %s", self, e) + + def sniff(self, filename): + if super(NcbiTaxonomySQlite, self).sniff(filename): + table_names = frozenset({'__diesel_schema_migrations', 'taxonomy'}) + return self.sniff_table_names(filename, table_names) + return False + + def set_peek(self, dataset, is_multi_byte=False): + if not dataset.dataset.purged: + dataset.peek = "NCBI Taxonomy SQLite Database, version {} ({} taxons)".format( + getattr(dataset.metadata, "ncbitaxonomy_schema_version", "unknown"), + getattr(dataset.metadata, "taxon_count", "unknown") + ) + dataset.blurb = nice_size(dataset.get_size()) + else: + dataset.peek = 'file does not exist' + dataset.blurb = 'file purged from disk' + + def display_peek(self, dataset): + try: + return dataset.peek + except Exception: + return "NCBI Taxonomy SQLite Database, version {} ({} taxons)".format( + getattr(dataset.metadata, "ncbitaxonomy_schema_version", "unknown"), + getattr(dataset.metadata, "taxon_count", "unknown") + ) + + class Xlsx(Binary): """Class for Excel 2007 (xlsx) files""" file_ext = "xlsx"