Mercurial > repos > tgac > aequatus
view gafa_datatypes.py @ 0:f86b4ae77475 draft default tip
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/aequatus/ commit 6a1dfb73f2172182096724ce3bee400287fd9c2f-dirty
author | tgac |
---|---|
date | Tue, 20 Dec 2016 18:56:56 -0500 |
parents | |
children |
line wrap: on
line source
import logging from galaxy.datatypes.binary import Binary, SQlite from galaxy.util import sqlite log = logging.getLogger(__name__) class GAFASQLite(SQlite): """Class describing a GAFA SQLite database""" file_ext = 'gafa.sqlite' def set_meta(self, dataset, overwrite=True, **kwd): super(GAFASQLite, self).set_meta(dataset, overwrite=overwrite, **kwd) try: conn = sqlite.connect(dataset.file_name) c = conn.cursor() version_query = 'SELECT meta FROM version' results = c.execute(version_query).fetchall() if len(results) == 0: raise Exception('version not found in meta table') elif len(results) > 1: raise Exception('Multiple versions found in meta table') dataset.metadata.gafa_version = results[0][0] except Exception as e: log.warn("%s, set_meta Exception: %s", self, e) def sniff(self, filename): if super(GAFASQLite, self).sniff(filename): gafa_table_names = frozenset(['gene', 'gene_family', 'gene_family_member', 'meta', 'transcript']) conn = sqlite.connect(filename) c = conn.cursor() tables_query = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name" results = c.execute(tables_query).fetchall() found_table_names = frozenset(_[0] for _ in results) return gafa_table_names <= found_table_names return False Binary.register_sniffable_binary_format('gafa.sqlite', 'gafa.sqlite', GAFASQLite)