Copyright (c) 2013, rhambach. This file is part of the TEMareels package and released under the MIT-Licence. See LICENCE file for details. """ import numpy as np import matplotlib.pylab as plt from TEMareels.ecal.energy_dispersion import get_dispersion; from TEMareels.ecal.fit_peak_pos import get_peak_pos; # calculate dispersion spectra = ["../tests/Eseries%i.tif" %i for i in range(1,4)]; refname = "../tests/Ereference.msa"; order = 2; DE = None; # energy width of shifted scale [eV] e2x = get_dispersion(spectra,refname,verbosity=0,order=order,ampl_cut=0.5); # calculate energy of ZLP for each of the series E_ref = []; E_zl = []; E_pl = []; for i,filename in enumerate(spectra): E,zl,pl=get_peak_pos(filename, refname, border=100, \ ampl_cut=0.1, verbosity=2); # positions [px] ind=~np.isnan(pl[:,0]-zl[:,0]); # identify NaN's E = E[ind]; zl = zl[ind]; pl = pl[ind]; zl = e2x.inverse( zl[:,0], zl[:,0] )[0]; # energies [eV] pl = e2x.inverse( pl[:,0], pl[:,0] )[0]; s0 = np.nanargmax(zl); # remove offset E_zl.append( E[s0]+zl[s0]-zl ); plOffset = np.mean(pl-zl) \ if DE is None else DE;
# FILENAMES # - description for series (to identify series later on) # - series of shifted energy scale # - reference of energy scale # test files descr = "test series for energy calibration"; pattern = "../tests/Eseries%d.tif"; series = [pattern % (i) for i in range(1,2) if i not in []]; refname = "../tests/Ereference.msa"; # DISPERSION (order=0 for constant energy dispersion, i.e., linear E-axis) params={'order':2, 'ampl_cut':0.5}; e2x=get_dispersion(series,refname,verbosity=5,**params) # write history history ="energy_dispersion.py, version %s (%s)\n" % \ (Release.version, Release.version_id); history+="Get dispersion: %s \n" % \ (" ,".join([key+": "+str(val) for key,val in params.items()]) ); history+=e2x.info(3); # print and save (as named dictionary) print 'SAVE ' + e2x.info(); FILE=open('EDisp.pkl','w'); data={'e2x':e2x, 'descr':descr, 'history':history}; pickle.Pickler(FILE).dump(data);
This file is part of the TEMareels package and released under the MIT-Licence. See LICENCE file for details. """ import numpy as np import matplotlib.pylab as plt from TEMareels.ecal.energy_dispersion import get_dispersion from TEMareels.ecal.fit_peak_pos import get_peak_pos # calculate dispersion spectra = ["../tests/Eseries%i.tif" % i for i in range(1, 4)] refname = "../tests/Ereference.msa" order = 2 DE = None # energy width of shifted scale [eV] e2x = get_dispersion(spectra, refname, verbosity=0, order=order, ampl_cut=0.5) # calculate energy of ZLP for each of the series E_ref = [] E_zl = [] E_pl = [] for i, filename in enumerate(spectra): E,zl,pl=get_peak_pos(filename, refname, border=100, \ ampl_cut=0.1, verbosity=2) # positions [px] ind = ~np.isnan(pl[:, 0] - zl[:, 0]) # identify NaN's E = E[ind] zl = zl[ind] pl = pl[ind]