SSA on a Noisy Gauss

The following script creates a noisy Gaussian curve and creates another scan, a Gauss fit, on the basis of SSA_MIDPOINT, SSA_FWHM and SSA_INT.

Figure 4.2 displays the result. Notice that the noisy peak at the right part of the curve has been excluded by specifying limits for the SSA.

#!/usr/bin/env python

import Spectra
import math, time, random

START = -3
STOP = 3.
NP = 101
FWHM = 1.
MEAN = -1.

noisyGauss = Spectra.SCAN( name = "NoisyGauss", 
                           start = START, stop = STOP, 
                           np = NP, at = "(1,1,1)",
                           title = 'A Noisy Gauss', 
                           colour = 2, xlabel = 'x', ylabel = 'y', date = True)

delta = (STOP - START)/(NP - 1)
x = START
sigma = FWHM/2.3548
for i in range( NP):
    noisyGauss.setX( i, x)
    y = 1./math.sqrt( 2.*math.pi*sigma**2)*math.exp( -(x - MEAN)**2/(2.*sigma**2))
    y += random.random()/10.
    if i > 80 and i < 92:
        noisyGauss.setY( i, y*8.)
    else:
        noisyGauss.setY( i, y)
    x += delta
    Spectra.gra_command( "autoscale/y")
    Spectra.gra_display()
    time.sleep(0.01)

Spectra.gra_command( "create/ssa=noisygauss/notext/x_min=-3/x_max=1 ssa_fit")
Spectra.gra_command( "display")
    
(sts, result) = Spectra.gra_yesno( "Enter Spectra")
if result == 1:
    Spectra.gra_input()

Figure 4.1: SSA on a Noisy Gauss
Image noisygauss