Favorite way to reformat normalization data

I’m needing to take some output data from a few different quant methods and turn that into a normalization worklist for my lab’s automation. It’s been a few years since I’ve seriously coded on anything that isn’t a GUI, but I know the math and restricting of the output files are fairly simple. That being said, does anyone have a favorite software, program, or strategy they use for this? It’s such a common process but somehow this is the first time I’ve had to run this sort of thing and I’m doing my best not to reinvent the wheel.

Specific to my application, I’m using output data from a Spectramax M5, Qubut Flex, or other basic spectro/fluorometer instruments (possibly lunatic) for the purpose of normalizing concentration via an i7.

2 Likes

What’s the file format? And what’s your preferred programming language?

1 Like

you can use any programming language or even an excel macro to do the calculations. basically take the reader output file in csv or txt and do the calculcation based on the concentrations. i’ve done in both Freedom EVO, Hamilton STAR and Janus. Currently, i am trying to make it work on Fluent and run into problems with diluent transfer using worklist commands. I suspect it has something to do with the definition of the 25ml trough.

1 Like

Everything could be done in vb, python, whatever, I was just wondering if anyone has a preferred method of knows of any cool software for this sort of thing. I was leaning towards doing everything in excel since data files are already worksheets, I just need to freshen up on my vba skills… It’s been a minute since I’ve had to make anything from scratch.

I’ve written a Qubit normalization script that takes samples from up to 4 PCR plates and adds 2uL of sample to a 384 reader plate. Then, the fluorescence is read and normalization is performed on the sample plates based on calculated DNA concentrations.

First step is to make a calibration curve for fluorescence to DNA.

def fluorescence_to_dna_conc(fluor):
    conc = max((fluor-492)/116, 0)
    return conc

Here the hard-coded numbers are slope and intercept for a calibration curve created by doing 2-fold serial dilutions of the Qubit standards.

Then, you want a way to calculate dilution volume (ie volume of water to add to samples) from DNA concentration. Max volume is important here so you don’t overflow the container by trying to dilute a really concentrated sample.

def dilution_volume(initial_concentration, target_concentration, initial_volume, max_volume):
    dilution_max = max_volume - initial_volume
    dilution_vol = initial_concentration*initial_volume/target_concentration-initial_volume
    return min(max(dilution_vol, 0), dilution_max)

This is based on a c1*v1 = c2*v2 calculation which is a mass balance, I’d always try to put things in these terms if I get stuck.

This is the starting equation for the mass balance, and you solve for dilution_vol
(dilution_vol + initial_volume)*target_concentration = initial_concentration*initial_volume

1 Like

@Stefan @luisvillaautomata Have you done liquid transfer from a trough to a plate in fluentcontrol using worklist commands before?

Never, sorry

worklists in fluentcontrol, especially for reagents, are available in 3 variations,

  1. use a csv input file where trough well is 'well 1" - this is converted to .gwl via command and is executed (but new tips are used for each liquid transfer)
  2. create gwl external to fluentcontrol and execute - optimize to use as fewer tips as necessary
  3. use “transfer individual volume” command - create “input file” external to fluentcontrol, define specifics for how pipetting takes place, re-use of tips, multi-pipetting etc

personally, option 3 I use a lot; having flexibility inside the command is great for normalization functionality,

1 Like