Making the Mapping File LIMS friendly

I have been playing with the Generate Mapping File smart step and ran into a limitation, where the volume transferred (Tvolume) is the total well volume at creation time of the File, not that individual pipette steps transfer volume:

This becomes an issue when you have one dispense step that transfers to the same well all in the same dispense step. Since it is showing the CURRENT VOLUME of the target container at creation of the file the mapping function will distinguish each transfer as unique, but show the final volume of the well! I really want a record of every transfer automatically generated!

This makes it a bit hard to interpret into a LIMS as each row is broken down into a unique transfer but the total volume is not the actual volume transferred for that row.

An example, I transferred 40ul 6 times all into the same well:

When looking at the mapping file it appears that 240ul was transferred each unique row, but alas this is current volume of the container.

When interpreting this into a LIMS it works great when you don’t hit the same output well twice! The minute you do you’ll have to do some reverse lookup to see if that well has already been hit.

It’s almost as if I need to write the mapping file between each channel dispense :sweat_smile:

But this doesn’t seem possible haha. Anyone have any hacks for this? I’d really like to use the mapping file report as it does output files for me! I guess I could rebuilt the tool using step return bind functions but do not want to do that…

1 Like

I asked a question similar to this a while back. Maybe this will be of use?

https://forums.pylabrobot.org/t/mapping-files-is-it-possible-to-display-a-volume-pipetted-rather-than-the-total-volume-in-a-target/1299?u=csharps

1 Like

Thanks for the link! Dang, looks like its not possible with the standard mapping file output.

Removing the labware virtually is not possible since all my dispenses occur at the same time into the same well, all in one dispense step.

I had a similar problem,
I resorted to re-naming the labware ID’s to a MMDDYYY_hhmmss approach to compartmentalize the pipetting steps - yielding multiple files per labware with volume specific data for the pipetting step that just took place,

i was considering using the HSL database tracking library to see if the individual records could be accessed - but no progress on this front

Hi @cwehrhan ,

You can use the following library to create a Mapping Report using the step return values from the Aspirate and Dispense Steps.

Report File Store

Pipetting Step Channel Used Asp Rack BC Asp Container BC Asp LabID Asp PosID Asp Volume Asp Status Asp Recovery Disp Rack BC Disp Container BC Disp LabID Disp PosID Disp Volume Disp Status Disp Recovery
Pool Sample 1 ----- ----- Cos_96_DW_1mL_0001 A1 100.0 No Error None ----- ----- Cos_96_DW_1mL_0001 A12 100.0 No Error None
Pool Sample 2 ----- ----- Cos_96_DW_1mL_0001 B1 100.0 No Error None ----- ----- Cos_96_DW_1mL_0001 A12 100.0 No Error None
Pool Sample 3 ----- ----- Cos_96_DW_1mL_0001 C1 100.0 No Error None ----- ----- Cos_96_DW_1mL_0001 A12 100.0 No Error None
Pool Sample 4 ----- ----- Cos_96_DW_1mL_0001 D1 100.0 No Error None ----- ----- Cos_96_DW_1mL_0001 A12 100.0 No Error None
Pool Sample 5 ----- ----- Cos_96_DW_1mL_0001 E1 100.0 No Error None ----- ----- Cos_96_DW_1mL_0001 A12 100.0 No Error None
Pool Sample 6 ----- ----- Cos_96_DW_1mL_0001 F1 100.0 No Error None ----- ----- Cos_96_DW_1mL_0001 A12 100.0 No Error None
Pool Sample 7 ----- ----- Cos_96_DW_1mL_0001 G1 100.0 No Error None ----- ----- Cos_96_DW_1mL_0001 A12 100.0 No Error None
Pool Sample 8 ----- ----- Cos_96_DW_1mL_0001 H1 100.0 No Error None ----- ----- Cos_96_DW_1mL_0001 A12 100.0 No Error None
7 Likes

Perfect! I was about to rebuild this myself but figured someone must have done it already! Thanks for the library!

I’m guessing this also gives you a full return of errors, where the mapping file error codes reported were quite limited

Hi @cwehrhan ,

Correct it will return the last error and recovery used from each pipetting step. Example: “Insufficient Liquid Error” and “Bottom” for error and recovery.

1 Like

Hi All, I’ve managed to get this library working in the past but for some reason I keep getting the following error: “Report File Store.smt(2,1) : Cannot update. Database or object is read-only.”

Anybody have a clue why I keep getting this on the instrument and also in sim mode on my workstation?

Thanks!

2 Likes

Hello @BrandonBare_Hamilton
I am trying to use this Library on tubes.
The Demo version works Fine, I am using single steps in my method as well and I cant find any differences.
However, I receive this Error when trying to use the library in my own Method:
….HSLMlStarStepReturnLib.hsl (422): _Method::StepReturn::GetNumberOfPositions() The parameter is incorrect. (0x0 - 0x0 - 0x1)

I’ve tried to figure it out by myself, but I can’t get it resolved.

Help is very much appreciated!

Hi @yunghans ,

Can you send a snapshot with your implementation? Tracing out the aspirate and dispense return values also would help.

Just to confirm, are you binding your return to the third option on the aspirate and dispense?

Thank you fore the quick reply!

Here is the part of the method (I have checked that this step is executed)

Here is the trace (ignore that channel 8 piks up a tip, I just switches over to single steps to use the report file store library, will fix that later):

How can I trace out the aspirate and dispence values?

I don’t know what I’m binding the return value to - I have not selected anything special.

I will look over the method again and see if there has been some variable-binding which I was not aware of.
EDIT: I cannot see any variable binding when using single steps (asp&disp), neither in the example method, nor in mine.

OMG - I just found the “Bind return values to” button by rightclicking on the asp. and disp. single step.
The method works !!! :slight_smile:
So helpful talking to you!

2 Likes

Hi @yunghans ,

If you right click on the single step, you will see a Bind Return values… option.

From there, you can bind a variable to one of three return options. The third one contains the step return values that you need for the library to be able to parse the information.

2 Likes

THANK YOU ! :slight_smile:

1 Like