$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
本协议中的所有程序均已获得纽约州精神病学研究所机构动物护理和使用委员会的批准。
注意:单板计算机用于显示与在滚轮上运行头部约束的鼠标相协调的 VR 视觉环境。运动信息以串行输入的形式从 ESP32 微控制器接收,读取耦合到轮轴的旋转编码器。VR环境在Raspberry Pi GPU上使用OpenGL硬件加速渲染,该GPU利用Raspberry Pi的pi3d Python 3D包。然后,渲染环境 通过 投影仪输出到以头部约束的鼠标视野 15、16 为中心的紧凑环绕式抛物面屏幕上,而行为(例如,响应空间奖励的舔舐)则由第二行为 ESP32 微控制器测量。图形软件包支持创建虚拟线性轨道环境,包括沿虚拟走廊或走廊的重复视觉刺激模式,并带有图形用户界面(GUI)。这种设计很容易参数化,因此允许创建复杂的实验,旨在了解大脑在空间学习过程中如何编码地点和视觉线索(见第4节)。该系统所需的自定义硬件组件(即运行轮、投影屏幕和头枕装置)的设计存放在公共 GitHub 存储库 (https://github.com/GergelyTuri/HallPassVR) 中。建议阅读该存储库的文档以及此协议,因为该站点将使用系统的未来增强功能进行更新。
1. 硬件设置:运行轮、投影屏幕和头部固定装置的构造
注意:如果用户可以使用3D打印和激光切割设备,或者可以外包给专业制造或3D原型服务(例如eMachinehop),则可以轻松制造这些设置的自定义组件。所有设计文件均以 形式提供。STL 3D 文件或 .DXF AutoCAD 文件。
- 运行轮和行为设置(图1)
注意: 车轮由一个透明的亚克力圆柱体(直径 6 英寸、宽 3 英寸、厚度 1/8 英寸)组成,中心是通过滚珠轴承悬挂在激光切割亚克力支架上的轴。然后将车轮组件安装到轻质铝制框架(T 型槽)上,并牢固地固定在光学试验板上(图 1C-E)。- 从 1/4 的丙烯酸板上激光切割车轮和轴支架的侧面,并用丙烯酸水泥将车轮侧面连接到丙烯酸圆柱体上。将轴法兰拧入车轮侧件的中心。
- 将车轴插入轮心法兰,将滚珠轴承卡入轴安装座,然后将它们连接到垂直铝制支撑杆上。
- 将轮轴插入安装的滚珠轴承中,留下 0.5-1 英寸的轴经过轴承以连接旋转编码器。
- 将旋转编码器支架安装到车轮对面的轴端,然后插入旋转编码器;然后,使用轴耦合器将轮轴耦合到旋转编码器轴。
- 将舔舐端口连接到柔性臂上,然后用 T 型槽螺母固定在铝制轮架上。使用 1/16 英寸管将舔端口连接到电磁阀,将阀门连接到储水器。
注意:舔端口必须由金属制成,并焊接一根电线,以将其连接到行为 ESP32 的电容式触摸感应引脚。
- 投影幕布
注意:VR屏幕是一个小型抛物面背投屏幕(画布尺寸:54厘米x 21.5厘米),基于克里斯托弗哈维实验室15,16开发的设计。所用LED投影机的投影角度(梯形)与以前使用的激光投影机不同;因此,通过将装置安装在屏幕下方并简化后视镜系统,对原始设计进行了轻微修改(图 1A、B)。强烈建议阅读 Harvey 实验室的文档以及我们的文档,以便根据用户的需求定制 VR 环境15.- 在黑色哑光亚克力板中从 1/4 激光切割投影屏幕侧面。激光切割背投镜的 1/4 在镜面亚克力中。
- 用铝条组装投影幕框,并激光切割亚克力板。
- 将半透明投影屏幕材质插入框架中的抛物线槽中。将背投镜插入投影屏幕框架背面的插槽中。
- 将 LED 投影仪放在投影幕框内的底部安装板上。将投影机与安装螺栓对齐,以优化投影图像在抛物面背投屏幕上的位置。
- 如有必要,密封投影机盒单元以防止光污染光学传感器。
- 头枕装置
注意:这种头枕装置设计由两个互锁的 3D 打印歧管组成,用于固定金属头柱(图 1E、F)。- 使用高分辨率SLM 3D打印机,3D打印头柱抱臂。
注意:树脂打印塑料能够为行为实验提供稳定的头部固定;但是,为了在单细胞记录或双光子成像等敏感应用中实现最大稳定性,建议使用机加工金属部件(例如,eMachineShop)。
- 将3D打印的头柱支架安装到带有光学安装柱的双轴测角仪上,以便动物的头部可以倾斜以调平制剂。
注意:当需要在随后的成像会话中找到相同的细胞群时,此功能对于长期 体内成像实验 是必不可少的。否则,可以省略此功能以降低设置成本。
- 制造顶柱。
注意:两种类型具有不同复杂性(和价格)的头柱与这些说明一起存放在材料表中提供的链接中。- 根据实验类型,确定要实施的头柱。头杆由不锈钢制成,通常外包给任何本地机械车间或在线服务(例如,eMachineShop)进行制造。
2. 电子硬件/软件的设置(单板计算机、ESP32 微控制器, 图 2)
- 配置单板计算机。
注意: 材料表 (Raspberry Pi 4B)中包含的单板计算机最适合此设置,因为它具有板载GPU以促进VR环境渲染和两个HDMI端口,用于实验控制/监视和VR投影。其他具有这些特征的单板计算机可能会被替换,但以下某些指令可能特定于 Raspberry Pi。- 将单板计算机成像器应用程序下载到 PC,并在 microSD 卡 (16+ GB) 上安装操作系统(当前为 Raspberry Pi OS r.2021-05-07)。插入卡,然后启动单板计算机。
- 为 pi3d Python 3D 库配置单板计算机:(菜单栏) 首选项>树莓派配置。
- 单击 屏幕消隐>显示>禁用。
- 单击接口 >串行端口>启用。
- 单击性能 > GPU 内存> 256 (MB)。
- 升级 pi3d 的 Python 图片库包:(终端)> sudo pip3 安装枕头 --upgrade。
- 为单板计算机安装 pi3d Python 3D 包:(终端)> sudo pip3 安装 pi3d。
- 提高投影仪的HDMI输出电平:(终端)> sudo nano /boot/config.txt,取消注释 config_hdmi_boost=4,保存,然后重新启动。
- 从 arduino.cc/en/software 下载并安装集成开发环境 (IDE)(例如 arduino-1.8.19-linuxarm.tar.gz),这是将代码加载到旋转编码器和行为 ESP32 微控制器上所必需的。
- 在 IDE 上安装 ESP32 微控制器支持:
- 点击 文件>首选项>其他看板管理器 URL = https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- 点击工具 >开发板>开发板管理器> ESP32 (乐鑫)。安装 v.2.0.0(当前在 v2.0.4 上上传失败)。
- 从 https://github.com/processing/processing4/releases 下载并安装处理IDE(例如,processing-4.0.1-linux-arm32.tgz),这对于VR期间记录和在线绘制鼠标行为是必需的。
注意:如果需要,Arduino 和处理环境可以在与 VR 单板计算机不同的 PC 上运行。
- 设置旋转编码器 ESP32 连接。
注意:耦合到车轮轴的旋转编码器通过鼠标运动测量车轮旋转,鼠标运动通过 ESP32 微控制器进行计数。然后,位置变化被发送到单板计算机 GPIO 串行端口,以使用图形软件包控制通过虚拟环境的移动,以及行为 ESP32 以控制奖励区域(图 2)。- 连接旋转编码器组件和旋转 ESP32 之间的电线。旋转编码器通常有四根线:+、GND、A 和 B(正交编码器的两条数字线)。通过跳线 将它们 连接到 ESP32 3.3 V、GND、25、26(在附加代码的情况下)。
- 连接旋转 ESP32 和行为 ESP32 之间的串行 RX/TX 线。在旋转 ESP32 Serial0 RX/TX(接收/发送)和行为 ESP32 的 Serial2 端口(TX/RX,引脚 17、16;请参阅 OMwSmall PCB 右侧的 Serial2 端口)之间建立简单的双线连接。这会将运动信息从旋转编码器传输到空间区域(如奖励区域)的行为设置。
- 连接旋转 ESP32 和单板计算机 GPIO(或直接 USB 连接)之间的串行 RX/TX 线。在单板计算机 GPIO 引脚 14、15 (RX/TX) 和旋转 ESP32 Serial2(TX/RX,引脚 17、16)之间建立双线连接。这将把运动信息从旋转编码器传输到单板计算机上运行的图形软件包。
注意:仅当旋转 ESP32 未 通过 USB 连接(即,它是 "/dev/ttyS0" 处的 GPIO 串行连接)时才需要此步骤,但必须修改HallPassVR_wired.py代码以使用"/dev/ttyUSB0"。在将来的版本中,此硬连线连接将被无线蓝牙连接取代。
- 将旋转 ESP32 USB 插入单板计算机 USB(或其他运行 IDE 的 PC)以上传初始旋转编码器代码。
- 设置行为 ESP32 与行为硬件的连接(通过 OpenMaze PCB)。
注意:ESP32 微控制器的行为将控制所有非 VR 动物交互(提供非 VR 刺激和奖励、检测鼠标舔舐),这些交互通过 ESP32 的通用 PCB "分线板""OMwSmall"连接,其设计可通过 OpenMaze 网站 (www.openmaze.org) 获得。PCB包含驱动机电组件所需的电子元件,例如用于提供液体奖励的电磁阀。- 将 12 V 液体电磁阀连接到 OMwSmall PCB 最左侧的 ULN2803 IC 输出(示例设置和代码中的引脚 12)。该 IC 将 12 V 电源隔离至奖励电磁阀,由行为 ESP32 微控制器上的 GPIO 输出控制。
- 将舔舔端口连接到 ESP32 触摸输入(例如示例代码中的 T0、GPIO4)。ESP32 在特定引脚上内置了电容式触摸感应功能,ESP32 代码使用该行为在 VR 行为期间检测鼠标对附加金属舔端口的舔舐。
- 连接行为 ESP32 串行 2(引脚 16、17)和旋转编码器 ESP32 串行 0 之间的串行 RX/TX 线(请参阅步骤 2.2.2)。
- 将 USB 插入单板计算机的 USB 端口(或其他 PC),将新程序上传到行为 ESP32 中,以用于不同的实验范式(例如奖励区域的数量/位置),并使用随附的处理草图捕获行为数据。
- 将 12 V DC 墙上适配器插入行为 ESP32 OMwSmall PCB 上的 2.1 mm 套管插孔连接器,为奖励电磁阀供电。
- 将单板计算机的HDMI #2输出插入投影仪HDMI端口;这会将单板计算机GPU渲染的VR环境带到投影屏幕上。
- (可选)将同步线(引脚 26)连接到神经成像或电生理记录设置。每5秒将发送一次3.3 V晶体管-晶体管-逻辑(TTL)信号,以接近毫秒的精度对准系统。
- 设置软件:使用 IDE 将固件/软件加载到旋转编码器 ESP32(图 2B)和行为 ESP32(图 2E)上,然后将 VR Python 软件下载到单板计算机上。请参阅 https://github.com/GergelyTuri/HallPassVR/software。
- 先将旋转编码器 ESP32 插入单板计算机的 USB 端口 - 操作系统会自动将其命名为 "/dev/ttyUSB0"。
- 加载旋转编码器代码:在 IDE 中打开文件 RotaryEncoder_Esp32_VR.ino,然后在 ESP32 开发模块>的工具>板下选择 ESP32。通过单击工具>端口> /dev/ttyUSB0 选择 ESP32 端口,然后单击上传。
- 接下来将行为 ESP32 插入单板计算机的 USB 端口 - 这将作系统命名为"/dev/ttyUSB1"。
- 将行为序列代码加载到行为 ESP32 上(IDE, ESP32 开发模块 已选中),然后单击工具 >端口 > /dev/ttyUSB1,然后单击 上传:wheel_VR_behavior.ino。
- 通过在 IDE(工具 > 端口 > /dev/ttyUSB0 或 /dev/ttyUSB1)中为每个 ESP32 选择串行端口,然后单击串行监视器>工具(波特率:115,200)以观察旋转板 (USB0) 或行为板 (USB1) 的串行输出,以测试串行连接。旋转滚轮以查看 USB0 上旋转 ESP32 的原始运动输出或 USB1 上行为 ESP32 的格式化运动输出。
- 从 https://github.com/GergelyTuri/HallPassVR/tree/master/software/HallPassVR 下载图形软件包 Python 代码(到 /home/pi/Documents)。此文件夹包含运行图形软件包所需的所有文件(如果之前正确安装了 pi3d Python3 软件包)(步骤 2.1)。
3. 运行和测试图形软件包
注意:运行图形软件包 GUI 启动 VR 线性跟踪环境,校准 VR 软件和行为 ESP32 代码上的距离,并使用随附的处理语言草图测试鼠标奔跑和舔舐行为的采集和在线绘图。
- 在单板计算机中打开终端窗口,导航到 HallPassVR 文件夹(终端:> cd /home/pi/Documents/HallPassVR/HallPassVR_Wired)
- 运行 VR GUI:(终端)> python3 HallPassVR_GUI.py (GUI 窗口将打开, 图 3A)。
- 图形软件图形用户界面
- 从列表框中选择并添加四个元素(图像)(或选择下面的预存储模式,然后单击 上传),用于轨道上的三个模式中 的每一个,然后单击生成。
注意:在运行GUI之前,可以将新的图像文件(.jpeg)放置在HallPassVR/HallPassVR_wired/images/ELEMENTS文件夹中。
- 从下拉菜单中选择地板和天花板图像,并将此示例代码的轨道长度设置为 2 m(它必须等于行为 ESP32 代码和处理代码中的 轨道长度 (以毫米 [mm] 为单位)。
- 如果需要,请命名此模式(它将存储在 HallPassVR_wired/images/PATH_HIST 中)。
- 单击 "开始" 按钮(等到 VR 窗口启动后再单击其他位置)。VR环境将出现在屏幕#2上(投影屏幕, 图3B,C)。
- 运行处理草图以获取并绘制行为数据/运动。
- 在处理 IDE 中打开 VRwheel_RecGraphSerialTxt.pde。
- 更改 动物="您的鼠标号码"; 变量,并将会话分钟设置为等于行为会话的长度(以 分钟 为单位)。
- 单击处理 IDE 上的"运行"按钮。
- 检查处理绘图窗口,该窗口应显示车轮旋转时虚拟线性轨道上的当前鼠标位置,以及每 30 秒更新一次的舔、圈和奖励的奖励区和运行直方图(图 3D)。手动推进跑轮以模拟鼠标运行进行测试,或使用测试鼠标进行初始设置。
- 单击绘图窗口,然后按键盘上的 q 键停止获取行为数据。当 sessionMinutes 过去或用户按 q 键退出时,将保存行为事件和时间的文本文件(通常每个会话的大小为<2 MB)和最终绘图窗口(.png)的图像。
注意:由于输出.txt文件的大小较小,估计单板计算机的SD卡上至少可以存储数千个行为记录。数据文件可以保存到拇指驱动器以供后续分析,或者如果连接到本地网络,则可以远程管理数据。
- 使用 VR 轨道长度校准行为轨道长度。
- 在观察 VR 走廊和鼠标位置(在处理图上)的同时手动前进滚轮。如果 VR 走廊在鼠标到达行为图的终点之前/之后结束,则递增/减少 VR 轨迹长度(HallPassVR_wired.py、 corridor_length_default,以厘米 [cm] 为单位),直到两个系统中的轨迹同时重置。
注意:该代码目前针对直径为 6 英寸的运行轮进行了校准,使用 256 位正交旋转编码器,因此用户可能必须更改 VR( HallPassVR_wired.py,corridor_length_default,以厘米 [cm]为单位)和行为代码(wheel_VR_behavior.ino, trackLength,以毫米 [mm])来考虑其他配置。但是,行为位置会在每 VR 圈上重置,以保持系统之间的对应关系。
4. 鼠标训练与空间学习行为
注意:将小鼠植入以进行头部固定,习惯于头部约束,然后训练在轮子上奔跑并持续舔舐以获得液体奖励("随机觅食")。然后使用VR环境训练实现一致跑步和舔舐的小鼠进行空间隐藏奖励任务的训练,其中根据虚拟线性轨道上的视觉提示呈现单个奖励区域。然后,空间学习被测量为奖励区之前位置的舔舐选择性增加。
- 头部植入后手术:该手术在本期刊的其他地方和其他期刊中有详细描述,因此请参阅本文献以获取具体说明7,17,18,19,20,21。
- 水时间表
- 在首次处理前 24 小时进行限水(见下文),并在每次习惯或头部约束行为后允许随意饮水。在习惯期间,在三天内逐渐减少水的可用性时间至约5分钟,并调整个体小鼠的量,使其体重不低于其限制前体重的80%。每天监测每只动物的体重,并观察每只小鼠的状况是否有脱水迹象22。无法维持其限制前体重的80%或看起来脱水的小鼠应从研究中移除,并给予免费水供应。
注意:为了激励小鼠使用液体奖励在轮子上奔跑,以及使用空间舔作为沿轨道学习位置的指示,水限制是必要的。机构指南可能因该程序的具体说明而异,因此用户必须咨询其各自的机构动物护理委员会,以确保在限水期间的动物健康和福利。
- 处理:每天处理植入的小鼠,使它们习惯于与人类接触,然后可以 随意 施用有限的水作为增强剂(1-5分钟/天,2天至1周)。
- 习惯使用头枕
- 通过将小鼠放在头枕装置中,使小鼠习惯于头部约束装置,同时偶尔滴水以减轻头部固定的压力,从而增加对头部约束的时间。
- 从5分钟的头部固定开始,每天以5分钟的增量增加持续时间,直到小鼠能够耐受固定长达30分钟。如果小鼠看起来挣扎或移动很少,请将它们从固定装置中取出。然而,小鼠通常在几个疗程内开始自发地在轮子上奔跑,这意味着它们已经为下一阶段的训练做好了准备。
注意:在头部约束下反复挣扎或不跑步和舔舐奖励的小鼠应回归到训练的早期阶段,如果它们在三个这样的补救周期内未能取得进展,则应将其从研究中移除(见 表1)。
- 奔跑/舔舐训练(随机觅食)
注意:要在VR环境中执行空间学习任务,小鼠必须首先学会在轮子上奔跑并持续舔舐以获得偶尔的奖励。操作行为参数的进展通过行为 ESP32 微控制器 进行 控制。- 随机觅食与非操作奖励
- 使用任意可视元素的路径运行图形软件GUI程序(用户选择,请参阅步骤3.3)。
- 将行为程序上传到具有多个非操作奖励(代码变量:isOperant=0、numRew=4、isRandRew=1)的行为 ESP32,以调节鼠标奔跑和舔舐。在 20-30 分钟的会话中运行小鼠,直到小鼠每次会话至少运行 20 圈,并舔舐随机位置(一到四个会话)呈现的奖励。
- 随机觅食,交替圈有操作奖励
- 上传 altOpt=1的行为程序(交替的操作/非操作圈),并训练小鼠,直到它们舔非操作性和操作性奖励区域(一到四个会话)。
- 完全操作的随机觅食
- 上传具有四个操作随机奖励区域的行为程序(行为 ESP32 代码变量:isOperant=1、numRew=4、isRandRew=1)。 在此训练步骤结束时,小鼠应始终如一地运行并在整个轨道长度(一到四个会话;图 4A)。
- 空间学习
注意:通过选择一条 2 m 长的走廊,沿轨道带有深色面板,中间有一个高对比度的视觉刺激面板作为视觉提示(0.9-1.1 m 位置),类似于最近的空间嗅觉线索实验,对单个隐藏奖励区域进行空间学习实验20.在虚拟线性轨道环境中,小鼠需要在距离视觉提示一定距离的奖励区(1.5-1.8 m位置)舔。- 运行图形软件程序,路径为黑暗的走廊,中间有一个视觉提示(例如,棋盘,参见步骤3.3, 图3A)。
- 将具有单个隐藏奖励区域的行为程序上传到行为 ESP32(行为 ESP32 代码变量:isOperant=1、isRandRew=0、numRew=1、rewPosArr[]= {1500})。
- 轻轻地将鼠标放在头部固定装置中,将舔嘴调整到鼠标嘴正前方的位置,然后将鼠标滚轮定位到投影屏幕区域的中心。确保鼠标头在最终调整后距离屏幕~12-15厘米。
- 在处理草图中设置动物的名称,然后在 处理 IDE 中按 run 开始获取和绘制行为数据(请参阅步骤 3.4)。
- 使用单个隐藏奖励区域和单个视觉提示 VR 走廊运行鼠标 30 分钟会话。
- 离线:从处理草图文件夹下载.txt数据文件并分析空间舔行为(例如,在 Matlab 中使用包含的文件 procVRbehav.m 和 vrLickByLap.m)。
注意:小鼠应首先在整个虚拟轨道上进行测试舔舐("随机觅食"),然后根据VR视觉提示开始仅在奖励位置附近选择性地舔舐(图4)。