syntax = "proto3";

package biopb.ome;

option java_package = "biopb.ome";
option java_multiple_files = true;

import "biopb/ome/reagent.proto";

// The Screen element is a grouping for Plates. The required attribute is the
// Screen's Name, which must be unique within the document. The Screen element
// may contain an ExternalRef attribute that refers to an external database. A
// description of the screen may be specified in the Description element.
// Screens may contain overlapping sets of Plates i.e. Screens and Plates have a
// many-to-many relationship. Plates contain one or more ScreenRef elements to
// specify what screens they belong to. 
message Screen {
    
    // Screen name
    string name = 2;

    // Reagent information, indexed by Reagent IDs. These will be referenced in Wells.
    map<string, Reagent> reagents = 3;

    // The PlateRef element is a reference to a Plate element. Screen elements
    // may have one or more PlateRef elements to define the plates that are part
    // of the screen. Plates may belong to more than one screen.
    repeated string plate_ids = 4;

    // A pointer to an externally defined protocol, usually in a screening
    // database.
    string protocol_identifier = 5;

    // A description of the screen protocol; may contain very detailed
    // information to reproduce some of that found in a screening database.
    string protocol_description = 6;

    // A description of the set of reagents; may contain very detailed
    // information to reproduce some of that information found in a screening
    // database.
    string reagent_description = 7;

    // A pointer to an externally defined set of reagents, usually in a
    // screening database/automation database.
    string reagent_set_identifier = 8;

    // A human readable identifier for the screen type; e.g. RNAi, cDNA, SiRNA,
    // etc. This string is likely to become an enumeration in future releases.
    string type = 9;

}