Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit 59f8de7318ad100667fb84804119c7c2ac0145ee
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Oct 7 17:50:07 2024 -0700

    fix channel 1-n volume tracking (#273)

commit cef404b3dbd951f312b9a20191456b7f272ffb5f
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Oct 1 16:30:19 2024 -0700

    [STAR] really skip these on setup if True

commit 9edf04a8e01c381ee5c3b020542bbea7e7709806
Author: Phi Nguyen <56458094+Ph1so@users.noreply.github.com>
Date:   Mon Sep 30 21:48:45 2024 -0400

    Add VSpin (spin spin) Wrapper (#243)

    Co-authored-by: jkh <1220444+jkhales@users.noreply.github.com>
    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit a14c253155aa8bde2926e7cf43cc07ab258d87d5
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sun Sep 29 15:19:15 2024 -0700

    tests for lid rotation with iswap

commit 90775c9d9399543b5165a99c03736dd3a03f344d
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sun Sep 29 14:48:16 2024 -0700

    add Rotation.__repr__

commit b67193aee145eb068c5ddd44f339b39578ddffe5
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sun Sep 29 14:48:10 2024 -0700

    add a setter to Plate.lid

commit f265f9fc8e02c48c438770d99cb6e61c1bdf8369
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sun Sep 29 14:16:19 2024 -0700

    forgot these links

commit ec2eedc602348557ac148282114045406a5b9192
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Sep 28 18:07:22 2024 -0700

    no special treatment for lid on ResourceStack (#267)

commit a6d870b8b5dae5c020b1e83b121c11f75b2bfd22
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Sep 28 16:49:36 2024 -0700

    Fix iswap rotation issue (#269)

commit 0f00e4527642977d0bfc856bdb99c79c5c0ebe01
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 27 19:31:50 2024 -0700

    also fix iswap pickup for rotated resources for vantage (#268)

commit 1711edc006e9e34efc1429d1df34b821252b4203
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 27 17:29:09 2024 -0700

    new logo & new forum

commit 39ebdf5fdb183b19ea8bad06675e7a58f4768d6f
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 27 17:08:47 2024 -0700

    rename file bc it was too long on Windows

commit 92be7424db5de5db0cc4467a1aec8f2d11f0ebc1
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 27 16:50:11 2024 -0700

    link to discuss.pylabrobot.org (#266)

commit 0353a674b49dc2f4110e095303b402a55aa67cff
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 27 16:28:44 2024 -0700

    Revert "hamilton liquid classes make kwargs (#248)" (#264)

    This reverts commit fbb08be3a93719f842cdd480f6499c5a2d716860.

commit 6542154ce489d787d6683779fcbe16e525d827fa
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 27 16:01:57 2024 -0700

    [star] [vantage] flags for skipping setting up modules (#263)

commit fbb08be3a93719f842cdd480f6499c5a2d716860
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 27 11:12:27 2024 -0700

    hamilton liquid classes make kwargs (#248)

commit 6d05d453bdef1a826b14ac27bb5843e17ce6a9d5
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Sep 26 13:29:54 2024 -0700

    [liquidhandler] no blow out error without volume tracking or when blow out volume is 0 (#262)

commit 905753c729e805d592430713447981b4ba68516d
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Sep 26 13:09:19 2024 -0700

    [STAR] homogenization -> mix (#261)

commit 8f15ee0973f6d544b710ca741931ca4fa4e5e258
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Sep 25 09:15:16 2024 -0700

    Less verbose

commit 01a10f852d573456d4505effe87e134205f6f508
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Sep 24 08:21:31 2024 -0700

    add T-Therapeutics to “used by”

commit 244f36e6211b5c4e5a95dd1e08dad31198eec55b
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Sep 23 19:28:51 2024 -0700

    cytation5 in new docs

commit a2ca897f03039596482c0942bd41a52824079657
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Sep 23 19:25:53 2024 -0700

    new docs theme (#249)

commit 6d48b34de78f0b727a200030427d9c3e176a2834
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Sep 23 19:08:43 2024 -0700

    top->bottom in docs

commit 9d48831c6bc4324ca35a3baf9259c4bfbf11581d
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Sun Sep 22 20:10:19 2024 -0700

    [Labware] Add several plates (#254)

commit f6f4693e65ccaacf1f861777ee89e6f67fef4540
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sun Sep 22 11:15:57 2024 -0700

    pylibftdi optional for cytation

commit d748daaef74f0c2d52a2f495723383b33ad3488e
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 20 20:43:18 2024 -0700

    add tip spot generators (#256)

commit d9d687bf9bcca63022b6b1228128106d99d736a9
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 20 14:39:10 2024 -0700

    use correct bit for autoload_installed

commit 085855465e46879ecde0fb41c73a0367e8a0347c
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 20 11:32:05 2024 -0700

    add material_z_thickness to falcon_tube_50mL

commit b7e28685d03220f67cbac5a95e41b4a38d6441b3
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Sep 20 10:00:31 2024 -0700

    support pylint 3.3.0

commit 9513089ca7b1784c9fc0f44f6526e39f109f18a4
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Fri Sep 20 17:39:36 2024 +0100

    Resource Update: PLT_CAR_L5AC_A00 pedestal_size_z (#255)

commit 68d102761a5362f2e9cc8312b3283940042694aa
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Wed Sep 18 15:06:10 2024 -0700

    [rotations] add ResourceHolderMixin to fix placement in a number of resources (#239)

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit dc97d25939813aabea4f7890ae663aaa3b081ba0
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Sep 18 13:01:39 2024 -0700

    freeze the ops classes and remove doc strings

commit 515c8a0f3eb657ec7f6376d3e023095214da327a
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Sep 18 10:57:26 2024 -0700

    Coordinate.zero static instead of class method

commit e5bb2492c4f3488fdedcf93492e9d404b24170f5
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Sep 18 10:56:04 2024 -0700

    [star] don't log empty responses

commit 6cf28431f379134d4a4e8c8d22a23fbfde19219c
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Sep 16 18:43:18 2024 -0700

    [STAR] replace None values in list with default

commit 0a821d5b1f9253b09550e8c30dc50c66f39db928
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Sep 14 13:16:57 2024 -0700

    add fluorescence to cytation5 (#244)

commit 5826c7328f64bad7ad9da995f6f6f0a46612efb0
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Sep 11 16:19:48 2024 -0700

    more chatterboxes (#242)

commit 0f6146a2bc550a4826cbae373bc3758fcdee453b
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Sep 11 15:09:47 2024 -0700

    add Cytation5 (#238)

    Co-authored-by: jkh <1220444+jkhales@users.noreply.github.com>

commit 2145f38f77e0629e338befea355f40bbb22b1ad0
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Sep 10 17:44:35 2024 -0700

    deprecation warning for 3.8

commit 8c2d1e5c4123dae7dbee35be9cac7b9d46eafb45
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Sep 10 17:28:09 2024 -0700

    remove single arg check (#240)

commit 277de6915a1abd8414ffb6b6108e8c6f6e191009
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Sep 10 15:10:27 2024 -0700

    remove old code

commit 858b1e0baae9e8aeaaa418f40ce490e200ef6808
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Mon Sep 9 15:47:59 2024 -0700

    [Labware] Add pedestal_size_z to PLT_CAR_L5FLEX_MD_A00 (#237)

commit 087701a3c28b149ad57f001d2e8919a5833c8c7e
Author: 1dkone1 <119891122+1dkone1@users.noreply.github.com>
Date:   Sat Sep 7 19:39:39 2024 -0400

    fixed read_timeout for vantage (#236)

commit a2c827fb990e9e543dc714f7b0a48c2d7a329a79
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Sep 5 15:01:20 2024 -0700

    clearly differentiate between local and absolute size (#235)

commit 6eccd81f627d6d3074a7c9e469f66251d35100f1
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Sep 5 13:48:41 2024 -0700

    update changelog for #233

commit 52577a2613d897ac106f2105e0629dfa1216cb8c
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Thu Sep 5 13:43:40 2024 -0700

    [liquid_handling] use correct rotation matrix for anchor (#233)

commit 175bdab7a2dc0d0083b36bcd9216c2d126e5708c
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Thu Sep 5 10:13:40 2024 -0700

    [rotations] fix angles computed by grip directions (#234)

commit c6fc6917ad29433bf41204598d973c1ec169037a
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Sep 5 09:16:28 2024 -0700

    remove `items` from ItemizedResource (#231)

    * remove `items` from ItemizedResource

    * changelog

    * linting

commit d1b8cd7e9c648ecfcaeb7afc7b8753e969c4eda6
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Wed Sep 4 11:35:15 2024 -0700

    [liquid_handling] add in more valid grip combinations (#232)

commit 58481cad9060b28ddaa37fd1a8a79e4c6b38b675
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Tue Sep 3 08:53:11 2024 -0700

    [Fix] Fix carrier PLT_CAR_L5AC_A00 pedestal_size_z (#230)

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>
    Co-authored-by: jkh <1220444+jkhales@users.noreply.github.com>

commit 56958fe516563d35e274aee07a9769863728d3db
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Aug 30 23:57:25 2024 +0200

    fix {aspirate,dispense}96 type check

commit 19d1a95b879f739aaaef4589d946fbb340673e93
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Aug 30 01:35:29 2024 +0200

    cl for #229

commit 68e884805b390d824ae6ce03e6873c756e0caa7f
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Thu Aug 29 16:31:24 2024 -0700

    [Labware] Add support for 3.20 mm ultra wide bore tips (#229)

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>
    Co-authored-by: jkh <1220444+jkhales@users.noreply.github.com>

commit 8460459f58445b79dd7349976c004a0889c57697
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Thu Aug 29 22:23:26 2024 +0100

    Create NestedTipRack Class (#228)

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 079b7b8a60c506abf6d22bf9cb87645fc1b58d67
Author: Marielle Russo <67157875+maraxen@users.noreply.github.com>
Date:   Sun Aug 25 15:24:42 2024 -0400

    Added z and z nesting heights to Costar flat bottom 360 µL plates (#226)

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit a4896c9f13c17fbb148b3346d5f0defce0fb9237
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Sat Aug 24 08:51:11 2024 -0700

    [STAR] add liquid_surfaces_no_lld parameter to aspiration (#227)

    Co-authored-by: fderop <florian.van.de.rop@gmail.com>
    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit fd675edefdaf72f245e70deb9170c54fe4383be3
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Aug 22 14:20:15 2024 +0200

    allow STAR firmware planning (#224)

    * allow_firmware_planning

    * update CHANGELOG

commit 08371abd28be0e38458aa1c2ff27a43a27978e9c
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Aug 21 10:09:01 2024 +0200

    update changelog & rm print

commit 4a07f6a32a9a33d0370eb9c29015567c98aea002
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Aug 21 10:03:08 2024 +0200

    basic query

commit 9bd67a9febbb7ba88c748f705e9d51f4c2adb07c
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Tue Aug 20 23:01:03 2024 +0100

    Integrate Hamilton NTR (50 ul) (#223)

commit ed10ddbce0840d84ec2ca05260d39e978c1376f7
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Mon Aug 19 16:35:23 2024 +0100

    Make Plate Site-adaptive (Fix PLR plate location 3) (#205)

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 7de7d400d2f0981df08158fd584c44258e67871d
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Aug 17 16:57:54 2024 +0200

    update CHANGELOG

commit c24361b454f2b0456d74628352d95389232b4aa5
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Sat Aug 17 07:55:30 2024 -0700

    [Tilter] Add support for multiple tips per well (#218)

    * Fix server tests (#209)

    * fix lh server?

    * fix

    * test

    * fix list

    * fix lint

    * typing

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>
    Co-authored-by: jkh <1220444+jkhales@users.noreply.github.com>

commit 16a30beac466bea3ac5ec678207912d259223a3f
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Sat Aug 17 07:50:58 2024 -0700

    [serializer] handle closure (#220)

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 4b9500f99d853426857e708e1e384dfb1122ca59
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Sat Aug 17 07:47:43 2024 -0700

    [Labware] Add support for 1.20 mm wide bore tips (#222)

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>
    Co-authored-by: jkh <1220444+jkhales@users.noreply.github.com>

commit a0c0959d687215784c57084c7837684a8dd73fa5
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Aug 17 15:19:42 2024 +0200

    ignore *.swo

commit 9b31b238fef187511c66fc9ffc3a338d3857d6a2
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Aug 16 10:06:43 2024 +0200

    fix lint

commit 6ea363dd9b7123a1b63b02e1e7ee26f005cb4f37
Author: Robert-Keyser-Calico <51971252+Robert-Keyser-Calico@users.noreply.github.com>
Date:   Fri Aug 16 01:01:11 2024 -0700

    - added setup method that calls LiquidHandlerBackend and USBBackend setups (#219)

commit 48cb06a376035f43aa99a4b3140e76ef7efb95db
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Wed Aug 14 15:17:03 2024 -0700

    [HamiltonHeatShaker] add temperature controls (#217)

commit e5036d5f7fe8d889a967fe35ad8d874af0a4fe6b
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Tue Aug 13 02:30:15 2024 -0700

    [Resource] Add slim 300 uL tips (#216)

    * add slim 300

    * add docstring

    * Update tip_creators.py

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 92496419e60af3ce3f168ad24eb2934791999fbc
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Aug 12 17:41:41 2024 +0200

    it was actually #215

commit badede5db93ae300ff3c41ff92402b6eaf8804e5
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Aug 12 17:40:43 2024 +0200

    Revert "update changelog for #205"

    This reverts commit 0ad15420f49d16492813b40f182d700916256449.

commit bbef443067209f1d4df020c46446b9efc210fb64
Merge: 0ad15420 67a1d3f7
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Aug 12 17:16:36 2024 +0200

    Merge branch 'main' of https://github.com/pylabrobot/pylabrobot

commit 0ad15420f49d16492813b40f182d700916256449
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Aug 12 17:16:24 2024 +0200

    update changelog for #205

commit 67a1d3f74d7d636034bb57582442ea1f5e5aed4b
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Mon Aug 12 16:12:02 2024 +0100

    Make PlateAdapter z-offset Manually Adjustable + 1st Semi- & Non-skirted Plates (#212)

    * update Thermo Fisher Scientific Inc README

    * test README formatting

    * remove overflow information from README

    * add Thermo_AB_96_wellplate_300ul_Vb_EnduraPlate base definition for testing

    * adjust material_z_thickness to empirical testing

    * adding plate_hole_size_z & plate_z_offset

    * testing proper hole_size_z and plate_z_offset

    * add Eppendorf non-skirted plate

    * testing Eppendorf 96-well plate & rough volume/height functions

    * fix naming of Thermo_TS_96_wellplate_1200ul_Rb

    * fix linting & add guesstimates for alpaqua magnet & Hamilton PlateAdapter

    * fix Thermo Fisher Scientific Inc explainer in plates.py

    * update naming convention in README

    * updating height<>volume functions to polynomial fits

    * fix linting

    * Update plates.py

    * Update plates.py

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 9f1fcf5e6fe67cb383a1084ccbd76ff13a30f959
Merge: b37b7729 27a06b58
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Aug 9 22:53:37 2024 +0200

    Merge branch 'main' of https://github.com/pylabrobot/pylabrobot

commit b37b77298c8bbd82810307cdbbb1ca7d2b747cb6
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Aug 9 22:53:30 2024 +0200

    update visualizer tutorial

commit 27a06b58ecf1704e8b97540ef92c395298eed2d9
Author: Joe Laforet Jr. <76799675+joelaforet@users.noreply.github.com>
Date:   Fri Aug 9 16:53:16 2024 -0400

    Protocol Visualizer Overhaul: Making GIFs (#162)

    * Implemented TubeRack and Tube methods and added to visualizer

    * added reservoirs to opentrons

    * Added new reservoir class for OpenTrons Reservoirs

    * bugs with reservoirs and visualizer. Maybe also in how children are assigned too

    * added code for OpenTrons reservoirs and got them on visualizer

    * made lint/test/typecheck happy

    * Normalize all the line endings

    * no need for new reservoir class

    * made test/lint/typecheck happy

    * screwing around with writing movies from visualizer. Broken atm

    * Added gif renderer to visualizer

    * added white background to gifs

    * made frames save every 0.5s, rather than on update calls

    * added slider for save rate, download as zip, display gif in browser

    * removed temp folder, garbage cleanup

    * first version of gif visualizer done

    * removed unecessary file

    * fixed lint, typecheck, and tests

    * re-structured the layout of the visualizer

    * working visualizer with tweaks

    * some format

    * background big enough, don’t move on drag

    * minor UI changes

    * made reservoir super plate on visualizer

    * refactor UI handling a bit

    ---------

    Co-authored-by: Joe Laforet <joelaforet@JLaforetLaptop>
    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit bdc445048c501c08cb63877882e616cbb3d5871b
Author: ray <47133192+ben-ray@users.noreply.github.com>
Date:   Fri Aug 9 12:44:15 2024 -0700

    add 32 tube carrier for 1.5ml eppendorf tubes (#204)

    * add 32 tube carrier for 1.5ml eppendorf tubes

    * add eppendorf tube def

    * clean

    * lint

    * fine-tune tuberack def

    * lint

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 60db08f9b7218b2e227249406386e4bf916441b9
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Aug 9 21:34:54 2024 +0200

    Serialize functions (#215)

    * marshal functions

    * serialize functions

    * typecheck

    * remove old code

commit cc180b107b4b3d43a1cc71f006a79b8fa0207597
Author: ray <47133192+ben-ray@users.noreply.github.com>
Date:   Fri Aug 9 11:20:48 2024 -0700

    ray/make_chatterbox_pretty (#208)

    * ray/make_chatterbox_pretty

    * remove extra print

    * remove hamilton in favor of lh

    * unbreak

    * just don’t have extras with kwargs

    * formatting

    * add tip pick/drop

    * format pick_up & drop

    * update changelog

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 08a36664fdbac871336d5b2ada2952678af0ce2b
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Aug 9 19:24:05 2024 +0200

    fix import serial in ham tilt module

commit 4c385cd834e43c6bf65492d450a68ecc3a583e15
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Mon Aug 5 12:41:29 2024 +0100

    Integrate Opentrons 96-well Aluminium Adapter (#211)

    * add Opentrons 96-well aluminium plate adapter

    * Adjust surrogate dz value for Opentrons 96-well aluminium adapter

    * clarify symmetry & resulting orientation-agnosticity

    * add Opentrons README

    * update CHANGELOG

commit 9952fa1b6fde6d506560e83c3ec79f467467fe11
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Aug 1 18:49:15 2024 +0200

    Fix server tests (#209)

    * fix lh server?

    * fix

commit 59fdcb78656db320f9ba48fbc37259b80193a4bb
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Aug 1 18:12:13 2024 +0200

    remove PLT_CAR_L4_SHAKER

commit 20c61c29c6b164212c3cc0bc0a60eb8d166f854f
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Aug 1 18:09:47 2024 +0200

    delete hamilton_parse

commit 1a99c490dff66d744226b72a1d661dfe2291ab3e
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Aug 1 18:06:19 2024 +0200

    remove load_from_lay_file

commit 793d20d675c71d40e89e8d0c15d20b59fa5aa748
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Aug 1 13:36:44 2024 +0200

    ugh

commit 90d89357ed78df23e0f32de6f5fcd78499c04179
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Thu Aug 1 03:56:28 2024 -0700

    [Feature] Rewrite tilt module (#187)

    * add self.ser

    * add initial pos to initialisation

    * rewrite_tilt_module

    * rewrote tilter

    * add pedestal

    * edit init

    * remove underscore

    * HamiltonTiltModule is a Tilter again

    * solve issues

    * remove comment

    * fix float

    * add f

    * add additional_z

    * remove additional_z

    * fix type

    * docs and mark `experimental`

    * fix type once more

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 638bb88661f073d67b05c9ecefd8cf9d0aed943d
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Jul 31 12:44:26 2024 +0200

    only if bav is not none

commit 1f7274def3723e677d32a9b9bcfe054d82664f9c
Author: ray <47133192+ben-ray@users.noreply.github.com>
Date:   Wed Jul 31 03:42:41 2024 -0700

    enable dispense blowout on STAR backend (#207)

    * enable dispense blowout on STAR backend

    * add back at end

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 51e0015c137929afd2723a3ca7a2ef85add61ae8
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Jul 27 18:04:47 2024 +0200

    type check in LH

commit 92983dec8be0a7c86a2bc24386d2c606435fedd9
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Thu Jul 25 06:54:08 2024 -0700

    [lawbare] add basic height functions and example (#200)

    * [feature] add basic height functions and example

    * 2 spaces, not private, no redundant doc

    * move some to volume_functions

    * consolidate

    * deprecation warnings

    * fix

    * fix celltreat

    * lint

    * tiny format

    * plr plate naming standard & changelog & ct readme

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit d239b54cd9a6a4d9cdbcffb09b1681fe1042ba51
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Jul 20 00:51:48 2024 +0200

    ordered_items in ItemizedResource (#201)

    * use ordered_items instead of items in ItemizedResource

    * fix TipRack.set_tip_state and ordering

    * support reverse ranges, grid instead of diagonal (as before)

    * ordered_items in TubeRack

    * smh

    * bring back num_items_{x,y} when allowed

    * ot loading

    * tecan loading

    * flatten when ot loading

    * smh

    * type checking & linting

    * doc

    * update changelog

commit d6feeb1998851f9e7f5f9d89b8893643d387994c
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Jul 20 00:42:26 2024 +0200

    update mypy

commit bcbe101b1e7939b08a2a38cd9441f2ae9351aa7a
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jul 18 20:09:55 2024 +0200

    handle int/float in STAR params

commit 60ff5caf7f9b30e0c0321618dc349afbf6367af0
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Thu Jul 18 16:29:38 2024 +0100

    Fix Aspirate & Dispense Arguments (#199)

    * making minimum_traverse_height_at_beginning_of_a_command & min_z_endpos take mm

    * make style consistent with rest

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 7e2ff4b1cc285c4ab715db864e564001469dac5e
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Thu Jul 18 02:36:52 2024 -0700

    Add pedestal_size_z to PLT_CAR_L5MD{_A00} (#198)

    * add pedestal

    * Update CHANGELOG.md

    * Update CHANGELOG.md

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 282ebfa7bd0ab86ee58950dc53fad286948e034a
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Jul 17 13:52:34 2024 +0200

    fix `Cos_96_DWP_2mL_Vb` in table

commit 1fa8773a09265e690b5dd17599d1c31e18206984
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Jul 17 13:50:55 2024 +0200

    use Cor_96_wellplate_360ul_Fb in tutorials

commit 5ad5f897800d47ebfddaf7394c8699cfa27af032
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Jul 16 23:22:05 2024 +0200

    make units in STAR method parameters consistent (#191)

    * initial commit

    * STAR

    * move mid-level core methods

    * forgot some & typing

    * move core_check_resource_exists_at_location_center

    * fix

    * core_check_resource_exists_at_location_center

    * update changelog

    * vantage

    * forgot these

commit b07dd061d9959fd880bd9267898b32d5e3e36cf8
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Jul 16 19:33:08 2024 +0200

    make libusb_package an optional dep

commit 8a497892e3bb23311a6c36ba3b79e956677735c5
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Jul 16 10:08:15 2024 +0200

    support exotic number types

commit 912975518e0bed0115c05b327ce017b05b6f7f86
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Mon Jul 15 11:32:20 2024 +0100

    Integrate material_z_thickness (Container) & skirt_base_to_well_base (Plate) (fix PLR Plate location 2) (#183)

    * material_z_thickness (Container) & skirt_base_to_well_base (Plate) integrations

    * update CHANGELOG

    * make material_z_thickness optional, delete skirt_base_to_well_base

    * add material_z_thickness to Cor_96_wellplate_360ul_Fb

    * update changelog

    * change this back

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 0b939e6768cfed263f8cae6a91fe93a1494fb884
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jul 15 12:26:57 2024 +0200

    update sphinx

commit 0a945ab50b069fc6c90679ae6f0c0c9f4e0c369d
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jul 15 11:55:34 2024 +0200

    type checking

commit e9e30cedaedf20cc5d5215b738c104b3294354ef
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Mon Jul 15 10:39:17 2024 +0100

    Fix Plate Stacking in ResourceStack (#192)

    * troubleshooting lid assignment in ResourceStack

    * testing ResourceStack part 2

    * fixing ResourceStack.get_size_z()

    * testing (a) empty stack on stack site, (b) empty stack on MFX DWP module, (c) & (d) same but with plates

    * fix linting

    * tiny rewrite

    * support get_size_z when direction != “z”

    * fix typing & tests

    * refactor & add tests

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 70e0f03f3045a3837b6ce61e64d10c644a7fd89c
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sun Jul 14 20:48:49 2024 +0200

    full xyz rotations (#195)

    * full xyz rotations

    * fix

    * update changelog

    * conventional axis names, not planes

    * style

commit 21ffbb06f90a2451a15b194ae8e097d0a44fd375
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Jul 13 22:08:59 2024 +0200

    ugh

commit 6e2616bc0c10c8aa63384f0be0f6e609a9cb8e2d
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Jul 13 22:04:14 2024 +0200

    warning for big resources (#194)

commit a1b63e97cad92456e1409ef62c6293eb67701a71
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Jul 12 18:31:30 2024 +0200

    don’t run ci twice on PRs from plr repo

commit c4cd1c3ca050a5e98c98e10ace019d29a0fd3c63
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jul 8 17:05:06 2024 +0200

    add PLT_CAR_L4_SHAKER -> MFX_CAR_L5_base to changelog

commit bf61aa1365957df0c02566918bc748da84568b2d
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Mon Jul 8 15:34:24 2024 +0100

    Add Shaker Carrier (a MFX Carrier) Information (#188)

commit 1aadf1f635b69c40fee4898abff38f20b1b64060
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Jul 2 13:47:20 2024 +0200

    use list with multi channel single-resource op

commit bc52106f88df933af0f8774b43e0a64ac8581e90
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Jul 2 00:25:39 2024 +0200

    deprecate hamilton_parse

commit 9f142940071f048acae0234c3ad47325385a9bb3
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue Jul 2 00:16:22 2024 +0200

    offset no longer optional

commit 262479f19d14daeb7044c9c130078cc908344c5e
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jul 1 23:40:01 2024 +0200

    deprecate single values in LH (#185)

    * deprecate single values in LH

    * forgot the headers

    * remove unused improt

    * fix tests

    * remove dumb function

commit 8e9d8d846358d15902b0e441ea6c201c18e52f7b
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Jun 28 17:48:16 2024 +0200

    Raise error undefined resources (#172)

    * raise exception for undefined resources

    * add this image

    * accidentally added this

    * Cos_96_EZWash-> Cos_96_wellplate_360ul_Fb

    * don’t use Cos_96_EZWash in tests

    * (Cos->Cor)_96_wellplate_360ul_Fb

    * smh

commit f19506d470fc070b121307827eb5d7e5f76b6aab
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Jun 28 15:57:16 2024 +0200

    fix OT resource loading and defining

commit de037346f98ad3a834a175e40db72d01c24bc926
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Jun 28 11:28:36 2024 +0200

    fix rectangle drawing in visualizer

commit e01702efedbe7586ee7fc1c2a144ac7b5f56297e
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Jun 28 00:22:13 2024 +0200

    Create CHANGELOG.md

commit 31614ed748edfec05daef7b1b88d8cc5d536161e
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Jun 28 00:06:59 2024 +0200

    update doc

commit 6beeacb246351ee3e8a0ad2bfec96f8dd432bb3f
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jun 27 21:08:12 2024 +0200

    smh

commit 0b30920be4234f09b3b1855b5e398794562e91d6
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Thu Jun 27 12:05:01 2024 -0700

    [resources] add hamilton tilt module resource (#181)

    * [resources] add hamilton tilt module resource

    * move to plr.tilting module, add name param, Tilter

    ---------

    Co-authored-by: JJ <jj@retro.bio>
    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 1ada672cbbccfc6cc2decdb0786b601d4bd58ff9
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jun 27 20:50:31 2024 +0200

    fix

commit 61dade196d3d93415aef364cdad5df2b8faa5ee3
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jun 27 20:48:37 2024 +0200

    add tilt module (#165)

    * add tilt module

    * add async (#175)

    Co-authored-by: jj <jj@retro.bio>

    * add pylabrobot.tilting module / modernize

    * add tiny doc

    ---------

    Co-authored-by: jkh <1220444+jkhales@users.noreply.github.com>
    Co-authored-by: jj <jj@retro.bio>

commit 1d851c494919cc4564a1a592aa88bd0ba0b15d4e
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jun 27 12:45:00 2024 +0200

    Correct plate dimensions (#180)

    * Correct plate dimensions

    * more

    * fix

commit cf972b40e0cada95e811e78e5bb57da51d83e49d
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jun 27 11:12:42 2024 +0200

    minor formatting

commit f54a81d29c5180530565a1637a5e1554b4875277
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jun 27 11:11:33 2024 +0200

    Add meaesure nesting_z_height to docs

commit 2fd8e52101495a90794dab308d54f3bb722bb0cd
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jun 27 10:54:50 2024 +0200

    update measure picture

commit 60cc8eddc359f7cb7457e40e520561dc8cac2a86
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jun 27 00:30:45 2024 +0200

    move volume <->height functions to Container

commit bcc381b535d0efd598a375f221dea86d5cb2e0c1
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Jun 26 19:55:38 2024 +0200

    expose STAR.dispense liquid_surface_no_lld param

commit 0c3587498821e517b52777073eb744262d0f4221
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Tue Jun 25 13:10:05 2024 +0100

    TubeCarrier Integration (#174)

    * Create Tube_CAR_24_A00

    * correcting README PNGs

    * Define 14ml Falcon tube and add tested TubeCarrier dimensions

commit 30377677903bc6a60313651cabe5d182091428c7
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jun 24 21:23:25 2024 +0200

    fix lh.summary longest name bug

commit b7b39361666baf56165f8b1632810c0fe2aa4b96
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jun 24 16:16:38 2024 +0200

    remove “currently defined” (#169)

commit 6ad9e53e22d5f405fdf6f608aa38646eda5aa1e9
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jun 24 13:08:44 2024 +0200

    fix docs building

commit 25a7ff37a64bec7c5663243f7ca0b87421edf893
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jun 24 12:04:47 2024 +0200

    update

commit 3dd3965987da277f27790ee4c68e3abebe091ef4
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Mon Jun 24 10:58:19 2024 +0100

    TroughCarrier Integration (#168)

    * polynomial volume compute fit

    * update trough docstring

    * fix linting

    * well -> trough

    * include 0 in polyfit

    * Update ml_star README

    * Update trough_carriers.py

    * rename true_dz to through_base_to_container_base

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit dd832cc31122acf5063075e13919f25daa42b0d2
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Fri Jun 21 20:38:17 2024 +0100

    Fix Lid Placement (#161)

    * update Cos_6_wellplate_16800ul_Fb, add nesting_z_heigth

    * integrate lid_nesting_z_height updates to liquid_handler.py

    * updating unit tests

    * fix linting

    * update STAR_tests.py

    * declare lid_nesting_z_height to Cos_96_EZWash for unit testing

    * use Lid in Plate instead of duplicating attributes

    * make hamilton resources with Lid

    * use lid param in tests

    * update tecan resources

    * format

    * tiny fix

    * update other plates

    * ugh

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit e899965b61d20a5343d44c162eb4095623f5f0ce
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Wed Jun 19 12:19:24 2024 -0700

    [STAR] fix get_core typo (#167)

commit 1c13e361fb004527a492536338e96c64932194ad
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Wed Jun 19 11:06:26 2024 -0700

    [resources] add accidentally deleted ShakerCarrier back in (#166)

    Co-authored-by: jj <jj@retro.bio>

commit e77efc490644f8d1221bdfb3f823d8e7dcd63700
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Wed Jun 19 10:44:26 2024 -0700

    [STAR] allow core hotel to be configured (#163)

    * [STAR] allow core hotel to be configured

    * change to coordinate

    * fix formatting

    * fix typo

    ---------

    Co-authored-by: jj <jj@retro.bio>

commit e63b80f61ad7e19ab43e329529a02631a8357c9d
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Mon Jun 17 11:46:26 2024 +0100

    Make PlateAdapter accessible on PlateCarrierSite (#160)

    * updating carrier.py

    * fix plate_adapter.py Coordinate import

commit cfc0a3df8570765771dd3ea3dd96fb92fa3f72aa
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Jun 15 16:56:34 2024 +0200

    move to plate carriers page

commit 0a5857b9561f9773e0fa96145f156ad3362972b6
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Jun 14 12:09:25 2024 +0200

    links

commit a59d204793d0ddb549fd31c871f0190dc33efbe3
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Jun 14 12:02:13 2024 +0200

    test mixing with volume tracker

commit 1f9860e7b94da00c11a5f0cccf0538498c336264
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Fri Jun 14 02:12:07 2024 -0700

    [feature] remove lld_search_height override and replace by argument values (#159)

    * [feature] remove lld_search_height override and replace by argument values

    * [fix] removed testing print statement

    * Update STAR.py

    * also dispense

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit e6450ca976c4880497cf9a372e17ef342603473d
Author: joelaforet <76799675+joelaforet@users.noreply.github.com>
Date:   Fri Jun 14 04:51:24 2024 -0400

    Cross Contamination Tracker (#138)

    * Implemented TubeRack and Tube methods and added to visualizer

    * starting to implement cross contamination tracking

    * fiddled with first iteration of CC tracking

    * tested out turning on/off CC tracking

    * fixed bug where liquids were being added as characters instead of strings to the liquid history on add calls

    * fixed bug with updating using a list of (liquid,vols)

    * fixed line endings

    * reset back to PLR main branch

    * FINALLY made lint and tests happy, except for 1 test :(

    * fixed everything and verified functionality

    * Moved aspirate cross contamination check to volume_tracker

    * Made lint/tests/typecheck happy

    * rolled back to cross contamination check being in liquid_handler instead of volume_tracker, PRE-LINT CHECK

    * made typecheck/lint/tests happy

    * tiny format

    * clarified logic issues

    * tiny format

    * fix

    * made lint/tests/typecheck happy

    * forgot await keyword, fixed broken test

    * changed dispense code to correctly update the liquid history, was previously making reference error

    * v tiny format

    * bring back changes from plr:main

    ---------

    Co-authored-by: Joe Laforet <joelaforet@JLaforetLaptop>
    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 1d9f10ad0d2c0b4fa17bf9df63edeaf82d5f9525
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Thu Jun 13 22:37:40 2024 +0100

    Implement pedestal for CarrierSite & MFXModule (fix PLR Plate location 1) (#143)

    * expose CarrierSite.pedestal_size_z

    * update carrier naming guide

    * Update README.md

    * Update README.md

    * expose pedestal_size_z to MFXModule class

    * fix linting

    * fixing type checking

    * fixing None type handling

    * adding little TODO for plate quadrants

    * PlateCarrierSite

    * resolve update conflicts

    * add guide for missing pedestal_size_z

    * exclude plate_carrier_site from HamiltonDeck.summary

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 691143fc014ca1d2d2058741000705369d5b6a16
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu Jun 13 19:31:41 2024 +0200

    remove superfluous doc string things

commit e4baf715e701e2125764aaf4167faa568327b7e4
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Thu Jun 13 14:16:55 2024 +0100

    Adaptive lh.summary() (#158)

    * modifying lh.summary to be name len-adaptive

    * fixing linting

    * complete_resource_column as generator

    * fixing unit test

    * enable parsing of deck children that are not Carrier

    * fix unit tests

    * use  tree instead of string for longest name

    * refactor HamiltonDeck.summary

    * fix lint and type

    * fix long name issue

    * handle MFXModule, and be recursive again

    * remove unused improt

    * enable recursive search through entire deck tree

    * update unit test

    * Revert "enable recursive search through entire deck tree"

    This reverts commit e81c93123af493938be48e8bc9ec394bc9887ab5.

    * Revert "update unit test"

    This reverts commit 6bb323233a68f12799a9b78076c823a57939edb2.

    * fix excluded_categories child bug

    * style

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 98042cc0b67094c115be986f367db27830a4bf17
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jun 10 23:54:43 2024 +0200

    doc config

commit ad2bb4d0a3fc69ecb90aae369518209aa9c60106
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jun 10 23:50:39 2024 +0200

    rename ini_file.py to ini_config.py

commit 3b3615b4c30548612c7e8723d95cc849bb54aeb1
Author: jt05610 <59382877+jt05610@users.noreply.github.com>
Date:   Mon Jun 10 13:48:25 2024 -0600

    Add config file (#155)

    * create .editorconfig file to synchronize formatting for development

    * add pytest-asyncio to development dependencies

    * feature: create module-level config file.

    Adds the config module which facilitates managing configuration for pylabrobot. Default config for development is in pylabrobot.ini which mimics the config that was already found in the module.

    Configs are searched for in the current directory and all parent directory. If none are found, a new one is created in the current working directory.

    Currently, it supports .ini files, but wrote to easily support json, yaml, etc.

    I set the default log level to INFO for end users.

    * feature: put pylabrobot.ini in the project directory when pylabrobot is installed. The default is located at defaults/pylabrobot.ini

    Note: I set the default log level to INFO for end users.

    * Revert "feature: put pylabrobot.ini in the project directory when pylabrobot is installed. The default is located at defaults/pylabrobot.ini"

    This reverts commit 3a0f17811fc6b5c5783dab8e7363dec602ddc79b.

    * feature: create pylabrobot.ini at the module level by finding the .git directory. If this cannot be found, pylabrobot.ini gets created in the current directory.

    * fix: no more pytest-asyncio and support python 3.8 & 3.9 typing

    * fix: support python 3.8 & 3.9 typing

    * fix: support python 3.8 & 3.9 typing

    * fix: support python 3.8 & 3.9 typing

    * fix: support python 3.8 & 3.9 typing

    * fix: support python 3.8 & 3.9 typing

    * Revert "fix: support python 3.8 & 3.9 typing"

    This reverts commit 22bab216164f7dbe94ee18ed904ad5ed9f3b5b9a.

    * fix: linting and typing errors

    * fix: linting and typing errors

    * make LOG_TO_STRING initialize from LOG_FROM_STRING

    use Path as type for log_dir in Config.Logging instead of Union[str, Path]

    * Rename MultiFileReader
    Create JsonReader and JsonWriter for config
    Add json filetype to default reader

    * remove unnecessary cfg_dict = cfg.as_dict from IniWriter

    * add config with json request to server

    * lint

    * remove unnecessary raise NotImplementedError

    * Turn FileReader/FileWriter into FileLoader/FileSaver for clarity. Consolidate Config ABCs into service.__init__. Create HTTPLoader.

    * remove unneeded http file and fix typing of service.__init__

    * fix config tests

    * clean & fix typing

    * all test logs into <project root>/test_logs

    * switch Reader/Writer and Loader/Saver

    * add function for getting project root

    ---------

    Co-authored-by: jtaylor <jonrtaylor12@gmail.com>
    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 5fac5f5573a912c161f21dd85c053a0d4cfa97eb
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sun Jun 9 02:10:08 2024 +0200

    fix clario star checksum

commit 775a99b6e8e1c9fec525937b24dba121744b8354
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri Jun 7 00:22:00 2024 +0200

    fix doc making

commit a60a7afb71e1e527c62618068d2cf49166477a54
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Thu Jun 6 19:51:39 2024 +0100

    Cos_96_DWP_2mL_Vb Integration + Naming Standard Suggestion (#156)

    * test new Porvair_6_reservoir_47ml_Vb definition

    * update Porvair README

    * renaming Cos_96_DWP_2mL_Vb & Cos_6_MWP_16800ul_Fb

    * update Corning-Costar README

    * Update README.md

    * rename ThermoScientific_96_DWP_1200ul_Rd

    * update Thermo README

    * updating new nomenclature

    * Add PLR resources README and plate naming standard recommendation

    * add examples to resources README

    * fix resources README headers

    * fix type in resources README

    * add little resource subclass explainer to README

    * fine adjustment of volume and height calculations for new Cos_96_DWP_2mL_Vb

    * minor edits

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit e74e169093d882933ff9cae4ccb517bb1db4a8f1
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Wed Jun 5 20:17:10 2024 +0100

    Creating PlateAdapter (#152)

    * Initiating plate_adapter module

    * new Alpaqua magnum FLX definition as PlateAdapter

    * Second PlateAdapter example, Hamilton_96_adapter_188182

    * Unravelling correct resource to resource assignment with logic

    * fixing linting

    * make site_pedestal_z non-optional

    * investigtae assign_child_resource Signature

    * fixing linting

    * implement Well-grid to hole-grid compatibility check

    * implement Rick's _compute_child_location idea

    * working on linting fix

    * minor format

    * add WIP comment

    * move TypeError to assign_child_resource

    * lift protection from compute_plate_location to enable access in LiquidHandler

    * remove grids' spacing limitations

    * tiny format

    * remove _child_resource_location

    * fix type and lint

    * remove adapter hole spacing constraint

    * tiny format

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit bbc68aa9b8e30044841a06ef65b5bc394b66913c
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Jun 5 07:06:26 2024 +0200

    remove LiquidHandler.unassign_resource

commit 083841c6287288edf2573d0e534376edc9c2e090
Merge: d9baaf1c 70344495
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed Jun 5 06:48:19 2024 +0200

    Merge pull request #154 from jt05610/fix-asyncio-threading

    fix: close event loop that starts in thread

commit 703444959b975b093b2bf9e141421d2cca379ef4
Author: jtaylor <jonrtaylor12@gmail.com>
Date:   Tue Jun 4 16:53:46 2024 -0600

    fix: close event loop that starts in thread

commit d9baaf1c6abfdbe434f7ae5e4ae6477ad1de7634
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Mon Jun 3 12:21:58 2024 +0200

    add fans doc, rename module for compatibility

commit 12c4a525ef3ac439fb010ba71b1e31ce47410fe2
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Jun 1 06:13:30 2024 -0400

    simplify {aspirate,dispense}96 container

commit 71bdcff94afc13f40ca7647cf83e021798bd5672
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat Jun 1 05:40:42 2024 -0400

    raise BlowOutVolumeError (#153)

    * raise BlowOutVolumeError

    * set back to None

    * fix

commit 4756af76b1533da9b944cf079b80a14cd78f0762
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri May 31 23:40:31 2024 -0400

    create carrier sites with klass

commit d16d995b01ab6b6eda51b323271bdea5a11b953a
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri May 31 23:20:33 2024 -0400

    create_equally_spaced_{x,y,2d}

commit ef0546b45524153a39a145a105d62da256bef271
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Fri May 31 19:33:25 2024 -0400

    fix hlc blow out air in STAR.dispense

commit ce99845a9bc4c6301bdda8fa654cfc6f3d16b1d5
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Thu May 30 16:12:11 2024 -0400

    (that only works on 3.12)

commit 938fe3ec5be52ed2cf3a854673fcf3cce8c0208c
Author: Marielle Russo <67157875+maraxen@users.noreply.github.com>
Date:   Thu May 30 16:06:28 2024 -0400

    Allow 96 head to perform liquid handling operations (Aspirate and Dispense) on arbitrary containers. (#150)

    * Added support for using 96 head to aspirate and dispense on with Trough

    * tiny format

    * Update liquid handling backend methods to use `AspirationContainer` and `DispenseContainer`

    The code changes modify the `aspirate96` and `dispense96` methods in the `EVO`, `LiquidHandlerBackend`, `OpentronsBackend`, and `ChatterBoxBackend` classes to use the `AspirationContainer` and `DispenseContainer` classes instead of `AspirationTrough` and `DispenseTrough`. This change aligns the method signatures with the updated class names in the `standard.py` module.

    * linting

    * fix

    * fix tests

    * Trigger Build

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit e8fe49ccef33015894bb6a2bc7c6bad267466c89
Author: joelaforet <76799675+joelaforet@users.noreply.github.com>
Date:   Thu May 30 15:06:06 2024 -0400

    OT2 'reservoirs' (#149)

    * Implemented TubeRack and Tube methods and added to visualizer

    * added reservoirs to opentrons

    * Added new reservoir class for OpenTrons Reservoirs

    * bugs with reservoirs and visualizer. Maybe also in how children are assigned too

    * added code for OpenTrons reservoirs and got them on visualizer

    * made lint/test/typecheck happy

    * Normalize all the line endings

    * no need for new reservoir class

    * made test/lint/typecheck happy

    * minor formatting

    ---------

    Co-authored-by: Joe Laforet <joelaforet@JLaforetLaptop>
    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 567110d8304c6558a6deb0daedb76c3aab080383
Author: Florian De Rop <55103921+fderop@users.noreply.github.com>
Date:   Tue May 28 18:06:50 2024 -0700

    [STAR] Remove unused argument from docstring (#148)

commit d3568d3a935b340b584d95f967e8a5aa1d69b19e
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue May 28 08:45:30 2024 -0400

    get_anchor (#147)

    * get_anchor

    * type

commit 288e1d72848dbb7a1625d7c5979f07b7de61dcc9
Author: Phi Nguyen <56458094+Ph1so@users.noreply.github.com>
Date:   Mon May 27 14:28:06 2024 -0400

    added size to plate reader in README (#146)

commit c1ca2b55ebd1f3c37cb09c91154529d0d54dba49
Author: ramirjos <77865956+ramirjos@users.noreply.github.com>
Date:   Sun May 26 21:28:42 2024 -0400

    add the only fan (#144)

commit 3640150319d5667dcc558bfd0961ade6c0e0a2c9
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat May 25 23:02:43 2024 -0400

    fix

commit 61e1275b71eee9b0e0df5a2717bca1a4d55df112
Merge: 996a32c9 f84b5611
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat May 25 23:00:25 2024 -0400

    Merge branch 'main' of https://github.com/pylabrobot/pylabrobot

commit 996a32c9a94fd24f393453ca818994010d5563b8
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat May 25 23:00:16 2024 -0400

    update tecan well height definition

commit f84b561165cacb0c9b827a23de126c460f7a4453
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Sat May 25 18:34:09 2024 +0100

    Well compute_height_from_volume method integration (LLF part 2) (#139)

    * Well compute_height_from_volume integration

    * add tolerance explanation

    * fix linting

commit 14f1ce5240b1bd3d3df95112942236fcb6bf7670
Author: Marielle Russo <67157875+maraxen@users.noreply.github.com>
Date:   Sat May 25 13:29:54 2024 -0400

    Add serialization and deserialization methods to Pump, PumpArray, and PumpCalibration (#140)

    * feat: Add serialization and deserialization methods to Pump, PumpArray, and PumpCalibration to allow for calibrations to be serialized and deserialized separately and within instances of pumps.

    The commit adds serialization and deserialization methods to the `Pump`, `PumpArray`, and 'PumpCalibration' classes. These methods allow instances of the classes to be converted to and from a dictionary representation, making it easier to store and retrieve their state. This feature improves the flexibility and usability of the classes.

    * minor formatting

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 8eca518580dc9b5f12a272411190097201129ab1
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Thu May 23 18:23:56 2024 +0100

    Calculate height from volume in container (LLF part 1) (#136)

    * implementing height functions (3 / 5)

    * fixing type checking

    * fixing int 0

    * fixing linting

    * two more height functions

    * enhancing_height_of_volume_in_spherical_cap

    added docstring and ValueError in case liquid_volume given exceeds volume of spherical cap (useful when used as a standalone function, redundancy in height_functions)

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit adeeff75941e14cede7db46d15bffd4f19155d89
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed May 22 03:27:10 2024 -0400

    fix type

commit ac3e45ff495aaa2f1b02cd56bc5628f784c88378
Author: ramirjos <77865956+ramirjos@users.noreply.github.com>
Date:   Wed May 22 02:53:01 2024 -0400

    fix z offset for 96 tip pickup (#137)

commit 5bad3ae812f21d9b33893dcb34f05c1b6ee88c95
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Tue May 21 19:09:43 2024 +0100

    Thermo scientific 96 1200ul rd integration (#135)

    * ThermoScientific_96_1200ul_Rd integration

    * adding docstring with useful information in the field

    * fixing linting

commit 8fe9b0b770333b4fa0e1600b73df75e73ec2cd9b
Author: joelaforet <76799675+joelaforet@users.noreply.github.com>
Date:   Fri May 17 15:22:15 2024 -0400

    Visualizer showing volume updates for add_liquid() and remove_liquid() calls. (#134)

    * Added functions to TubeRack and Tube and added them to the visualizer

    * fixed bug in remove_liquid() and add_liquid() not updating on the visualizer

    * linting

    ---------

    Co-authored-by: Joe Laforet <joelaforet@JLaforetLaptop>
    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit dc9a40fae19bdb17c78a0b73d474cd16c7e78e67
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Thu May 16 15:35:59 2024 -0700

    [STAR] fix core gripper location (#133)

    Co-authored-by: jj <jj@retro.bio>

commit f382dd2a909fd650598f4a0f36a4b61f67e1e150
Author: joelaforet <76799675+joelaforet@users.noreply.github.com>
Date:   Thu May 16 16:52:55 2024 -0400

    Added functions to TubeRack and Tube and added them to the visualizer (#132)

    * Added functions to TubeRack and Tube and added them to the visualizer

    * minor formatting

    ---------

    Co-authored-by: Joe Laforet <joelaforet@JLaforetLaptop>
    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 1919727e2d142ec81d2a1a8adc02acf9a7b1f96b
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Wed May 15 18:12:51 2024 +0100

    ShakerCarrier integration (#130)

    * PLT_CAR_L4_SHAKER definition

    * Make PLT_CAR_L4_SHAKER a MFXCarrier

    * Polish PLT_CAR_L4_SHAKER

commit f8b539eb4eee7a9e44683a913755ba695e65d26e
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Wed May 15 00:04:09 2024 +0100

    Alpaqua MAGNUM FLX integration (#129)

    * Alpaqua MAGNUM FLX definition verification

    * correcting unnecessary wildcard import

    * correcting missing Coordinate import

    * only allow V and U bottom plates

    * fix type / only take plates …

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit b144f11c90a18c5493db1755f6bc8e9edb100229
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue May 14 16:29:37 2024 -0400

    fix linting errors

commit 7d316afd4cce7c4cbc1f59f1333b7c280eb9f6de
Author: Charlotte Christensen <161732433+charlotte-ris-MIT@users.noreply.github.com>
Date:   Sun May 12 18:36:52 2024 -0400

    fix greiner 384 plate (#128)

commit 9e664e1fb4c28e370214225dc7e10eb6436fc564
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sun May 12 13:28:13 2024 -0400

    fix some STAR error messages

commit 2c7d05d335d81d1aeb71f0ba8f7f9409794cec97
Author: Nicolás A. Méndez <naikymen@users.noreply.github.com>
Date:   Sat May 11 23:12:46 2024 -0300

    Add "__repr__" and "print_grid" to itemized_resource to display item occupacy (#127)

    * Add "__repr__" to itemized_resource, displaying a grid of occupied/free spots

    Example output:

    ```
    12x8 TipRack
        1  2  3  4  5  6  7  8  9  10 11 12
    A:  -  -  -  -  -  -  -  -  -  -  -  -
    B:  -  -  -  -  -  -  -  -  -  -  -  -
    C:  -  -  -  -  -  -  -  -  -  -  -  -
    D:  -  -  -  -  -  -  -  -  -  -  -  -
    E:  -  -  -  -  -  -  -  -  -  -  -  -
    F:  -  -  -  -  -  -  -  -  -  -  -  -
    G:  -  -  -  -  -  -  -  -  -  -  -  -
    H:  -  -  -  -  -  -  -  -  -  -  -  -
    ```

    * Add LETTERS

    * linter errors

    * fix type checking

    * fix type checking again

    pylabrobot/resources/itemized_resource.py:390: error: Incompatible types in assignment (expression has type "str", variable has type "list[list[str]]")  [assignment]
    pylabrobot/resources/itemized_resource.py:393: error: Unsupported operand types for + ("str" and "list[list[str]]")  [operator]

    * replace __repr__ with print_grid

    makes more sense, and is required because there is no way for itemizedresource way to know how to check for or represent the items from classes inheriting from it (see comments in code)

    * add footer

    * _occupied_func: replace Resource hint with T

    "T is a placeholder for the resource that is "itemized" by ItemizedResource. It is TipSpot for TipRack, Well for Plate, and Tube (soon TubeSpot) for TubeRacks"

    * Add _occupied_func method to TipRack

    This overrides _occupied_func in ItemizedResource, making print_grid informative about tips in tipspots

    * linter fixes

    * fix typo

commit 0b08a1a8719b729c160b25eb3db6ee69396b22fb
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat May 11 09:15:25 2024 -0700

    fix STAR.request_{y,z}_pos_channel_n

commit 52d8b5b5c61a524075b94464f2aa187e5deb8acd
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Sat May 11 09:04:15 2024 -0700

    fix LTF pickup on STAR

commit 8f5f77f790a4819c0b8e539dbd932992284527ec
Author: Ben <47133192+ben-ray@users.noreply.github.com>
Date:   Wed May 8 18:55:54 2024 -0700

    update docstrings for swap_speed in STAR.py (#126)

commit 254d424e90ccf4fbcf6ba2209ce87d3b23f5bb8d
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed May 8 12:45:46 2024 -0400

    fix tiny dispense on Vantage with 10uL tips

commit c655ceb5b6d5a4fbece10b54420ec0562728a82c
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Tue May 7 18:09:22 2024 -0400

    fix LH.dispense volume tracker issue

commit a292d3022ec3528fdd2b9453ee30e95f861b6fad
Author: jkh <1220444+jkhales@users.noreply.github.com>
Date:   Mon May 6 10:07:49 2024 -0700

    [STAR] allow variable number of pipettes to be initialized (#124)

    Co-authored-by: jj <jj@retro.bio>

commit ddeff94bfe2dc6249d27642c243237ec472c3ff8
Author: Camillo Moschner <122165124+BioCam@users.noreply.github.com>
Date:   Sat May 4 05:55:12 2024 +0100

    Corning-Costar 6-well flat-bottom plate integration (#122)

    * Cos_6_Fb base definition

    * Cos_6_Fb PLR integration

    * polishing definition

    * generate README for Corning-Costar labware

    * minor formatting

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 42326e7b351c3ce3203552f93a335ce5d8601de1
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed May 1 13:13:51 2024 -0400

    fix type

commit 6405ee12052db38c53e3bb69b2ecdd6029c2f189
Author: Marielle Russo <67157875+maraxen@users.noreply.github.com>
Date:   Wed May 1 13:04:19 2024 -0400

    allowing serialization and deserialization of Machines and their backends (#120)

    * implemented calibrations, PumpArrays, and the backend for Agrow Dose Pumps

    * implemented calibrations, PumpArrays, and the backend for Agrow Dose Pumps

    * implemented unit tests for calibrations, pumps, and pump arrays, debugged and cleaned code

    * debugged agrowtek pump functionality and validated expected operation

    * remove unnecessary print statement

    * Make formatting consistent

    * make formatting consistent

    * check single value when using calibration with single pump

    * more formatting

    * resolved pull request issues and cleaned up code

    * added agrowpumps requirements to setup

    * formatting & fix tests

    * modified Calibration so class methods take calibration_mode as well, raise an error if it is not 'revolutions' or 'duration' and added tests to validate it's implementation. Also changed the csv processing to allow for single and two-column csv inputs, and added test csvs to validate it's performance

    * changed agrowdosepump to use AsyncModbusClient appropriately, ensured that pumps ran as expected, and also brought agrowdosepump_tests into agreement

    * Fix logger error in keep alive thread and disable pylint warning

    * fix some typing errors & formatting

    * remove single column csv support

    * Refactor PumpArray class initialization and add new parameters in pumparray.py to bring it in line with the Pump class

    * Refactor PumpArray class initialization and
    associated tests and add new parameters in
    pumparray.py to bring it in line with the Pump
    class

    * Refactor PumpArray class initialization and add new parameters in pumparray.py to bring it in line with the Pump class

    * Fix calibration_mode attribute access in PumpArray class

    * Add serialize method to AgrowPumpArray and Masterflex classes

    * Fix calibration_mode attribute access in PumpArray class

    * Add serialize and deserialize method to Machine and MachineBackend, with processing to handle backend instantiating, and edited all associated MachineBackend subclasses

    * Update inheco.py

    * Add get_resource_class_from_string function to Machine and MachineBackend. Also added rotation variable to machine_tests

    * Update Machine and MachineBackend to use find_subclass function for backend subclass lookup, as get_class_from_string imported from resources produces typing related issues

    * Update serialization and deserialization methods in LiquidHandlerBackend and STAR classes to reflect that custom methods are no longer needed

    * Update serialization and deserialization methods in LiquidHandlerBackend and STAR classes to reflect changes in find_subclass function introduced in utils and removal of custom methods. Also added handling for USBBackend.

    * Update typing imports in backend.py, STAR_tests.py, machine.py, and resource.py

    * Refactor typing imports in liquid_handler.py and update serialization and deserialization methods in LiquidHandlerBackend and STAR classes

    * Update machine.py

    * Machine.__init__ not abstract

    * Update agrowdosepump.py

    ---------

    Co-authored-by: Rick Wierenga <rick_wierenga@icloud.com>

commit 69dd270d68f06aa4c7947e0efacba7f2573ab5ba
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed May 1 12:49:50 2024 -0400

    fix type

commit 8362937bad16ec9b1685b91a3426c3efa207eaaf
Author: Lenni Justen <65619456+lennijusten@users.noreply.github.com>
Date:   Wed May 1 11:12:11 2024 -0400

    fix typo (#121)

commit 9ac280a44392cb4727778ed20289f429ea2f92d9
Author: Rick Wierenga <rick_wierenga@icloud.com>
Date:   Wed May 1 00:18:30 2024 -0400

    fix vantage.{pick_up,drop}96 offset.z

commit d31f66ed80788376f677809ea8c87be249f696db
Author: Lenni Justen <65619456+lennijusten@users.noreply.github.com>
Date:   Tue Apr 30 16:42:18 2024 -0400

    Change tc to t for temperature controller in temperature.ipynb (#119)

commit 19afa9a3669dd0dac8df4622122b7896f3970659
Author: Lenni Justen <65619456+lennijusten@users.noreply.github.com>
Date:   Tue Apr 30 13:33:37 2024 -0400

    fix ot module loading (#118)

commit 9f2011035bbf5813ec38b77a3839f541b130e8c5
Author: Phi Nguyen <56458094+Ph1so@users.noreply.github.com>
Date:   Tue Apr 30 13:26:17 2024 -0400

    fixed pick_up_tips tracker error for liquid handling (#117)

    * fixed core 96 setup bumping problem

    * kgug

    * remove comment

    * Revert "kgug"

    This reverts commit 930407d201ac880d11b53a70f5ee28ec14d1ad67.

    * adding first centrifuge files

    * fix iswap move resources on rotation

    * added more confiration settings

    * test push with "notes"

    * fixed pick_up_tips tracker error

    * Delete pylabrobot/centrifuge directory

    * deleted drop_tips mistake

 …
  • Loading branch information
VilhelmKMoller committed Oct 8, 2024
1 parent ecf78c6 commit daa8dcd
Show file tree
Hide file tree
Showing 321 changed files with 10,916 additions and 6,194 deletions.
Binary file modified .github/img/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
name: Linting

on: [push, pull_request]
on:
push:
branches:
- main
pull_request:

jobs:
lint:
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
name: Unit Tests

on: [push, pull_request]
on:
push:
branches:
- main
pull_request:

jobs:
test:
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/typecheck.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
name: Type checking

on: [push, pull_request]
on:
push:
branches:
- main
pull_request:

jobs:
typecheck:
Expand Down
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
*__pycache__
*.DS_store
*.swp
*.swo
build/pdf-intermediate.md
pyhamilton/LAY-BACKUP
.ipynb_checkpoints
*.egg-info
*.log
build/lib
venv/
venv/*
venv\

myenv
3 changes: 2 additions & 1 deletion .pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,8 @@ disable=abstract-method,
zip-builtin-not-iterating,
missing-module-docstring, # added
missing-function-docstring, # added
C0103 # added, invalid module name
C0103, # added, invalid module name
too-many-positional-arguments, # backends take many arguments


[REPORTS]
Expand Down
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@
"agrow",
"agrowpumps",
"coro",
"decalibrate",
"Defaultable",
"Deprecated",
"frontmost",
"hepa",
"Inheco",
"iswap",
"jsonify",
Expand Down
47 changes: 47 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- Merge `height_functions.py` and `volume_functions.py` into `height_volume_functions.py` (https://github.com/PyLabRobot/pylabrobot/pull/200)
- Type checking for `lh.pick_up_tips`, `lh.drop_tips`, `lh.aspirate`, and `lh.dispense` and 96-channel versions.
- `ChatterBoxBackend` outputs are now pretty (https://github.com/PyLabRobot/pylabrobot/pull/208)
- `liquid_height` now defaults to 0 instead of 1 (https://github.com/PyLabRobot/pylabrobot/pull/205/)
- `material_z_thickness` of a `Container` is used in computing its bottom (https://github.com/PyLabRobot/pylabrobot/pull/205/)
- Default `pickup_distance_from_top` in `LiquidHandler.{move_plate,move_lid}` were lowered by 3.33 (https://github.com/PyLabRobot/pylabrobot/pull/205/)
- `PlateCarrierSite` can now take `ResourceStack` as a child, as long as the children are `Plate`s (https://github.com/PyLabRobot/pylabrobot/pull/226)
- `Resource.get_size_{x,y,z}` now return the size of the resource in local space, not absolute space (https://github.com/PyLabRobot/pylabrobot/pull/235)
- `Resource.center` now returns the center of the resource in local space, not absolute space (https://github.com/PyLabRobot/pylabrobot/pull/235)
- Rename `ChatterBoxBackend` to `LiquidHandlerChatterboxBackend` (https://github.com/PyLabRobot/pylabrobot/pull/242)
- Move `LiquidHandlerChatterboxBackend` from `liquid_handling.backends.chatterbox_backend` to `liquid_handling.backends.chatterbox` (https://github.com/PyLabRobot/pylabrobot/pull/242)
- Changed `pedestal_size_z=-5` to `pedestal_size_z=-4.74` for `PLT_CAR_L5AC_A00` (https://github.com/PyLabRobot/pylabrobot/pull/255)
- rename `homogenization_` parameters in `STAR` to `mix_` (https://github.com/PyLabRobot/pylabrobot/pull/261)
- Lids no longer get special treatment when assigned to a ResourceStack. Assign them to a plate directly (https://github.com/PyLabRobot/pylabrobot/pull/267)

### Added

Expand All @@ -47,13 +58,36 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- `adapter_hole_size_z` and `plate_z_offset` parameters to `PlateAdapter` (https://github.com/PyLabRobot/pylabrobot/pull/215)
- `wide_high_volume_tip_with_filter` and `HTF_L_WIDE` (https://github.com/PyLabRobot/pylabrobot/pull/222)
- Serialize code cells and closures (https://github.com/PyLabRobot/pylabrobot/pull/220)
- `Container.get_anchor()` now supports `"cavity_bottom"` as an argument for `z` (https://github.com/PyLabRobot/pylabrobot/pull/205/)
- `pylabrobot.resources.utils.query` for basic querying (https://github.com/PyLabRobot/pylabrobot/commit/4a07f6a32a9a33d0370eb9c29015567c98aea002)
- `HamiltonLiquidHandler.allow_firmware_planning` to allow STAR/Vantage to plan complex liquid handling operations automatically (may break hardware agnosticity unexpectedly) (https://github.com/PyLabRobot/pylabrobot/pull/224)
- `size_z` and `nesting_z_height` for `Cor_96_wellplate_360ul_Fb_Lid` (https://github.com/PyLabRobot/pylabrobot/pull/226)
- `NestedTipRack` (https://github.com/PyLabRobot/pylabrobot/pull/228)
- `HTF_L_ULTRAWIDE`, `ultrawide_high_volume_tip_with_filter` (https://github.com/PyLabRobot/pylabrobot/pull/229/)
- `get_absolute_size_x`, `get_absolute_size_y`, `get_absolute_size_z` for `Resource` (https://github.com/PyLabRobot/pylabrobot/pull/235)
- `Cytation5Backend` for plate reading on BioTek Cytation 5 (https://github.com/PyLabRobot/pylabrobot/pull/238)
- More chatterboxes (https://github.com/PyLabRobot/pylabrobot/pull/242)
- `FanChatterboxBackend`
- `PlateReaderChatterboxBackend`
- `PowderDispenserChatterboxBackend`
- `PumpChatterboxBackend`
- `PumpArrayChatterboxBackend`
- `ScaleChatterboxBackend`
- `ShakerChatterboxBackend`
- `TemperatureControllerChatterboxBackend`
- Add fluorescence reading to Cytation 5 (https://github.com/PyLabRobot/pylabrobot/pull/244)
- Add `F.linear_tip_spot_generator` and `F.randomized_tip_spot_generator` for looping over tip spots, with caching (https://github.com/PyLabRobot/pylabrobot/pull/256)
- Add `skip_autoload`, `skip_iswap`, and `skip_core96_head` flags to `STAR.setup` (https://github.com/PyLabRobot/pylabrobot/pull/263)
- Add `skip_autoload`, `skip_iswap`, and `skip_core96_head` flags to `Vantage.setup` (https://github.com/PyLabRobot/pylabrobot/pull/263)

### Deprecated

- All VENUS-imported Corning-Costar plates, because they don't have unique and usable identifiers, and are probably wrong.
- Passing single values to LiquidHandler `pick_up_tips`, `drop_tips`, `aspirate`, and `dispense` methods. These methods now require a list of values.
- `utils.positions`: `string_to_position`, `string_to_index`, `string_to_indices`, `string_to_pattern`.
- `ThermoScientific_96_DWP_1200ul_Rd` in favor of `Thermo_TS_96_wellplate_1200ul_Rb` (https://github.com/PyLabRobot/pylabrobot/pull/215)
- `Azenta4titudeFrameStar_96_wellplate_skirted` in favor of `Azenta4titudeFrameStar_96_wellplate_200ul_Vb` (https://github.com/PyLabRobot/pylabrobot/pull/205/)
- `Cos_96_DWP_2mL_Vb` in favor of `Cos_96_wellplate_2mL_Vb (https://github.com/PyLabRobot/pylabrobot/pull/205/)`

### Fixed

Expand All @@ -62,9 +96,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- Fix Opentrons backend resource definitions: Opentrons takes well locations as ccc instead of lfb
- Fix ThermoScientific_96_DWP_1200ul_Rd to ThermoScientific_96_wellplate_1200ul_Rd (https://github.com/PyLabRobot/pylabrobot/pull/183).
- `libusb_package` is now an optional dependency.
- Plates with a skirt are now correctly lowered when placed on plate carriers with a pedestal (https://github.com/PyLabRobot/pylabrobot/pull/205/)
- `minimum_height` in `STAR` and `Vantage` now correctly refer to a `Container`s bottom instead of being a function of liquid height (https://github.com/PyLabRobot/pylabrobot/pull/205/)
- `aspirate96` and `dispense96` type check
- fix angles computed by grip directions (https://github.com/PyLabRobot/pylabrobot/pull/234)
- picking up rotated resources in `STAR` (https://github.com/PyLabRobot/pylabrobot/pull/233)
- picking up rotated resources in `Vantage` (https://github.com/PyLabRobot/pylabrobot/pull/268)
- assigning rotated resources to `PlateReader` now have the correct location (https://github.com/PyLabRobot/pylabrobot/pull/233)
- use local sizes in computing anchor (https://github.com/PyLabRobot/pylabrobot/pull/233)
- don't raise a blow out air volume error when requesting 0, or when volume tracking is disabled (https://github.com/PyLabRobot/pylabrobot/pull/262)
- fix get_child_location for resources rotated by 180 degrees (https://github.com/PyLabRobot/pylabrobot/pull/269)
- volume tracking on channel 1-n (https://github.com/PyLabRobot/pylabrobot/pull/273)

### Removed

- HamiltonDeck.load_from_lay_file
- `hamilton_parse` module and the VENUS labware database parser.
- `PLT_CAR_L4_SHAKER` was removed in favor of `MFX_CAR_L5_base` (https://github.com/PyLabRobot/pylabrobot/pull/188/).
- `items`, `num_items_x` and `num_items_y` attributes of `ItemizedResource` (https://github.com/PyLabRobot/pylabrobot/pull/231)
- `report` is no longer a parameter of `PlateReader.read_absorbance` (default is now OD) (https://github.com/PyLabRobot/pylabrobot/pull/238)
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ See the installation instructions [here](docs/installation.md). For contributing

If this is your first time contributing to open source, check out [How to Open Source](./docs/how-to-open-source.md) for an easy introduction.

It's highly appreciated by the PyLabRobot developers if you communicate what you want to work on, to minimize any duplicate work. You can do this on the [forum](https://forums.pylabrobot.org/c/pylabrobot-development/23).
It's highly appreciated by the PyLabRobot developers if you communicate what you want to work on, to minimize any duplicate work. You can do this on the [forum](https://discuss.pylabrobot.org).

## Development Tips

Expand Down Expand Up @@ -71,4 +71,4 @@ Backends are the primary objects used to communicate with hardware. If you want

## Support

If you have any questions, feel free to reach out using the [PyLabRobot forum](https://forums.pylabrobot.org).
If you have any questions, feel free to reach out using the [PyLabRobot forum](https://discuss.pylabrobot.org).
8 changes: 7 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,17 @@ endif
.PHONY: docs lint test

docs:
sphinx-build -b html docs docs/build/ -j 1 -W
sphinx-build -b html docs docs/build/ -j 16 -W

docs-fast:
echo "building docs without api for speed"
sphinx-build -t no-api -b html docs docs/build/ -j 16 -W

clean-docs:
rm -rf docs/build
rm -rf docs/_autosummary
rm -rf docs/jupyter_execute
rm -rf docs/user_guide/jupyter_execute

lint:
$(BIN)python -m pylint pylabrobot
Expand Down
131 changes: 104 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,31 @@
<div style="text-align: center" align="center">
<img width="400" src=".github/img/logo.png" />
<h1>PyLabRobot</h1>
</div>

[**Docs**](https://docs.pylabrobot.org) | [**Forum**](https://forums.pylabrobot.org) | [**Installation**](https://docs.pylabrobot.org/installation.html) | [**Getting started**](https://docs.pylabrobot.org/basic.html)
<div style="text-align: center" align="center">
<a href="https://docs.pylabrobot.org"><strong>Docs</strong></a> |
<a href="https://discuss.pylabrobot.org"><strong>Forum</strong></a> |
<a href="https://docs.pylabrobot.org/installation.html"><strong>Installation</strong></a> |
<a href="https://docs.pylabrobot.org/basic.html"><strong>Getting started</strong></a>
</div>

## What is PyLabRobot?

PyLabRobot is a hardware agnostic, pure Python library for liquid handling robots and other lab automation equipment. Read [the paper](<https://www.cell.com/device/fulltext/S2666-9986(23)00170-9>) in Device.
PyLabRobot is a hardware agnostic, pure Python library for liquid handling robots, plate readers, pumps, scales, heater shakers, and other lab automation equipment. Read [the paper](<https://www.cell.com/device/fulltext/S2666-9986(23)00170-9>) in Device.

Advantages over proprietary software:

### Liquid handling robots
- **Cross-platform**: PyLabRobot works on Windows, macOS, and Linux. Many other interfaces are Windows-only.
- **Universal**: PyLabRobot works with any supported liquid handling robot, plate reader, pump, scale, heater shaker, etc. through a single interface.
- **Fast iteration**: PyLabRobot enables rapid development of protocols using atomic commands run interactively in Jupyter notebooks or the Python REPL. This decreases iteration time from minutes to seconds.
- **Open-source**: PyLabRobot is open-source and free to use.
- **Control**: With Python, you have ultimate flexibility to control your lab automation equipment. You can write Turing-complete protocols that include feedback loops.
- **Modern**: PyLabRobot is built on modern Python 3.8+ features and async/await syntax.
- **Fast support**: PyLabRobot has [an active community forum](https://discuss.pylabrobot.org) for support and discussion, and most pull requests are merged within a day.

PyLabRobot provides a layer of general-purpose abstractions over robot functions, with various device drivers for communicating with different kinds of robots. Right now we only have drivers for Hamilton, Tecan and Opentrons liquid handling robots, but we will soon have drivers for many more. The Hamiton and Tecan backends provide an interactive firmware interface that works on Windows, macOS and Linux. The Opentrons driver is based on the [Opentrons HTTP API](https://github.com/rickwierenga/opentrons-python-api). We also provide a browser-based Visualizer which can visualize the state of the deck during a run, and testing backends which do not require access to a robot.
### Liquid handling robots ([docs](https://docs.pylabrobot.org/basic.html))

PyLabRobot enables the use of any liquid handling robot through a single universal interface, that works on any modern operating system (Windows, macOS, Linux). We currently support Hamilton STAR, Hamilton Vantage, Tecan Freedom EVO, and Opentrons OT-2 robots, but we will soon support many more.

Here's a quick example showing how to move 100uL of liquid from well A1 to A2 using firmware on **Hamilton STAR** (this will work on any operating system!):

Expand All @@ -30,40 +44,34 @@ await lh.dispense(lh.deck.get_resource("plate")["A2"], vols=100)
await lh.return_tips()
```

To run the same procedure on an **Opentrons**, change the following lines:

```diff
- from pylabrobot.liquid_handling.backends import STAR
+ from pylabrobot.liquid_handling.backends import OpentronsBackend

- deck = Deck.load_from_json_file("hamilton-layout.json")
+ deck = Deck.load_from_json_file("opentrons-layout.json")
To run the same protocol on an **Opentrons**, use the following:

- lh = LiquidHandler(backend=STAR(), deck=deck)
+ lh = LiquidHandler(backend=OpentronsBackend(host="x.x.x.x"), deck=deck)
```python
from pylabrobot.liquid_handling.backends import OpentronsBackend
deck = Deck.load_from_json_file("opentrons-layout.json")
lh = LiquidHandler(backend=OpentronsBackend(host="x.x.x.x"), deck=deck)
```

Or **Tecan** (also works on any operating system!):

```diff
- from pylabrobot.liquid_handling.backends import STAR
+ from pylabrobot.liquid_handling.backends import EVO
```python
from pylabrobot.liquid_handling.backends import EVO
deck = Deck.load_from_json_file("tecan-layout.json")
lh = LiquidHandler(backend=EVO(), deck=deck)
```

- deck = Deck.load_from_json_file("hamilton-layout.json")
+ deck = Deck.load_from_json_file("tecan-layout.json")
We also provide a browser-based Visualizer which can visualize the state of the deck during a run, and can be used to develop and test protocols without a physical robot.

- lh = LiquidHandler(backend=STAR(), deck=deck)
+ lh = LiquidHandler(backend=EVO(), deck=deck)
```
![Visualizer](.github/img/visualizer.png)

### Plate readers
### Plate readers ([docs](https://docs.pylabrobot.org/plate_reading.html))

PyLabRobot also provides a layer of general-purpose abstractions for plate readers, currently with just a driver for the ClarioStar. This driver works on Windows, macOS and Linux. Here's a quick example showing how to read a plate using the ClarioStar:
Moving a plate to a ClarioStar using a liquid handler, and reading luminescence:

```python
from pylabrobot.plate_reading import PlateReader, ClarioStar

pr = PlateReader(name="plate reader", backend=ClarioStar())
pr = PlateReader(name="plate reader", backend=ClarioStar(), size_x=1, size_y=1, size_z=1)
await pr.setup()

# Use in combination with a liquid handler
Expand All @@ -73,6 +81,75 @@ lh.move_plate(lh.deck.get_resource("plate"), pr)
data = await pr.read_luminescence()
```

For Cytation5, use the `Cytation5` backend.

### Centrifuges

Centrifugation at 800g for 60 seconds:

```python
from pylabrobot.centrifuge import Centrifuge, VSpin
cf = Centrifuge(name = 'centrifuge', backend = VSpin(bucket_1_position=0), size_x= 1, size_y=1, size_z=1)
await cf.setup()

await cf.start_spin_cycle(g = 800, duration = 60)
```

### Pumps ([docs](https://docs.pylabrobot.org/pumps.html))

Pumping at 100 rpm for 30 seconds using a Masterflex pump:

```python
from pylabrobot.pumps import Pump
from pylabrobot.pumps.cole_parmer.masterflex import Masterflex

p = Pump(backend=Masterflex())
await p.setup()
await p.run_for_duration(speed=100, duration=30)
```

### Scales ([docs](https://docs.pylabrobot.org/scales.html))

Taking a measurement from a Mettler Toledo scale:

```python
from pylabrobot.scales import Scale
from pylabrobot.scales.mettler_toledo import MettlerToledoWXS205SDU

backend = MettlerToledoWXS205SDU(port="/dev/cu.usbserial-110")
scale = Scale(backend=backend, size_x=0, size_y=0, size_z=0)
await scale.setup()

weight = await scale.get_weight()
```

### Heater shakers ([docs](https://docs.pylabrobot.org/heater_shakers.html))

Setting the temperature of a heater shaker to 37&deg;C:

```python
from pylabrobot.heating_shaking import HeaterShaker
from pylabrobot.heating_shaking import InhecoThermoShake

backend = InhecoThermoShake()
hs = HeaterShaker(backend=backend, name="HeaterShaker", size_x=0, size_y=0, size_z=0)
await hs.setup()
await hs.set_temperature(37)
```

### Fans ([docs](https://docs.pylabrobot.org/fans.html))

Running a fan at 100% intensity for one minute:

```python
from pylabrobot.only_fans import Fan
from pylabrobot.only_fans import HamiltonHepaFan

fan = Fan(backend=HamiltonHepaFan(), name="my fan")
await fan.setup()
await fan.turn_on(intensity=100, duration=60)
```

## Resources

### Documentation
Expand All @@ -86,7 +163,7 @@ data = await pr.read_luminescence()

### Support

- [forums.pylabrobot.org](https://forums.pylabrobot.org) for questions and discussions.
- [discuss.pylabrobot.org](https://discuss.pylabrobot.org) for questions and discussions.
- [GitHub Issues](https://github.com/pylabrobot/pylabrobot/issues) for bug reports and feature requests.

## Citing
Expand Down
Binary file modified docs/_static/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/_templates/autosummary/class.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
.. autosummary::
:toctree: .
{% for item in attributes %}
~{{ fullname }}.{{ item }}
~{{ objname }}.{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
Expand All @@ -23,7 +23,7 @@
.. autosummary::
:toctree: .
{% for item in methods %}
~{{ fullname }}.{{ item }}
~{{ objname }}.{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
Loading

0 comments on commit daa8dcd

Please sign in to comment.