导数找 E0
一阶导数最大值作为 E0,批量写出能量位移,方便对照箔标定。
pythonlarchcalibrate
python xanes_find_e0.py foil.dat --standard 7112
xanes_find_e0.py
#!/usr/bin/env python3
import argparse
import numpy as np
from larch.io import read_ascii
from larch.xafs import find_e0
def main():
ap = argparse.ArgumentParser()
ap.add_argument("files", nargs="+")
ap.add_argument("--standard", type=float, default=None,
help="tabulated edge, e.g. 7112 for Fe foil")
ap.add_argument("--col", type=int, default=1, help="μ column (0-based energy=0)")
args = ap.parse_args()
print(f"{'file':40s} {'E0':>10s} {'shift':>10s}")
for path in args.files:
g = read_ascii(path)
e = np.asarray(g.data[0])
mu = np.asarray(g.data[args.col])
e0 = find_e0(e, mu)
shift = (args.standard - e0) if args.standard else 0.0
print(f"{path:40s} {e0:10.3f} {shift:10.3f}")
if __name__ == "__main__":
main()