免费搭建一个在线心理学实验的终极攻略

各位看官好,本期小编将系统介绍如何搭建一个在线心理学实验的后端(也就是数据收集的服务端),之前小编曾经简要介绍过各种在线心理学实验前端(也就是客户端)的编写工具(如Gorilla,jspsych等),并且也提到了在线实验后端的解决方案(如一些挂载在线实验的平台:如Gorilla、Pavlovia等等)。

这里首先简要科普一下什么是”前端”和”后端”。简单来说:

网页上给用户(被试)看的、操作的就是前端;

用户看不到的,而开发者(研究者)能看到的保存和处理数据的就是后端(服务端)。

关于在线实验前端的编写可以查看本公众号之前的推文:

然而,之前介绍的这些平台大多需要按照被试的数量来支付佣金。当然,如果你所在的高校同这些平台有合作,则可能省掉这部分费用。但Gorilla和Pavlovia的主要服务器节点都部署在英国,即使国内科研人员所在的高校跟这些平台有合作,使用体验可能依然不佳。那么如何规避这些平台的不足自建一个免费的在线实验的后端数据收集平台呢

本文将分别按照国内和国外两种网络环境,给出除了主流的Gorilla、Pavlovia等平台之外的在线实验后端详细解(sheng)决(qian)方案,并逐个分析这些解决方案的优缺点。

01

国外在线实验的解决方案

1.1使用谷歌firebase

简介:

谷歌旗下的firebase能帮助开发者快捷方便的部署Web应用和移动app应用的服务端(没错,开发安卓app也可以),而不需要系统学习后端开发的技能。小型应用(比如小型在线实验)使用免费套餐完全够用。它可以配合jspsych、labjs使用,也可以尝试使用psychopy导出的html文件进行挂载(未探索过,有兴趣的小伙伴可以探索一下,原则上应该走得通)。在线行为实验的运行主要使用了firebase的网页挂载和即时数据库功能。

具体攻略:

优缺点:

优点:

缺点:

1.由于访问数据库的密钥是以明文形式储存在网页代码中,如果不加处理,被试只需要按F12,找到网页代码的apikey部分,就可以通过curl访问、修改、删除你的数据库数据了(可以通过禁用F12解决)。就是红线所示的一串代码:

2.firebase使用的是Nosql(非关系型)数据库,导出的数据是JSON格式,对新手不大友好,不过R中有大量解析JSON格式数据的包可以解决这个问题。

3.需要编写额外代码进行被试参与实验的控制(比如识别一个被试是否多次参加了实验)

1.2JATOS的免费平台

简介:

JATOS是一个免费开源的专业在线行为实验的建立工具。近期他们提供了免费使用JATOS服务器的机会。后文我会详细介绍如何用JATOS搭建在线实验的后端。

优缺点:

优点:专业人员为你的实验挂载保驾护航,专业级别的服务器,而且免费。同时JATOS本身具有强大的被试实验控制能力。

缺点:要提交申请,可能要和其他同行竞争有限的机会。

02

国内在线实验的解决方案

2.1firebase在国内的替代品leancloud

虽然firebase用不了,但是国内依然有提供类似firebase的服务商:Leancould。他们也提供了免费套餐,只不过免费套餐有一些限制(如,每天强制6小时休眠挂载的网页)。我们同样可以免费使用leancloud的网页挂载和免费Nosql数据库。

具体攻略:

(与firebase如出一辙)

2.数据库如何使用:

优点:参见firebase

缺点:除了firebase的缺点,多了每天6小时的强制休眠。

2.2使用个人电脑搭建服务器后端

(这种方法其实也可以在国外的网络环境下使用)

这里主要使用了内网穿透技术。简单来说,内网穿透就是通过第三方服务器同时连接你的电脑内网和外部互联网,让外网能够连接到你的内网中来。这样你在本地建立的网页文件就可以被外网的用户浏览到。此外,我将演示如何使用JATOS搭建一个在线实验的后端,以及如何运作这个后端。

这里我们需要用到三个工具:

jspsych(用于编写在线实验客户端),

JATOS(用于部署在线实验服务端),

ngrok(用于联通外网和内网)。

首先你需要用jspsych写好一个在线实验的网页,然后在网页的html代码中中导入jatos.js文件

具体步骤:

然后对之前写好的在线实验代码做微调,具体步骤如下:

1.在jspsych.init之前嵌套jatos.onload。具体代码如下:

jatos.onLoad(function(){

jsPsych.init({

//...

});

2.加上一个回调函数以上传被试的数据文件(这里复制粘贴黄色部分即可)。

之后需要下载ngrok这个工具,下载地址:

然后在ngrok的官方网站上注册一个账号:

然后将文件解压,并打开文件夹中的loader.bat文件

打开之后可以看到下面有一个IP地址和端口号(9000),然后我们ctrl+c复制这个地址和端口号并粘贴到浏览器中(这个命令行界面不要关闭,最小化即可)。

JATOS的登陆界面就出现了,这里的初始账号密码都是admin,然后我们点击进入JATOS:

接着我们就进入了JATOS的主要操作界面,可以看到左边红框框是已经装载的实验(第一次安装这里应该是空的),而上方的红框则是需要用到的功能。

首先点击+NewStduy添加一个新实验,如下图,其中title和directoryname(在线实验html文件夹的文件名)必填:

最后点击Create即可.之后左边会出现刚刚建立的新实验,点击这个新实验,会弹出如下界面:

之后我们点击Components--+New,填写title和HTMLfilepath(也就是在线实验网页文件的文件名)

这样我们的实验就加载进了JATOS。

这样在线实验的前后端就基本部署完成了,接下来我们通过ngrok进行内网穿透。

打开命令行工具(cmd),使用cd“d(ngrok安装的盘):\ngrok所在的文件目录”修改工作目录。

修改工作目录后如下图:

接着我们可以将刚才的地址去掉/test再黏贴到浏览器地址栏,就可以登陆到JATOS了。

可以看到这时的JATOSlogo已经没有了local字样,说明外网能成功访问到这个页面了。

接下来我们点击刚才已经部署好的实验,再点击Woker&Batchmanager,你会看到如下界面:

点击下拉箭头:

优点:免费,方便,而且依托JATOS的被试控制

缺点:免费版的ngrok第三方服务器部署在美国,网速可能比较慢,只能支持较少被试同时进行实验

写在最后的需知:

虽然这篇推文提到了一些免费的建立在线实验的方法,但是免费搭建的在线实验限制较多,且稳定性可能不够(比如有较多被试同时参与你搭建的在线实验,由于带宽不够造成数据流失,没能上传到数据库)。故本人建议免费搭建平台可以用来做一些小项目或者预实验。但是如果你所在的研究团队有这方面专业的支持,还是应当寻求专业帮助。毕竟一分钱一分货嘛。就像某互联网大佬的曾经说过的:

THE END
1.标题:开启在线实验新纪元:PsychoJS心理学实验JavaScript库PsychoJS 是一个强大而灵活的JavaScript库,它使科学家和研究人员能够在浏览器中运行神经科学、心理学以及心理物理学实验。它是Python库PsychoPy的在线版本,旨在打破传统实验室限制,利用现代网络技术实现大规模、多样化的数据收集。 项目技术分析 PsychoJS的核心是让Python实验代码能够无缝转换为JavaScript,并在任何支持WebGLhttps://blog.csdn.net/gitblog_00088/article/details/139588595
2.psychopy,用于运行心理学和神经系统实验.zippsychopy, 用于运行心理学和神经系统实验 PsychoPy PsychoPy是一个开放源代码包,用于在 python ( 。Matlab的真正免费替代) 中创建心理刺激。 PsychoPy将OpenGL的图形强度与简单的python 语法结合起来,给心理学家提供免费 开源2019-10-11 上传大小:17.00MB https://www.iteye.com/resource/weixin_38744207-11848978
3.实验编程:PsychoPy从入门到精通.docx免费在线预览全文 实验编程:PsychoPy从入门到精通第一章:PsychoPy简介 1.1 PsychoPy是一种强大的实验编程工具,专门为心理学研究、神经科学、机器学习等领域的研究者提供服务。它允许用户使用Python语言来编写复杂的实验程序,以进行各种行为学、神经科学和心理学实验。PsychoPy的设计目的是为了使实验编程更加简单、快速和高效https://max.book118.com/html/2023/0912/5000034232010324.shtm
4.《实验编程PsychoPy从入门到精通》([英]乔纳森·皮尔斯(Jonathan当当网图书频道在线销售正版《实验编程 PsychoPy从入门到精通》,作者:[英]乔纳森·皮尔斯(Jonathan Peirce)[新西兰]迈克尔·麦卡斯基,出版社:人民邮电出版社。最新《实验编程 PsychoPy从入门到精通》简介、书评、试读、价格、图片等相关信息,尽在DangDang.com,网http://product.dangdang.com/28989931.html
5.PsychoPy编程做实验,汉字输入问题程序语言Python用PsychoPy编程做语音识别实验,要求被试者听后输入汉字,但汉字无法输入,但在有的windows系统下可以,有https://muchong.com/t-11909122-1-authorid-2399301
6.求助线上行为实验平台由于疫情的到来,实地招募被试进行行为实验越来越难了。想问问组里海内外做心理学/行为科学/语言学/或一切需要做行为实验的学科的各位,如果想在墙内招被试,哪个实验平台的体验比较好? 以下是一些具体的考虑: (1)有一些平台可能在国内会被墙(目前已知不大行的是PsychoPy)。虽然挂梯子也能用,但是网络延迟问题可能对https://www.douban.com/group/topic/198057764
7.TBIResearch:TBI研究的PsychoPy实验源码开发技术用于TBI研究的PsychoPy实验此存储库将包括Corsi任务,ANT-I,Spatial Stroop等版本。 (0)踩踩(0) 所需:1积分 penetration 2024-11-28 13:27:57 积分:1 Slack 2024-11-28 13:27:14 积分:1 Training 2024-11-28 13:19:22 积分:1 panel 2024-11-28 13:18:54 https://www.coder100.com/index/index/content/id/1850126
8.用PsychoPy做视觉搜索任务实验被试的任务就是盯着那几个追踪目标,然后在运动结束之后,选出四个目标来。选择部分就要用到一下鼠标。还有设置什么诱导刺激,就是在运动过程中,某个小圆会搞小动作,看被试能不能注意到。有兴趣的同学可以试试玩儿。 gif图的代码如下: #!/usr/bin/env python# -*- coding: utf-8 -*-frompsychopyimportvisual,https://www.jianshu.com/p/c1d9317aa084
9.Psychopy第4期:实验数据的收集与处理51CTO博客在前几期,我们已经学习了Psychopy入门、数据类型与运算符、条件与循环、flanker范式的完整编程。 但是,在心理学实验中,除了要在屏幕上呈现想要的刺激,我们还希望计算机能够帮助我们收集被试基本信息、反应时以及正确率等指标。 那么如何达到这一目的呢? Part2被试信息录入 https://blog.51cto.com/u_15127566/2707640