Kitaya lab

オリジナル課題の追加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"と言う文字列を入れ、その文字列のフォルダが無ければos.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の値の保存も行います。