time.sh
name=$1
conc=$2
sleep 540; say "{$1}、1分前です"
sleep 60; say "{$1}、時間です"
say "次の投与濃度は{$2}分の1です"
time.py
import numpy as np
import os,sys
import pickle
import pandas as pd
import argparse
#最初の引数受付
parser = argparse.ArgumentParser()
parser.add_argument('-n', '--name', type=str, default=None, help='person name')
parser.add_argument('-d', '--drug', type=str, default=None, help='drug name')
args = parser.parse_args(sys.argv[1:])
name = args.name
drug = args.drug
time_path = 'time.sh'
os.system(f'chmod +x {time_path}')
result = []
import time
print('実験を開始します。モニターの時間を教えて下さい')
base_time = input()
print(f'{base_time}より実験開始')
#base time
bt = time.time()
conc_lis = [64,32,16,8,4,2,1,0]
#input()関数で、ただエンターを押すことで次に進むことを実装する。
inp=''
#各投与濃度について繰り返し
for i in range(6):
if inp=='':
next_conc = conc_lis[i+1]
#時間経過を数え、音声読み上げを行う
os.system(f'bash {time_path} {name} {str(next_conc)}')
#投与後10分経過した段階を記録しておく
time_past = time.time() - bt
print('スコアを教えて下さい')
score = input()
conc = conc_lis[i]
print(f'睡眠スコア:{score},濃度:{conc}')
result.append(np.array([time_past,score,conc]))
print('注射が終わったらリターンキーを押してください')
inp = input()
if inp!='':
inp = ''
#毎回データを保存
path = f'{drug}.pickle'
with open(path, 'wb') as f:
pickle.dump([result, base_time],f)
print(f'{path} に保存します')
df = pd.DataFrame(result)
df.columns=['時間経過','睡眠スコア','濃度']
print(f'{drug}.csvに保存します')
df.to_csv(f'{drug}.csv')
print('次の実験に移ります')