ChangelogΒΆ
Next 3.x feature release
- [Support]: fix documentation typos
Next 3.x bugfix release
- [Bug]: remove cover prior to mag steps where applicable
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), 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
- [Support]: convert test suite to py.test
- [Support]: docstring cleanup, linting
3.10.1 2017-05-25
- [Bug]: update default lid types for 384-echo, 96-flat, 96-flat-uv, and 96-flat-clear-clear-tc
- [Bug]: update pint requirements, update error handling on UnitError
- [Support]: fix documentation typos
3.10.0 2016-10-25
- [Feature]: new plate types 384-v-clear-clear, 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 384-round-clear-clear
- [Support]: more descriptive error message in Protocol.ref()
- [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 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 384-flat-clear-clear, 384-flat-white-white-lv, 384-flat-white-white-tc
- [Feature]: validations before implicit cover or seal
- [Feature]: WellGroup.extend() can now take in a list of wells
- [Feature]: WellGroup methods: WellGroup.set_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 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 96-deep-kf and 96-deep
- [Bug] #127: convert pipette operations to microliters
- [Bug]: dispense_speed and distribute_target in Protocol.distribute() instruction
3.7.4 2016-07-07
- [Bug]: auto-uncover before Protocol.provision() instructions
3.7.3 2016-07-06
- [Feature]: WellGroup.extend() can now take in a list of wells
- [Feature]: WellGroup methods: WellGroup.set_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 96-pcr and 384-pcr plates
- [Bug]: Protocol.dispense() instruction json outputs
- [Support]: documentation
3.7.2 2016-06-24
- [Feature]: new plate types 384-flat-clear-clear, 384-flat-white-white-lv, 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 6-flat well volumes
- [Feature]: release versioning has been removed in favor of protocol versioniong in harness.py
- [Feature]: kf container types 96-v-kf and 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]: 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]: 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