跟着ChatGPT学PsychoPy编程3:将想要的数据写入数据文件/属性的用处

一:将想要的数据写入数据文件

问题描述:

通常使用组件直接设置的内容可能会被自动写入数据文件,比如键盘组件、图片组件等(具体来说,比如按键的反应时、正确的按键、在组件中添加的变量等)。

然而,程序运行过程中产生的中间数据,比如每张图片出现的位置,并没有被写入数据文件中——往往是用代码直接写的部分,这时需要再手动写代码来添加想要的数据到最后生成的数据文件。

实现这个只需要一句简单的代码:

trials.addData('image_1.position', image_1.pos)

image_1是我的图片组件名,image_1.position是我想在数据文件中查看的变量名称(也就是列名),image_1.pos是这个组件所表示的图片的位置。末尾.pos是一个属性,表示图片的位置。

再举一个例子:

thisExp.addData('num_presses',num_presses)

(ps. 我本以为这两句代码开头是一样的。直到打进去才发现有差别。笑哭emoji。)

所以我原本用第二句代码当第一句使也完全没有问题,前提是把它放在循环loop的里面。但实际上这串代码常放在loop之外。两句代码具体差别见下:

GPT:

-trials.addData() 主要用于在每个试次循环中添加特定于试次的数据,例如试次编号、条件名称、响应时间等。它将数据添加到与当前试次对应的数据文件的行中。

-thisExp.addData() 用于在全局范围内添加整个实验的共享数据,例如被试信息、实验参数、整个实验的平均结果等。它将数据添加到数据文件的一行中,该行通常位于数据文件的顶部,记录了与整个实验相关的信息。

-在某些情况下,您可以使用其中任意一种方法来添加数据。例如,如果要将特定于试次的数据添加到数据文件的一行中,您可以使用 trials.addData() 或 thisExp.addData() 来实现相同的效果。


除此之外,在程序的脚本中,我还发现了将block数据写入数据文件的代码:

blocks.addData('text_3.started', text_3.tStartRefresh)

blocks.addData('key_resp_2.keys', key_resp_2.keys)

回头看组件,发现这些信息确实只存在于每一次block开始时的指导语routine中。


二:属性的用处

主要说一下我如何借助属性来写条件语句,从而获得想要的赋值的。

问题描述

我的实验程序每个试次要呈现四张图片,每个象限各一张,左右两边各代表一个选项,每个选项中有两个属性,每个属性位于同一行。

f38011a516a145f2b7fc74730549069b.png

 (Glickman, 2019, PLOS computational biology)

将A图向右翻转90度就是我的展示方式。由于要做随机化处理,即两种属性(此属性非彼属性,这里指的是努力和奖赏两种属性。本文要介绍的是组件属性。)的上下位置随机,两个选项的左右位置随机,因此一共有四种组合方式。

这四种组合方式是随机呈现的,代码如下:

pos1 = 0

pos2 = 0

pos3 = 0

pos4 = 0

# 先定义变量

elif 0.25 <= random() < 0.5:

    pos1 = (0.3,0.3)

    pos2 = (0.3,-0.3)

    pos3 = (-0.3,0.3)

    pos4 = (-0.3,-0.3)

    correct = 'f'

# 选高努力选项的情况视为正确。我实验设置了高努力属性对应了pos3的位置,高奖赏属性对应了pos4的位置。由于f是左键,对应了这里的pos3和pos4,所以在这种试次下选f人为规定为正确。下方同理。

elif 0.5 <= random() < 0.75:

    pos1 = (-0.3,-0.3)

    pos2 = (-0.3,0.3)

    pos3 = (0.3,-0.3)

    pos4 = (0.3,0.3)

    correct = 'j'

else:

    pos1 = (0.3,-0.3)

    pos2 = (0.3,0.3)

    pos3 = (-0.3,-0.3)

    pos4 = (-0.3,0.3)

    correct = 'f'

# 再赋值

# ps. pos1和pos2总是在一边,pos3和pos4总是在一边。

每张图片对应于一个位置,比如image1_1组件设定了Image属性为$aa,Position[x,y]属性为$pos1;image2_2组件设定了Image属性为$bb,Position属性为$pos2;以此类推。

重点来了:我需要根据被试的决策来提供相应的任务及反馈,那么我就需要知道被试在当前试次的选择是什么,并为任务环节需要的变量来赋值。

赋值过程代码如下:

max_presses = 0

# 被试决策完要进行努力任务,那么在此之前需要获得被试选择的努力任务的水平。于是定义一个按键最大次数的变量。

if key_resp.corr == 0 and image1_1.image == 'eff_1.png':
    max_presses = 5
elif key_resp.corr == 0 and image1_1.image == 'eff_2.png':
    max_presses = 10
elif key_resp.corr == 0 and image1_1.image == 'eff_3.png':
    max_presses = 15
elif key_resp.corr == 0 and image1_1.image == 'eff_4.png':
    max_presses = 20
elif key_resp.corr == 0 and image1_1.image == 'eff_5.png':
    max_presses = 25
elif key_resp.corr == 1 and image3_3.image == 'eff_1.png':
    max_presses = 5
elif key_resp.corr == 1 and image3_3.image == 'eff_2.png':
    max_presses = 10
elif key_resp.corr == 1 and image3_3.image == 'eff_3.png':
    max_presses = 15
elif key_resp.corr == 1 and image3_3.image == 'eff_4.png':
    max_presses = 20
elif key_resp.corr == 1 and image3_3.image == 'eff_5.png':
    max_presses = 25

# 这部分代码的意思是根据被试的选择,如果是“正确的”,即key_resp.corr ==1(注,key_resp是决策环节键盘组件名 .corr就是该组件的Correct answer属性。),以及如果当前试次图片组件(比如image1_1)提取的图片为某图片名(比如eff_1),那么将5赋值给max_presses。该过程正是通过组件的属性,即image属性来进行的。前文说过image属性里设置了$aa,$bb等,而aa,bb其实是存储着所有图片名的excel的一个变量名(列名)。ps. 这里aa其实是eff_low.

7edf4dbcdb8941c9b5000df4de3ab666.jpg

 (Figure. ps. 其中从第二行开始,每一行代表一个condition。每个试次正是从这些condition中随机抽取的。)

总结:对于奖赏反馈信息的呈现,也是采用同样的办法。重要的是善于利用组件中的属性。以及善于利用条件语句。


我的收获与感悟:程序从构思、到在与GPT攀谈的过程中不停摸索、再到一步一步逼近成果,花了5天左右的时间。这段时间还是很有成就感的,也很感叹困难一个个都在不懈努力或机缘巧合下被解决了。此外要感谢那些爱分享又热爱学习的热心网友们。接下来还有好多工作要做,要一鼓作气!

记于凌晨1.12。明天再写几篇稿子来复盘!(噢不,今天)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7289.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我们都被 ChatGPT 给骗了?

引言&#xff1a; 用过 ChatGPT 的人都知道&#xff0c;当你与 chatgpt 对话的时候&#xff0c;它是“逐字输出”的&#xff0c;就像真的有个人在跟你打字一样。其实&#xff0c;这种技术并没有那么神奇&#xff0c;这种技术叫做“实时文本生成”或“逐字输出”技术&#xff0…

将小米SoundMove 无缝接入 ChatGPT

将小米SoundMove 无缝接入 ChatGPT 本教程内容参考 Github 地址(可选)部署查看小米 SoundMove 信息的环境(可选)查看小米 SoundMove 的信息以容器方式部署程序到小米万兆路由器实际效果有待改善点 本教程内容 1 是记录了将小米 SoundMove 接入 ChatGPT 的操作步骤。 2 是将小米…

《2023 ChatGPT for Robotics:Design Principles and Model Abilities》阅读笔记

1 Introduction 自然语言处理(NLP)的快速发展导致了大型语言模型(LLMs)的发展&#xff0c;如BERT[2]、GPT-3[3]和Codex[4]&#xff0c;这些模型正在对广泛的应用程序进行革命。这些模型在文本生成、机器翻译和代码合成等各种任务中都取得了显著的效果。这个模型集合的最新成员是…

chatgpt赋能python:Python冒泡排序:理解流程图

Python冒泡排序&#xff1a;理解流程图 当涉及到排序算法时&#xff0c;Python中最流行的算法之一就是冒泡排序。它是一种简单而有效的排列方法&#xff0c;旨在让列表中的元素按升序或降序排列。在此文章中&#xff0c;我们将讨论冒泡排序的流程图&#xff0c;并重点介绍每个…

Itchat 微信聊天机器人

微信聊天机器人(Itchat) 不务正业&#xff0c;想起干点啥有意思的事&#xff0c;于是想起了用聊天机器人去调戏微信好友也许会有点意思吧&#xff0c;于是参照别人写的东西&#xff0c;自己也浅尝一下。基本原理还是很简单的&#xff0c;就是让机器人替你去聊天。 主要有以下…

利用微信API将你的微信变为聊天机器人

想想将个人微信变为一个机器人也是很好玩的&#xff0c;这个项目就教你如何把自己的微信变为一个聊天机器人&#xff0c;嗯~对的&#xff0c;和小冰差不多的感觉吧&#xff08;哈哈哈~&#xff09;。 最终效果图&#xff1a; 效果图 原理&#xff1a; 通过微信的Python接口it…

itchat+在线聊天机器人接口实现微信聊天机器人

闲来无事(其实还在期末考试)&#xff0c;想着怎么利用手里的服务器搞点事情时&#xff0c;发现了python的itchat库&#xff0c;想着可以再利用网页聊天机器人&#xff0c;做一个自动聊天的微信机器人。 总体思路很简单&#xff0c;用itchat登录微信&#xff0c;接受消息&#…

AI 微信自动聊天机器人

微信聊天机器人 # /usr/bin/env python # -*- coding: utf-8 -*- # Time : 18-5-4 下午23:37 # Author : 杨星星 # Email : yangshilong_liu163.com # File : wechart.py # Software: PyCharm#codingutf8 import requests import itchat import random# KEY 8edce3c…

聊天机器人集成PC端微信

1.PyWeChatSpy 可以操作PC端微信 github地址如下 https://github.com/veikai/PyWeChatSpy 2.chatterbot 可以实现自制语料库的聊天机器人 安装方法 pip install chatterbot训练方法&#xff0c;语料库制作方法 官网上都有 https://chatterbot.readthedocs.io/en/stable/devel…

微信自动聊聊天机器人(利用腾讯的智能聊天接口)

微信智能聊天机器人 利用python做一个微信聊天机器人早已不是黑科技&#xff0c;网上有很多通过图灵机器人接口和itchat实现的教程。这里呢我用到腾讯的智能闲聊&#xff0c;是没有次数限制的&#xff0c;当然还有很多这样的api&#xff0c;百度也有&#xff0c;这里我只说腾讯…

ChatGPT修bug横扫全场,准确率达78%!程序员要开心了

ChatGPT到底有多会修bug&#xff1f; 这事终于有人正儿八经地搞研究了—— 来自德国、英国的研究人员&#xff0c;专门搭了个“擂台”来检验ChatGPT的这项本领。 除了ChatGPT之外&#xff0c;研究人员还找来了其它三位修bug的“AI猛将”&#xff0c;分别让它们修复40个错误代码…

区块链龙头股都有哪些?区块链概念股有哪些?

区块链龙头股都有哪些?区块链概念股有哪些? 区块链技术的应用程序似乎很广泛&#xff0c;它可以用于金融服务行业&#xff0c;例如&#xff0c;用于转移资金。它可以切断中间人&#xff0c;并可能带来更大的效率。这有可能提高不同行业的储蓄水平&#xff0c;从而提高盈利水平…

2019区块链概念股龙头

除了在教育行业的运用&#xff0c;区块链技术如今也被运用在其它社会事业的管理上。在国&#xff0c;社会事业种类特别多&#xff0c;需要处理的数据量也十分巨大。在档案管理&#xff0c;个人社会信用、公证、身份认证、遗产继承以及代理投票方面的作用十分突出。只要需要网络…

海外上市中国概念股每日行情

海外上市中国概念股每日行情 &#xff08;单位:美元&#xff09; 股票名称股票代码开盘最低最高收盘涨跌额涨跌幅成交量市值市盈率小时日期网易NTES39.8739.2540.2339.520.020.05%541482 $ 1,235,955,00025.994:00pm2/17/2005新浪SINA23.3423.1423.8023.18-0.091-0.39%168105…

九龙证券|受益行业红利,这些龙头股获资金青睐!

今天职业普涨&#xff0c;15个职业主力资金净流入。 证券时报数据宝计算&#xff0c;今天沪深两市主力资金净流出16.34亿元&#xff0c;较昨日流出力度大幅减缓。其间创业板净流入2.41亿元&#xff0c;沪深300成份股净流入17.13亿元。 今天职业普涨&#xff0c;申万一级职业中…

一起来创建A股上市公司细分行业龙头数据库

为什么要搭建呢&#xff1f; A股市场无论牛市、熊市还是 震荡市场更多的还是结构性机会&#xff0c;也就是行业及题材板块的热点轮动&#xff0c;此消彼长&#xff0c;这会是一种常态。 因此选股环节愈发重要&#xff0c;选对大趋势却没有选好板块--无用&#xff1b;选对了板块…

高效的股票数据接口工具有哪些?

我们已经知道了量化投资是是通过数量化方式及计算机程序化发出买卖指令&#xff0c;以获取稳定收益为目的的交易方式&#xff0c;而其中最重要的载体是数据。在金融领域中量化的应用让金融分析师、外汇交易员、产品研发员等技术人员又有了新的用武之地&#xff0c;转型成为量化…

A股各概念板块龙头股大全

A股各概念板块龙头股大全一、新兴信息产业龙头1、车联网龙头——软控股份002073 启明信息002232.荣之联0026422、通信网络龙头——恒宝股份0021043、通信设备制造龙头——新海宜002089.东方通信6007764、物联网互联龙头——三五互联300051.大唐电信600198.二六三0024675、三网融…

企业微信的聊天机器人来了,免费下载(Python版)

大家好&#xff0c;这里是程序员晚枫&#xff0c;个人网址&#xff1a;python-office.com 上次分享了微信机器人的视频以后&#xff0c;视频下面有一个热门评论&#xff1a; 什么时候开发企业版微信机器人&#xff1f;自动回复、自动群发等等~ 在经历了一段时间的查找和开发以…