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", 
             "-fm", "flex", 
             "-vfr", "0.", 
             "-vfr", "0.", 
             "--difficulty", "mid",
             "--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",
             "name": "Grasp training",
@@ -45,7 +45,7 @@
             "--com", "COM3", 
             "--com", "COM3", 
             "-scth", "0.9",
             "-scth", "0.9",
             "-stp", "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",
             "name": "Band selection",
@@ -79,7 +79,7 @@
             "cwd": "${workspaceFolder}/backend",
             "cwd": "${workspaceFolder}/backend",
             "justMyCode": true,
             "justMyCode": true,
             "args": ["--subj", "XW01", 
             "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",
             "name": "Online simulation",
@@ -90,9 +90,9 @@
             "cwd": "${workspaceFolder}/backend",
             "cwd": "${workspaceFolder}/backend",
             "justMyCode": true,
             "justMyCode": true,
             "args": ["--subj", "XW01", 
             "args": ["--subj", "XW01", 
-            "-scth", "0.9",
+            "-scth", "0.5",
             "-stp", "0.9",
             "-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",
             "name": "Train hmm",
@@ -103,7 +103,7 @@
             "cwd": "${workspaceFolder}/backend",
             "cwd": "${workspaceFolder}/backend",
             "justMyCode": true,
             "justMyCode": true,
             "args": ["--subj", "XW01", 
             "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: 当前文件",
             "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 Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
         <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="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 Frame"/>
         <Param val="" valType="extendedCode" updates="constant" name="Each JS 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 Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
         <Param val="" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
         <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="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 Frame"/>
         <Param val="" valType="extendedCode" updates="constant" name="Each JS Frame"/>
         <Param val="" valType="extendedCode" updates="constant" name="Each JS Frame"/>

+ 6 - 3
backend/free_grasp.py

@@ -2,7 +2,7 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
 """
 """
 This experiment was created using PsychoPy3 Experiment Builder (v2023.2.3),
 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:
 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) 
     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)
         data_from_buffer = receiver.get_trial_data(clear=False)
         decision = controller.decision(data_from_buffer, None)
         decision = controller.decision(data_from_buffer, None)
         # TODO: multiclass ?
         # TODO: multiclass ?
-        force = controller.real_feedback_model.probability
+        force = controller.real_feedback_model.probability[1]
         feedback_bar.progress = force
         feedback_bar.progress = force
         
         
         # logging
         # logging
@@ -698,7 +698,10 @@ def run(expInfo, thisExp, win, inputs, globalClock=None, thisSession=None):
         if decision != -1:
         if decision != -1:
             feedback_time = 3
             feedback_time = 3
             trigger.send_trigger(int(decision))
             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:
         else:
             feedback_time = 0
             feedback_time = 0