Skip to content
ImageJ plugin reading PicoQuant ptu/pt3 FLIM image files
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


ImageJ/FIJI plugin reading PicoQuant ptu/pt3 FLIM TTTR image files.

It is based/upgraded from Pt3Reader plugin developed by François Waharte and Matlab code from PicoQuant.
PTU_Reader logo

How to install plugin

  1. You need to download and install ImageJ or FIJI on your computer first.
  2. Download PTU_Reader_...jar and place it in the "plugins" folder of ImageJ/FIJI.
  3. Plugin will appear as PTU_Reader in ImageJ's Plugins menu.

How to run plugin

  1. Click PTU_Reader line in ImageJ's Plugins menu.
  2. In "Open File" dialog choose file with (ptu/pt3) extension to load.
  3. Plugin will read file's header and provide you with following options:
  4. Choose what images/stacks you want to load (see detailed description below) and click OK.

Output #1: lifetime ordered stack

This is 8-bit stack containing 4096 frames (since v.0.0.7 it will be trimmed to max observed value). Each frame corresponds to a lifetime value. Why 4096? It is number of time registers in PicoQuant module. To get real time value in nanoseconds (ns), you need to know frequency of laser pulses during acquisition. Suppose laser frequency is 40MHz. That means distance between pulses is 1/40x10^6 = 25 ns. That means this period is splitted by 4096 intervals, i.e. time difference between frames = 25/4096 ~ 6.1 picoseconds (ps, 10^-12).

NB: Since v.0.0.7 stack will be trimmed to max observed value, i.e. 3210 or something else, to save a bit of memory.

The intensity of pixel at x,y position corresponds to the number of photons with this lifetime during the whole acquisition.
Don't forget to do Image->Adjust->Brightness/Contrast to see the signal.

For example, to get a FLIM decay curve of some image area that would look like this:
Curve example

select rectangular ROI and go to Image->Stacks->Plot Z-axis profile. You can make plot y-axis logarithmic by clicking More>>Set Range..

In addition, there are two loading options: "Load whole stack" and "Load binned". First option assembles all photons in one stack with 4096 frames (lifetimes). "Load binned" creates Hyperstack where z coordinate corresponds to 4096-format lifetime, while "time" corresponds to binned frame intervals specified by "Bin size in frames" parameter below. Last option can generate HUGE files (since imagewidth x imageheight x 4096 x binned frames), so be aware about it.

If you choose "Load only frame range" option at the bottom of the dialog, it will also restrict detected photons to the specified range.

Output #2: Intensity and Lifetime Average stacks

Lifetime acquisition often happens over multiple frames. If this option is checked in the menu, plugin will provide intensity stack for each frame (if binning is 1) or summarized intensity of multiple frames for the bin size larger than 1.

In addition, for the same number of binned frames, it will generate average lifetime value map.
Important: the lifetime value is in the same 4096 register format! Use the same math/laser frequency recalculation to get value in nanoseconds. Whole image/stack math can be done using ImageJ Process->Math options.

So you can observe average lifetime change during acquisition. It is recommended to you different LUT to highlight its changes (Image->Lookup Tables->Spectrum or Rainbow RGB)

These two stacks are in 32-bit format.

You can restrict the interval of loaded data by selecting "Load only frame range" checkbox and providing the range of frames to load.

It can not read my files! What about pt2? There is error!

Send me example of your file by email, describe the problem and I'll try to incorporate it to the plugin.

Updates history

v.0.0.7 Thanks to Marco Dalla Vecchia feedback, now HydraHarp/TimeHarp260 T3 file format is supported. Plus plugin works correctly with multi-channel FLIM data. The error of dtime=0 is fixed. Added progress bar for initial data assessment.

v.0.0.6 Thanks to Tanja Kaufmann feedback, data reading is updated. Now there are two modes of reading, depending if the Frame marker is present. Plus LineStart and LineStop marker values are read from the header. + WRAPAROUND value is changed to 65536.

v.0.0.5 Thanks to Shunsuke Takeda feedback, the error of "missing first frame" is eliminated.

v.0.0.4 Thanks to Bruno Scocozza feedback, frame marker bug during loading is fixed now. Plus, "frame range" and lifetime binning options are added.

v.0.0.2 file dialog changed to system default (now works on Mac, no need in java library).

Developed in Cell Biology group of Utrecht University.
Email katpyxa @ for any questions/comments/suggestions.

You can’t perform that action at this time.