物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

Python: LISE++ ファイルから核種の収量を取得する

def get_nuclei_yield(filename):
    lines = open(filename).readlines()
    flag=False
    nuclei_yield={}
    for i, line in enumerate(lines):
        if line=="[Calculations]\n":
            flag=True
            continue
        if flag:
            str1=line.split()[0]
            str2=line.split("=")[1].split(",")[3]
            nuclei_yield[str1]=float(str2)

    print("total rate [cps]",sum(nuclei_yield.values()))

    ## 収量の多い順にソート
    return dict(sorted(nuclei_yield.items(), key=lambda x: -x[1]))

import glob
filename = glob.glob("*.lpp")[0]
nuclei_yield = get_nuclei_yield(filename)

Jupyter を使う場合は 表示も簡単

import pandas as pd
df = pd.DataFrame({"Nuclei":list(nuclei_yield.keys())[:20],"Yield [cps]":list(nuclei_yield.values())[:20]})
df