Explanation of data folders

In each experiment folder, you’ll find a number of different sub-folders and files. Here, I’ll describe the folders and files as of the dpu 1.0.1 version. If you are using a different version, your files and folders may be slightly different.

One important note is that not all folders are used in all experiment types. You can also create new folders to record other types of data for custom types of experiments (more on that in another post). These folders are created in initialize_exp() in evolver.py, if you want to see how that works.

Common Folders:

OD: contains .txt files where each row is [ timepoint (h) , OD ] using the calibration to transform photodiode readings to OD600 equivalents. It is updated every loop through the software (~20 secs).

OD90 (or OD135): contains .txt files where each row is [ timepoint (h) , raw photodiode value ] without transforming the data. This could be used to apply a different calibration after the experiment (e.g. if you started the experiment with the wrong calibration selected). It is updated every loop through the software (~20 secs).

temp: contains .txt files where each row is [ timepoint (h) , temperature ] using the calibration to transform thermistor readings to Celsius equivalents. It is updated every loop through the software (~20 secs).

temp_config: contains .txt files where each row is [ timepoint (h) , temperature target ] in Celsius. It is only updated when a new temperature command is sent from the custom_script, so it won’t have very many lines for most experiments.

Tubidostat Related Folders:
These folders are only updated in turbidostat mode, and are not used for chemostat mode.

ODset: contains .txt files where each row is [ timepoint (h) , target OD ]. It is updated once when the upper OD threshold is reached (changes target to lower threshold), and once when the lower density threshold is reached (changes target to upper threshold). This makes it a good choice for segmenting turbidostat data into growth curves.

pump_log: contains .txt files where each row is [ timepoint (h) , pump time(s) ]. It is updated at every pump event, and generally records the amount of time the influx pump was turned on for, though in some older versions a bug caused the efflux pump time to be recorded instead.

  • Since it records when a pump event is sent to eVOLVER, the dilution won’t show up in the OD data right away, making it a poor choice to use to segment OD data into growth curves. Furthermore, if two dilutions are needed to reach a lower threshold (i.e. you switched out a bottle and there’s some air in the lines) pump log will be updated twice in short succession, complicating the process further.
  • Chemostat pump events do not get listed here, as they use a recurring function on the Arduino, to reduce the load of commands sent to eVOLVER. Pump commands sent from outside the DPU (i.e. from the Electron app or MATLAB script) also do not get recorded in pump_log files.

growthrate: contains .txt files where each row is [ timepoint (h) , growth rate (h^-1) ] using ODset to segment data and a linear fit to log transformed OD data. It is updated every time the upper OD threshold is reached.

  • The first growth rate measurement is fit on the data from the first timepoint to the first dilution, which means inoculation and lag phase can throw off this value.
  • You may want to calculate growth rate offline after the expt. The growth rate calculated here has been optimized for robustness over accuracy, in order to enable feedback control.

Chemostat Related Folders:
These folders are only updated in chemostat mode, and are not used for turbidostat mode.

chemo_config: contains .txt files where each row is [ timepoint (h) , chemo_phase, period (s) ]. It is updated every time the chemostat dilution rates are changed. The second value can be used to keep track of updates if designing a custom chemostat experiment that changes or fluctuates between dilution rates. The third value is the period of time, in seconds, between pump events. Note that these pump events do not get recorded in pump_log.

Other Files:
evolver.log: some versions of the DPU will store a log of things that happen during the experiment, like errors or verbal descriptions of certain commands (i.e. changes to chemostat rates).
XX_cal.txt : some versions of the DPU will store .txt versions of the calibrations locally on your computer.
EXP_NAME_DATE_TIME.txt: this is a .txt record of your custom script, created each time you restart an experiment. This way if you change the code partway through, you have a record of each iteration of the code.

2 Likes

Thanks so much for the detailed explanation @cmancuso!

Great explanation. I’d love an updated explanation for DPU 1.2.1. Also, what is the unit for the photodiode for raw OD files? For example, in my vial{x}_od_raw_135.txt files, I’m getting measurements like:

0.035,679
0.0404,679
0.0459,678
0.0517,684
0.0572,681
0.0627,680
0.0681,686
0.0738,684

Is this a correct order of magnitude? Is this in mV?

The raw files list the values directly read from the Arduino. They represent arbitrary units from the ADC conversion. Here is a reference for that. This line of the code defines the number of bits we are reading.

Due to how the electronic circuit is design, a low number (~0 a.u.) means a high voltage (~3.3V) and a high number (65535 a.u.) means a low voltage (0 V).

Thanks! This is helpful. In that case, I might have a hardware problem. When I use clear media or saturated culture in my vials, I get reads around 600 au and it does not change much. Do you think it is a problem with the hardware?

Can you do two things for me?

  • Can you open up the top lid of the vial platform and take a picture of the boards plugged into the 7th SA slot of the motherboard? It should be the 2nd slot from the left. Make sure you take a good image of the resistor packs plugged in.

  • Can you follow the following instructions and paste the content of your config file to this thread:

  1. Go to Terminal and type in ssh pi@<evolver ip address> , for example, our evolver is 192.168.1.2 so we would put ssh pi@192.168.1.2 The password is DbLaoXDr

  2. Type the following: nano evolver/evolver/conf.yml

  3. Copy and paste what is listed there to this thread.

Hi Brandon. I’m working with Furkan. Here’s the info you requested:

OK, I sent your lab a version of eVOLVER that is better suited for low OD measurements, meaning the OD90 is not going work but the OD135 should have more accuracy. What that means is that the resistor pack used is 51M ohm. Since the resistors are larger, the OD LED power needs to be adjusted to bring it back down to within the dynamic range.

Here is the fix. In the conf.yml that you just screenshotted, in the value array under od_led, change all the 4095’s to 2060. Make sure you don’t change the placement of any commas or other characters, just the numbers.

Can you do this, and see if that helps? Screen shot what your updated conf looks like here please.

2 Likes