Tweet CMCIlogo

Image Processing and Analysis @EMBL

Trace: frap_analysis





Analyze FRAP curves and get parameter by curve fitting (documentation.). Lecture notes are also available ( Lecture Notes (Apr. 2010))


Kota Miura
Centre for Molecular and Cellular Imaging (CMCI)
EMBL Heidelberg
miura at embl dot de
Tel: +49 6221 387 404

Questions & Comments

? Please post in the commenting section below at the bottom of this page


Released under the GNU General Public License.


IgorPro ver 5 or higher (IgorPro, Wavemetrics).


Download K_FRAPcalcV9k.ipf to a place where you can access easily (you might need to right click or ctrl-click and then save it to your local machine). Open the file in IgorPro and compile.


Analyze FRAP curves to derive recovery parameters. More details are in the documentation.


  • Import FRAP measurement tab-delimited text files of Zeiss data format (6 different data structures)
    Leica data format (7 different data structures) - Three different ways of normalizing FRAP curve - Curve fitting by single and double exponential formula and 2 diffusion formula.
  • Correction for the acquisition bleaching.
  • Output of half-max, diffusion coefficient, mobile/immobile fractions.
  • Weighting for the fitting.
  • Evaluation of goodness of fit by chi-square and gamma function.
  • Graphing of the fitted curve and estimation curve without acquisition bleaching.
  • Batch Fitting

Papers + Misc

Papers using this script

  • Runz, H. et al., 2006. Sterols regulate ER-export dynamics of secretory cargo protein ts-O45-G. The EMBO journal, 25(13), p.2953-65. Accessed February 7, 2012.
  • Atlason, P.T. et al., 2007. N-Methyl-D-aspartate (NMDA) receptor subunit NR1 forms the substrate for oligomeric assembly of the NMDA receptor. The Journal of biological chemistry, 282(35), p.25299-307. Accessed February 7, 2012.
  • Pooler, A.M. & McIlhinney, R.A.J., 2007. Lateral diffusion of the GABAB receptor is regulated by the GABAB2 C terminus. The Journal of biological chemistry, 282(35), p.25349-56. Accessed February 7, 2012.
  • Hoppa, M.B. et al., 2009. Chronic palmitate exposure inhibits insulin secretion by dissociation of Ca(2+) channels from secretory granules. Cell metabolism, 10(6), p.455-65. Accessed February 7, 2012.
  • Treeck, M. et al., 2009. Functional analysis of the leading malaria vaccine candidate AMA-1 reveals an essential role for the cytoplasmic domain in the invasion process. PLoS pathogens, 5(3), p.e1000322. Accessed February 7, 2012.
  • Bancaud, A., Huet, S., Rabut, G., Ellenberg, J., 2010. Fluorescence perturbation techniques to study mobility and molecular dynamics of proteins in live cells: FRAP, photoactivation, photoconversion, and FLIP. Cold Spring Harb. Protoc. 2010, pdb.top90.
  • Bosch-Presegué, L. et al., 2011. Stabilization of Suv39H1 by SirT1 is part of oxidative stress response and ensures genome protection. Molecular cell, 42(2), p.210-23. Accessed January 30, 2012.
  • Caillier, B. et al., 2011. QRS widening and QT prolongation under bupropion: a unique cardiac electrophysiological profile. Fundamental & clinical pharmacology. Accessed February 7, 2012.
  • Díaz, A. et al., 2011. Processivity and subcellular localization of glycogen synthase depend on a non-catalytic high affinity glycogen-binding site. The Journal of biological chemistry, 286(21), p.18505-14. Accessed February 7, 2012.
  • Coutinho-Budd J, Ghukasyan V, Zylka MJ, Polleux F. The F-BAR domains from srGAP1, srGAP2 and srGAP3 regulate membrane deformation differently. Journal of cell science. 2012;125(Pt 14):3390–401. Accessed October 10, 2012.

… searches were done by google hits, so if YOURS is missing please tell me!


  • 05-9-9
    • 1st version
  • 07-3-28
    • 9th version
  • 07-8-27 ver 9a
    • Added Leica new file format importing (csv format)
    • Made K_SoumpasisHalfLife2(fitwave,amplitude) for calculateing Half max. Previous one had problem when point 1 is larger than 0.5 ? Changes for the texts in the graph (Half max value added to diffusion fittings) see more details in the code.
  • 07-10-30 ver9b
    • For details, read the blog
  • 08-03-25 ver 9c
  • 08-07-24 ver 9e
    • Added two data set types for importing. Olympus .cvs file is now possible.
  • 08-10-07 ver9f
    • Added Excel file importing funciton (Four column, with Time-Frap-All Cell- Base, with the first line containg column name) and tab-delimited text file.
  • 08/12/11 ver9g
    • Replaced fitting function for double-exponential fitting, follwoing the recommendation of wavemetrics.
    • Half-time estimation for double exponential fitting had a bug, when data range is below the half-max intensity. This is now done by extrapolation.
  • 09-10-26 ver9h
  • 10-03-03 ver9j
    • Batch Processing funciton with averaging function (request from N. Goldsimth). See additional explanation in the documentation page
    • K_FrapCalcCore() was modified so that averaged curve could be fitted as well. Since averaged curve does not have original normalizaton process is not required but then several parameters which are calculated during normalization will be missing. For this, flag “G_doAveraged” was added
    • getAverageGApRatio(Gfilelist): Gap Ratio is calculated by averaging individual
    • Fitting of averaged curve is done with actual standard deviation
    • BatchFitting() was added to the last line of BatchAverageAndFit()


, 2010/04/27 04:02


This is an excellent procedure for Igor.

Quick request – is it possible to create an option for the Zeiss input with the following order:

Time, FRAP, Reference/Cell Part, Base/Background

(The model that I am using doesn't make us of of the outline of the cell- “allcell”)

And, a similar input for the batch.

Thank you.



, 2010/04/27 15:53

Hi Elliott,

could you try the trial version below? If it works, please tell me so I could update the link above.


thanks for also sending a mail to me. wiki should send me a automatic mail for notification but it didn't. I recently made a major renovation for this website so maybe something is wrong…


, 2010/04/27 17:27

Hi Kota,

This worked perfectly. Thank you for your time. I sincerely appreciate it. My lab mates are all impressed.

One more linked request, if possible.

Is it feasible to do a Batch import / Batch fit for the same Zeiss input order. (Time-Frap-Reference-Base).

Thank you again. Amazing.



, 2010/04/27 23:12

Hi Elliot,

thanks for your feedback.

I updated again for the batch processing so please check if it works. I do not have your data so no debugging is done.


if successful, you will have two types of results: (1) a table with fit parameters for individual curves, and (2) a plot of averaged curve. For the latter, curves are first averaged then the averaged curve is fitted. I recommend to use (1) and average Half max, mobile and immobile fraction, since some curves exhibit very low goodness of fit, and you better ignore them (if all are bad, then be doubtful with your model, that fitting equation is wrong). For this, you better check through the curves. After averaging parameters, you could easily generate a equation and plot it.


, 2010/04/28 16:15

Hi Kota,

Thanks so much. I really appreciate you giving it a try.

I just gave it a try. I had two error messages. The first read “aborted. ### wave index 1 have different time resolution compared to index 0 wave.”

The second message said “While executing WaveStats, the following error occured: expected wave name.”

Any thoughts?

I did have the table (1) above, but the graph did not come up.



, 2010/04/28 16:59

Hi Elliot,

thanks again for the feed back.

error #1 “aborted. ### wave index 1 have different time resolution compared to index 0 wave.”

this message tells you that the timings of acquisition were different in the data#1 compared to the data#0 ( List numbering is most likely in alphabetical order of the file name). When timings were various from experiment to experiment, it would not be possible to average data that you are feeding.

Two ways to deal with this are either: (1) Remove data#1 and try batch processing again, and if #0 and #2 have different time resolution, then remove # 2… and so on. If you know that timings were not controlled in experiments and various, then data averaging is impossible. Or (2) just average parameters listed in the table. This averaging should be done manually.

error #2 “While executing WaveStats, the following error occured: expected wave name. ”

this is probably because data averaging data was unsuccessful (error#1). I need to debug this, so it would be helpful if you could zip data files you have and send it to me.

Sincerely, Kota

, 2010/04/28 17:22

Hi Kota,

Yes. I think that you are correct regarding the timing acquisition. I will go back and look at the raw data.



, 2010/04/29 13:44

Hi Elliot,

I updated the program again, so please check. The link is same as above, as I only replaced the file. For the second error, that was a real bug so I fixed it.

In your case, so called “gap ratio” becomes a serious issue since estimation of the degree of fluorescence loss due to FRAP bleaching is more difficult without all-cell fluorescence intensity. As I saw your data, there are only 5 time points before the FRAP bleach and this is not really enough for estimating the pre-bleach intensity.this has another effect, that the goodness of-fit becomes unreliable because of less quality of measurement error estimation. Please see the manual, as I updated some more explanation on this issue.


2.7. Evaluation of the Curve Fitting: Goodness of Fit

, 2010/04/29 15:29

Hi Kota,

I understand the issue regarding the gap ratio / pre-bleach time points.

I just tested the above link. I didn't get the same error message. It ran very smoothly.

Thank you again for your time. I look forward to continued use of the program.



, 2012/01/19 20:11

What does FrapWidth mean in the Fit Panel? Does it mean the diameter or radius of the bleach area?

Thank you!


, 2012/01/19 23:42

Hi Aditya,

here is quote from my manual:

“In the “FRAP” panel, you should input the radius in “FRAP width” field. I did not use “FRAP radius” as the title of this field, since in case of Ellenberg fitting, strip-bleaching is assumed and size of such fitting does not correspond to “radius”. Half maximum of the recovery is estimated from the estimation curve generated by the equation (2-25).”

HTH, Kota

, 2012/01/20 11:30

Thank you! I have one more.I use a Zeiss Confocal Setup for FRAP experiments. I usually get the results in a text file as Time-FRAP-Reference-Background…Does the option -4 columns: Time – FRAP – All Cell – Base

right? I mean does Base mean background data? Or alternatively should i ignore mt background data and choose the - 3 columns: Time – FRAP – Cell Part


Thank you so much!

Aditya Iyer

, 2012/01/20 11:45

Hi again,

“base” is the region outside where fluorescence is. If you are taking a time-lapse of a cell adhered to coverslip, then the base ROI should be taken from the area where no cell is existing. If that is your backgound, then that is the “base” (I mean “baseline” with this word). You should check where “backgound” in your data is coming from.

I cannot decide whether “all cell” or “cell part” should be used from the information you provided. Please describe what you are capturing, and where ROIs were made in your experiment…

Cheers, Kota

, 2012/01/20 11:50


  I am imaging Lipid Bilayers on Glass surface. I have to carry out FRAP measurements on these. I have three regions. One Reference, One FRAP region and the third which is background.


, 2012/01/20 12:28

Hi, I am imaging Lipid Bilayers on Glass surface. I have to carry out FRAP measurements on these. I have three regions. One Reference, One FRAP region and the third which is background.


, 2012/01/20 14:34

If the “reference” is part of the lipid bilayer that is not FRAP-Bleached, then that will be considered as “cell part”. So in your case use

Import Data 4: Time - FRAP - CellPart - Base.

Please call me, maybe that would be better for discussing this.

, 2012/02/08 11:01

Thank you so much for this!! I have a query however… After the fit, when i export the data, i do not find any data for the fitted curve or the residuals? Am i doing something wrong.?


, 2012/02/08 17:00

Hi Aditya,

there is no menu command for exporting them. To do manually, you could open Data Brawser (Data> Data Brawser) and look for the following waves.

1. fitted curves: there are two types, the fitted curve to the data points and the curve that was further corrected for acquisition bleaching. For both of these curves, name of the wave starts with “fit_” and added with experiment prefix (experiment name that you have given)

2. residuals are in the wave named with suffix “Res”

After finding them, you could create a table and export them using the native command such as Data>Save Waves > Save DlimitedText… and in the dialog window, check “From Target” (Target means the data table that you created with the fitted curve and residuals). Delimited file could be opened in general spreadsheet software.

HTH Kota

, 2012/11/29 00:14

Hi Kota,

Thank you so much for this program, it's very well done and seems very useful.

For some reason, though, when I upload a zeiss lsm file (time-FRAP-cell part-base), I am getting an error saying “while executing DeletePoints, the following error occured: expected wave name”

the Igor window at the bottom says :

K_importFrapTxtData(5)	//050802
  Delimited text load from "Image26.lsm"
  Data length: 2071, waves: original0

What do you think is the problem?



, 2012/11/29 14:05

Hi Aron,

You could send me the data, then I could check what is wrong. cheers, Kota

, 2012/11/29 21:44

Hi Kota!

thanks for the quick response, I sent one set of data to your email

best, Aron

, 2012/12/03 22:43

By the way, the program works when I input an excel file, so maybe it would be simpler to edit the excel input such that it takes the Cell Part as opposed to All Cell, final order of time-FRAP-Cell Part-Base?

Cheers, Aron

, 2012/12/06 12:53

Hi Aron,

With file “26.txt” you sent me, it worked fine with me (IgorPro 6.22A, FRAPcalcV9k)

2 possible sources of problem.

1. In the original post, you were saying that

when I upload a zeiss lsm file (time-FRAP-cell part-base), I am getting an error saying “while executing DeletePoints, the following error occured: expected wave name

and the data that you set me was a whole dataset including image.

The FRAP program only accepts delimited text files (or excel. In this case, I only tried with those from Office 2000 or so).

So use the files you sent to me later to import data points, as you are saying in the third post.

For the order of data (you are mentioning in the third post), I could nto quite get what exactly you are doing. Is your data ordered

time-FRAP-Cell Part-Base


2. experiment naming.

When you import data, you will be asked for giving a name to the experiment. This name should not

  • start with a number
  • no space, no special symbols.
, 2012/12/07 18:56

Hi Kota,

Correct, the order of the data is time-FRAP-Cell Part-Base, I was wondering if there was a version that could import excel data in this order? Also, I realized a while after I sent you the data that probably was not my best sample. If it helps, I can send you a better one.

In the meantime, I'll look into whether there's anything I can do about importing via lsm.


, 2012/12/07 19:22

Hi Aron,

I could add another menu item under 'Import Excel data…”

I will wait for another excel file, if you think that is a better one.

Cheers, Kota

, 2012/12/08 00:08

Hi Kota,

thats great, thank you.

I just sent a better data sample in excel form

cheers, Aron

, 2012/12/05 23:01

Hi Kota!

Big fan of this life-saving application, and thx for all the great support round here!

Q: in the V9k, there is some problem with the Excel-import function (with Igor Pro 6.05, if it counts).

Error: “Expected a keyword or an object name.”


it is in the “if (order ==50) ” part

Do you have any suggestions about this? Or maybe an earlier version (where the xls import is already included)?

Thank you in advance!



, 2012/12/06 08:57

Hi Kota!

Well, it works fine with V9h on another computer, so there must some other issue. The point is: everything is back to normal. :)

Best, Peter

, 2012/12/06 12:11

Hi Peter,

thanks for reporting the bug.

I will check the difference between 9h and 9k to see what the problem is, but could you possibly send me both files of yours? it could be that one of them is somehow changed. I will compare them as well.

cheers, Kota

, 2012/12/07 19:17

Hi Peter,

I checked any difference between version h and k but there is no difference in the corresponding part (excel importing lines). Could you send me the excel file if possible?

Cheers, Kota

, 2012/12/12 21:54

Hi Kota, thanks so much for the help already, hopefully the update for excel import isn't too much of a bother and will solve all my problems!!

In the meantime I had a question regarding FRAP, in case you can help.

In the past, I've used PRISM to fit data that I double-normalized and then normalized to full scale by dividing by the range of recovery, considering the last point to be the max recovery, though sometimes some points were higher. This results in a recovery curve starting at 0 and proceeding to about 1, since the software will not recognize the curve if it does not start at 0. When fitting this curve, do you think it best to constrain Ymax =1?

Another problem I had is that because all the fit curves go from 0 to 1, there is no straightforward way to compare mobile fractions between the fit curves. Any advice?

thanks again,


, 2012/12/14 00:11

Hi Aron,

Normalization of FRAP data to the intensity level after the recovery sounds pretty new to me. A more standard way is to normalize the values using pre-bleach intensity. Have you tried that? This also should be answering to your second question.

I do not recommend constraining Y values to 1 as there indeed are cases where you would observe recovery that exceeds the reference maximum intensity you used for the normalization. Those data cannot be modeled with known ways, but it tells you that you need to consider additional factors that are involved in the recovery. This might lead you to some new discoveries… Keep data as it is, and if model does not match, you should change the model rather than the data.

concerning the addition of the menu item, I will do it in a short while so please be patient…

, 2012/12/14 20:05

Hi Kota,

thanks for the advice. I normally normalize to pre-bleach values only but for some reason the PRISM program wouldn't recognize the curve if it did not start at 0. I'll keep trying to figure it out.

For the Y constraint, I see your point. my thought process was that it would make the data sets more comparable and the calculation of parameters more accurate, but of course it messes everything up if the values exceed 1, so i think you're right.

thanks again, I really appreciate the help!


, 2012/12/21 22:22

Hi Kota,

so I think I found the problem - the program expects a title name for each column and I didnt have them. Now it's working smoothly, except sometimes I get an error saying the function returned NaN for at least one X-value, which I am guessing means that at least one point was an outlier but I wanted to double check. If that is the case, do you recommend removing that point/is there a way to tell the program to do so?

thanks, aron

, 2015/10/19 02:30

Hi Kota,

Great program! Thank you very much.

At the moment I use a Nikon setup for my experiments and extract the data into excel. Do you have a batch fitting script for excel?



, 2015/10/26 11:40

Hi Mark,

If you could send me an example excel data from Nikon, I could try to add interface for that format.

Cheers, Kota

, 2015/10/29 21:58


       If you do write the script, could you also update it here or send it to me

We also would want to analyze batch files..