Skip to content

Latest commit

 

History

History
76 lines (59 loc) · 2.94 KB

sec_av_fluorescence.rst

File metadata and controls

76 lines (59 loc) · 2.94 KB

Fluorescence traces

In RT-FDC, fluorescence data are stored alongside the regular image and scalar features. The fluorescence data consist of the trace data (fluorescence signal over time) and several scalar features (maximum, peak position, peak width, etc.) for each fluorescence channel. The trace data are stored as raw and median-filtered traces, where median-filtered means that the raw data is filtered with a rolling median filter.

In [1]: import dclab

In [2]: ds = dclab.new_dataset("data/example_traces.rtdc")

# list the available traces in the dataset In [3]: sorted(ds["trace"].keys())

# show fluorescence meta data In [4]: ds.config["fluorescence"]

Please note that the value of trace median is zero (no median filter applied), which tells us that the values of the raw and median trace data are identical. The example dataset is an excerpt from the calibration beads dataset, with a total of three fluorescence channels used.

import matplotlib.pylab as plt import dclab

ds = dclab.new_dataset("data/example_traces.rtdc") # event index to plot idx = 8 # measuring time samples = ds.config["fluorescence"]["samples per event"] sample_rate = ds.config["fluorescence"]["sample rate"] t = np.arange(samples) / sample_rate * 1e6

fig, axes = plt.subplots(nrows=3, sharex=True, sharey=True)

# fluorescence traces (colors manually chosen to represent filter set) axes[0].plot(t, ds["trace"]["fl1_median"][idx], color="#16A422", label=ds.config["fluorescence"]["channel 1 name"]) axes[1].plot(t, ds["trace"]["fl2_median"][idx], color="#CE9720", label=ds.config["fluorescence"]["channel 2 name"]) axes[2].plot(t, ds["trace"]["fl3_median"][idx], color="#CE2026", label=ds.config["fluorescence"]["channel 3 name"])

# detected peak widths axes[0].axvline(ds["fl1_pos"][idx] + ds["fl1_width"][idx]/2, color="gray") axes[0].axvline(ds["fl1_pos"][idx] - ds["fl1_width"][idx]/2, color="gray") axes[1].axvline(ds["fl2_pos"][idx] + ds["fl2_width"][idx]/2, color="gray") axes[1].axvline(ds["fl2_pos"][idx] - ds["fl2_width"][idx]/2, color="gray") axes[2].axvline(ds["fl3_pos"][idx] + ds["fl3_width"][idx]/2, color="gray") axes[2].axvline(ds["fl3_pos"][idx] - ds["fl3_width"][idx]/2, color="gray")

# axes labels axes[1].set_ylabel("fluorescence intensity [a.u.]") axes[2].set_xlabel("time [µs]")

for ax in axes:

ax.set_xlim(200, 350) ax.grid() ax.legend()

plt.show()

Please note that the fluorescence traces are stored as integer values and have to be converted to µs using the meta data stored in ds.config["fluorescence"]. Also, notice how the scalar features are used for plotting the peak width.