脚本库

导数找 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()