Information submitted through the support site is private but is not hosted within your secure CDD Vault. Please do not include sensitive intellectual property in your support requests.

Protocol JSON Representation

Unlike molecules or batches, the protocol structure is quite complex, with multiple subobjects that refer to each other. To reduce the complexity somewhat, we have split protocols into two parts. The protocol json itself represents the structure of a protcol, including its runs, readout definitions, calculations and the relationships between them. The actual protocol data is obtained through a separate API call.


class “protocol”
id a unique id number identifying this object
created_at the creation date of the object
modified_at the modification date of the object
name The primary name of the molecule
data_set The dataset this protocol belongs to, in the form {:name=>"TB Alliance", :id=>337464610}
readout_definitions A JSON array of readout definitions (see below)
calculations A JSON array of calculations (see below)
runs A JSON array of runs (see below)


Readout Definition 

class "readout definition"
id The ID number of the readout definition. These are used to interpret protocol data.
data_type "Number", "Date", or "Text"
calculation (Calculated readouts only) The id of the calculation supplying this value
precision_type (Numeric readouts only) "decimal place", "significant figure", or omitted
precision_number (Numeric readouts only) an integer specifying the precision as defined by precision_type



class The type of calculation, eg "normalized calculation"
id The ID number of the calculation
inputs A dictionary mapping input names to readout definition ids. The set of input names depends on the type of calculation.
outputs A dictionary mapping output names to readout definition ids. The set of output names depends on the type of calculation.



class "run"
id  The ID number of the run
conditions A string, eg "partly cloudy"
person A string, eg "Fred"
run_date eg "2006-02-24"


    "projects": [
    "modified_at": "2010-02-01",
    "readout_definitions": [
            "class": "readout definition",
            "data_type": "Number",
            "name": "OD 580",
            "id": 753866246
            "class": "readout definition",
            "aggregation": "molecule_protocol",
            "data_type": "Number",
            "calculation": 216111131,
            "name": "Average OD 580",
            "id": 897833459
            "class": "readout definition",
            "data_type": "Number",
            "calculation": 660165617,
            "name": "OD 580 z score",
            "id": 181918976
    "class": "protocol",
    "data_set": {
        "name": "TB Alliance",
        "id": 337464610
    "created_at": "2010-02-01",
    "name": "Pleuromutilin",
    "category": "enzyme",
    "id": 688959003,
    "calculations": [
            "outputs": [
            "class": "normalized calculation",
            "inputs": [
            "id": 660165617,
            "scope": "run"
            "outputs": [
            "class": "average calculation",
            "mean_type": "arithmetic",
            "inputs": [
            "id": 216111131
Have more questions? Submit a request


  • 0
    Paul Boardman

    In the 5th row of the "Fields" table for the protocol object should the term 'name' be defined as 'primary name for the protocol object' or similar?  It is currently defined as 'primary name of the molecule'.

Please sign in to leave a comment.