title: fit multiple gaussians to the data in python
body: <p>I am just wondering if there is a easy way to implement gaussian/lorentzian fits to 10 peaks and extract fwhm and also to determine the position of fwhm on the x-values. The complicated way is to separate the peaks and fit the data and extract fwhm. </p>
  
  <p>Data is [<a href="https://drive.google.com/file/d/0B6sUnnbyNGuOT2RZb2UwYXU4dlE/view?usp=sharing]" rel="noreferrer">https://drive.google.com/file/d/0B6sUnnbyNGuOT2RZb2UwYXU4dlE/view?usp=sharing]</a>.</p>
  
  <p>Any advise greatly appreciated. Thanks.  </p>
  
  <pre><code>from scipy.optimize import curve_fit
  import numpy as np
  import matplotlib.pyplot as plt
  
  data = np.loadtxt('data.txt', delimiter=',')
  x, y = data
  
  plt.plot(x,y)
  plt.show()
  
  def func(x, *params):
      y = np.zeros_like(x)
      print len(params)
      for i in range(0, len(params), 3):
          ctr = params[i]
          amp = params[i+1]
          wid = params[i+2]
          y = y + amp * np.exp( -((x - ctr)/wid)**2)
  
  
  
  guess = [0, 60000, 80, 1000, 60000, 80]
  for i in range(12):
      guess += [60+80*i, 46000, 25]
  
  
  popt, pcov = curve_fit(func, x, y, p0=guess)
  print popt
  fit = func(x, *popt)
  
  plt.plot(x, y)
  plt.plot(x, fit , 'r-')
  plt.show()
  
  
  
  Traceback (most recent call last):
  File "C:\Users\test.py", line 33, in &lt;module&gt;
  popt, pcov = curve_fit(func, x, y, p0=guess)
  File "C:\Python27\lib\site-packages\scipy\optimize\minpack.py", line 533, in curve_fit
  res = leastsq(func, p0, args=args, full_output=1, **kw)
  File "C:\Python27\lib\site-packages\scipy\optimize\minpack.py", line 368, in leastsq
  shape, dtype = _check_func('leastsq', 'func', func, x0, args, n)
  File "C:\Python27\lib\site-packages\scipy\optimize\minpack.py", line 19, in _check_func
  res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
  File "C:\Python27\lib\site-packages\scipy\optimize\minpack.py", line 444, in    _ general_function
  return function(xdata, *params) - ydata
  TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'
  </code></pre>