Add NcbiTaxonomySQlite class to describe NCBI Taxonomy SQLite databases

This commit is contained in:
Peter van Heusden
2020-05-04 21:58:19 +02:00
parent 4637149008
commit 8803ba841f
2 changed files with 57 additions and 2 deletions
@@ -367,6 +367,7 @@
<datatype extension="chira.sqlite" type="galaxy.datatypes.binary:ChiraSQLite" mimetype="application/octet-stream" display_in_upload="true" />
<datatype extension="cuffdiff.sqlite" type="galaxy.datatypes.binary:CuffDiffSQlite" display_in_upload="true"/>
<datatype extension="gafa.sqlite" type="galaxy.datatypes.binary:GAFASQLite" mimetype="application/octet-stream" display_in_upload="true"/>
<datatype extension="ncbitaxonomy.sqlite" type="galaxy.datatypes.binary:NcbiTaxonomySQlite" mimetype="application/octet-stream" display_in_upload="true"/>
<datatype extension="txt" type="galaxy.datatypes.data:Text" display_in_upload="true" description="Any text file." description_url="https://wiki.galaxyproject.org/Learn/Datatypes#Plain_text"/>
<datatype extension="linecount" type="galaxy.datatypes.data:LineCount" display_in_upload="false"/>
<datatype extension="memepsp" type="galaxy.datatypes.sequence:MemePsp" display_in_upload="true" description="The MEME Position Specific Priors (PSP) format includes the name of the sequence for which a prior distribution corresponds." description_url="http://meme-suite.org/doc/psp-format.html"/>
+56 -2
View File
@@ -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"