Curve fitting a multidata set with each data to be fitted with 6 Lorentzian differents peaks


Dear everybody,

I have a problem to do curve fitting of a multidata set (700 spectra from Raman spectroscopy mapping). Each data of the multidata set have 6 differents peaks to be fitted with 6 differents Lorentzian functions. Is someone can help me, i am desperated !!!! Thanks...

Is IgorPro can do such things ? I have been trying and trying...but I failed :

1- I have used the 'Golbal Fit' Packages after i defined a Lorentzian function with 7 parameters : y=y0 + A1/(4*(x-x1)^2 + w1^2)+ A2/(4*(x-x2)^2 + w2^2)+ A3/(4*(x-x3)^2 + w3^2)+ A4/(4*(x-x4)^2 + w4^2)+ A5/(4*(x-x5)^2 + w5^2)+ A6/(4*(x-x6)^2 + w6^2). To have a better convergence, i defined some constraints. However, after trying the Fit doesn't work at all (:-(( I precised that i correctly do the basic fitting such as presented 'Global Fit Demo' and the manual. However for the multidata set i can't...

2- I have been trying and trying the 'Multi-peak fit package'. For a single data i can do the fitting easily (with 6 Lorentzians). However, for a multidata set (729 spectra) that's was not possible. For a multidata set, i defined two matrix for the X abscisse (exemple : wave0[][0] to wave0[][728]) and for the Y abscisse ((exemple : wave2[][0] to wave2[][728])). Everytime I got the message error :
"Number of dimensions must match data wave
Error in Execute
FuncFit/M=2/H=wave2_HoldStr fLorentzianFit coef :::wave2[0,702] /X= :::wave0 /D=:::fit_wave2" , D being in bold....
I believed that this is due to the matrix wave[][]....

Is someone can help me to solve this problem ?? Thanks very very much

With Best Regards,

Amil
You can do batch fitting using the Multi-Peak Fitting 2.0 routine but it is not part of the user interface. You will have to write a procedure to handle it. Essentially, you will do the first fit manually and then all of the subsequent fits will use the results form that first fit as their initial guesses.

This is restricted to using the same functions in every fit.

DisplayHelpTopic "MPF2_DoMPFit()"
As proland says, you can use Multipeak Fit 2, but you need a user-defined function to step through the data sets. You can learn more from the help file; copy this command, paste it into Igor's command line and press enter:

DisplayHelpTopic "Multi-peak Fitting for Igor Programmers"

The first subsection describes the function MPF2_DoMPFit() which is the fitting engine for the Multipeak Fit Package. It does one multipeak fit. The next subsection describes MPF2_AutoMPFit(). That's my attempt at a driver that accepts a list of data sets and performs a fit on each one. It has a number of options for the initial guesses including the one Proland describes.

Another possibility- if you always have 6 peaks, write a user-defined fit function that fits a sum of six Lorentzian peaks. Make sure it works on a single data set, then use Analysis->Packages->Batch Curve Fitting.

Again, as Proland says, Global Fit does something quite different: it fits a collection of data set *simultaneously*. That is, one fit using many data sets.

John Weeks
WaveMetrics, Inc.
support@wavemetrics.com

Thanks so so much for your reply Proland and johnweeks. That's will be helpful...I will try this way and will back to you if i got any problems.
Thanks again.

Take Care
johnweeks wrote:
As proland says, you can use Multipeak Fit 2, but you need a user-defined function to step through the data sets. You can learn more from the help file; copy this command, paste it into Igor's command line and press enter:

DisplayHelpTopic "Multi-peak Fitting for Igor Programmers"

The first subsection describes the function MPF2_DoMPFit() which is the fitting engine for the Multipeak Fit Package. It does one multipeak fit. The next subsection describes MPF2_AutoMPFit(). That's my attempt at a driver that accepts a list of data sets and performs a fit on each one. It has a number of options for the initial guesses including the one Proland describes.

Another possibility- if you always have 6 peaks, write a user-defined fit function that fits a sum of six Lorentzian peaks. Make sure it works on a single data set, then use Analysis->Packages->Batch Curve Fitting.

Again, as Proland says, Global Fit does something quite different: it fits a collection of data set *simultaneously*. That is, one fit using many data sets.

John Weeks
WaveMetrics, Inc.
support@wavemetrics.com



How to get the 6 sub-peaks out of the overall peak?