Source code for iocbio.kinetics.modules.sysbio.mechanics.experiment_mechanics
from iocbio.kinetics.handler.experiment_generic import ExperimentGeneric
from iocbio.kinetics.constants import database_table_experiment
IocbioKineticsModule = ['database_schema']
[docs]class ExperimentMechanics(ExperimentGeneric):
"""General description of experiment performed on SBMicroscope Mechanics"""
database_table = "mechanics"
@staticmethod
def database_schema(db):
db.query("CREATE TABLE IF NOT EXISTS " + db.table(ExperimentMechanics.database_table) +
"(experiment_id text PRIMARY KEY, filename text, mode text, title text, " +
"FOREIGN KEY (experiment_id) REFERENCES " + db.table(database_table_experiment) + "(experiment_id) ON DELETE CASCADE" +
")")
@staticmethod
def store(database, data):
ExperimentGeneric.database_schema(database)
ExperimentMechanics.database_schema(database)
experiment_id = data.experiment_id
ExperimentGeneric.store(database, experiment_id, time=data.time,
type_generic=data.type_generic,
type_specific=data.type, hardware="mechanics")
c = database
if not database.has_record(ExperimentMechanics.database_table,
experiment_id = experiment_id):
c.query("INSERT INTO " + database.table(ExperimentMechanics.database_table) +
"(experiment_id, filename, mode, title) " +
"VALUES(:experiment_id,:fname,:mode,:exptitle)",
experiment_id=experiment_id,
fname=data.config['filename'],
mode=data.config['mode'],
exptitle=data.name)
@staticmethod
def get_fname_mode(database, experiment_id):
hw = ExperimentGeneric.hardware(database, experiment_id)
if hw != 'mechanics':
return None, None
r = database.query("SELECT filename, mode FROM " + database.table(ExperimentMechanics.database_table) +
" WHERE experiment_id=:experiment_id",
experiment_id=experiment_id).first()
return r.filename, r.mode
def __init__(self, database, data):
ExperimentMechanics.database_schema(database)
ExperimentGeneric.__init__(self, database)
experiment_id = data.experiment_id
self.name = data.name
def database_schema(db):
ExperimentMechanics.database_schema(db)