Browse Source

Freegrasping范式适应2分类模式

dk 1 year ago
parent
commit
535b1392f5
3 changed files with 14 additions and 11 deletions
  1. 6 6
      .vscode/launch.json
  2. 2 2
      backend/free_grasp.psyexp
  3. 6 3
      backend/free_grasp.py

+ 6 - 6
.vscode/launch.json

@@ -19,7 +19,7 @@
             "-fm", "flex", 
             "-vfr", "0.", 
             "--difficulty", "mid",
-            "--model-path", "./static/models/XW01/riemann_rest+flex_12-05-2023-19-10-25.pkl"]
+            "--model-path", "./static/models/XW01/riemann_rest+flex_01-02-2024-12-04-19.pkl"]
         },
         {
             "name": "Grasp training",
@@ -45,7 +45,7 @@
             "--com", "COM3", 
             "-scth", "0.9",
             "-stp", "0.9",
-            "--model-path", "./static/models/XW01/riemann_rest+flex_12-05-2023-19-10-25.pkl"]
+            "--model-path", "./static/models/XW01/riemann_rest+flex_01-02-2024-12-04-19.pkl"]
         },
         {
             "name": "Band selection",
@@ -79,7 +79,7 @@
             "cwd": "${workspaceFolder}/backend",
             "justMyCode": true,
             "args": ["--subj", "XW01", 
-            "--model-filename", "riemann_rest+flex_12-06-2023-17-38-27.pkl"]
+            "--model-filename", "riemann_rest+flex_01-02-2024-12-04-19.pkl"]
         },
         {
             "name": "Online simulation",
@@ -90,9 +90,9 @@
             "cwd": "${workspaceFolder}/backend",
             "justMyCode": true,
             "args": ["--subj", "XW01", 
-            "-scth", "0.9",
+            "-scth", "0.5",
             "-stp", "0.9",
-            "--model-filename", "riemann_rest+flex_12-06-2023-17-38-27.pkl"]
+            "--model-filename", "riemann_rest+flex_01-02-2024-12-04-19.pkl"]
         },
         {
             "name": "Train hmm",
@@ -103,7 +103,7 @@
             "cwd": "${workspaceFolder}/backend",
             "justMyCode": true,
             "args": ["--subj", "XW01", 
-            "--model-filename", "riemann_rest+flex_12-06-2023-17-38-27.pkl"]
+            "--model-filename", "riemann_rest+flex_01-02-2024-12-04-19.pkl"]
         },
         {
             "name": "Python: 当前文件",

+ 2 - 2
backend/free_grasp.psyexp

@@ -95,7 +95,7 @@
         <Param val="" valType="extendedCode" updates="constant" name="Begin Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
-        <Param val="# state changed&amp;#10;feedback_bar1.progress = force&amp;#10;if decision != -1:&amp;#10;    feedback_time = 3&amp;#10;    trigger.send_trigger(int(decision))&amp;#10;    hand_device.start(model=fingermodel_ids_inverse[decision])&amp;#10;else:&amp;#10;    feedback_time = 0&amp;#10;    " valType="extendedCode" updates="constant" name="Begin Routine"/>
+        <Param val="# state changed&amp;#10;feedback_bar1.progress = force&amp;#10;if decision != -1:&amp;#10;    feedback_time = 3&amp;#10;    trigger.send_trigger(int(decision))&amp;#10;    if decision == 0:&amp;#10;        hand_device.start(model='extend')&amp;#10;    else:&amp;#10;        hand_device.start(model=fingermodel_ids_inverse[decision])&amp;#10;else:&amp;#10;    feedback_time = 0&amp;#10;    " valType="extendedCode" updates="constant" name="Begin Routine"/>
         <Param val="Py" valType="str" updates="None" name="Code Type"/>
         <Param val="" valType="extendedCode" updates="constant" name="Each Frame"/>
         <Param val="" valType="extendedCode" updates="constant" name="Each JS Frame"/>
@@ -179,7 +179,7 @@
         <Param val="" valType="extendedCode" updates="constant" name="Begin Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
-        <Param val="# decision&amp;#10;data_from_buffer = receiver.get_trial_data(clear=False)&amp;#10;decision = controller.decision(data_from_buffer, None)&amp;#10;# TODO: multiclass ?&amp;#10;force = controller.real_feedback_model.probability&amp;#10;feedback_bar.progress = force&amp;#10;&amp;#10;# logging&amp;#10;logging.exp('decision: {}'.format(decision))&amp;#10;logging.exp('probability: {}'.format(force))&amp;#10;" valType="extendedCode" updates="constant" name="Begin Routine"/>
+        <Param val="# decision&amp;#10;data_from_buffer = receiver.get_trial_data(clear=False)&amp;#10;decision = controller.decision(data_from_buffer, None)&amp;#10;# TODO: multiclass ?&amp;#10;force = controller.real_feedback_model.probability[1]&amp;#10;feedback_bar.progress = force&amp;#10;&amp;#10;# logging&amp;#10;logging.exp('decision: {}'.format(decision))&amp;#10;logging.exp('probability: {}'.format(force))&amp;#10;" valType="extendedCode" updates="constant" name="Begin Routine"/>
         <Param val="Py" valType="str" updates="None" name="Code Type"/>
         <Param val="" valType="extendedCode" updates="constant" name="Each Frame"/>
         <Param val="" valType="extendedCode" updates="constant" name="Each JS Frame"/>

+ 6 - 3
backend/free_grasp.py

@@ -2,7 +2,7 @@
 # -*- coding: utf-8 -*-
 """
 This experiment was created using PsychoPy3 Experiment Builder (v2023.2.3),
-    on Wed Dec 20 21:23:43 2023
+    on Tue Jan  2 11:55:38 2024
 If you publish work using this script the most relevant publication is:
 
     Peirce J, Gray JR, Simpson S, MacAskill M, Höchenberger R, Sogo H, Kastman E, Lindeløv JK. (2019) 
@@ -592,7 +592,7 @@ def run(expInfo, thisExp, win, inputs, globalClock=None, thisSession=None):
         data_from_buffer = receiver.get_trial_data(clear=False)
         decision = controller.decision(data_from_buffer, None)
         # TODO: multiclass ?
-        force = controller.real_feedback_model.probability
+        force = controller.real_feedback_model.probability[1]
         feedback_bar.progress = force
         
         # logging
@@ -698,7 +698,10 @@ def run(expInfo, thisExp, win, inputs, globalClock=None, thisSession=None):
         if decision != -1:
             feedback_time = 3
             trigger.send_trigger(int(decision))
-            hand_device.start(model=fingermodel_ids_inverse[decision])
+            if decision == 0:
+                hand_device.start(model='extend')
+            else:
+                hand_device.start(model=fingermodel_ids_inverse[decision])
         else:
             feedback_time = 0