Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. def fit_Zr_L(sZr, ll=None):
  2. "Fits the Zr L lines, return a hyperspy model. Input is a Zr spectrum image, and optionally, the accompanying low loss SI."
  3. print("Will produce 10 progress bars")
  4.  
  5. mZr = sZr.create_model(ll = ll, GOS="Hartree-Slater", auto_add_edges=False)
  6. # Fit Background
  7. mZr.fit_component(mZr["PowerLaw"], bounded=True, signal_range=[2150.,2210.], fit_independent=True, only_current=True)
  8. mZr.assign_current_values_to_all()
  9. mZr.fit_component(mZr["PowerLaw"], bounded=True, signal_range=[2150.,2210.], fit_independent=True, only_current=False)
  10.  
  11. Zr_L3 = hs.model.components1D.EELSCLEdge("Zr_L3", GOS="Hartree-Slater")
  12. Zr_L2 = hs.model.components1D.EELSCLEdge("Zr_L2", GOS="Hartree-Slater")
  13. # Fit Zr L3 white line first, use centre position of gaussian to choose onset position of core loss edge, then repeat
  14. Zr_L3_white = hs.model.components1D.Gaussian()
  15. Zr_L3_white.name = "Zr_L3 White Line"
  16. Zr_L3_white.centre.bmin = 2218.0
  17. Zr_L3_white.centre.bmax = 2240.0
  18. Zr_L3_white.A.bmin = 0
  19. Zr_L3_white.sigma.bmax=3
  20. mZr.append(Zr_L3_white)
  21.  
  22. mZr.fit_component(Zr_L3_white,fitter="leastsq", signal_range=[Zr_L3_white.centre.bmin-3.0, Zr_L3_white.centre.bmax+3.0], bounded=True,)
  23. mZr.assign_current_values_to_all([Zr_L3_white])
  24. mZr.fit_component(Zr_L3_white,fitter="leastsq", signal_range=[Zr_L3_white.centre.bmin-3.0, Zr_L3_white.centre.bmax+3.0], bounded=True, only_current=False)
  25.  
  26. mZr.append(Zr_L3)
  27. Zr_L3.onset_energy.twin = Zr_L3_white.centre
  28. mZr.fit_component(Zr_L3, bounded=True, signal_range=[2240., 2290.])
  29. mZr.assign_current_values_to_all([Zr_L3])
  30. mZr.fit_component(Zr_L3, bounded=True, signal_range=[2240., 2290.], only_current=False)
  31.  
  32. # Fit Zr L2 white line, use centre position of gaussian to choose onset position of core loss edge, then repeat
  33.  
  34. Zr_L2_white = hs.model.components1D.Gaussian()
  35. Zr_L2_white.name = "Zr_L2 White Line"
  36. Zr_L2_white.centre.bmin = 2309.0
  37. Zr_L2_white.centre.bmax = 2317.0
  38. Zr_L2_white.A.bmin = 0
  39. Zr_L2_white.sigma.bmax=3
  40.  
  41. mZr.append(Zr_L2_white)
  42. mZr.fit_component(Zr_L2_white, signal_range=[Zr_L2_white.centre.bmin-3.0, Zr_L2_white.centre.bmax+3.0], bounded=True,)
  43.  
  44. mZr.assign_current_values_to_all([Zr_L2_white])
  45. mZr.fit_component(Zr_L2_white, signal_range=[Zr_L2_white.centre.bmin-3.0, Zr_L2_white.centre.bmax+3.0], bounded=True, only_current=False)
  46.  
  47. mZr.append(Zr_L2)
  48. Zr_L2.onset_energy.twin = Zr_L2_white.centre
  49. mZr.fit_component(Zr_L2, bounded=True, signal_range=[2335., 2392.])
  50. mZr.assign_current_values_to_all([Zr_L2])
  51. mZr.fit_component(Zr_L2, bounded=True, signal_range=[2335., 2392.], only_current=False)
  52. mZr.fit_component(Zr_L2_white, signal_range=[Zr_L2_white.centre.bmin-3.0, Zr_L2_white.centre.bmax+3.0], bounded=True, only_current=False)
  53.  
  54. # Finally cycle over components one more time to ensure that fit is good
  55. mZr.fit_component(Zr_L3, bounded=True, signal_range=[2240., 2290.], only_current=False)
  56. mZr.fit_component(Zr_L3_white, signal_range=[Zr_L3_white.centre.bmin-3.0, Zr_L3_white.centre.bmax+3.0], bounded=True, only_current=False)
  57. mZr.fit_component(Zr_L2, bounded=True, signal_range=[2335., 2392.], only_current=False)
  58. mZr.fit_component(Zr_L2_white, signal_range=[Zr_L2_white.centre.bmin-3.0, Zr_L2_white.centre.bmax+3.0], bounded=True, only_current=False)
  59. print("Finished fitting Zirconium")
  60. return mZr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement