Changelog

4.0.0 2017-11-22

  • [Feature]: add new containers, true_max_vol_ul in _CONTAINER_TYPES
  • [Feature]: add prioritize_seal_or_cover allow priority selection
  • [Feature]: allow breathable seals on 96-deep and 24-deep
  • [Feature]: add PerkinElmer 384-well optiplate to container_type (cat# 6007299), container-type-384-flat-white-white-optiplate
  • [Feature]: add support for more_than in add_time_constraint
  • [Feature]: add ability to specify x_cassette for dispense and dispense_full_plate methods
  • [Feature]: add ability to specify a well as reagent source for dispense and dispense_full_plate methods
  • [Feature]: add step_size to dispense and dispense_full_plate methods
  • [Feature]: add shaking capabilities to protocol.incubate()
  • [Feature]: add ceil and floor methods to Unit
  • [Bug]: remove cover prior to mag steps where applicable
  • [Support]: convert test suite to py.test
  • [Support]: docstring cleanup, linting

3.10.1 2017-05-25

  • [Bug]: update default lid types for container-type-384-echo, container-type-96-flat, container-type-96-flat-uv, and container-type-96-flat-clear-clear-tc
  • [Bug]: update pint requirements, update error handling on UnitError

3.10.0 2016-10-25

  • [Feature]: new plate types container-type-384-v-clear-clear, container-type-384-round-clear-clear,`384-flat-white-white-nbs`
  • [Bug]: allow incubation of containers at ambient without covers
  • [Bug]: prevent invalid incubate parameters in protocol-absorbance
  • [Bug]: respect incubate conditions where uncovered=True
  • [Bug]: fix Well.set_properties() so that it completely overwrites the existing properties dict
  • [Bug]: fix name of container-type-384-round-clear-clear
  • [Support]: more descriptive error message in ref protocol
  • [Support]: add functions and tests to enable use of –dye_test flag

3.9.0 2016-08-10

  • [Feature]: Container method: container-tube
  • [Feature]: new plate type container-type-96-flat-clear-clear-tc
  • [Bug]: Unit validations from str in protocol-flow-analyze instruction
  • [Support]: update documention for harness-seal-on-store

3.8.0 2016-07-26

  • [Feature]: cover_types and seal_types to _CONTAINER_TYPES
  • [Feature]: validations of input types before cover check
  • [Feature]: new plate types container-type-384-flat-clear-clear, container-type-384-flat-white-white-lv, container-type-384-flat-white-white-tc
  • [Feature]: validations before implicit cover or seal
  • [Feature]: WellGroup.extend(wells) can now take in a list of wells
  • [Feature]: WellGroup methods: wellgroup-group-name, wellgroup-pop, wellgroup-insert, wellgroup-wells-with
  • [Feature]: assertions and tests for protocol-flow-analyze
  • [Feature]: autocover before protocol-incubate
  • [Feature]: is_resource_id added to protocol-dispense and protocol-dispense-full-plate instructions
  • [Feature]: plate type container-type-6-flat-tc to ContainerType
  • [Bug]: unit conversion to microliters in protocol-dispense instruction
  • [Support]: documentation
  • [Support]: protocol-dispense instruction tests
  • [Support]: using release for changelog and integration into readthedocs documentation

3.7.6 2016-07-25

  • [Bug]: convert pipette operations to microliters
  • [Bug] #128: cover_types on container-type-96-deep-kf and container-type-96-deep
  • [Bug] #127: convert pipette operations to microliters
  • [Bug]: dispense_speed and distribute_target in protocol-distribute instruction

3.7.5 2016-07-08

  • [Feature]: plate type container-type-6-flat-tc to ContainerType

3.7.4 2016-07-07

  • [Bug]: auto-uncover before protocol-provision instructions

3.7.3 2016-07-06

  • [Feature]: WellGroup.extend(wells) can now take in a list of wells
  • [Feature]: WellGroup methods: wellgroup-group-name, wellgroup-pop, wellgroup-insert, wellgroup-wells-with
  • [Feature]: assertions and tests for protocol-flow-analyze
  • [Feature]: autocover before protocol-incubate
  • [Feature]: is_resource_id added to protocol-dispense and protocol-dispense-full-plate instructions
  • [Bug]: compatibility with py3 in protocol-flow-analyze
  • [Bug]: protocol-spin auto-cover
  • [Bug]: removed capability ‘cover’ from container-type-96-pcr and container-type-384-pcr plates
  • [Bug]: protocol-dispense instruction json outputs
  • [Support]: documentation

3.7.2 2016-06-24

  • [Feature]: new plate types container-type-384-flat-clear-clear, container-type-384-flat-white-white-lv, container-type-384-flat-white-white-tc
  • [Feature]: validations before implicit cover or seal

3.7.1 2016-06-17

  • [Feature]: cover_types and seal_types to _CONTAINER_TYPES
  • [Feature]: validations of input types before cover check
  • [Bug]: string input types for source, destination wells for Instructions protocol-consolidate, protocol-autopick, protocol-mix

3.7.0 2016-06-14

  • [Feature]: track plate cover status - Container objects now have a cover attribute, implicit plate unsealing or uncovering prior to steps that require the plate to be uncovered.
  • [Bug]: protocol-stamp separates row stamps with more than 2 containers

3.6.0 2016-06-07

  • [Feature]: protocol-mix allows one_tip=True
  • [Feature]: unit-unit specific error handling
  • [Feature]: protocol-illuminaseq allows cycle specification
  • [Feature]: protocol-add-time-constraint added

3.5.3 2016-05-16

  • [Bug]: harness.py returns proper boolean for thermocycle types

3.5.2 2016-05-13

  • [Feature]: unit-unit specific error handling
  • [Bug]: thermocycle gradient steps in harness.py

3.5.1 2016-05-12

  • [Feature]: protocol-mix allows one_tip=True
  • [Bug]: protocol-acoustic-transfer handling of droplet size

3.5.0 2016-05-06

  • [Feature]: protocol-spin instruction takes directional parameters
  • [Feature]: protocol-gel-purify parameters improved
  • [Feature]: protocol-illuminaseq instruction
  • [Feature]: protocol-measure-volume instruction
  • [Feature]: protocol-measure-mass instruction
  • [Bug]: Compatibility of Unit for acceleration
  • [Bug]: fix harness to be python3 compatible
  • [Bug]: Concatenation of Well to WellGroup no longer returns None
  • [Bug]: WellGroup checks that all elements are wells
  • [Support]: gel string in documentation

3.4.0 2016-04-22

  • [Feature]: support for list input type for humanize and robotize (container and container_type)
  • [Feature]: protocol-gel-purify instruction to instruction.py and protocol.py
  • [Feature]: :ref:container-discard` and and container-set-storage methods for containers

3.3.0 2016-04-13

  • [Feature]: csv-table input type to harness.py

3.2.0 2016-04-07

  • [Feature]: magnetic transfer instructions to now pass relevant inputs through units
  • [Feature]: Unit support for molar
  • [Feature]: disclaimer to README.md on unit support
  • [Feature]: Unit(Unit(…)) now returns a Unit
  • [Feature]: checking for valid plate read incubate parameters
  • [Feature]: additional parameter, gain, to protocol-fluorescence
  • [Support]: documentation for magnetic transfer instructions correctly uses hertz
  • [Support]: adding magnetic transfer functions to documentation

3.1.0 2016-03-24

  • [Feature]: support for a new instruction for protocol-measure-concentration
  • [Feature]: helper function in util.py to create incubation dictionaries
  • [Feature]: additional parameters to spectrophotometry instructions (protocol-absorbance, protocol-luminescence, protocol-fluorescence) to instruction.py and protocol.py
  • [Bug]: Updated Unit package to default to Autoprotocol format representation for temperature and speed units
  • [Bug]: Updated maximum tip capacity for a transfer operation to 900uL instead of 750uL
  • [Bug]: Updated handling of multiplication and division of Units of the same dimension to automatically resolve when possible

3.0.0 2016-03-17

  • [Feature]: unit-unit now uses Pint’s Quantity as a base class
  • [Feature]: update container-type-6-flat well volumes
  • [Feature]: release versioning has been removed in favor of protocol versioniong in harness.py
  • [Feature]: kf container types container-type-96-v-kf and container-type-96-deep-kf in container_type.py
  • [Feature]: magnetic_transfer instruction to instruction.py and protocol.py
  • [Feature]: container+ input type to harness.py
  • [Bug]: Update container_test.py and container_type_test.py to include safe_min_volume_ul
  • [Bug]: default versioning in manifest_test.json

2.7.0 2016-02-18

  • [Feature]: updated dead_volume_ul values in _CONTAINER_TYPES
  • [Feature]: safe_min_volume_ul in _CONTAINER_TYPES
  • [Bug]: protocol-stamp smartly calculates max_tip_volume using residual volumes

2.6.0 2015-02-02

  • [Feature]: protocol-autopick now conforms to updated ASC (not backwards compatible)
  • [Feature]: Allow single Well reading for Absorbance, Fluorescence and Luminescence
  • [Feature]: wellgroup-extend method to WellGroup
  • [Feature]: Include well properties in outs
  • [Bug]: protocol-transfer respects when mix_after or mix_before is explicitly False
  • [Bug]: Protocol.stamp() allows one_tip=True when steps use a mix_vol greater than “31:microliter” even if transferred volumes are not all greater than “31:microliter”
  • [Support]: Protocol.plate_to_magblock() and Protocol.plate_from_magblock()

2.5.0 2015-10-12

  • [Feature]: protocol-stamp has been reformatted to take groups of transfers. This allows for one_tip=True, one_source=True, and WellGroup source and destinations

2.4.1 2015-10-12

  • [Bug]: one_tip = True transfers > 750:microliter are transferred with single tip
  • [Bug]: volume tracking for protocol-stamp ing to/from 384-well plates

2.4.0 2015-09-28

  • [Feature]: functionality to harness.py for naming aliquots
  • [Feature]: UserError exception class for returning custom errors from within protocol scripts
  • [Bug]: more recursion in make_dottable_dict, a completely unnecessary function you shouldn’t use
  • [Bug]: Better handling of default append=true behavior for protocol-stamp
  • [Bug]: Small bug for transfer with one_source=true fixed
  • [Support]: Transfers with one_source true does not keep track of the value of volume less than 10^-12
  • [Support]: protocol-stamp transfers are not combinable if they use different tip volume types

2.3.0 2015-08-31

  • [Feature]: unit conversion from milliliters or nanoliters to microliters in Well.set_volume(), protocol-provision, protocol-transfer, and protocol-distribute
  • [Feature]: “outs” section of protocol. Use well-set-name to name an aliquot
  • [Feature]: name property on Well
  • [Feature]: volume tracking to protocol-stamp and associated helper functions in autoprotocol.util
  • [Feature]: Arguments to protocol-transfer for mix_before and mix_after are now part of mix_kwargs to allow for specifying separate parameters for mix_before and mix_after
  • [Feature]: Better error handling in harness.py and accompanying tests
  • [Feature]: Test for more complicated transfer`ing with `one_source=True
  • [Feature]: manually change storage condition destiny of a Container
  • [Feature]: Protocol.store()
  • [Feature]: Storage attribute on Container
  • [Feature]: protocol-stamp now support selective (row-wise and column-wise) stamping (see docstring for details)
  • [Support]: semantic versioning fail

2.2.2 2015-08-28

  • [Feature]: Arguments to protocol-transfer for mix_before and mix_after are now part of mix_kwargs to allow for specifying separate parameters for mix_before and mix_after
  • [Feature]: Better error handling in harness.py and accompanying tests
  • [Feature]: Test for more complicated transfer`ing with `one_source=True
  • [Feature]: manually change storage condition destiny of a Container
  • [Feature]: Protocol.store()
  • [Feature]: Storage attribute on Container
  • [Bug]: Error with transfer`ing with `one_source=True

2.2.1 2015-08-20

  • [Feature]: unit conversion from milliliters or nanoliters to microliters in Well.set_volume(), protocol-provision, protocol-transfer, and protocol-distribute
  • [Feature]: “outs” section of protocol. Use well-set-name to name an aliquot
  • [Feature]: name property on Well
  • [Feature]: volume tracking to protocol-stamp and associated helper functions in autoprotocol.util
  • [Bug]: Unit scalar multiplication
  • [Bug]: Error when protocol-transfer ing over 750uL
  • [Bug]: Error with protocol-provision ing to multiple wells of the same container
  • [Support]: semantic versioning fail

2.2.0 2015-07-21

  • [Feature]: protocol-stamp now utilizes the new Autoprotocol stamp instruction instead of protocol-transfer
  • [Feature]: __repr__ override for Unit class
  • [Feature]: volume tracking to destination wells when using Protocol.dispense()
  • [Feature]: Stamp class in autoprotocol.instruction
  • [Bug]: better error handling for protocol-transfer and protocol-distribute
  • [Bug]: refactored Protocol methods: protocol-ref, protocol-consolidate, protocol-transfer, protocol-distribute
  • [Bug]: fixed indentation

2.1.0 2015-06-10

  • [Feature]: warnings for _mul_ and _div_ scalar Unit operations
  • [Feature]: protocol-dispense-full-plate
  • [Feature]: protocol-dispense Instruction and accompanying Protocol method for using a reagent dispenser
  • [Feature]: aliquot++, integer, boolean input types to harness.py
  • [Feature]: properties attribute to Well, along with well-set-properties method
  • [Feature]: melting keyword variables and changes to conditionals in Thermocycle
  • [Feature]: default input value and group and group+ input types in harness.py
  • [Feature]: Protocol.pipette() is now a private method _pipette()
  • [Feature]: protocol-sangerseq Instruction and method
  • [Feature]: seal takes a “type” parameter that defaults to ultra-clear
  • [Feature]: more tests
  • [Feature]: protocol-stamp Protocol method for using the 96-channel liquid handler
  • [Feature]: Added pipette_tools module containing helper methods for the extra pipetting parameters
  • [Feature]: Additional keyword arguments for protocol-transfer and protocol-distribute to customize pipetting
  • [Feature]: protocol-oligosynthesize Instruction
  • [Feature]: protocol-autopick Instruction
  • [Feature]: protocol-spread Instruction
  • [Feature]: protocol-flow-analyze Instruction
  • [Feature]: co2 parameter in protocol-incubate
  • [Feature]: 6-flat container type in _CONTAINER_TYPES
  • [Feature]: 96-flat-uv container type in _CONTAINER_TYPES
  • [Feature]: container-quadrant returns a WellGroup of the 96 wells representing the quadrant passed
  • [Feature]: well-add-properties
  • [Feature]: Well.properties is an empty hash by default
  • [Feature]: At least some Python3 compatibility
  • [Feature]: protocol-stamp ing to or from multiple containers now requires that the source or dest variable be passed as a list of [{“container”: <container>, “quadrant”: <quadrant>}, …]
  • [Feature]: protocol-gel-separate generates instructions taking wells and matrix type passed
  • [Feature]: tox for testing with multiple versions of python
  • [Feature]: new_group keyword parameter on protocol-transfer and protocol-distribute to manually break up Pipette() Instructions
  • [Feature]: Thermocycle input type in harness.py
  • [Feature]: specify Wells on a container using container.wells(1,2,3)`or `container.wells([1,2,3])
  • [Feature]: More Python3 Compatibility
  • [Feature]: More Python3 Compatibility
  • [Feature]: Additional type-checks in various functions
  • [Feature]: protocol-provision Protocol method
  • [Feature]: support for choice input type in harness.py
  • [Feature]: allow transfer from multiple sources to one destination
  • [Feature]: brought back recursively transferring volumes over 900 microliters
  • [Feature]: container-type-1-flat plate type to _CONTAINER_TYPES
  • [Feature]: support for container names with slashes in them in harness.py
  • [Feature]: add protocol-consolidate Protocol method and accompanying tests
  • [Feature]: ImagePlate() class and protocol-image-plate Protocol method for taking images of containers
  • [Feature]: volume adjustment when protocol-spread ing
  • [Feature]: collapse protocol-provision instructions if they’re acting on the same container
  • [Feature]: protocol-sangerseq now accepts a sequencing type of “rca” or “standard” (defaults to “standard”)
  • [Feature]: criteria and dataref fields to protocol-autopick
  • [Feature]: protocol-flash-freeze Protocol method and Instruction
  • [Bug]: protocol-ref behavior when specifying the id of an existing container
  • [Bug]: type check in Container.wells
  • [Support]: README.rst
  • [Support]: a wild test appeared!
  • [Support]: link to library documentation at readthedocs.org to README
  • [Support]: autoprotocol and JSON output examples for almost everything in docs
  • [Support]: improved documentation tree
  • [Support]: documentation for plate_to_mag_adapter and plate_from_mag_adapter subject to change in near future
  • [Support]: documentation punctuation and grammar
  • [Support]: check that a well already exists in a WellGroup
  • [Support]: Added folder for sublime text snippets
  • [Support]: Protocol.serial_dilute_rowwise()
  • [Support]: Protocol.thermocycle_ramp()

2.0.5 2015-06-04

  • [Feature]: More Python3 Compatibility
  • [Feature]: Additional type-checks in various functions
  • [Feature]: protocol-provision Protocol method
  • [Feature]: support for choice input type in harness.py
  • [Feature]: allow transfer from multiple sources to one destination
  • [Feature]: brought back recursively transferring volumes over 900 microliters
  • [Feature]: container-type-1-flat plate type to _CONTAINER_TYPES
  • [Feature]: support for container names with slashes in them in harness.py
  • [Feature]: add protocol-consolidate Protocol method and accompanying tests
  • [Feature]: ImagePlate() class and protocol-image-plate Protocol method for taking images of containers
  • [Feature]: volume adjustment when protocol-spread ing
  • [Bug]: typo in protocol-sangerseq instruction
  • [Support]: documentation punctuation and grammar
  • [Support]: check that a well already exists in a WellGroup
  • [Support]: Added folder for sublime text snippets

2.0.4 2015-05-05

  • [Feature]: protocol-stamp ing to or from multiple containers now requires that the source or dest variable be passed as a list of [{“container”: <container>, “quadrant”: <quadrant>}, …]
  • [Feature]: protocol-gel-separate generates instructions taking wells and matrix type passed
  • [Feature]: tox for testing with multiple versions of python
  • [Feature]: new_group keyword parameter on protocol-transfer and protocol-distribute to manually break up Pipette() Instructions
  • [Feature]: Thermocycle input type in harness.py
  • [Feature]: specify Wells on a container using container.wells(1,2,3)`or `container.wells([1,2,3])
  • [Feature]: More Python3 Compatibility
  • [Bug]: Transfering liquid from one_source actually works now
  • [Bug]: references to specific reagents for protocol-dispense
  • [Support]: documentation for plate_to_mag_adapter and plate_from_mag_adapter subject to change in near future

2.0.3 2015-04-17

  • [Feature]: Protocol.pipette() is now a private method _pipette()
  • [Feature]: protocol-sangerseq Instruction and method
  • [Feature]: seal takes a “type” parameter that defaults to ultra-clear
  • [Feature]: more tests
  • [Feature]: protocol-stamp Protocol method for using the 96-channel liquid handler
  • [Feature]: Added pipette_tools module containing helper methods for the extra pipetting parameters
  • [Feature]: Additional keyword arguments for protocol-transfer and protocol-distribute to customize pipetting
  • [Feature]: protocol-oligosynthesize Instruction
  • [Feature]: protocol-autopick Instruction
  • [Feature]: protocol-spread Instruction
  • [Feature]: protocol-flow-analyze Instruction
  • [Feature]: co2 parameter in protocol-incubate
  • [Feature]: 6-flat container type in _CONTAINER_TYPES
  • [Feature]: 96-flat-uv container type in _CONTAINER_TYPES
  • [Feature]: container-quadrant returns a WellGroup of the 96 wells representing the quadrant passed
  • [Feature]: well-add-properties
  • [Feature]: Well.properties is an empty hash by default
  • [Feature]: At least some Python3 compatibility
  • [Bug]: protocol-gel-separate generates number of instructions needed for number of wells passed
  • [Bug]: recursion to deal with transferring over 900uL of liquid
  • [Bug]: references to specific matrices and ladders in protocol-gel-separate
  • [Bug]: refactoring of type checks in unit-unit
  • [Support]: improved documentation tree

2.0.2 2015-03-06

  • [Feature]: melting keyword variables and changes to conditionals in Thermocycle
  • [Feature]: default input value and group and group+ input types in harness.py
  • [Support]: a wild test appeared!
  • [Support]: link to library documentation at readthedocs.org to README
  • [Support]: autoprotocol and JSON output examples for almost everything in docs

2.0.1 2015-02-06

  • [Feature]: warnings for _mul_ and _div_ scalar Unit operations
  • [Feature]: protocol-dispense-full-plate
  • [Feature]: protocol-dispense Instruction and accompanying Protocol method for using a reagent dispenser
  • [Feature]: aliquot++, integer, boolean input types to harness.py
  • [Feature]: properties attribute to Well, along with well-set-properties method
  • [Bug]: spelling of luminescence :(
  • [Bug]: well_type from _CONTAINER_TYPES
  • [Bug]: “speed” parameter in protocol-spin to “acceleration”
  • [Support]: README.rst

2.0.0 2014-01-24

  • [Feature]: “one_tip” option on protocol-transfer
  • [Feature]: volume tracking upon protocol-transfer and protocol-distribute
  • [Feature]: dead_volume_ul in _CONTAINER_TYPES
  • [Feature]: wellGroup-indices returns a list of string well indices
  • [Feature]: 3-clause BSD license, contributor info
  • [Feature]: container-inner-wells method to exclude edges
  • [Feature]: harness.py for parameter conversion
  • [Support]: static methods Pipette.transfers() and Pipette._transferGroup()
  • [Support]: NumPy style docstrings for most methods

1.0.0 2014-01-22

  • [Feature]: initializing ap-py