sanger / limber

A config-driven LIMS built on Sequencescape, primarily for running library preparation pipelines in the laboratory
MIT License
4 stars 8 forks source link

DPL-829 PBMC plate --> tube rack bed verification #1333

Closed KatyTaylor closed 1 year ago

KatyTaylor commented 1 year ago

User story As a user of the scRNA Core Cell Extraction pipeline, I would like to have bed verification support in Limber for the "LRC PBMC Bank" plate to the "LRC Bank Seq" / "LRC Bank Spare" transfer, to try to avoid lab mistakes.

Who are the primary contacts for this story Lesley, Katy

Who is the nominated tester for UAT Lesley

Acceptance criteria To be considered successful the solution must allow:

Dependencies This story is blocked by the following dependencies:

Lesley84 commented 1 year ago

Can we have multiple destination plates (sequencing and contingency)?

KatyTaylor commented 1 year ago

This might have to be more than a standard bed verification story - Because both source plates have the same purpose, and the racks don't have any printed labels and therefore can't have purposes visible to the user, I think we will have to tell the user which beds to put the plates / racks on.

e.g. User scans each labware, bed verification screen tells them which bed to put it on. They can then scan the bed to double-check they put it on the right one!

The logic for determining which labware goes on which bed should be the same as the robot method uses when it interprets the driver file. A simple rule could be to use the numerical order of the barcodes to determine which bed to map the source plates and destination racks to.

KatyTaylor commented 1 year ago

Update on last comment: Robot software will prompt user with which barcode goes in which bed. See https://github.com/sanger/limber/issues/1362#issuecomment-1680501001 for summary

KatyTaylor commented 1 year ago

For bed verification, see: config > robots.rb app > models > robots

See Andrew's comment - https://github.com/sanger/limber/issues/1360#issuecomment-1673007667

There's a decision still to be made as to how we store the tube rack barcode. It could be:

a) Using the proper tube rack model in Sequencescape. Tube rack support has never been fully fleshed out, although some work did happen on it during the Heron Tapestation work: Issues:

PRs:

b) Saving the tube rack barcode against the tube in some way - e.g. using custom metadata (key-value pair table in database, linked to labware)

I think I would go with b), because I feel a) is going to throw up a lot of additional complexity. Either way, I think we will need a new Robot class that knows how to handle the relationship between tube racks and tubes. It will need to do the following: When the user scans in the tube rack barcode, it will need to search for that, and find the associated tubes, and find the tube purposes, and check that the appropriate tube purpose is in the scanned bed.

KatyTaylor commented 1 year ago

N.B. the robot to be used for this doesn't yet have barcodes stuck on it, so that will have to be done before bed verification can happen.

KatyTaylor commented 1 year ago

Updated to remove reference to multiple source plates, as there will now only be one.

Lesley84 commented 1 year ago

Happy with this story. We can print the bed labels, but would you be able to provide us with a robot label?

andrewsparkes commented 1 year ago

The tubes now have 2 values stored in their custom_metadata: tube_rack_barcode -> the barcode of the rack the tube was in at the point of transfer from the PBMC Bank plate tube_rack_position -> the position of the tube within the rack at the point of transfer from the PBMC Bank plate

So you can fetch the rack barcode from the tube custom_metadata

yoldas commented 1 year ago

DPL-829 LRC PBMBC Bank to LRC Bank Seq/Spare Bed Verification Lucid document.

yoldas commented 1 year ago

About the first two acceptance criteria. We are not doing the verification of the robot barcode at the moment as it would require having created_with_robot => ROBOT_BARCODE in the metadata of parent PBMC Bank plate, which was not written. Therefore, we do not have require_robot option in the robot configuration for 'Hamilton LRC PBMC Bank => LRC Bank Seq and LRC Bank Spare'.

yoldas commented 1 year ago

There is a merge request for the integration suite related to this story on GitLab and already approved. It needs to be merged into its parent branch there after we merge the PR of this story to develop.