リガクの装置で温度変化測定などデータを一括してまとめたいときがあります。以下は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)