Example Snippets

This page contains basic snippets for common tasks using rainbow.

Exporting data to csv

The following code exports the data from every binary file in a directory named violet.raw.

Waters .raw directories may contain miscellaneous analog data without a detector, like system pressure. These are not included in the datafiles attribute. Thus, we use by_name instead.

import rainbow as rb
import os

datadir = rb.read("violet.raw")
for name in datadir.by_name:
    csv_name = os.path.splitext(name)[0] + ".csv"
    datadir.export_csv(name, csv_name)

Processing a dataset

Suppose we have a directory MY_DATASET that contains hundreds of Agilent .D subdirectories. The directory structure might look something like:

MY_DATASET
    |- A1.D
    |- A2.D
    |- A3.D
    |- ...

The following code reads every subdirectory in MY_DATASET using multiprocessing for faster speed. The resulting variable dirpaths is a list of DataDirectory objects.

import rainbow as rb
import multiprocessing as mp
import os

DATASET = "MY_DATASET"
dirpaths = [os.path.join(DATASET, name) for name in os.listdir(DATASET) if name != ".DS_Store"]

pool = mp.Pool()
datadirs = pool.map(rb.read, dirpaths)
pool.close()
pool.join()