编程基础:R、Python、Bash 学习路径
编程基础:R、Python、Bash 学习路径
做组学数据分析,编程不是目标,而是工具。你不需要一开始就成为程序员,但必须能读懂脚本、修改参数、运行流程、定位报错,并把结果整理成可重复的分析记录。
本章给出 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
- 后台任务和日志检查
- 远程服务器操作
- 调用脚本和管道命令
最低要求:
- 会
cd、ls、cp、mv、mkdir、rm - 会
head、tail、less、wc - 会
grep、awk、sed的基本用法 - 会写简单
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 做解释器、排错助手、草稿生成器,可以显著提升学习效率。具体用法、提示词模板和安全边界详见 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 服务。
报错时应该怎么处理?
推荐顺序:
- 复制完整报错,不只看最后一行
- 确认对象是否存在、路径是否正确、包是否加载
- 用小数据集复现问题
- 搜索错误信息
- 让 AI 根据代码、报错和环境信息给排查步骤
- 修复后记录原因
学到什么程度可以开始跑单细胞教程?
能做到下面几件事就可以开始:
- 会运行 R 脚本
- 会安装和加载 R 包
- 会修改文件路径
- 会查看对象的基本信息
- 会保存图和表
- 会根据报错做基础排查
下一步
完成本章后,建议继续学习:
编程能力不是背语法背出来的,而是在真实任务中练出来的。最好的开始方式是选一个小数据表,完成读取、筛选、绘图和保存结果这四件事。