第16章 开发环境与工作流程

学习目标

  • 根据研究需求选择合适的开发工具(MATLAB/R/Python/Jupyter)
  • 掌握基础环境配置思路与常见坑位
  • 建立一套可复现的日常开发工作流

关键概念

  • 工具选型
  • 环境配置
  • 工作目录与项目结构
  • IDE 与 Notebook 协作
  • 复现友好型工作流

正文

工具选型:先看任务,再选语言

什么时候用 MATLAB

适合

  • 神经数据处理(SPM、EEGLAB、FieldTrip、Brainstorm)
  • 一些成熟工具箱支持的机器学习与建模
  • 你的团队已有稳定 MATLAB 工作流

避免

  • 需要跨机器免费复现,但无法提供授权
  • 被试机性能较弱、运行实验脚本卡顿

什么时候用 R

适合

  • 数据清洗与整形
  • 统计分析(t 检验、ANOVA、回归)
  • 高质量科研绘图(ggplot2

避免

  • 数据量极大且计算瓶颈明显(需结合数据库或 Python/并行方案)

什么时候用 Python

适合

  • 通用开发与自动化
  • 实验编程(如 PsychoPy)
  • 神经科学分析生态(如 MNE)
  • 需要和工程/产品流程衔接

避免

  • 团队完全无 Python 基础且短期任务对其无刚需

什么时候用 Jupyter

适合

  • 探索性分析
  • 分步调试和教学展示
  • 在同一文档中混合文本、代码、图表

不适合

  • 需要长期维护的大型项目主逻辑(建议落回 .py/.R 脚本)

环境配置的通用原则

原则1:每个项目独立环境

  • 不建议所有项目共用一个 base 环境。
  • 为每个项目创建独立环境,减少依赖冲突。

原则2:固定镜像源与版本

  • 网络不稳定会导致安装失败或版本漂移。
  • 建议统一镜像源,并记录关键包版本。

示例(R 的 .Rprofile 配置清华源):

options("repos" = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))

原则3:先最小可用,再扩展

  • 先安装核心依赖跑通最小脚本。
  • 再逐步增加复杂包,避免一次装一堆后难定位问题。

MATLAB、R、Python 的最低落地流程

MATLAB 最低流程

  1. 安装稳定版本(建议较新稳定版)。
  2. 配置工具箱路径(如 SPM、EEGLAB)。
  3. 新建 .m 脚本并确认工作目录。
  4. 用分节符 %% 分段运行,配合断点调试。

R 最低流程

  1. 安装 R(建议 4.4+)与 RStudio。
  2. 安装常用包并加载:
install.packages("bruceR")
library(bruceR)
  1. 建立脚本模板:读取 -> 清洗 -> 分析 -> 导出。
  2. 统一变量命名和数据表命名。

Python 最低流程

  1. 安装 Python 并创建项目环境。
  2. 安装核心依赖(如 numpy/pandas/matplotlib)。
  3. 用一个最小脚本验证解释器和包可用。
  4. 再引入领域包(如 mnepsychopy)。

Jupyter 与脚本协作建议

推荐“双轨工作流”:

  1. 在 Jupyter 做探索与可视化试验。
  2. 稳定后把核心逻辑迁移到 .py / .R
  3. Notebook 保留为展示与记录,不作为唯一生产脚本。

这样可以兼顾“开发效率”和“工程可维护性”。

VS Code 工作流建议

VS Code 可统一管理多语言开发,建议最小插件组合:

  • Python + Pylance
  • R / R Debugger(如使用 R)
  • Jupyter
  • GitHub Copilot(可选)

关键设置:

  1. 指定正确解释器/语言路径。
  2. 在工作区级别保存设置,避免全局设置污染。
  3. 把常用任务写成可重复命令(运行、测试、导出)。

一套可复现的日常工作流程

  1. 初始化:创建项目目录、独立环境、依赖清单。
  2. 开发:按 01/02/03 脚本顺序组织流程。
  3. 验证:先跑最小样本,再跑全量。
  4. 导出:固定输出目录和文件命名。
  5. 归档:记录版本、参数、关键日志。

建议目录模板:

project/
    data_raw/
    data_clean/
    scripts/
    outputs/
    docs/
    environment.yml (或 requirements.txt)

常见坑与快速修复

问题 根因 快速修复
包安装失败 镜像源慢/依赖冲突 切换镜像,分步安装,检查环境
运行结果不一致 环境版本漂移 锁定版本并导出依赖清单
脚本在同门电脑失败 绝对路径或权限差异 改相对路径,补充 README 启动说明
Notebook 跑得好,脚本跑不动 内核与解释器不一致 明确 Kernel 与项目环境对应关系

小结

  • 语言没有绝对优劣,关键是任务匹配和团队可复现性。
  • 开发环境问题比语法问题更常见,必须建立标准流程。
  • 推荐“Jupyter 探索 + 脚本固化 + 依赖锁定”的组合策略。

练习与思考

  1. 基于你当前研究,说明为何选择 MATLABRPython 作为主工具。
  2. 为你的项目写一个最小目录结构,并标注每个目录的用途。
  3. 新建一个独立环境,安装最小依赖并跑通一个“读取数据 -> 输出统计表”的脚本。