Autoprotocol Standard Changes

ASC-020 - Add flow_direction and spin_direction to Spin Instruction

Title

Add flow_direction and spin_direction parameters to spin

Authorship

Conny Scheitz conny@transcriptic.com

Yang Choo yangchoo@transcriptic.com

Peter Lee peter@transcriptic.com

Motivation

Allow for emptying a container by spinning it with the container opening facing outward.

Proposal

We introduce the properties flow_direction and spin_direction to the Spin instruction to allow spinning a container with the opening facing outwards so that well contents can be emptied simultaneously.

Proposed new optional parameters:

flow_direction - specifies the direction that contents will tend towards with respect to the container. If unspecified flow_direction defaults to inward.

      inward - contents are spun into the container

      outward - contents are spun out of a container

spin_direction - a list of cw, ccw. Each element in the spin_direction list, the container will be spun in the stated direction for the set acceleration and duration.

For clockwise(cw) and counterclockwise(ccw), the origin is defined at the top left corner of a container (for a plate that would correspond to well A1) (see inset figure). Axes follow the right hand rule with z-axis pointing out of a well. Movements in the positive direction along any of the axes are clockwise.

Flow Direction Diagram

If spin_direction is unspecified and flow_direction is specified, spin_direction defaults to: "outward": ["cw","ccw"] "inward": ["cw"]

If both spin_direction and flow_direction are unspecified, spin_direction defaults to the original vendor specified spin_direction

{
  "op": "spin",
  "object": <container>,
  "acceleration": acceleration,
  "duration": time,
  "flow_direction": "inward" | "outward"  // optional, default: "inward"
  "spin_direction": [directions]  // optional, "cw" or "ccw",
                         "outward" default:["cw","ccw"],
                         "inward" default:["cw"]
}

spin_direction and flow_direction are vendor specific parameters that may not be available. Please check your vendor’s documentation for availability. The spin_direction and flow_direction parameters are optional. The default for the spin instruction flow_direction will be inward - meaning the well openings will face towards the centrifuge center, causing the liquid to be pushed towards the bottom of the wells using the centrifugal force. The default spin_direction for inward spin is set to cw or the vendor specified default.

Compatibility

This ASC appends new optional parameters with defaults to recapitulate existing behavior to an existing instruction and as such is fully backwards compatible.

ASC-019 - Add incubate_before and temperature to Spectrophotometry Instructions

Title

Add incubate_before and temperature to spectrophotometry instructions

Authorship

Peter Lee peter@transcriptic.com

Ross Trundy ross@transcriptic.com

Motivation

Addition of incubate_before and temperature parameters to spectrophotometry instructions allow for the possibility of recording spectrophotometric observations over a period of time by adding incubation for a duration with the option of shaking prior to reading a plate and setting temperature during the entire instruction recording. Amongst many additional functionalities, these parameters will enable the study of growth and enzyme kinetics, aid in resolving bubbles prior to reading, allow for readings at physiological temperatures, and permit storage for light-sensitive assays prior to reading.

Proposal

The spectrophotometry instruction groups fluorescence, absorbance and luminescence should accept the additional optional parameters of incubate_before and temperature.

/* dictionary of parameters governing conditions prior to reading */
`incubate_before` - object
  /* duration of incubation prior to reading */
  `duration` - time
/* shake parameters during `time` prior to read, optional */
`shaking` - object
`amplitude` - distance  
`orbital` - bool      // true for orbital, false for linear
/* temperature to heat plate environment during incubation and reading */
`temperature` - temperature

Vendor specific limitations may apply to the availability of these optional parameters.

[
  {
    "op": "absorbance",
    "object": container,
    "wells": [
      well
    ],
    "wavelength": length,
    "num_flashes": integer,
    "dataref": string,
    /* optional */
    "temperature": temperature,
    /* optional */
    "incubate_before": {
      /* required if `incubate_before` specified */
      "duration": time,
      /* optional */
      "shaking": {
        /* required if `shaking` specified */
        "amplitude": length,
        /* required if `shaking` specified */
        "orbital": bool
      }
    }
  },
  {
    "op": "fluorescence",
    "object": container,
    "wells": [
      well
    ],
    "excitation": length,
    "emission": length,
    "num_flashes": integer,
    "dataref": string,
    /* optional */
    "temperature": temperature,
    /* optional */
    "incubate_before": {
      /* required if `incubate_before` specified */
      "duration": time,
      /* optional */
      "shaking": {
        /* required if `shaking` specified */
        "amplitude": length,
        /* required if `shaking` specified */
        "orbital": bool
      }
    }
  },
  {
    "op": "luminescence",
    "object": container,
    "wells": [
      well
    ],
    "dataref": string,
    /* optional */
    "temperature": temperature,
    /* optional */
    "incubate_before": {
      /* required if `incubate_before` specified */
      "duration": time,
      /* optional */
      "shaking": {
        /* required if `shaking` specified */
        "amplitude": length,
        /* required if `shaking` specified */
        "orbital": bool
      }
    }
  }
]

Execution

All parameters of the instruction should be completed on a single device such that the time from incubate_before to reading the plate is minimized. Not all vendors/devices will be able to support the additional optional parameters.

Compatibility

This ASC specifies new fields for existing instructions. Spectrophotometry instructions without these optional parameters will read plates without shaking, heating, or delay - duplicating the previous behavior.

ASC-018 - Addition of gel_purify

Title

Addition of gel_purify

Authorship

Ben Miles ben@transcriptic.com

Motivation

Often in cloning it is necessary to separate a gel fragment from a PCR product or digestion product. This is typically done by first running a gel then extracting the band corresponding to the DNA fragment. This functionality is missing from Autoprotocol.

Proposal

The gel_purify instruction performs similar to the gel_separate instruction however takes an additional extract array. extract is an array of extraction groups, which may each have different sub parameters. elution_volume is the final volume that a returned solution of extracted DNA should be returned in. elution_buffer is the solution that the purified DNA should be returned in. lane is the gel lane from which DNA should extracted. band_size_range is the base pair size range from which the band should be extracted from it takes two arguments min_bp and max_bp. Finally each extraction group takes a destination well.

{
  "op": "gel_purify",
  "volume": volume,
  "objects": [wells],
  "matrix": gel,
  "ladder": ladder,
  "dataref": string,
  "extract": [{
    "elution_volume": volume,
    "elution_buffer": string "water" | "TE",
    "lane": int,
    "band_size_range": {
      "min_bp": int,
      "max_bp": int,
    },
    "destination": well
  }, 
  {...}]
}

Execution

When loading gel lanes they should be loaded sequentially concomitant with the sequence of wells provided to the gel_separate instruction. E.g Well A2, could be at index 0 of the WellGroup there should be loaded into lane 0. Well A1 could be at index 7 of the WellGroup therefore should be loaded into lane 7 of the gel.

The data returned by this instruction should both illustrate the size of fragments in the solution either by image, or numeric chromatogram. In addition it should illustrate the fragment collection, be that a annotation on the gel image or a gated region of the chromatogram

Vendor sets the max tolerable size range (max-min) for band extraction.

Gel separation, extraction and purification methods to be determined by vendor.

Compatibility

This is a new instruction and does not affect compatibility.

ASC-017 - Add measure_mass, measure_concentration and measure_volume instructions

Title

Add measure_mass, measure_concentration and measure_volume instructions

Authorship

Cornelia Scheitz conny@transcriptic.com

Motivation

To confirm or determine the properties of a sample, such as weight or volume a set of measure instructions can be used where the operation type determines the type of analysis for example measure_mass. measure_mass and measure_volume do not consume the sample. All concentration measurements (measure_concentration) such as for measurement DNA consume a vendor specific minimum amount of the sample - volume is indicating the amount of sample that will be used for the quantification. The accuracy of all results is vendor specific.

Proposal

{
    "op": "measure_mass",
    "object": ["container"],
    "dataref": string
},
{
    "op": "measure_concentration",
    "object": ["aliquot"],
    "volume": volume,   // default: "2:microliter"
    "dataref": string,
    "measurement": DNA | ssDNA | RNA | protein
},
{
    "op": "measure_volume",
    "object": ["aliquot"],
    "dataref": string
}

Execution

The dataref for measure_concentration contains a concentration in the form of X ng/µL in addition to a 260/280 ratio of type float. The dataref for measure_mass contains a mass in the form of X g. The dataref for measure_volume contains a volume in the form of X uL.

Compatibility

This ASC only specifies new instructions.

ASC-016 - Add gain to fluorescence instructions

Title

Add gain to fluorescence instructions

Authorship

Peter Lee peter@transcriptic.com

Motivation

The current fluorescence instruction is underspecified in terms of how and if signal is being amplified. Adding a gain parameter to the fluorescence instruction will allow for the ability to control for how signal from fluorescence emission is amplified.

This parameter will allow users to control the amount of signal amplification enabling the comparison of results between plates and over time.

Proposal

The fluorescence instruction should accept the additional optional parameter of gain.

gain will be a float from 0 to 1 representing the fraction of maximal signal amplification that a fluorescence reading device can provide.

Vendor specific limitations may apply to the availability of this optional parameter and the sensitivity available to changes in gain (different vendors may have different step sizes for the gain parameter and/or round to the closest step size).

  {
    "op": "fluorescence",
    "object": container,
    "wells": [
      well
    ],
    "excitation": length,
    "emission": length,
    "num_flashes": integer,
    "dataref": string,
    "temperature": temperature,
    "incubate_before": {
      "duration": time,
      "shaking": {
        "amplitude": length,
        "orbital": bool
      },
    /* optional, if the parameter is not specified, signal amplification will     
       employ vendor specified defaults */
    "gain": float
    }
  }

Execution

The gain parameter represents a fraction of maximal signal amplification and may need to be rounded to the nearest step if signal amplification is non-linear. If an optimal gain finding feature is available, it's recommended to use such a feature when the gain parameter is not specified. It is also recommended to report the gain setting used in the dataref of the instruction.

Compatibility

This ASC specifies a new field for existing instructions. Fluorescence instructions without this optional parameter will read plates in the vendor specified default manner previously used.

ASC-015 - Magnetic Transfer

Title

Magnetic Transfer

Authorship

Conny Scheitz conny@transcriptic.com

Peter Lee peter@transcriptic.com

Ian O’Hara ian@transcriptic.com

Motivation

Separation of liquid samples using magnetic particles is a common laboratory practice involving the binding of samples to magnetic particles, followed by cycles of immobilization and washing of those particles, and finally elution of samples from the particles. The "Magnetic Bead Transfer" instruction specifies a method for processing magnetic particles that transfers the particles from solution to solution.

Proposal

This instruction allows the implementation of bead purification protocols by providing control over magnetic pins, protection tips which cover all of the pins, and the heating platform of a magnetic particle processing instrument.

Five sub-operations have been defined to specify magnetic_transfer.

collect - used to collect beads from an object. Protection tips are magnetized and raised and lowered repeatedly pausing at the bottom_position for pause_duration time. The lowering, pausing, and raising is performed a number of cycles times. During this instruction, the object can be optionally heated to temperature.

mix - used to oscillate the tips vertically in an object. The oscillation will last for duration and move with a frequency and amplitude around center. During this instruction, the object can be optionally heated to temperature and the tips can be magnetized.

release - used to release beads into an object. Non-magnetized tips are oscillated vertically. The oscillation will last for duration and move with a frequency and amplitude around center. During this instruction, the object can be optionally heated to temperature.

dry - used to dry beads with tips above and outside an object for a set duration.

incubate - used to incubate an object for a set duration with the tips moved to tip_position. During this instruction, the object can be optionally heated to temperature and the tips can be magnetized.

The magnetic_transfer instruction takes a list of list of dicts. Each dict is a sub-operation. Each list of dicts represents a collection of sub-operations which will be performed in order using the same tip. The list of groups represents the collection of sub-operations, performed in order, with tip changes between each group.

The bottom_position, tip_position, center, and amplitude parameters are expressed as floats of relative well height. Setting one of these parameters to 0 represents positioning from the well bottom or height of 0, 1 represents positioning at the well top or the height of a well, and 2 represents positioning at twice the well height from the well bottom (or one well height above the well top) or twice the height of a well.

If temperature is null or unset, no heat will be applied and the container will not be set onto the heating plate.

Some vendor specific restrictions may apply to the number of containers supported per instruction, the compatibility of containers for the instruction, as well as the ranges supported for parameters in the each sub-operation.

{
  "op": "magnetic_transfer",
  "groups": [
    /* sub-operations in the same group use the same protector tip */
    [
      {
        /* tips are always magnetized during collect */
        "collect": {
          "object": container,
          "cycles": integer,
          /* time spent paused at "bottom_position" */
          "pause_duration": time,
          /* position relative to well height where tips pause,
             optional, default: 0.0 */
          "bottom_position": float,
          /* optional, default: null */
          "temperature": temperature  
        }
      },
      {
        "mix": {
          "object": container,
          "duration": time,
          "frequency": frequency,
          /* optional, default: false */
          "magnetize": bool,
          /* optional, default: null */
          "temperature": temperature,
          /* position relative to well height where oscillation is centered,
             optional, default: 0.5 */
          "center": float,
          /* distance relative to well height to oscillate around "center", 
             optional, default: 0.5 */
          "amplitude": float
        }
      },
      {
        /* tips are never magnetized during release */
        "release": {
          "object": container,
          "duration": time,
          "frequency": frequency,
          /* optional, default: null */
          "temperature": temperature,
          /* position relative to well height where oscillation is centered,
             optional, default: 0.5 */
          "center": float,
          /* distance relative to well height to oscillate around "center", 
             optional, default: 0.5 */
          "amplitude": float
        }
      },
      {
        /* tips are always magnetized during dry,
           tips are held above the "object" for the indicated "duration" */
        "dry": {
          "object": container,
          "duration": time
        }
      },
      {
        "incubate": {
          "object": container,
          "duration": time,
          /* optional, default: false */
          "magnetize": bool,
          /* position relative to well height that tips are held, 
             optional, default: 1.5 */
          "tip_position": float,
          /* optional, default: null */
          "temperature": temperature
        }
      }, ...
    ], ...
  ],
  "magnetic_head": "96-deep" | "96-pcr"
}

Vendor defaults may apply to “droplet_size”.

Compatibility

This is a new instruction.

ASC-014 - Acoustic Liquid Handling

Title

Acoustic Liquid Handling Instruction

Authorship

Tali Herzka tali@transcriptic.com

Peter Lee peter@transcriptic.com

Cornelia Scheitz conny@transcriptic.com

Motivation

Acoustic liquid handling is droplet_size based with most instruments only capable of transferring a single droplet_size. The final volume to be transferred must be an integer multiple of this droplet_size. An additional instruction specifying that liquid is to be transferred via an acoustic liquid handler vs. a tip-based air-displacement pipettor is therefore necessary since these instructions require and permit different parameters.

Proposal

{
  "op": "acoustic_transfer",
  "groups": [
    {
      "transfer": [
        {
          "from": well,
          "to": well,
        "volume": volume
  }
        ...
       ]
    }
  ],
  "droplet_size": volume
}

Vendor defaults may apply to “droplet_size”.

Compatibility

This ASC only proposes the addition of a new instruction.

ASC-013 - Modify stamp instruction format to be consistent with pipette

Title

Modify stamp instruction format to be consistent with pipette

Authorship

Pavel Konov pavel@transcriptic.com

Motivation

The structure of the stamp and pipette commands differ in that stamp takes a list of transfers, instead of the group operations of pipette. However, in order to implement tip-reuse in the case of plate stamping, a way to delineate which groups of transfers will use the same set of tips is required. This problem is already solved in the pipette instruction: the stamp instruction should likewise be a sequence of transfer groups, and not a sequence of individual transfers. This provides consistency between liquid handling systems.

Note that this will open up the possibility of expanding plate stamping capabilities in the future to also support the other three groups used in pipette (distribute, consolidate, mix). At present, only the transfer group is supported.

Proposal

Change stamp to follow the format of pipette groups Move shape and tip_layout out from the individual transfers onto the transfer group itself.

{
  "op": "stamp",
  "groups": [
    {
      "transfer": [
        {
          "from": origin,
          "to": origin,
          "volume": volume,

            // same mix options as a 'transfer' group in the 'pipette' instruction
          "mix_before": {...},  //optional
          "mix_after": {...} //optional
        },
        {...} // additional transfers using same tips
      ],
      "shape": rectangle,  // optional, default: {"rows": 8, "columns": 12}
      "tip_layout" : integer,  // optional, default: 96
    }
  ]
}

Examples:

Example 1: A two-column transfer between plates, where the same set of tips are used for both transfers.

{
  "op": "stamp",
  "groups": [
    {
      "transfer": [
        {
          "from": "src_plate/A1",
          "to": "dest_plate/A2",
          "volume": "10:microliter"
        },
        {
          "from": "src_plate/A3",
          "to": "dest_plate/A4",
          "volume": "20:microliter"
        },
      ],
      "shape": { "rows": 8, "columns": 2 },
    }
  ]
}

Example 2: Two sets of row-wise serial dilutions, each re-using a single row of tips within the serial dilution.

{
  "op": "stamp",
  "groups": [
    {
      "transfer": [
        {
          "from": "src_plate/A1",
          "to": "src_plate/B1",
          "volume": "10:microliter",
          "mix_after": {
            "volume": "35:microliter",
            "repetitions": 10,
            "speed": "100:microliter/second"
          }
        },
        {
          "from": "src_plate/B1",
          "to": "src_plate/C1",
          "volume": "10:microliter",
          "mix_after": {
            "volume": "35:microliter",
            "repetitions": 10,
            "speed": "100:microliter/second"
          }
        },
        {
          "from": "src_plate/C1",
          "to": "src_plate/D1",
          "volume": "10:microliter",
          "mix_after": {
            "volume": "35:microliter",
            "repetitions": 10,
            "speed": "100:microliter/second"
          }
        }
      ],
      "shape": { "rows": 1, "columns": 12 }
    },
    {
      "transfer": [
        {
          "from": "src_plate/E1",
          "to": "src_plate/F1",
          "volume": "10:microliter",
          "mix_after": {
            "volume": "35:microliter",
            "repetitions": 10,
            "speed": "100:microliter/second"
          }
        },
        {
          "from": "src_plate/F1",
          "to": "src_plate/G1",
          "volume": "10:microliter",
          "mix_after": {
            "volume": "35:microliter",
            "repetitions": 10,
            "speed": "100:microliter/second"
          }
        },
        {
          "from": "src_plate/G1",
          "to": "src_plate/H1",
          "volume": "10:microliter",
          "mix_after": {
            "volume": "35:microliter",
            "repetitions": 10,
            "speed": "100:microliter/second"
          }
        }
      ],
      "shape": { "rows": 1, "columns": 12 }
    }
  ]
}

Example 3: One full-plate 96w -> 384w distribute, using 4 transfers with the same tips.

{
  "op": "stamp",
  "groups": [
    {
      "transfer": [
        {
          "from": "src_plate/A1",
          "to": "dest_plate/A1",
          "volume": "20:microliter"
        },
        {
          "from": "src_plate/A1",
          "to": "dest_plate/A2",
          "volume": "20:microliter"
        },
        {
          "from": "src_plate/A1",
          "to": "dest_plate/B1",
          "volume": "20:microliter"
        },
        {
          "from": "src_plate/A1",
          "to": "dest_plate/B2",
          "volume": "20:microliter"
        },
      ]
    }
  ]
}

Compatibility

This change reorganizes existing fields and is not backwards-compatible. To upgrade from a previous version, transfers must be converted to the group format and the optional shape and tip_layout parameters must be moved to the transfer group level.

E.g.: What was previously: ``` { "operation": { "transfers": [ { "volume": "10.0:microliter", "from": "srcplate/A1", "to": "destplate/A1", "shape": { "rows": 8, "columns": 1 } }, { "volume": "20.0:microliter", "from": "srcplate/A1", "to": "destplate/A1", "shape": { "rows": 8, "columns": 1 } } ], "op": "stamp" } }

becomes:

{ "operation": { "groups": [ { "transfer": [ { "volume": "10.0:microliter", "from": "srcplate/A1", "to": "destplate/A1" } ], "shape": { "rows": 8, "columns": 1 } }, { "transfer": [ { "volume": "20.0:microliter", "from": "srcplate/A1", "to": "destplate/A1" } ], "shape": { "rows": 8, "columns": 1 } } ], "op": "stamp" } }

ASC-012 - Modify stamp to accept multi-channel (whole row(s) or column(s)) operations

Title

Modify stamp to accept multi-channel (whole row(s) or column(s)) operations

Authorship

Yang Choo yangchoo@transcriptic.com

Peter Lee peter@transcriptic.com

Ian O’Hara ian@transcriptic.com

Motivation

A more granular multi-channel liquid transfer instruction is required to encompass multi-channel pipetting from/to whole row(s) or whole column(s) (or logical subsets of row(s) or column(s)) of a multi-well plate as defined by SBS recommendations of microplates as a superset of the previous stamp instruction.

Proposal

Rename quadrant to origin and add a new shape field.

As before, origin has the same form as the well type (that is, ":ref/:wellindex"), where `:wellindex` refers to the top-left well of a shape.

shape takes in the parameter rectangle which is a dictionary defined with keys rows,columns that describe the shape of the rectangle as defined by the number of wells being transferred in each direction. (e.g. {"rows": 8, "columns": 1}).

tip_layout specifies SBS standard-compliant layout of the tips used for the specified transfer operation. Common SBS tip layouts include 96, 384 and 1536.

Some vendor specific restrictions may apply.

For example, in rectangle, values for rows or columns may be constrained to either 8 or 12 respectively with the other key taking values between [1 8] or [1 12]. In the example given, [5 8] and [12 4] are acceptable shape definitions while [5 7] and [9 4] are unacceptable.

As another example, shape and tip_layout may be restricted such that the same shape and tip_layout must be used in all transfers throughout a single stamp instruction.

Finally, tip_layout might be restricted to only certain layouts, like 96.

{
  "op": "stamp",
  "transfers": [
    {
      "from": origin,
      "to": origin,
  "shape": rectangle,  // optional, default: {"rows": 8, "columns": 12}
  "tip_layout" : integer,  // optional, default: 96
"volume": volume,

  // same mix options as a 'transfer' group in the 'pipette' instruction
      "mix_before": {...},
      "mix_after": {...}
    }
  ]
}

Examples:

Example 1: A 96-well to 384-well quadrant transfer omitting the optional shape field.

  "transfers": [{ "from": "src_plate/A1", "to": "dest_plate/B2" }]

Example 2: A transfer from the G row to the H row of another 96-well plate.

  "transfers": [{
    "from": "src_plate/G1",
    "to": "dest_plate/H1",
    "shape": { "rows": 1, "columns": 12 },
    "tip_layout" : 96
  }]

Example 3: A 2-column transfer from columns 1,2 to columns 2,3 of 384-well plates with the specification that all wells in the columns are transferred.

  "transfers": [{
    "from": "src_plate/A1",
    "to": "dest_plate/B1",
    "shape": { "rows": 16, "columns": 2},
    "tip_layout" : 384
  }]

Example 4: A series of row transfers from one source row to multiple destination rows of a 96-well plate using the same shape and tip_layout.

  "transfers": [
    {
      "from": "src_plate/A1",
      "to": "dest_plate/A1",
      "shape": { "rows": 1, "columns": 12 },
      "tip_layout" : 96
    },
    {
      "from": "src_plate/A1",
      "to": "dest_plate/B1",
      "shape": { "rows": 1, "columns": 12 }
      "tip_layout" : 96
    }
  ]

Compatibility

This change extends the existing stamp operation with the addition of the shape and tip_layout parameters.

The default value for the optional shape parameter is {"rows": 8, "columns": 12} and for the optional tip_layout parameter is 96 which replicates the behavior of the previous stamp operation and allows for backwards compatibility.

ASC-011 - Add Stamp Instruction (96-channel pipetting)

Title

Add Stamp Instruction (96-channel pipetting)

Authorship

Ian O’Hara ian@transcriptic.com

Jeremy Apthorp jeremy@transcriptic.com

Tali Herzka tali@transcriptic.com

Motivation

An instruction is needed to specify 96-channel simultaneous liquid handling (also referred to as stamping). This is generally done to transfer liquid from all wells of one 96-well plate to another or to reformat one plate type into another (for example, reformat four 96-well plates onto a single 384-well plate).

Proposal

A stamp instruction consists of a list of transfers, each of which specifies from and to well references representing the top-left well of a quadrant. The volume field specifies the volume of liquid that will be aspirated from every well of the from quadrant and dispensed into the corresponding well of the to quadrant.

{
  "op": "stamp",
  "transfers": [
    {
      "from": quadrant,
      "to": quadrant,
      "volume": volume,

    // same mix options as a 'transfer' group in the 'pipette' instruction
      "mix_before": {...},
      "mix_after": {...}
    }
  ]
}

The quadrant type is new, and has the same form as the well type (that is, ":ref/:well_index"), with the restriction that :well_index must refer to the top-left well of a quadrant. What this means is vendor-specific (see below for details).

Execution

Accepted quadrants depend on the types of the source and destination containers. A vendor is responsible for determining allowable container types and quadrant definitions.

For example, in the context of 96-well plates, only well A1 may be referenced. On 384-well plates, each of the four 96-well containing quadrants can be specified using the well indices A1, A2, B1, or B2 respectively. A vendor may choose to support other container types and/or quadrant definitions based on their hardware.

ASC-010 - Add dataref and criteria fields to autopick

Title

Add dataref and criteria fields to autopick

Authorship

Jeremy Apthorp jeremy@transcriptic.com

Cornelia Scheitz conny@transcriptic.com

Tali Herzka tali@transcriptic.com

Ian O’Hara ian@transcriptic.com

Motivation

The autopick instruction as it currently stands does not allow for relating returned data, such as the number of colonies counted, to an instruction. It also does not specify other options for colony picking such as only picking colonies of a specific size or color.

Proposal

We propose adding two new fields to the autopick instruction: dataref: in order to specify a string for relating data returned from a colony picker criteria: a hash containing specific options related to picking colonies, for example {"color": "white", ...}. Accepted criteria would be determined by the vendor and/or hardware involved in colony picking.

Example

{
  "dataref": string
  "op": "autopick",
  "from": well,
  "to": [well],
  "min_colony_count": int     // optional, default: 1
  "criteria": { ... }         // optional, default: {}
}

Execution

Accepted criteria for colony picking are determined by the vendor/hardware involved in this operation.

Compatibility

This ASC only specifies new fields of an existing instruction.

ASC-009 - Oligosynthesize

Title

Oligosynthesize

Authorship

Jeremy Apthorp jeremy@transcriptic.com

Conny Scheitz conny@transcriptic.com

Tali Herzka tali@transcriptic.com

Motivation

An instruction is required to specify sequence(s) of oligos to be synthesized, in-house or otherwise.

Proposal

The oligosynthesize Autoprotocol instruction specifies a list of oligonucleotides to synthesize, the final destination of the synthesized oligo, and the scale and purification method of synthesis. Vendors determine what constitutes a valid sequence based on their method of synthesis. Typically, at least the IUPAC codes for basepairs are accepted: http://www.bioinformatics.org/sms/iupac.html

Example:

{
  "op": "oligosynthesize",
  "oligos": [
    {
      "destination": "my_plate/A1",
      "sequence": "CATGGGTAVNNNNGAAB",
      "scale": "25nm" | "100nm" | "250nm" | "1um",
      "purification": "standard" | "page" | "hplc",
        // default: standard
    },
    // …
  ]
}

Compatibility

This ASC only specifies a new instruction.

ASC-008 - Addition of RCA to `sanger_sequence`

Title

Sanger Sequencing - RCA

Authorship

Cornelia Scheitz conny@transcriptic.com

Motivation

In addition to basic plasmid sequencing, bacteria can also be a source to submit for sequencing utilizing rolling-circle-amplification (RCA) to generate DNA. Since this is carried out by the sequencing facility, these add-ons should be part of the sequencing instruction.

Proposal

{
    "op": "sanger_sequence",
    "type": "standard | rca", //default: standard
    "object": container,
    "wells": [well_index],
    "dataref": string
    "primer": container //only required for rca, tube containing sufficient primer for all sequencing reactions
}

Execution

The container specified will be sent to the sequencing device or service and subsequently destroyed. The specified wells will be sequenced through the Sanger chemistry.

For the standard type: the specified wells should already contain the appropriate mix for sequencing, including primers and DNA according to the instructions provided by the vendor.

For type RCA: The specified wells should already contain 15 µL of bacterial solution. The primer to be used for sequencing is indicated in the "primer" parameter and must be a container with sufficient primer volume for all sequencing reactions in this instruction plus some vendor defined dead-volume. Only one primer per container is permitted.

Compatibility

This ASC adds 2 new parameters. Instructions without "type" will be considered of "type": "standard" and thus ensure backwards compatibility.

ASC-007 - Flash Freeze

Title

Flash Freeze

Authorship

Cornelia Scheitz conny@transcriptic.com

Motivation

Flash freezing is done using liquid nitrogen and as such needs special equipment and dedicated sample handling to withstand the ultra-low temperatures. As such it deserves a dedicated Autoprotocol instruction.

Proposal

{
 "op": "flash_freeze",
 "object": container,
 "duration": "30:second" //between 10:second and 180:second
}

Execution

The container specified will be dipped into liquid nitrogen for the set period of time. The container can then be used in other autoprotocol instructions or be stored.

Compatibility

This ASC only specifies new instructions.

ASC-006 - Flow Analyze

Title

Flow Analyze

Authorship

Cornelia Scheitz conny@transcriptic.com

Adam Naguib adam@transcriptic.com

Jeremy Apthorp jeremy@transcriptic.com

Motivation

Multicolor flow cytometry is a common tool in the life sciences and several dedicated devices are available. This instruction takes aliquots and analyzes them with the parameters given. It requires at least one negative control which will be used to define data acquisition parameters as well as to determine any autofluorescent properties for the sample set. Additional negative positive control samples are optional. Positive control samples will be used to optimize single color signals and, if desired, to minimize bleed into other channels.

Proposal

{
 "op": "flow_analyze",
 "dataref": "flow_data",
 "channels": {
   "FSC": {
     "voltage_range": {
       "low": "230:volt",
       "high": "280:volt"
       },
     "area": true,             //default: true
     "height": true,           //default: true
     "weight": false           //default: false
     },
   "SSC": {
     "voltage_range": { … },
     "area": true,             //default: true
     "height": false,          //default: false
     "weight": false           //default: false
     },
   "colors":[{
     "name": "FitC",
     "emission_wavelength": "495:nanometer",
     "excitation_wavelength": "519:nanometer",
     "voltage_range": { … },
     "area": true,             //default: true
     "height": false,          //default: false
     "weight": false           //default: false
   }, … ]
 },
 "negative_controls": [{
   "well": well,
   "volume": volume,
   "captured_events": integer,     // optional, default infinity
   "channel": [channel_name]
 }],                               // at least 1 negative control req'd
 "positive_controls": [{
   "well": well,
   "volume": volume,
   "captured_events": integer,     // optional, default infinity
   "channel": [channel_name],
   "minimize_bleed": [{            // optional
     "from": color,
     "to": [color]
   }, … ]
 }],
 "samples": [{
   "well": well,
   "volume": volume,
   "captured_events": integer,     // optional, default infinity
 }]
}

flow_analyze returns data

{
 "parameters": {
   "FSC_voltage": volt,
   "SSC_voltage": volt,
   "colors":{[
     "name": string,
     "actual_voltage": volt
   ], … },
 }
 "data": {
   "plate1/A3": {
     "fsc_3.1": "url"
   }
 }
}

Execution

The instruction will be executed within the voltage range specified for each channel, optimized for the best sample separation/distribution that can be achieved within these limits. The vendor will specify the device that this instruction is executed on and which excitation and emission spectra are available.

For each sample this instruction asks you to specify the volume and/or captured_events. Vendors might also require captured_events in case their device does not support volumetric sample intake. If both conditions are supported, the vendor will specify if data will be collected only until the first one is met or until both conditions are fulfilled.

Compatibility

This ASC only specifies new instructions.

Public google doc for future updates

ASC-005 - Add co2_percent Parameter to incubate Instruction

Title

Add co2 parameter to incubate instruction

Authorship

Cornelia Scheitz conny@transcriptic.com

Motivation

Incubation for mammalian tissue culture requires control of CO2 concentration to level above the atmospheric composition. This specifies the amount of CO2 to add, in percent.

Proposal

The incubate instruction should take an additional parameter "co2" of type 'percentage' to specify the amount of CO2 during an incubation

{
  "op": "incubate",
  "object": container,
  "where": temperature,
  "duration": duration,
  "shaking": bool,
  "co2": percent            //optional, default: 0
}

The combination of temperature and CO2 levels available will be determined by the vendor. For example only: "where": "warm_37","shaking": False, "co2": "5:percent" might be allowed.

Execution

The sample will be incubated according to the specified parameters at the given amount of CO2.

Compatibility

This parameter is optional and will default to 0%. There are no backwards compatibility issues.

ASC-004 - Add type Parameter to seal Instruction

Title

Add type parameter to seal instruction

Authorship

Cornelia Scheitz conny@transcriptic.com

Motivation

The type of seal can be different depending on the application. For example qPCR applications require ultra-clear seals to read the fluorescence data from the wells. Regular PCR can use either foil or clear seals. Sealing a plate with DMSO will require a chemically resistant seal which likely foil based.

Proposal

The seal instruction should take an additional mandatory parameter, "type", of type string. This specifies the type of seal to be applied to the plate.

Example:

{
  "op": "seal",
  "object": container,
  "type": "foil"
}

The types available are specified by the vendor, examples are: "ultra-clear", "foil".

Compatibility

To aid transition to the addition of the mandatory "type" parameter, implementations should continue to accept seal instructions with no type specified. If no type is specified, the type shall be assumed to be an ultra-clear seal.

ASC-003 - Cell Spreading and Colony Picking

Title

Cell spreading and colony picking

Authorship

Jeremy Apthorp jeremy@transcriptic.com Cornelia Scheitz conny@transcriptic.com

Motivation

Many important protocols depend on plating bacteria on agar and picking colonies, processes that cannot currently be represented in Autoprotocol.

Proposal

We propose two new instructions: spread and autopick. These instructions are intended to be used with 1- or 6-well SBS microplate pre-filled with agar.

`spread`

{
  "op": "spread",
  "from": well,
  "to": well,
  "volume": volume
}

Execution

Spread the specified volume of the source aliquot evenly across the surface of the agar in the object container.

`autopick`

Parameters

{
  "op": "autopick",
  "from": well,
  "to": [well],
  "min_colony_count": int     // optional, default: 1
}

Execution

Pick (using a pin tool or pipette tip) at least min_colony_count colonies from the from well into the to wells. If insufficient colonies are available to fill all the to wells, the to wells should be filled in the order specified until no more colonies are available. If fewer than min_colony_count colonies are present in the from well, fail the instruction (see the section below on potentially-failing instructions for details).

Imaging and identifying suitable colonies to pick is left to the vendor to implement. Future work may include additional specifications on selecting colonies by particular criteria (e.g. blue/white selection), but that is outside the scope of this document.

Potentially-failing instructions

A major new concept the autopick instruction introduces is that of an operation that can fail. Since it is not guaranteed that enough colonies grew to fulfill the request, we propose that if the number of available colonies is less than the specified min_colony_count then pick no colonies at all and fail. That is to say, the run should stop and return all containers to their destinations if an insufficient number of colonies are detected.

Compatibility

This ASC only specifies new instructions.

ASC-002 - Sanger Sequencing

Title

Sanger Sequencing

Authorship

Jeremy Apthorp jeremy@transcriptic.com

Motivation

The Sanger sequencing reaction is usually performed by a dedicated sequencing device (or mail-out service), and as such warrants a dedicated Autoprotocol instruction.

Proposal

{
  "op": "sanger_sequence",
  "object": container,
  "wells": [well_index],
  "dataref": string
}

Execution

The container specified will be sent to the sequencing device or service and subsequently destroyed. The specified wells will be sequenced through the Sanger chemistry.

The specified wells should already contain the appropriate mix for sequencing, including primers and DNA according to the instructions provided by the vendor.

Compatibility

This ASC only specifies new instructions.

ASC-001 - add volume Parameter to gel_separate Instruction

Title

Add 'volume' parameter to gel_separate instruction

Authorship

Jeremy Apthorp jeremy@transcriptic.com Cornelia Scheitz conny@transcriptic.com

Motivation

The amount of liquid to be added to each well of a gel is an important experimental parameter, as it can affect the distribution of current throughout the gel and thus the quality of the resultant gel image.

Proposal

The gel_separate instruction should take an additional mandatory parameter, "volume", of type volume. This specifies the volume of liquid to be pipetted into each well of the gel. The same volume will be used for all specified wells in the gel_separate instruction, so that results are properly comparable.

Example:

{
  "op": "gel_separate",
  "volume": "15:microliter",
  "objects": [
    "plate1/A1",
    "plate1/A2"
  ],
  "matrix": "agarose(8,0.8%)",
  "ladder": "ladder1",
  "duration": "5:minute",
  "dataref": "gel"
}

Compatibility

To aid transition to the addition of the mandatory "volume" parameter, implementations should continue to accept gel_separate instructions with no volume specified. If no volume is specified, the volume shall be assumed to be 20 microliters.