オリジナル課題の追加4(Save)
教材として用いている課題コードではオペラントハウスでは課題パラメータを入力後、"SavePara"ボタンか"Start"ボタンを押すことでパラメータが保存される仕様になっています。
その為いつこれらのボタンが押されたかを毎フレームチェックして、もしボタンが押されていたらパラメータの保存処理を行うコードが以下になります。
=======================================================================================================================
if GetSaveTrgStat() == 1: # If save trigger is activated
# Parameters will be saved into a folder named "ParametersForTask90"
Str="ParametersForTask"+str(GetTaskID()) # Substitute save folder path
if os.path.exists(Str) == False: # If save folder doesn't exist
os.mkdir(Str) # Create the folder
with open(Str+'/MaxCorrectNum.dat', 'wb') as PickleInst[GetTaskID()]:
pickle.dump(MaxCorrectNumVar.get(),PickleInst[GetTaskID()]) # Save a value of "MaxCorrectNumVar" as "MaxCorrectNum.dat" file
with open(Str+'/TimeLimit.dat', 'wb') as PickleInst[GetTaskID()]:
pickle.dump(TimeLimitVar.get(),PickleInst[GetTaskID()])
with open(Str+'/LickDur.dat', 'wb') as PickleInst[GetTaskID()]:
pickle.dump(LickDurVar.get(), PickleInst[GetTaskID()])
=======================================================================================================================
"SavePara"もしくは"Start"ボタンが押されるとオペラントハウスの内部変数である
SaveTrgに1が代入されます。
この変数の値は
GetSaveTrgStat()で取得する事が出来ます。
取得した値が1であれば、ボタンが押されたと言う事なのでセーブコードを実行して行きます。
題90のセーブデータは"ParametersForTask90"と言う名のフォルダに入れるのですが、初回起動だとフォルダが存在していないので新規作成します。
まず
Strに"ParametersForTask90"と言う文字列を入れ、その文字列のフォルダが無ければo
s.mkdir(Str)でフォルダを作成します。
=======================================================================================================================
Str="ParametersForTask"+str(GetTaskID()) # Substitute save folder path
if os.path.exists(Str) == False: # If save folder doesn't exist
os.mkdir(Str) # Create the folder
=======================================================================================================================
次の2行のコードで
MaxCorrectNumVarの値を持つ、MaxCorrectNum.datと言うファイルを作ります。
なおMaxCorrectNumVarはIntVarと呼ばれる少し特殊な変数で、値を読みだすにはA=MaxCorrectNumVarではなく、A=MaxCorrectNumVar.get()と書く必要があります。
またここでは出てきませんが、値の代入はMaxCorrectNumVar=80ではなく、MaxCorrectNumVar.set(80)と書きます。
=======================================================================================================================
with open(Str+'/MaxCorrectNum.dat', 'wb') as PickleInst[GetTaskID()]:
pickle.dump(MaxCorrectNumVar.get(),PickleInst[GetTaskID()]) # Save a value of "MaxCorrectNumVar" as "MaxCorrectNum.dat" file
=======================================================================================================================
これを繰り返し、TimiLim, LickDurの値の保存も行います。