リガクのRASデータをまとめる

リガクの装置で温度変化測定などデータを一括してまとめたいときがあります。以下はRASデータをCSVにまとめるpythonのコードです。ご参考まで。

# -*- coding: utf-8 -*-
#リガクの温度変化装置を用いたときなどに、連則測定データをスタッキングするコードです。
#プログラムdir下にあるdat dir内のRASデータを全てまとめてCSVに変換します。データは2θが一番短いものに合わせてください。
#ここではファイル名の最後4文字が温度値になっているので、そこを抜き出してカラム名にしています。なので、測定時にファイル名を工夫する必要があります。
#あり合わせで作ったものですのでフレキシビリティはないです。各人の状況に合わせて変更してください。
#バルク用のためRASデータ3列目のアテネータ係数を入れていません。薄膜等の測定で必要な方はご連絡ください。
#共同利用者以外への利用責任はなく質問受付はしません。D2matEプロジェクトの支援を受けて行われています。
import os
import pandas as pd

# set path and step info
path = './dat'
tth_start = 20.0 #MEAS_SCAN_START
tth_step = 0.01 #MEAS_SCAN_STEP
tth_end = 70 #MEAS_SCAN_STOP
comment_end = 343 #Line No: RAS_INT_START
line_number = int((tth_end - tth_start) / tth_step + comment_end + 1)
dfsum = pd.DataFrame()

# Data pick-up and stacking
counts = 0
for file in os.listdir(path):
    base, ext = os.path.splitext(file)
    if ext == '.ras':
        print(f'{base}',f'{ext}')
        rfile = path + '/' + file
        firstcolumn = "tth"
        secondcolumn = "int_"+base[-4:]
        ## read header data of start, step, end
        df = pd.read_csv(rfile, delim_whitespace=True, header=None, skiprows=lambda x: x not in range(comment_end,line_number),
                         names=[firstcolumn, secondcolumn], usecols=[0,1], encoding="Shift-JIS")
        if counts == 0:
            dfsum = pd.concat([dfsum, df], axis=1)
        else:
            dfsum = pd.concat([dfsum, df[secondcolumn]], axis=1)
        counts = counts + 1

#  file output
wfile = path + '/' + base[:-5] + '.csv'
dfsum.to_csv(wfile, sep=",",  index=False)
タイトルとURLをコピーしました