Wells: Depositing & Transferring Material

A Well holds exactly one Stock, accessed with stock(w). Its capacity is fixed by its LocationKind (wellcapacity):

julia> plate = build_location(loc"WP96", "Plate 1");

julia> a1 = plate["A1"];

julia> wellcapacity(a1)
400 μL

julia> stock(a1)
Empty Stock

Depositing and withdrawing

deposit! and withdraw! add to and remove from a well's stock, within the well's capacity. The examples use the saline from Stocks:

julia> saline = 1u"mL" * rgt"water" + 5u"g" * rgt"sodium_chloride";

julia> deposit!(a1, saline)
ERROR: Well Capacity Error: 1 mL is greater than the well's capacity (400 μL)

julia> small_saline = 100u"µL" * saline
100 μL Solution (2 reagent(s))
 Solids           Name             Amount  Concentration
─────────────────────────────────────────────────────────
 sodium_chloride  Sodium Chloride  500 mg    5.00 g mL⁻¹

 Liquids  Name   Amount  Concentration
───────────────────────────────────────
 water    water  100 μL          100 %

julia> deposit!(a1, small_saline)

julia> stock(a1)
100 μL Solution (2 reagent(s))
 Solids           Name             Amount  Concentration
─────────────────────────────────────────────────────────
 sodium_chloride  Sodium Chloride  500 mg    5.00 g mL⁻¹

 Liquids  Name   Amount  Concentration
───────────────────────────────────────
 water    water  100 μL          100 %

The third argument of deposit! is a cost, a tracked number such as a reagent cost. withdraw! apportions it proportionally when material is removed. It defaults to zero.

Transferring between wells

transfer!(donor, recipient, quantity) is withdraw! then deposit! in one call:

julia> a2 = plate["A2"];

julia> transfer!(a1, a2, 40u"µL")

julia> stock(a1)
60.0 μL Solution (2 reagent(s))
 Solids           Name             Amount  Concentration
─────────────────────────────────────────────────────────
 sodium_chloride  Sodium Chloride  300 mg    5.00 g mL⁻¹

 Liquids  Name   Amount   Concentration
────────────────────────────────────────
 water    water  60.0 μL          100 %

julia> stock(a2)
40.0 μL Solution (2 reagent(s))
 Solids           Name             Amount  Concentration
─────────────────────────────────────────────────────────
 sodium_chloride  Sodium Chloride  200 mg    5.00 g mL⁻¹

 Liquids  Name   Amount   Concentration
────────────────────────────────────────
 water    water  40.0 μL          100 %

Well names and positions

plate_namer returns the standard microplate name of a well from its row and column. add_stock! deposits a stock into the well at a row and column of a Labware and is a shorthand for deposit! on that well. It shows a warning if the well is not empty and then deposits anyway:

julia> plate_namer(1, 1), plate_namer(8, 12)
("A1", "H12")

julia> add_stock!(plate, 50u"µL" * rgt"water", 2, 1);

julia> stock(plate["B1"])
50.0 μL Solution (1 reagent(s))
 Liquids  Name   Amount   Concentration
────────────────────────────────────────
 water    water  50.0 μL          100 %

With LabwarePlotting and Plots loaded, plot_well_heatmap! overlays a heatmap of the quantity in each well, in µL, on a plot. Empty wells count as zero.

Clearing a well

empty! resets a well to Empty(). sterilize! and drain! remove only part of the contents. The examples use a fresh well holding a Culture:

julia> a3 = plate["A3"];

julia> culture = small_saline + 1u"OD*mL" * org"SMU_UA159"
100 μL Culture (2 reagent(s))
 Organisms  Name                        Biomass     OD
────────────────────────────────────────────────────────────
 SMU_UA159  Streptococcus mutans UA159  1.00 mL OD  10.0 OD

 Solids           Name             Amount  Concentration
─────────────────────────────────────────────────────────
 sodium_chloride  Sodium Chloride  500 mg    5.00 g mL⁻¹

 Liquids  Name   Amount  Concentration
───────────────────────────────────────
 water    water  100 μL          100 %

julia> deposit!(a3, culture)

sterilize! keeps the chemicals, drops the organism:

julia> sterilize!(a3)

julia> stock(a3)
100 μL Solution (2 reagent(s))
 Solids           Name             Amount  Concentration
─────────────────────────────────────────────────────────
 sodium_chloride  Sodium Chloride  500 mg    5.00 g mL⁻¹

 Liquids  Name   Amount  Concentration
───────────────────────────────────────
 water    water  100 μL          100 %

drain! is the inverse: it keeps the organism and drops the chemicals. This example uses a fresh well so that it does not stack on the sterilized contents of a3:

julia> a4 = plate["A4"];

julia> deposit!(a4, culture)

julia> drain!(a4)

julia> stock(a4)
0 mL Culture (0 reagent(s))
 Organisms  Name                        Biomass     OD
───────────────────────────────────────────────────────────
 SMU_UA159  Streptococcus mutans UA159  1.00 mL OD  Inf OD