EMMAA’s Database (emmaa.db)

The Database Schema (emmaa.db.schema)

class emmaa.db.schema.User(**kwargs)[source]

Bases: sqlalchemy.ext.declarative.api.Base, emmaa.db.schema.EmmaaTable

A table containing users of EMMAA: User(_id_, email)

  • id (int) – (from indralab_auth_tools.src.models.User.id, primary key) A database-generated integer from the User table in indralab auth tools.
  • email (str) – The email of the user (must be unique)
class emmaa.db.schema.Query(**kwargs)[source]

Bases: sqlalchemy.ext.declarative.api.Base, emmaa.db.schema.EmmaaTable

Queries run on each model: Query(_hash_, model_id, json)

The hash column is a hash generated from the json and model_id columns that can be derived from the

  • hash (big-int) – (primary key) A 32 bit integer generated from the json and model_id.
  • model_id (str) – (20 character) The short id/acronym for the given model.
  • json (json) – A json dict containing the relevant parameters defining the query.
class emmaa.db.schema.UserQuery(**kwargs)[source]

Bases: sqlalchemy.ext.declarative.api.Base, emmaa.db.schema.EmmaaTable

A table linking users to queries:

UserQuery(_id_, user_id, query_hash, date, subscription)

  • id (int) – (auto, primary key) A database-assigned integer id.
  • user_id (int) – (foreign key -> User.id) The id of the user related to this query.
  • query_hash (big-int) – (foreign key -> Query.hash) The hash of the query json, which can be directly generated.
  • date (datetime) – (auto) The date that this entry was added to the database.
  • subscription (bool) – Record whether the user has subscribed to see results of this model.
  • count (int) – Record the number of times the user associated with user id has done this query
class emmaa.db.schema.Result(**kwargs)[source]

Bases: sqlalchemy.ext.declarative.api.Base, emmaa.db.schema.EmmaaTable

Results of queries to models:

Result(_id_, query_hash, date, result_json)

  • id (int) – (auto, primary key) A database-assigned integer id.
  • query_hash (big-int) – (foreign key -> Query.hash) The hash of the query json, which can be directly generated.
  • date (datetime) – (auto) The date the result was entered into the database.
  • result_json (json) – A json dict containing the results for the query.
  • mc_type (str) – A name of a ModelChecker used to answer the query.

Database Manager (emmaa.db.manager)

class emmaa.db.manager.EmmaaDatabaseManager(host, label=None)[source]

Bases: object

A class used to manage sessions with EMMAA’s database.

add_user(user_id, email)[source]

Add a new user’s email and id to Emmaa’s User table.


Create the tables from the EMMAA database

Optionally specify tables to be created. List may contain either table objects or the string names of the tables.

drop_tables(tables=None, force=False)[source]

Drop the tables from the EMMAA database given in tables.

If tables is None, all tables will be dropped. Note that if force is False, a warning prompt will be raised to asking for confirmation, as this action will remove all data from that table.


Get queries that refer to the given model_id.

Parameters:model_id (str) – The short, standard model ID.
Returns:queries – A list of queries retrieved from the database.
Return type:list[emmaa.queries.Query]
get_results(user_email, latest_order=1, query_type=None)[source]

Get the results for which the user has registered.

  • user_email (str) – The email of a user.
  • latest_order (int) – Which result in the order from the latest to get. Default: 1 ( latest).
  • query_type (str) – Filter results to specific query type. Default: None (all query types will be returned).

results – A list of tuples, each of the form: (model_id, query, mc_type, result_json, date) representing the result of a query run on a model on a given date.

Return type:



Get a list of (query object, model id, query hash) for a user

Parameters:email (str) – The email address to check subscribed queries for
Return type:list(tuple(emmaa.queries.Query, str, query_hash))

Get all users who have subscriptions

Returns:A list of email addresses corresponding to all users who have any subscribed query
Return type:list[str]
put_queries(user_email, user_id, query, model_ids, subscribe=True)[source]

Add queries to the database for a given user.

  • user_email (str) – the email of the user that entered the queries.
  • user_id (int) – the user id of the user that entered the queries. Corresponds to the user id in the User table in indralab_auth_tools
  • query (emmaa.queries.Query) – A query object containing all necessary information.
  • model_ids (list[str]) – A list of the short, standard model IDs to which the user wishes to apply these queries.
  • subscribe (bool) – True if the user wishes to subscribe to this query.
put_results(model_id, query_results)[source]

Add new results for a set of queries tested on a model_id.

  • model_id (str) – The short, standard model ID.
  • query_results (list of tuples) – A list of tuples of the form (query, result_json), where the query is the query object run against the model, and the result_json is the json containing corresponding result.
update_email_subscription(email, queries, subscribe)[source]

Update email subscriptions for user queries

NOTE: For now this method simply unsubscribes to the given queries but should in the future differentiated into recieving email notifications or not and subscribing to queries or not.

  • email (str) – The email assocaited with the query
  • queries (list(int)|'all') – A list of query hashes or the string “all”
  • subscribe (bool) – The subscription status for all matching query hashes

Return True if the update was successful, False otherwise

Return type:


exception emmaa.db.manager.EmmaaDatabaseError[source]

Bases: Exception