Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Rewrite tilt module #187

Merged
merged 18 commits into from
Aug 1, 2024

Conversation

fderop
Copy link
Contributor

@fderop fderop commented Jul 6, 2024

I've done two things here:

  1. Add carrier sites to the tilter. The reason for this is that it's really easy to 3d print a part that slots onto the tilt platform and extends the number of positions.
  2. Rewrite logic that calculates the positions. I removed the function that updated the well positions since this is not super useful: it updates the origin of children, but does not apply a rotation to the rest of the geometry. For example, calling child.get_absolute_position("l", "c", "b") did not return an updated value for the well's "absolute bottom" after tilting. Instead, I added two functions: rotate_coordinate_around_hinge rotates any absolute coordinate around the tilt hinge, and return_well_drain_offsets returns the offsets that need to be applied to dispense and aspirate to pipette in the rotated well's "drain point".

In addition I added some minor functionalities:

  • Whether the hinge is on the left or right of the box is automatically calculated
  • I assume that the user will enter an absolute_angle i.e. if the hinge is positioned left or right of the tilter, the user still just inputs absolute_angle = 10. When coordinates are calculated, this is converted to angle, which has a sign (clockwise is negative, counter-clockwise is positive - this follows Euler rotation conventions and simplifies calculation of rotations).

pylabrobot/tilting/hamilton.py Outdated Show resolved Hide resolved
pylabrobot/tilting/hamilton.py Outdated Show resolved Hide resolved
pylabrobot/tilting/tilter.py Outdated Show resolved Hide resolved
@ben-ray
Copy link
Contributor

ben-ray commented Jul 6, 2024

thanks for the concise writeup! very helpful to keep updated

I remember this giving rick & I some trouble, so it's nice we have it properly solved

@rickwierenga
Copy link
Member

rickwierenga commented Jul 6, 2024

Thank you for fixing the resource drain location, that's incredibly helpful.

Add carrier sites to the tilter. The reason for this is that it's really easy to 3d print a part that slots onto the tilt platform and extends the number of positions.

My main feedback on this PR is that I think this is slightly too much for the default TiltModule.

An alternative, almost equivalent, approach I would suggest is to 1) make the HamiltonTiltModule an MFXModule. @BioCam introduced this in #77 for working with modules that go on the MFXCarrier, like the tilt module. Specifically, because all (99%) of these modules take a single child, it has this child_resource_location attribute which helps movement of resources onto this mfxmodule resource. We will refactor this in the future to integrate with PlateAdapter, but for now let's use the MFXModule. 2) I would suggest making a new Resource for Retro's tilt-module-carrier, which is a subclass of Carrier and can go onto the MFXModule. The final tree would look like HamiltonTiltModule(Tilter, MFXModule) -> RetroTiltCarrier -> Plate`. This is more extendible and more organized.

@BioCam
Copy link
Contributor

BioCam commented Jul 6, 2024

  1. make the HamiltonTiltModule an MFXModule

Thank you for pointing this out @rickwierenga.

I agree, and think that we should modify a couple of machines in this way:
I propose machines like the tilt_module, heaters, shakers, thermocyclers, fillable_reservoirs, ... actually have a physical definition that can easily be called by the frontend, like:

frontend(backend=backend, model=resource_definition)

At the moment, the resource definitions appear to be completely handled by the frontend:
e.g.

def HamiltonTiltModule(   # <=== frontend
  name: str,
  com_port: str,
  write_timeout: float = 10, timeout: float = 10
) -> Tilter:
  return Tilter(  # <=== I'm not sure what to call this, in this special case?
    name=name,
    backend=HamiltonTiltModuleBackend( # <=== backend
      com_port=com_port, write_timeout=write_timeout, timeout=timeout
    ),
    size_x=132, # <=== physical definition
    size_y=92.57, # <=== physical definition
    size_z=85.81, # <=== physical definition
  )

This means that while the frontend is easily adaptable / agnostic to the backend, the physical definition is not, making the backend agnosticity impossible to utilise.

I propose that we modularise the physical definition in lockstep to the modularisation of the backend.
This dual modularity would mean that we can mix and match backends and machine definitions, e.g. if a version_2 of a tilt module is being created which has a different geometry but the same control capabilities, we can use the same backend but a new physical definition.

This would be in analogy of how we create liquid handler instances, generating more homogenous frontend instantiation across PLR:

lh = LiquidHandler(backend=backend, deck=STARLetDeck())

Since these machines are physically attached to MFX_carriers and they only take a single child resource, I have been implementing them as instances of MFXModule.

Importantly, this would also mean that we can use these machines as simple holders even if we don't/can't establish computational control of the machine's capabilities (e.g. a tilt module can be a site for a plate [without a pedestal!], an HHC can be a site for a semi-skirted plate, etc). Since machines are a bit of a pain to remove from the deck (removing the shaker_carrier requires bold removal...), this would mean we can keep them between different deck configurations, and make them useful even if the new deck doesn't require the machine's capabilities.

Please let me know what you think?

@rickwierenga
Copy link
Member

The backend agnosticity is not impossible to use because the class still inherits from the main frontend Tilter. Restructuring this is a separate discussion, which we can definitely have, but I am honestly pretty happy with the current situation.

@BioCam
Copy link
Contributor

BioCam commented Jul 6, 2024

Does this mean that all machines - except for liquid_handler - are defined by...

  • "1st" frontend - agnostic interface to interact with the machine inside the script
  • backend - code to control the machine programmatically
  • "main" frontend - intermediate interface to give box coordinates of the resource and define special behaviour like single-child resource managment
    ?

@rickwierenga
Copy link
Member

For now, yes, with a slight exception for LiquidHandler, which always has a Deck as its only child. Let's continue this discussion in a separate thread :)

@fderop
Copy link
Contributor Author

fderop commented Jul 8, 2024

An alternative, almost equivalent, approach I would suggest is to 1) make the HamiltonTiltModule an MFXModule. @BioCam introduced this in #77 for working with modules that go on the MFXCarrier, like the tilt module. Specifically, because all (99%) of these modules take a single child, it has this child_resource_location attribute which helps movement of resources onto this mfxmodule resource. We will refactor this in the future to integrate with PlateAdapter, but for now let's use the MFXModule. 2) I would suggest making a new Resource for Retro's tilt-module-carrier, which is a subclass of Carrier and can go onto the MFXModule. The final tree would look like HamiltonTiltModule(Tilter, MFXModule) -> RetroTiltCarrier -> Plate`. This is more extendible and more organized.

Thanks for the feedback, I will implement this.

e.g. a tilt module can be a site for a plate [without a pedestal!]

The tilt module's platform has a very pronounced pedestal which lifts the plate significantly. Do you have a writeup somewhere about the pedestal definition, because it's still confusing to me currently

@BioCam
Copy link
Contributor

BioCam commented Jul 8, 2024

e.g. a tilt module can be a site for a plate [without a pedestal!]

The tilt module's platform has a very pronounced pedestal which lifts the plate significantly. Do you have a writeup somewhere about the pedestal definition, because it's still confusing to me currently

Yeah, I understand; this issue is quite complicated, and affects PLR utility massively at the moment.
You could read the forum thread PLR Carrier z-Height Issue in which Rick and I figured out together what was actually going wrong. But it's very long, and since we haven't fixed it yet we haven't written up the topic concisely in one place yet.

But since you're asking here and it is important for this PR, a quick attempt:

PlateCarrierSites can be of two types:

  1. they have an elevation in their center which PLR now calls pedestal
  2. they could just be a flat surface

PlateCarrierSite_types

This feature of the PlateCarrierSite is captured in the PlateCarrierSite attribute pedestal_z_height (if assigned to 0 it is a flat surface).

Importantly though: the PlateCarrierSite origin z-coordinate is always the topmost surface of the site!
This means the top surface of the pedestal (if there is a pedestal).

As a result of all of this there are 2 main possible PlateCarrierSite-to-Plate relationships:
PlateCarrierSite_Plate_combos
This is what Hamilton software calls "container-based" (left) vs "rack-based" (right). We opted to avoid at least the term "rack-based" because there is no rack anywhere, instead it would be correct to call it "skirt-based" (a well-adapted known term for plates that doesn't have meaning in the labware universe already).

As can be seen in the above comparison, it is very important to get this right because if you don't you cannot use plates on flat surfaces - that is the current problem with Plate in PLR.
You can also see that a Plate placed on PlateCarrierSite with a pedestal actually "sinks" into the site.

There are a couple more details here but that's the basic problem.

For this PR:
In order to prep CarrierSites by giving them the required attribute pedestal_z_height we started to distinguish between "general" CarrierSite (mostly designed for tip_racks) and PlateCarrierSite (which is specifically designed to hold plates and has this new attribute).

Importantly, we do not have the same distinction with MFXModules.
I initially built the MFXModule by giving it a single CarrierSite. But Rick and I discussed this and for multiple reasons refactored it into MFXModules only taking a child_location attribute.
This means MFXModules which are designed for taking a plate (like in the above image) are currently missing the required attribute pedestal_z_height, and we have to figure out a way to add this information (without messing with MFXModules that are not designed for holding plates, e.g. tip_rack modules).

@fderop
Copy link
Contributor Author

fderop commented Jul 17, 2024

We decided to make the HamiltonTiltModule a child of only MFXModule. Multiple inheritance led to diamond inheritance issues (both MFXModule and Tilter inherited from Resource).

The tilter can be tested as such:

from pylabrobot.tilting.tilter import hamiltonTiltModule

# <Set up your deck here>

tilter_name = "tilter"
tilter = hamiltonTiltModule(name=tilter_name, com_port="/dev/tty.usbserial-FTDINDTT")
await tilter.setup()
print(tilter._setup_finished)
deck.get_resource(carrier_to_calibrate_name)[1] = tilter

plate_to_calibrate_name = "plate_to_calibrate"
plate = Corning_6_WP_Fl(plate_to_calibrate_name)
tilter.assign_child_resource(plate)

from retro_pylabrobot.liquid_classes.retro_liquid_classes import HighVolumeFilter_CellCultureMedium_DispenseJet

transfer_volume = 1000

await tilter.set_angle(10)

z_offset = 0.2

offsets = tilter.return_drain_offsets_of_plate(plate)
for aspirate_index in range(len(plate.children)):
    if aspirate_index != len(plate.children) - 1:
        dispense_index = aspirate_index + 1
    else:
        dispense_index = 0

    offset_adj = offsets[aspirate_index]
    offset_adj.z = offset_adj.z + z_offset
    await lh.aspirate(
        vols=[transfer_volume],
        resources=[plate.children[aspirate_index]],
        use_channels=[calibration_tip],
        offsets=[offset_adj],
        hamilton_liquid_classes=[HighVolumeFilter_CellCultureMedium_DispenseJet],
        immersion_depth=[0],
    )

    offset_adj = offsets[dispense_index]
    offset_adj.z = offset_adj.z + z_offset
    await lh.dispense(
        vols=[transfer_volume],
        resources=[plate.children[dispense_index]],
        use_channels=[calibration_tip],
        offsets=[offset_adj],
        hamilton_liquid_classes=[HighVolumeFilter_CellCultureMedium_DispenseJet],
        immersion_depth=[0],
    )

This should sequentially pipet from one well in a 6 well plate to the next. It should look like so:

https://youtu.be/03nXvlDh-l0

@rickwierenga
Copy link
Member

I just updated:

  • I am not sure where we decided to make HamiltonTiltModule an MFXModule, but Tilter definitely take precedence because it gives us hardware agnosticity.
  • I kept hinge_coordinate and child_resource_location as attributes of Tilter because every tilt module is reasonably expected to use those attributes. This makes the logic you wrote for HamiltonTiltModule generalizable across all tilt modules.
  • Now that HamiltonTiltModule is not an MFXModule, it's slightly unfortunate that we need to get child_resource_location "manually" in LiquidHandler, but it's similar with PlateReader, and just something to update in a future PR. If you think about it, we'd have to do this anyway for any new tilt module we might implement, and so either way requires a refactor for resources that specify child_resource_location.
  • I kept pedestal_size_z as an attribute for future use in HamiltonTiltModule. We don't use it yet, and so that's also for another update soon.

Is it correct that return_drain_offsets_of_plate is a helper function for use during liquid handling, and that rotate_coordinate_around_hinge is a helper for return_drain_offsets_of_plate? (as discussed, we should combine this with the rotation update in the future, but for now I just want to know what these functions are intended for)

pylabrobot/tilting/hamilton.py Outdated Show resolved Hide resolved
pylabrobot/tilting/tilter.py Outdated Show resolved Hide resolved
@fderop
Copy link
Contributor Author

fderop commented Jul 23, 2024

So now, adding assigning a plate to the tilter must be done as such: tilter.assign_child_resource(resource=plate, location=tilter.child_resource_location)

@fderop
Copy link
Contributor Author

fderop commented Jul 23, 2024

  • I am not sure where we decided to make HamiltonTiltModule an MFXModule, but Tilter definitely take precedence because it gives us hardware agnosticity.

Just for clarity, I thought we decided this collectively based on the thread above - either way is fine though

@fderop
Copy link
Contributor Author

fderop commented Jul 27, 2024

I added the kwarg additional_z because it's really difficult to calibrate a tilt module with rotation properly (hinge coordinate for example, and instead of only having issues in z, you now have issues in x and y as well if you want to find the drain point properly). However, I also think there's a strong argument to be made that once get_well_drain_offsets() returns the offsets, z can be added outside of the function call - what do you think?

@rickwierenga
Copy link
Member

I agree that it's better to apply the additional_z (or additional_{x,y}) on the user end, after calling get_well_drain_offsets. This way, get_well_drain_offsets stays well-defined. (otherwise, where does its functionality stop?) I removed it for now.

After this PR, I would love to replace .get_absolute_location("c", "c", "b") on line 129 of tilter.py with .get_drain_location() which will look at all rotations in the tree and get the drain location.

@rickwierenga
Copy link
Member

I marked

  • experimental_rotate_coordinate_around_hinge
  • experimental_get_plate_drain_offsets
  • experimental_get_well_drain_offsets

experimental because I anticipate we remove them very soon in favor of Rotation-based manipulations.

@rickwierenga
Copy link
Member

i think it's good to merge! lmk!

sorry for the delays

@fderop
Copy link
Contributor Author

fderop commented Jul 31, 2024

i think it's good to merge! lmk!

sorry for the delays

Sounds great, thanks Rick!

@rickwierenga rickwierenga merged commit 90d8935 into PyLabRobot:main Aug 1, 2024
5 of 7 checks passed
@fderop fderop deleted the fdr/rewrite_tiltmodule branch August 1, 2024 16:32
VilhelmKMoller added a commit to VilhelmKMoller/pylabrobot_DALSA that referenced this pull request Oct 8, 2024
commit 59f8de7318ad100667fb84804119c7c2ac0145ee
Author: Rick Wierenga <[email protected]>
Date:   Mon Oct 7 17:50:07 2024 -0700

    fix channel 1-n volume tracking (#273)

commit cef404b3dbd951f312b9a20191456b7f272ffb5f
Author: Rick Wierenga <[email protected]>
Date:   Tue Oct 1 16:30:19 2024 -0700

    [STAR] really skip these on setup if True

commit 9edf04a8e01c381ee5c3b020542bbea7e7709806
Author: Phi Nguyen <[email protected]>
Date:   Mon Sep 30 21:48:45 2024 -0400

    Add VSpin (spin spin) Wrapper (#243)

    Co-authored-by: jkh <[email protected]>
    Co-authored-by: Rick Wierenga <[email protected]>

commit a14c253155aa8bde2926e7cf43cc07ab258d87d5
Author: Rick Wierenga <[email protected]>
Date:   Sun Sep 29 15:19:15 2024 -0700

    tests for lid rotation with iswap

commit 90775c9d9399543b5165a99c03736dd3a03f344d
Author: Rick Wierenga <[email protected]>
Date:   Sun Sep 29 14:48:16 2024 -0700

    add Rotation.__repr__

commit b67193aee145eb068c5ddd44f339b39578ddffe5
Author: Rick Wierenga <[email protected]>
Date:   Sun Sep 29 14:48:10 2024 -0700

    add a setter to Plate.lid

commit f265f9fc8e02c48c438770d99cb6e61c1bdf8369
Author: Rick Wierenga <[email protected]>
Date:   Sun Sep 29 14:16:19 2024 -0700

    forgot these links

commit ec2eedc602348557ac148282114045406a5b9192
Author: Rick Wierenga <[email protected]>
Date:   Sat Sep 28 18:07:22 2024 -0700

    no special treatment for lid on ResourceStack (#267)

commit a6d870b8b5dae5c020b1e83b121c11f75b2bfd22
Author: Rick Wierenga <[email protected]>
Date:   Sat Sep 28 16:49:36 2024 -0700

    Fix iswap rotation issue (#269)

commit 0f00e4527642977d0bfc856bdb99c79c5c0ebe01
Author: Rick Wierenga <[email protected]>
Date:   Fri Sep 27 19:31:50 2024 -0700

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

commit 1711edc006e9e34efc1429d1df34b821252b4203
Author: Rick Wierenga <[email protected]>
Date:   Fri Sep 27 17:29:09 2024 -0700

    new logo & new forum

commit 39ebdf5fdb183b19ea8bad06675e7a58f4768d6f
Author: Rick Wierenga <[email protected]>
Date:   Fri Sep 27 17:08:47 2024 -0700

    rename file bc it was too long on Windows

commit 92be7424db5de5db0cc4467a1aec8f2d11f0ebc1
Author: Rick Wierenga <[email protected]>
Date:   Fri Sep 27 16:50:11 2024 -0700

    link to discuss.pylabrobot.org (#266)

commit 0353a674b49dc2f4110e095303b402a55aa67cff
Author: Rick Wierenga <[email protected]>
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 <[email protected]>
Date:   Fri Sep 27 16:01:57 2024 -0700

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

commit fbb08be3a93719f842cdd480f6499c5a2d716860
Author: Rick Wierenga <[email protected]>
Date:   Fri Sep 27 11:12:27 2024 -0700

    hamilton liquid classes make kwargs (#248)

commit 6d05d453bdef1a826b14ac27bb5843e17ce6a9d5
Author: Rick Wierenga <[email protected]>
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 <[email protected]>
Date:   Thu Sep 26 13:09:19 2024 -0700

    [STAR] homogenization -> mix (#261)

commit 8f15ee0973f6d544b710ca741931ca4fa4e5e258
Author: Rick Wierenga <[email protected]>
Date:   Wed Sep 25 09:15:16 2024 -0700

    Less verbose

commit 01a10f852d573456d4505effe87e134205f6f508
Author: Rick Wierenga <[email protected]>
Date:   Tue Sep 24 08:21:31 2024 -0700

    add T-Therapeutics to “used by”

commit 244f36e6211b5c4e5a95dd1e08dad31198eec55b
Author: Rick Wierenga <[email protected]>
Date:   Mon Sep 23 19:28:51 2024 -0700

    cytation5 in new docs

commit a2ca897f03039596482c0942bd41a52824079657
Author: Rick Wierenga <[email protected]>
Date:   Mon Sep 23 19:25:53 2024 -0700

    new docs theme (#249)

commit 6d48b34de78f0b727a200030427d9c3e176a2834
Author: Rick Wierenga <[email protected]>
Date:   Mon Sep 23 19:08:43 2024 -0700

    top->bottom in docs

commit 9d48831c6bc4324ca35a3baf9259c4bfbf11581d
Author: Florian De Rop <[email protected]>
Date:   Sun Sep 22 20:10:19 2024 -0700

    [Labware] Add several plates (#254)

commit f6f4693e65ccaacf1f861777ee89e6f67fef4540
Author: Rick Wierenga <[email protected]>
Date:   Sun Sep 22 11:15:57 2024 -0700

    pylibftdi optional for cytation

commit d748daaef74f0c2d52a2f495723383b33ad3488e
Author: Rick Wierenga <[email protected]>
Date:   Fri Sep 20 20:43:18 2024 -0700

    add tip spot generators (#256)

commit d9d687bf9bcca63022b6b1228128106d99d736a9
Author: Rick Wierenga <[email protected]>
Date:   Fri Sep 20 14:39:10 2024 -0700

    use correct bit for autoload_installed

commit 085855465e46879ecde0fb41c73a0367e8a0347c
Author: Rick Wierenga <[email protected]>
Date:   Fri Sep 20 11:32:05 2024 -0700

    add material_z_thickness to falcon_tube_50mL

commit b7e28685d03220f67cbac5a95e41b4a38d6441b3
Author: Rick Wierenga <[email protected]>
Date:   Fri Sep 20 10:00:31 2024 -0700

    support pylint 3.3.0

commit 9513089ca7b1784c9fc0f44f6526e39f109f18a4
Author: Camillo Moschner <[email protected]>
Date:   Fri Sep 20 17:39:36 2024 +0100

    Resource Update: PLT_CAR_L5AC_A00 pedestal_size_z (#255)

commit 68d102761a5362f2e9cc8312b3283940042694aa
Author: jkh <[email protected]>
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 <[email protected]>

commit dc97d25939813aabea4f7890ae663aaa3b081ba0
Author: Rick Wierenga <[email protected]>
Date:   Wed Sep 18 13:01:39 2024 -0700

    freeze the ops classes and remove doc strings

commit 515c8a0f3eb657ec7f6376d3e023095214da327a
Author: Rick Wierenga <[email protected]>
Date:   Wed Sep 18 10:57:26 2024 -0700

    Coordinate.zero static instead of class method

commit e5bb2492c4f3488fdedcf93492e9d404b24170f5
Author: Rick Wierenga <[email protected]>
Date:   Wed Sep 18 10:56:04 2024 -0700

    [star] don't log empty responses

commit 6cf28431f379134d4a4e8c8d22a23fbfde19219c
Author: Rick Wierenga <[email protected]>
Date:   Mon Sep 16 18:43:18 2024 -0700

    [STAR] replace None values in list with default

commit 0a821d5b1f9253b09550e8c30dc50c66f39db928
Author: Rick Wierenga <[email protected]>
Date:   Sat Sep 14 13:16:57 2024 -0700

    add fluorescence to cytation5 (#244)

commit 5826c7328f64bad7ad9da995f6f6f0a46612efb0
Author: Rick Wierenga <[email protected]>
Date:   Wed Sep 11 16:19:48 2024 -0700

    more chatterboxes (#242)

commit 0f6146a2bc550a4826cbae373bc3758fcdee453b
Author: Rick Wierenga <[email protected]>
Date:   Wed Sep 11 15:09:47 2024 -0700

    add Cytation5 (#238)

    Co-authored-by: jkh <[email protected]>

commit 2145f38f77e0629e338befea355f40bbb22b1ad0
Author: Rick Wierenga <[email protected]>
Date:   Tue Sep 10 17:44:35 2024 -0700

    deprecation warning for 3.8

commit 8c2d1e5c4123dae7dbee35be9cac7b9d46eafb45
Author: Rick Wierenga <[email protected]>
Date:   Tue Sep 10 17:28:09 2024 -0700

    remove single arg check (#240)

commit 277de6915a1abd8414ffb6b6108e8c6f6e191009
Author: Rick Wierenga <[email protected]>
Date:   Tue Sep 10 15:10:27 2024 -0700

    remove old code

commit 858b1e0baae9e8aeaaa418f40ce490e200ef6808
Author: Florian De Rop <[email protected]>
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 <[email protected]>
Date:   Sat Sep 7 19:39:39 2024 -0400

    fixed read_timeout for vantage (#236)

commit a2c827fb990e9e543dc714f7b0a48c2d7a329a79
Author: Rick Wierenga <[email protected]>
Date:   Thu Sep 5 15:01:20 2024 -0700

    clearly differentiate between local and absolute size (#235)

commit 6eccd81f627d6d3074a7c9e469f66251d35100f1
Author: Rick Wierenga <[email protected]>
Date:   Thu Sep 5 13:48:41 2024 -0700

    update changelog for #233

commit 52577a2613d897ac106f2105e0629dfa1216cb8c
Author: jkh <[email protected]>
Date:   Thu Sep 5 13:43:40 2024 -0700

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

commit 175bdab7a2dc0d0083b36bcd9216c2d126e5708c
Author: jkh <[email protected]>
Date:   Thu Sep 5 10:13:40 2024 -0700

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

commit c6fc6917ad29433bf41204598d973c1ec169037a
Author: Rick Wierenga <[email protected]>
Date:   Thu Sep 5 09:16:28 2024 -0700

    remove `items` from ItemizedResource (#231)

    * remove `items` from ItemizedResource

    * changelog

    * linting

commit d1b8cd7e9c648ecfcaeb7afc7b8753e969c4eda6
Author: jkh <[email protected]>
Date:   Wed Sep 4 11:35:15 2024 -0700

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

commit 58481cad9060b28ddaa37fd1a8a79e4c6b38b675
Author: Florian De Rop <[email protected]>
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 <[email protected]>
    Co-authored-by: jkh <[email protected]>

commit 56958fe516563d35e274aee07a9769863728d3db
Author: Rick Wierenga <[email protected]>
Date:   Fri Aug 30 23:57:25 2024 +0200

    fix {aspirate,dispense}96 type check

commit 19d1a95b879f739aaaef4589d946fbb340673e93
Author: Rick Wierenga <[email protected]>
Date:   Fri Aug 30 01:35:29 2024 +0200

    cl for #229

commit 68e884805b390d824ae6ce03e6873c756e0caa7f
Author: Florian De Rop <[email protected]>
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 <[email protected]>
    Co-authored-by: jkh <[email protected]>

commit 8460459f58445b79dd7349976c004a0889c57697
Author: Camillo Moschner <[email protected]>
Date:   Thu Aug 29 22:23:26 2024 +0100

    Create NestedTipRack Class (#228)

    Co-authored-by: Rick Wierenga <[email protected]>

commit 079b7b8a60c506abf6d22bf9cb87645fc1b58d67
Author: Marielle Russo <[email protected]>
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 <[email protected]>

commit a4896c9f13c17fbb148b3346d5f0defce0fb9237
Author: jkh <[email protected]>
Date:   Sat Aug 24 08:51:11 2024 -0700

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

    Co-authored-by: fderop <[email protected]>
    Co-authored-by: Rick Wierenga <[email protected]>

commit fd675edefdaf72f245e70deb9170c54fe4383be3
Author: Rick Wierenga <[email protected]>
Date:   Thu Aug 22 14:20:15 2024 +0200

    allow STAR firmware planning (#224)

    * allow_firmware_planning

    * update CHANGELOG

commit 08371abd28be0e38458aa1c2ff27a43a27978e9c
Author: Rick Wierenga <[email protected]>
Date:   Wed Aug 21 10:09:01 2024 +0200

    update changelog & rm print

commit 4a07f6a32a9a33d0370eb9c29015567c98aea002
Author: Rick Wierenga <[email protected]>
Date:   Wed Aug 21 10:03:08 2024 +0200

    basic query

commit 9bd67a9febbb7ba88c748f705e9d51f4c2adb07c
Author: Camillo Moschner <[email protected]>
Date:   Tue Aug 20 23:01:03 2024 +0100

    Integrate Hamilton NTR (50 ul) (#223)

commit ed10ddbce0840d84ec2ca05260d39e978c1376f7
Author: Camillo Moschner <[email protected]>
Date:   Mon Aug 19 16:35:23 2024 +0100

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

    Co-authored-by: Rick Wierenga <[email protected]>

commit 7de7d400d2f0981df08158fd584c44258e67871d
Author: Rick Wierenga <[email protected]>
Date:   Sat Aug 17 16:57:54 2024 +0200

    update CHANGELOG

commit c24361b454f2b0456d74628352d95389232b4aa5
Author: Florian De Rop <[email protected]>
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 <[email protected]>
    Co-authored-by: jkh <[email protected]>

commit 16a30beac466bea3ac5ec678207912d259223a3f
Author: jkh <[email protected]>
Date:   Sat Aug 17 07:50:58 2024 -0700

    [serializer] handle closure (#220)

    Co-authored-by: Rick Wierenga <[email protected]>

commit 4b9500f99d853426857e708e1e384dfb1122ca59
Author: Florian De Rop <[email protected]>
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 <[email protected]>
    Co-authored-by: jkh <[email protected]>

commit a0c0959d687215784c57084c7837684a8dd73fa5
Author: Rick Wierenga <[email protected]>
Date:   Sat Aug 17 15:19:42 2024 +0200

    ignore *.swo

commit 9b31b238fef187511c66fc9ffc3a338d3857d6a2
Author: Rick Wierenga <[email protected]>
Date:   Fri Aug 16 10:06:43 2024 +0200

    fix lint

commit 6ea363dd9b7123a1b63b02e1e7ee26f005cb4f37
Author: Robert-Keyser-Calico <[email protected]>
Date:   Fri Aug 16 01:01:11 2024 -0700

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

commit 48cb06a376035f43aa99a4b3140e76ef7efb95db
Author: jkh <[email protected]>
Date:   Wed Aug 14 15:17:03 2024 -0700

    [HamiltonHeatShaker] add temperature controls (#217)

commit e5036d5f7fe8d889a967fe35ad8d874af0a4fe6b
Author: Florian De Rop <[email protected]>
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 <[email protected]>

commit 92496419e60af3ce3f168ad24eb2934791999fbc
Author: Rick Wierenga <[email protected]>
Date:   Mon Aug 12 17:41:41 2024 +0200

    it was actually #215

commit badede5db93ae300ff3c41ff92402b6eaf8804e5
Author: Rick Wierenga <[email protected]>
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 <[email protected]>
Date:   Mon Aug 12 17:16:36 2024 +0200

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

commit 0ad15420f49d16492813b40f182d700916256449
Author: Rick Wierenga <[email protected]>
Date:   Mon Aug 12 17:16:24 2024 +0200

    update changelog for #205

commit 67a1d3f74d7d636034bb57582442ea1f5e5aed4b
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit 9f1fcf5e6fe67cb383a1084ccbd76ff13a30f959
Merge: b37b7729 27a06b58
Author: Rick Wierenga <[email protected]>
Date:   Fri Aug 9 22:53:37 2024 +0200

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

commit b37b77298c8bbd82810307cdbbb1ca7d2b747cb6
Author: Rick Wierenga <[email protected]>
Date:   Fri Aug 9 22:53:30 2024 +0200

    update visualizer tutorial

commit 27a06b58ecf1704e8b97540ef92c395298eed2d9
Author: Joe Laforet Jr. <[email protected]>
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 <[email protected]>

commit bdc445048c501c08cb63877882e616cbb3d5871b
Author: ray <[email protected]>
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 <[email protected]>

commit 60db08f9b7218b2e227249406386e4bf916441b9
Author: Rick Wierenga <[email protected]>
Date:   Fri Aug 9 21:34:54 2024 +0200

    Serialize functions (#215)

    * marshal functions

    * serialize functions

    * typecheck

    * remove old code

commit cc180b107b4b3d43a1cc71f006a79b8fa0207597
Author: ray <[email protected]>
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 <[email protected]>

commit 08a36664fdbac871336d5b2ada2952678af0ce2b
Author: Rick Wierenga <[email protected]>
Date:   Fri Aug 9 19:24:05 2024 +0200

    fix import serial in ham tilt module

commit 4c385cd834e43c6bf65492d450a68ecc3a583e15
Author: Camillo Moschner <[email protected]>
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 <[email protected]>
Date:   Thu Aug 1 18:49:15 2024 +0200

    Fix server tests (#209)

    * fix lh server?

    * fix

commit 59fdcb78656db320f9ba48fbc37259b80193a4bb
Author: Rick Wierenga <[email protected]>
Date:   Thu Aug 1 18:12:13 2024 +0200

    remove PLT_CAR_L4_SHAKER

commit 20c61c29c6b164212c3cc0bc0a60eb8d166f854f
Author: Rick Wierenga <[email protected]>
Date:   Thu Aug 1 18:09:47 2024 +0200

    delete hamilton_parse

commit 1a99c490dff66d744226b72a1d661dfe2291ab3e
Author: Rick Wierenga <[email protected]>
Date:   Thu Aug 1 18:06:19 2024 +0200

    remove load_from_lay_file

commit 793d20d675c71d40e89e8d0c15d20b59fa5aa748
Author: Rick Wierenga <[email protected]>
Date:   Thu Aug 1 13:36:44 2024 +0200

    ugh

commit 90d89357ed78df23e0f32de6f5fcd78499c04179
Author: Florian De Rop <[email protected]>
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 <[email protected]>

commit 638bb88661f073d67b05c9ecefd8cf9d0aed943d
Author: Rick Wierenga <[email protected]>
Date:   Wed Jul 31 12:44:26 2024 +0200

    only if bav is not none

commit 1f7274def3723e677d32a9b9bcfe054d82664f9c
Author: ray <[email protected]>
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 <[email protected]>

commit 51e0015c137929afd2723a3ca7a2ef85add61ae8
Author: Rick Wierenga <[email protected]>
Date:   Sat Jul 27 18:04:47 2024 +0200

    type check in LH

commit 92983dec8be0a7c86a2bc24386d2c606435fedd9
Author: Florian De Rop <[email protected]>
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 <[email protected]>

commit d239b54cd9a6a4d9cdbcffb09b1681fe1042ba51
Author: Rick Wierenga <[email protected]>
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 <[email protected]>
Date:   Sat Jul 20 00:42:26 2024 +0200

    update mypy

commit bcbe101b1e7939b08a2a38cd9441f2ae9351aa7a
Author: Rick Wierenga <[email protected]>
Date:   Thu Jul 18 20:09:55 2024 +0200

    handle int/float in STAR params

commit 60ff5caf7f9b30e0c0321618dc349afbf6367af0
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit 7e2ff4b1cc285c4ab715db864e564001469dac5e
Author: Florian De Rop <[email protected]>
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 <[email protected]>

commit 282ebfa7bd0ab86ee58950dc53fad286948e034a
Author: Rick Wierenga <[email protected]>
Date:   Wed Jul 17 13:52:34 2024 +0200

    fix `Cos_96_DWP_2mL_Vb` in table

commit 1fa8773a09265e690b5dd17599d1c31e18206984
Author: Rick Wierenga <[email protected]>
Date:   Wed Jul 17 13:50:55 2024 +0200

    use Cor_96_wellplate_360ul_Fb in tutorials

commit 5ad5f897800d47ebfddaf7394c8699cfa27af032
Author: Rick Wierenga <[email protected]>
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 <[email protected]>
Date:   Tue Jul 16 19:33:08 2024 +0200

    make libusb_package an optional dep

commit 8a497892e3bb23311a6c36ba3b79e956677735c5
Author: Rick Wierenga <[email protected]>
Date:   Tue Jul 16 10:08:15 2024 +0200

    support exotic number types

commit 912975518e0bed0115c05b327ce017b05b6f7f86
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit 0b939e6768cfed263f8cae6a91fe93a1494fb884
Author: Rick Wierenga <[email protected]>
Date:   Mon Jul 15 12:26:57 2024 +0200

    update sphinx

commit 0a945ab50b069fc6c90679ae6f0c0c9f4e0c369d
Author: Rick Wierenga <[email protected]>
Date:   Mon Jul 15 11:55:34 2024 +0200

    type checking

commit e9e30cedaedf20cc5d5215b738c104b3294354ef
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit 70e0f03f3045a3837b6ce61e64d10c644a7fd89c
Author: Rick Wierenga <[email protected]>
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 <[email protected]>
Date:   Sat Jul 13 22:08:59 2024 +0200

    ugh

commit 6e2616bc0c10c8aa63384f0be0f6e609a9cb8e2d
Author: Rick Wierenga <[email protected]>
Date:   Sat Jul 13 22:04:14 2024 +0200

    warning for big resources (#194)

commit a1b63e97cad92456e1409ef62c6293eb67701a71
Author: Rick Wierenga <[email protected]>
Date:   Fri Jul 12 18:31:30 2024 +0200

    don’t run ci twice on PRs from plr repo

commit c4cd1c3ca050a5e98c98e10ace019d29a0fd3c63
Author: Rick Wierenga <[email protected]>
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 <[email protected]>
Date:   Mon Jul 8 15:34:24 2024 +0100

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

commit 1aadf1f635b69c40fee4898abff38f20b1b64060
Author: Rick Wierenga <[email protected]>
Date:   Tue Jul 2 13:47:20 2024 +0200

    use list with multi channel single-resource op

commit bc52106f88df933af0f8774b43e0a64ac8581e90
Author: Rick Wierenga <[email protected]>
Date:   Tue Jul 2 00:25:39 2024 +0200

    deprecate hamilton_parse

commit 9f142940071f048acae0234c3ad47325385a9bb3
Author: Rick Wierenga <[email protected]>
Date:   Tue Jul 2 00:16:22 2024 +0200

    offset no longer optional

commit 262479f19d14daeb7044c9c130078cc908344c5e
Author: Rick Wierenga <[email protected]>
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 <[email protected]>
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 <[email protected]>
Date:   Fri Jun 28 15:57:16 2024 +0200

    fix OT resource loading and defining

commit de037346f98ad3a834a175e40db72d01c24bc926
Author: Rick Wierenga <[email protected]>
Date:   Fri Jun 28 11:28:36 2024 +0200

    fix rectangle drawing in visualizer

commit e01702efedbe7586ee7fc1c2a144ac7b5f56297e
Author: Rick Wierenga <[email protected]>
Date:   Fri Jun 28 00:22:13 2024 +0200

    Create CHANGELOG.md

commit 31614ed748edfec05daef7b1b88d8cc5d536161e
Author: Rick Wierenga <[email protected]>
Date:   Fri Jun 28 00:06:59 2024 +0200

    update doc

commit 6beeacb246351ee3e8a0ad2bfec96f8dd432bb3f
Author: Rick Wierenga <[email protected]>
Date:   Thu Jun 27 21:08:12 2024 +0200

    smh

commit 0b30920be4234f09b3b1855b5e398794562e91d6
Author: jkh <[email protected]>
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 <[email protected]>
    Co-authored-by: Rick Wierenga <[email protected]>

commit 1ada672cbbccfc6cc2decdb0786b601d4bd58ff9
Author: Rick Wierenga <[email protected]>
Date:   Thu Jun 27 20:50:31 2024 +0200

    fix

commit 61dade196d3d93415aef364cdad5df2b8faa5ee3
Author: Rick Wierenga <[email protected]>
Date:   Thu Jun 27 20:48:37 2024 +0200

    add tilt module (#165)

    * add tilt module

    * add async (#175)

    Co-authored-by: jj <[email protected]>

    * add pylabrobot.tilting module / modernize

    * add tiny doc

    ---------

    Co-authored-by: jkh <[email protected]>
    Co-authored-by: jj <[email protected]>

commit 1d851c494919cc4564a1a592aa88bd0ba0b15d4e
Author: Rick Wierenga <[email protected]>
Date:   Thu Jun 27 12:45:00 2024 +0200

    Correct plate dimensions (#180)

    * Correct plate dimensions

    * more

    * fix

commit cf972b40e0cada95e811e78e5bb57da51d83e49d
Author: Rick Wierenga <[email protected]>
Date:   Thu Jun 27 11:12:42 2024 +0200

    minor formatting

commit f54a81d29c5180530565a1637a5e1554b4875277
Author: Rick Wierenga <[email protected]>
Date:   Thu Jun 27 11:11:33 2024 +0200

    Add meaesure nesting_z_height to docs

commit 2fd8e52101495a90794dab308d54f3bb722bb0cd
Author: Rick Wierenga <[email protected]>
Date:   Thu Jun 27 10:54:50 2024 +0200

    update measure picture

commit 60cc8eddc359f7cb7457e40e520561dc8cac2a86
Author: Rick Wierenga <[email protected]>
Date:   Thu Jun 27 00:30:45 2024 +0200

    move volume <->height functions to Container

commit bcc381b535d0efd598a375f221dea86d5cb2e0c1
Author: Rick Wierenga <[email protected]>
Date:   Wed Jun 26 19:55:38 2024 +0200

    expose STAR.dispense liquid_surface_no_lld param

commit 0c3587498821e517b52777073eb744262d0f4221
Author: Camillo Moschner <[email protected]>
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 <[email protected]>
Date:   Mon Jun 24 21:23:25 2024 +0200

    fix lh.summary longest name bug

commit b7b39361666baf56165f8b1632810c0fe2aa4b96
Author: Rick Wierenga <[email protected]>
Date:   Mon Jun 24 16:16:38 2024 +0200

    remove “currently defined” (#169)

commit 6ad9e53e22d5f405fdf6f608aa38646eda5aa1e9
Author: Rick Wierenga <[email protected]>
Date:   Mon Jun 24 13:08:44 2024 +0200

    fix docs building

commit 25a7ff37a64bec7c5663243f7ca0b87421edf893
Author: Rick Wierenga <[email protected]>
Date:   Mon Jun 24 12:04:47 2024 +0200

    update

commit 3dd3965987da277f27790ee4c68e3abebe091ef4
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit dd832cc31122acf5063075e13919f25daa42b0d2
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit e899965b61d20a5343d44c162eb4095623f5f0ce
Author: jkh <[email protected]>
Date:   Wed Jun 19 12:19:24 2024 -0700

    [STAR] fix get_core typo (#167)

commit 1c13e361fb004527a492536338e96c64932194ad
Author: jkh <[email protected]>
Date:   Wed Jun 19 11:06:26 2024 -0700

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

    Co-authored-by: jj <[email protected]>

commit e77efc490644f8d1221bdfb3f823d8e7dcd63700
Author: jkh <[email protected]>
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 <[email protected]>

commit e63b80f61ad7e19ab43e329529a02631a8357c9d
Author: Camillo Moschner <[email protected]>
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 <[email protected]>
Date:   Sat Jun 15 16:56:34 2024 +0200

    move to plate carriers page

commit 0a5857b9561f9773e0fa96145f156ad3362972b6
Author: Rick Wierenga <[email protected]>
Date:   Fri Jun 14 12:09:25 2024 +0200

    links

commit a59d204793d0ddb549fd31c871f0190dc33efbe3
Author: Rick Wierenga <[email protected]>
Date:   Fri Jun 14 12:02:13 2024 +0200

    test mixing with volume tracker

commit 1f9860e7b94da00c11a5f0cccf0538498c336264
Author: Florian De Rop <[email protected]>
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 <[email protected]>

commit e6450ca976c4880497cf9a372e17ef342603473d
Author: joelaforet <[email protected]>
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 <[email protected]>

commit 1d9f10ad0d2c0b4fa17bf9df63edeaf82d5f9525
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit 691143fc014ca1d2d2058741000705369d5b6a16
Author: Rick Wierenga <[email protected]>
Date:   Thu Jun 13 19:31:41 2024 +0200

    remove superfluous doc string things

commit e4baf715e701e2125764aaf4167faa568327b7e4
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit 98042cc0b67094c115be986f367db27830a4bf17
Author: Rick Wierenga <[email protected]>
Date:   Mon Jun 10 23:54:43 2024 +0200

    doc config

commit ad2bb4d0a3fc69ecb90aae369518209aa9c60106
Author: Rick Wierenga <[email protected]>
Date:   Mon Jun 10 23:50:39 2024 +0200

    rename ini_file.py to ini_config.py

commit 3b3615b4c30548612c7e8723d95cc849bb54aeb1
Author: jt05610 <[email protected]>
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 <[email protected]>
    Co-authored-by: Rick Wierenga <[email protected]>

commit 5fac5f5573a912c161f21dd85c053a0d4cfa97eb
Author: Rick Wierenga <[email protected]>
Date:   Sun Jun 9 02:10:08 2024 +0200

    fix clario star checksum

commit 775a99b6e8e1c9fec525937b24dba121744b8354
Author: Rick Wierenga <[email protected]>
Date:   Fri Jun 7 00:22:00 2024 +0200

    fix doc making

commit a60a7afb71e1e527c62618068d2cf49166477a54
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit e74e169093d882933ff9cae4ccb517bb1db4a8f1
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit bbc68aa9b8e30044841a06ef65b5bc394b66913c
Author: Rick Wierenga <[email protected]>
Date:   Wed Jun 5 07:06:26 2024 +0200

    remove LiquidHandler.unassign_resource

commit 083841c6287288edf2573d0e534376edc9c2e090
Merge: d9baaf1c 70344495
Author: Rick Wierenga <[email protected]>
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 <[email protected]>
Date:   Tue Jun 4 16:53:46 2024 -0600

    fix: close event loop that starts in thread

commit d9baaf1c6abfdbe434f7ae5e4ae6477ad1de7634
Author: Rick Wierenga <[email protected]>
Date:   Mon Jun 3 12:21:58 2024 +0200

    add fans doc, rename module for compatibility

commit 12c4a525ef3ac439fb010ba71b1e31ce47410fe2
Author: Rick Wierenga <[email protected]>
Date:   Sat Jun 1 06:13:30 2024 -0400

    simplify {aspirate,dispense}96 container

commit 71bdcff94afc13f40ca7647cf83e021798bd5672
Author: Rick Wierenga <[email protected]>
Date:   Sat Jun 1 05:40:42 2024 -0400

    raise BlowOutVolumeError (#153)

    * raise BlowOutVolumeError

    * set back to None

    * fix

commit 4756af76b1533da9b944cf079b80a14cd78f0762
Author: Rick Wierenga <[email protected]>
Date:   Fri May 31 23:40:31 2024 -0400

    create carrier sites with klass

commit d16d995b01ab6b6eda51b323271bdea5a11b953a
Author: Rick Wierenga <[email protected]>
Date:   Fri May 31 23:20:33 2024 -0400

    create_equally_spaced_{x,y,2d}

commit ef0546b45524153a39a145a105d62da256bef271
Author: Rick Wierenga <[email protected]>
Date:   Fri May 31 19:33:25 2024 -0400

    fix hlc blow out air in STAR.dispense

commit ce99845a9bc4c6301bdda8fa654cfc6f3d16b1d5
Author: Rick Wierenga <[email protected]>
Date:   Thu May 30 16:12:11 2024 -0400

    (that only works on 3.12)

commit 938fe3ec5be52ed2cf3a854673fcf3cce8c0208c
Author: Marielle Russo <[email protected]>
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 <[email protected]>

commit e8fe49ccef33015894bb6a2bc7c6bad267466c89
Author: joelaforet <[email protected]>
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 <[email protected]>

commit 567110d8304c6558a6deb0daedb76c3aab080383
Author: Florian De Rop <[email protected]>
Date:   Tue May 28 18:06:50 2024 -0700

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

commit d3568d3a935b340b584d95f967e8a5aa1d69b19e
Author: Rick Wierenga <[email protected]>
Date:   Tue May 28 08:45:30 2024 -0400

    get_anchor (#147)

    * get_anchor

    * type

commit 288e1d72848dbb7a1625d7c5979f07b7de61dcc9
Author: Phi Nguyen <[email protected]>
Date:   Mon May 27 14:28:06 2024 -0400

    added size to plate reader in README (#146)

commit c1ca2b55ebd1f3c37cb09c91154529d0d54dba49
Author: ramirjos <[email protected]>
Date:   Sun May 26 21:28:42 2024 -0400

    add the only fan (#144)

commit 3640150319d5667dcc558bfd0961ade6c0e0a2c9
Author: Rick Wierenga <[email protected]>
Date:   Sat May 25 23:02:43 2024 -0400

    fix

commit 61e1275b71eee9b0e0df5a2717bca1a4d55df112
Merge: 996a32c9 f84b5611
Author: Rick Wierenga <[email protected]>
Date:   Sat May 25 23:00:25 2024 -0400

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

commit 996a32c9a94fd24f393453ca818994010d5563b8
Author: Rick Wierenga <[email protected]>
Date:   Sat May 25 23:00:16 2024 -0400

    update tecan well height definition

commit f84b561165cacb0c9b827a23de126c460f7a4453
Author: Camillo Moschner <[email protected]>
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 <[email protected]>
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 <[email protected]>

commit 8eca518580dc9b5f12a272411190097201129ab1
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit adeeff75941e14cede7db46d15bffd4f19155d89
Author: Rick Wierenga <[email protected]>
Date:   Wed May 22 03:27:10 2024 -0400

    fix type

commit ac3e45ff495aaa2f1b02cd56bc5628f784c88378
Author: ramirjos <[email protected]>
Date:   Wed May 22 02:53:01 2024 -0400

    fix z offset for 96 tip pickup (#137)

commit 5bad3ae812f21d9b33893dcb34f05c1b6ee88c95
Author: Camillo Moschner <[email protected]>
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 <[email protected]>
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 <[email protected]>

commit dc9a40fae19bdb17c78a0b73d474cd16c7e78e67
Author: jkh <[email protected]>
Date:   Thu May 16 15:35:59 2024 -0700

    [STAR] fix core gripper location (#133)

    Co-authored-by: jj <[email protected]>

commit f382dd2a909fd650598f4a0f36a4b61f67e1e150
Author: joelaforet <[email protected]>
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 <[email protected]>

commit 1919727e2d142ec81d2a1a8adc02acf9a7b1f96b
Author: Camillo Moschner <[email protected]>
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 <[email protected]>
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 <[email protected]>

commit b144f11c90a18c5493db1755f6bc8e9edb100229
Author: Rick Wierenga <[email protected]>
Date:   Tue May 14 16:29:37 2024 -0400

    fix linting errors

commit 7d316afd4cce7c4cbc1f59f1333b7c280eb9f6de
Author: Charlotte Christensen <[email protected]>
Date:   Sun May 12 18:36:52 2024 -0400

    fix greiner 384 plate (#128)

commit 9e664e1fb4c28e370214225dc7e10eb6436fc564
Author: Rick Wierenga <[email protected]>
Date:   Sun May 12 13:28:13 2024 -0400

    fix some STAR error messages

commit 2c7d05d335d81d1aeb71f0ba8f7f9409794cec97
Author: Nicolás A. Méndez <[email protected]>
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 <[email protected]>
Date:   Sat May 11 09:15:25 2024 -0700

    fix STAR.request_{y,z}_pos_channel_n

commit 52d8b5b5c61a524075b94464f2aa187e5deb8acd
Author: Rick Wierenga <[email protected]>
Date:   Sat May 11 09:04:15 2024 -0700

    fix LTF pickup on STAR

commit 8f5f77f790a4819c0b8e539dbd932992284527ec
Author: Ben <[email protected]>
Date:   Wed May 8 18:55:54 2024 -0700

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

commit 254d424e90ccf4fbcf6ba2209ce87d3b23f5bb8d
Author: Rick Wierenga <[email protected]>
Date:   Wed May 8 12:45:46 2024 -0400

    fix tiny dispense on Vantage with 10uL tips

commit c655ceb5b6d5a4fbece10b54420ec0562728a82c
Author: Rick Wierenga <[email protected]>
Date:   Tue May 7 18:09:22 2024 -0400

    fix LH.dispense volume tracker issue

commit a292d3022ec3528fdd2b9453ee30e95f861b6fad
Author: jkh <[email protected]>
Date:   Mon May 6 10:07:49 2024 -0700

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

    Co-authored-by: jj <[email protected]>

commit ddeff94bfe2dc6249d27642c243237ec472c3ff8
Author: Camillo Moschner <[email protected]>
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 <[email protected]>

commit 42326e7b351c3ce3203552f93a335ce5d8601de1
Author: Rick Wierenga <[email protected]>
Date:   Wed May 1 13:13:51 2024 -0400

    fix type

commit 6405ee12052db38c53e3bb69b2ecdd6029c2f189
Author: Marielle Russo <[email protected]>
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 <[email protected]>

commit 69dd270d68f06aa4c7947e0efacba7f2573ab5ba
Author: Rick Wierenga <[email protected]>
Date:   Wed May 1 12:49:50 2024 -0400

    fix type

commit 8362937bad16ec9b1685b91a3426c3efa207eaaf
Author: Lenni Justen <[email protected]>
Date:   Wed May 1 11:12:11 2024 -0400

    fix typo (#121)

commit 9ac280a44392cb4727778ed20289f429ea2f92d9
Author: Rick Wierenga <[email protected]>
Date:   Wed May 1 00:18:30 2024 -0400

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

commit d31f66ed80788376f677809ea8c87be249f696db
Author: Lenni Justen <[email protected]>
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 <[email protected]>
Date:   Tue Apr 30 13:33:37 2024 -0400

    fix ot module loading (#118)

commit 9f2011035bbf5813ec38b77a3839f541b130e8c5
Author: Phi Nguyen <[email protected]>
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

 …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants