diff --git a/config/datatypes_conf.xml.sample b/config/datatypes_conf.xml.sample index 02ab894525b..da8c9ef7e0c 100644 --- a/config/datatypes_conf.xml.sample +++ b/config/datatypes_conf.xml.sample @@ -167,6 +167,7 @@ + @@ -422,6 +423,7 @@ + diff --git a/lib/galaxy/datatypes/proteomics.py b/lib/galaxy/datatypes/proteomics.py index c505197c58d..447d38c0869 100644 --- a/lib/galaxy/datatypes/proteomics.py +++ b/lib/galaxy/datatypes/proteomics.py @@ -9,7 +9,10 @@ from galaxy.datatypes import data from galaxy.datatypes.data import Text from galaxy.datatypes.xml import GenericXml from galaxy.datatypes.binary import Binary +from galaxy.datatypes.binary import SQlite from galaxy.datatypes.tabular import Tabular +from galaxy.util import sqlite + log = logging.getLogger(__name__) @@ -398,3 +401,28 @@ class XHunterAslFormat(Binary): class Sf3(Binary): """Class describing a Scaffold SF3 files""" file_ext = "sf3" + + +class MzSQlite( SQlite ): + """Class describing a Proteomics Sqlite database """ + file_ext = "mz.sqlite" + + def set_meta( self, dataset, overwrite=True, **kwd ): + super( MzSQlite, self ).set_meta( dataset, overwrite=overwrite, **kwd ) + + def sniff( self, filename ): + if super( MzSQlite, self ).sniff( filename ): + mz_table_names = ["DBSequence", "Modification", "Peaks", "Peptide", "PeptideEvidence", "Score", "SearchDatabase", "Source", "SpectraData", "Spectrum", "SpectrumIdentification"] + try: + conn = sqlite.connect( filename ) + c = conn.cursor() + tables_query = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name" + result = c.execute( tables_query ).fetchall() + result = map( lambda x: x[0], result ) + for table_name in mz_table_names: + if table_name not in result: + return False + return True + except Exception, e: + log.warn( '%s, sniff Exception: %s', self, e ) + return False