跳到主要内容

编程基础:R、Python、Bash 与 AI 辅助学习路径

做组学数据分析,编程不是目标,而是工具。你不需要一开始就成为程序员,但必须能读懂脚本、修改参数、运行流程、定位报错,并把结果整理成可重复的分析记录。

本章给出 BioF3 推荐的最小学习路径:先建立 R / Python / Bash 的基础能力,再用 AI 工具提高学习和开发效率。

为什么必须学编程

组学数据通常有三个特点:

  • 数据量大:表达矩阵、FASTQ、BAM、H5AD、RDS 文件都不适合手工处理
  • 步骤多:质控、标准化、降维、聚类、差异分析、富集分析都需要参数记录
  • 结果要可重复:论文、报告和协作都要求别人能复现你的流程

如果只靠点鼠标,很难回答下面这些问题:

  • 这次分析用了哪些过滤阈值?
  • 归一化和聚类参数是什么?
  • 哪些图来自哪一步脚本?
  • 换一批样本能否自动重跑?
  • 几个月后还能否复现同样结果?

编程的价值在于把分析过程写下来,让它可以检查、重复、修改和共享。

BioF3 推荐工具栈

R:单细胞分析和统计可视化主力

优先学习 R,因为 BioF3 的许多单细胞实践会用到 R 生态。

常见场景:

  • Seurat 单细胞分析
  • ggplot2 可视化
  • 差异表达分析
  • 统计检验和建模
  • 富集分析
  • R Markdown / Quarto 报告

最低要求:

  • 会读写 CSV、TSV、RDS
  • 会使用 data.frame / tibble
  • 会用 dplyr 做筛选、分组、排序和汇总
  • 会用 ggplot2 画常见图
  • 会安装和加载包
  • 能看懂函数参数和报错信息

Python:数据处理、机器学习和 Scanpy 生态

Python 适合处理大规模数据、机器学习和工程化流程。

常见场景:

  • pandas / numpy 数据处理
  • Scanpy / AnnData 单细胞分析
  • scikit-learn 机器学习
  • PyTorch / 深度学习
  • 自动化脚本和 API 调用
  • 文件批处理

最低要求:

  • 会创建虚拟环境
  • 会读写 CSV、TSV、JSON、H5AD
  • 会使用 pandas 做表格处理
  • 会使用 matplotlib / seaborn 画图
  • 会写简单函数
  • 能根据 traceback 定位错误

Bash:服务器和生信流程的入口

很多生信工具首先是命令行工具。不会 Bash,就很难稳定使用服务器和高通量流程。

常见场景:

  • 查看和移动文件
  • 解压和统计文件
  • 批量运行 FastQC、Cell Ranger、STAR、samtools
  • 后台任务和日志检查
  • 远程服务器操作
  • 调用脚本和管道命令

最低要求:

  • cdlscpmvmkdirrm
  • headtaillesswc
  • grepawksed 的基本用法
  • 会写简单 for 循环
  • 会重定向输出和查看日志
  • 会用 ssh 登录服务器

AI:助教、解释器和开发助手

AI 工具可以帮助你更快进入状态,但不要把它当成分析负责人。

适合让 AI 做:

  • 解释陌生代码
  • 把报错翻译成排查步骤
  • 生成脚本草稿
  • 改写重复代码
  • 生成 README 或方法说明
  • 检查路径、变量名、代码风格

不适合完全交给 AI 的事情:

  • 决定实验分组
  • 决定统计检验是否合理
  • 判断 marker gene 是否可信
  • 解释疾病机制
  • 处理未脱敏的人类样本数据
  • 编造软件版本和文献依据

更完整的工具介绍见:AI 辅助编程与智能体工具

学习顺序

第 1 步:先学会运行和修改现有代码

新手最容易陷入“先系统学完整门语言”的误区。对组学分析来说,更有效的方式是先跑通已有脚本。

目标:

  • 能打开 RStudio、Jupyter 或终端
  • 能运行一段教程代码
  • 能修改输入文件路径
  • 能修改过滤阈值
  • 能保存结果图和结果表

练习:

运行一个教程脚本,把输入文件路径改成自己的目录,把输出目录改成 results/。

第 2 步:R 入门到可用

先掌握下面这些能力。

# 变量和向量
genes <- c("TP53", "BRCA1", "EGFR")
expr <- c(5.2, 3.8, 7.1)

# 数据框
gene_data <- data.frame(
gene = genes,
expression = expr
)

# 查看数据
head(gene_data)
str(gene_data)
summary(gene_data)

# 筛选
high_expr <- gene_data[gene_data$expression > 5, ]

再学习 dplyr 风格的数据处理。

library(dplyr)

gene_data <- gene_data %>%
mutate(log_expression = log2(expression + 1)) %>%
arrange(desc(expression))

最后学习 ggplot2。

library(ggplot2)

ggplot(gene_data, aes(x = gene, y = expression)) +
geom_col(fill = "#3B82F6") +
labs(x = "Gene", y = "Expression") +
theme_classic()

R 阶段的 BioF3 目标不是语法完美,而是能读懂 Seurat 教程里的对象、函数和参数。

第 3 步:Python 入门到可用

Python 先从 pandas 开始。

import pandas as pd
import numpy as np

data = pd.DataFrame({
"gene": ["TP53", "BRCA1", "EGFR"],
"expression": [5.2, 3.8, 7.1],
})

data["log_expression"] = np.log2(data["expression"] + 1)
high_expr = data[data["expression"] > 5]
summary = data["expression"].mean()

print(high_expr)
print(summary)

画图先掌握 matplotlib 和 seaborn。

import seaborn as sns
import matplotlib.pyplot as plt

sns.barplot(data=data, x="gene", y="expression", color="#3B82F6")
plt.xlabel("Gene")
plt.ylabel("Expression")
plt.tight_layout()
plt.show()

Python 阶段的 BioF3 目标是能处理表格数据、理解 Scanpy / AnnData 的基本对象,并能写小型自动化脚本。

第 4 步:Bash 入门到可用

先掌握文件和目录。

pwd
ls -lh
mkdir -p results/qc
cp data/sample.csv results/

再掌握查看文件。

head expression.tsv
tail -n 20 run.log
wc -l expression.tsv
less run.log

然后学习批量处理。

mkdir -p qc_results

for file in data/*.fastq.gz; do
echo "Processing $file"
fastqc "$file" -o qc_results/
done

最后学习远程服务器。

ssh aliyun
scp results/report.html aliyun:/opt/project/results/

Bash 阶段的 BioF3 目标是能在服务器上找到文件、运行工具、检查日志和批量处理样本。

AI 辅助学习方式

解释代码

把 AI 当助教,让它逐行解释。

请逐行解释这段 Seurat 代码。要求说明每个函数的输入、输出和关键参数,不要改写代码。

排查错误

给 AI 完整上下文,而不是只贴最后一行报错。

下面是我的代码、完整报错和 sessionInfo。请先判断最可能的 3 个原因,并给排查顺序。不要直接重写整段代码。

生成草稿

让 AI 生成第一版,但自己检查列名、统计方法和输出。

请根据这些列名写一段 ggplot2 代码,画不同 cell_type 中 gene_expression 的小提琴图。不要假设其他列存在。

审查流程

让 AI 检查可重复性。

请检查这个分析脚本是否存在硬编码路径、未固定随机种子、未保存中间结果、未记录软件版本的问题。

一个最小可复现项目结构

建议从一开始就把分析项目整理成固定结构。

project/
├── data/
│ ├── raw/
│ └── processed/
├── scripts/
│ ├── 01_qc.R
│ ├── 02_normalize.R
│ └── 03_plot.R
├── results/
│ ├── figures/
│ └── tables/
├── logs/
└── README.md

基本原则:

  • 原始数据放 data/raw/,不要随意覆盖
  • 中间数据放 data/processed/
  • 脚本放 scripts/
  • 图和表分别放 results/figures/results/tables/
  • 运行日志放 logs/
  • README 记录运行顺序、软件版本和关键参数

8 周学习路线

时间目标练习
第 1 周会运行 R / Python / Bash运行教程代码,修改路径和输出目录
第 2 周R 基础数据结构读取表达表,筛选高表达基因
第 3 周ggplot2 可视化画柱状图、散点图、小提琴图
第 4 周Python pandas读取表格,分组统计,导出结果
第 5 周Bash 文件处理批量统计文件行数,检查日志
第 6 周服务器基础ssh 登录,上传下载文件,后台运行任务
第 7 周AI 辅助调试用 AI 解释报错并人工验证
第 8 周小项目整合完成一个从输入到图表输出的可复现分析

常见问题

没有编程基础,先学 R 还是 Python?

如果目标是尽快进入单细胞分析,先学 R。BioF3 的单细胞实践主要依赖 R / Seurat。Python 可以在后续学习 Scanpy、机器学习和自动化时补上。

Bash 一定要学吗?

要学最基础的。你不需要成为 Linux 专家,但要能在服务器上找到文件、运行命令、查看日志。否则很多上游流程会卡住。

可以全靠 AI 写代码吗?

不建议。AI 可以写草稿,但你必须确认输入数据、列名、统计方法、输出结果和生物学解释。尤其是涉及临床数据和未公开项目时,不要把原始数据直接上传给外部 AI 服务。

报错时应该怎么处理?

推荐顺序:

  1. 复制完整报错,不只看最后一行
  2. 确认对象是否存在、路径是否正确、包是否加载
  3. 用小数据集复现问题
  4. 搜索错误信息
  5. 让 AI 根据代码、报错和环境信息给排查步骤
  6. 修复后记录原因

学到什么程度可以开始跑单细胞教程?

能做到下面几件事就可以开始:

  • 会运行 R 脚本
  • 会安装和加载 R 包
  • 会修改文件路径
  • 会查看对象的基本信息
  • 会保存图和表
  • 会根据报错做基础排查

下一步

完成本章后,建议继续学习:

编程能力不是背语法背出来的,而是在真实任务中练出来的。最好的开始方式是选一个小数据表,完成读取、筛选、绘图和保存结果这四件事。