零基础玩转Python生物信息学:数据分析与算法实现
-
为什么要在生物信息学中使用 Python?
-
环境搭建:快速上手 Python 编程
-
Python 发行版选择:系统自带 vs. Anaconda vs. Miniconda
-
创建虚拟环境与包管理(conda、pip)
-
推荐的编辑器 / IDE:VS Code、PyCharm、Jupyter Notebook
-
基础篇:Python 语法与常用操作回顾
-
变量与数据类型
-
条件语句、循环、函数
-
列表、字典、集合等常见数据结构
-
文件读写:读写 FASTA/FASTQ 等文本格式
-
进阶篇:常用生物信息学 Python 库介绍
-
Biopython:序列操作、格式转换、在线数据库访问
-
pandas 与 NumPy:高效处理表格元数据与数值计算
-
matplotlib/plotly:生物信息可视化基础
-
其他常见第三方库——scikit-bio、pysam、pyfaidx、bx-python
1. 为什么要在生物信息学中使用 Python?
-
易上手、语法简洁
-
对初学者友好,学习曲线平缓。
-
与 C/C++、Perl 等语言相比,Python 代码可读性更强,开发周期更短。
-
-
生态丰富、社区活跃
-
拥有 Biopython、scikit-bio、pandas、NumPy 等成熟开源库。
-
大量生信工具(如 MMseqs2、pyfaidx、pysam、pybedtools 等)都提供了 Python API 或解析模块。
-
-
便于快速原型和脚本自动化
-
在科研中经常需要做“临时脚本”或“批量处理流程”,Python 可以快速编写、快速迭代。
-
生物信息大数据场景下,通过 Python 调用命令行工具并处理结果非常方便。
-
-
适合与 Web / 前端可视化结合
-
借助 Flask、Django、Streamlit、Dash 可以轻松开发可视化生信小工具或在线平台。
-
小贴士:如果你对 Python 非常陌生,可以先按本文节 3 的内容做一个“Python 零基础语法快速回顾”。若已经会 Python,可跳过基础语法,直接进入实战部分。
2. 环境搭建:快速上手 Python 编程
2.1 Python 发行版选择
-
系统自带 Python
-
大多数 Linux/Mac 系统预装 Python 2.x 或 3.x,但版本可能偏旧。
-
不建议直接修改系统自带版本,因为系统工具可能依赖特定版本。
-
-
Anaconda / Miniconda
-
推荐:多平台(Windows/Linux/Mac),内置包管理(conda)、丰富自带库,适合做生信分析。
-
区别:
-
Anaconda 含有大量预装科学计算、数据分析库(半天几十 G)。
-
Miniconda 只有最小环境,需要时按需安装包,更轻量。
-
-
下载地址:
-
Anaconda (https://www.anaconda.com/products/distribution)
-
Miniconda (https://docs.conda.io/en/latest/miniconda.html)
-
-
-
pyenv + venv
-
若你偏好自己手动编译多个 Python 版本,可使用
pyenv
管理版本,然后用venv
创建虚拟环境。但对生信初学者而言,conda 更为便捷。
-
2.2 创建虚拟环境与包管理
以 Miniconda + conda 为例(假设已安装 Miniconda):
-
更新 conda(推荐定期执行)
conda update -n base -c defaults conda
-
创建独立环境
conda create -n bioinfo_py3 python=3.9
-
-n bioinfo_py3
:给环境起名为bioinfo_py3
-
python=3.9
:指定 Python 版本(可选 3.8/3.10 等)
-
-
激活环境
conda activate bioinfo_py3
-
激活后命令行会显示
(bioinfo_py3)
前缀,所有操作都在该环境中进行。
-
-
安装常用包
# Biopython:核心生信基础库 conda install -c conda-forge biopython# pandas、numpy:数据分析与数值计算 conda install pandas numpy# matplotlib:基础绘图 conda install matplotlib# 如果需要 SciPy、scikit-learn 等也可一并安装 conda install scipy scikit-learn
-
可以用
conda list
查看当前环境已安装的软件包。 -
若已有
requirements.txt
,可执行pip install -r requirements.txt
或conda install --file requirements.txt
一次性安装。
-
Tip:
若要在环境中安装某些用 conda 没有发布的包,如最新版本的
pysam
,可先尝试conda search pysam
,若 conda-forge 没有,再考虑pip install pysam
。混合使用
conda install
和pip install
尽量在创建环境初期完成,避免后续依赖冲突。
2.3 推荐的编辑器 / IDE
-
VS Code
-
轻量、插件丰富(Python 插件、Jupyter 插件、Git、Remote-SSH 等)。
-
支持 Conda 环境自动切换与 Jupyter Notebook。
-
-
PyCharm
-
专业版(付费)或 Community 版(免费),内置调试工具、项目管理、代码补全较强。
-
对大型项目更合适,小脚本可以轻量用 VS Code。
-
-
Jupyter Notebook / JupyterLab
-
交互式环境,适合做“边写边跑、边解释边可视化”的数据分析流程。
-
生信教学与临时测试都很方便。
-
小白练习建议:
若你完全没写过任何代码,先打开 VS Code + Jupyter Notebook 在本地试着创建一个
.ipynb
,运行print("Hello, Bioinformatics!")
,感受一下环境搭建是否正确。在 Linux 服务器 上也可以用
ssh -L 8888:localhost:8888 user@server
将 Jupyter 本地端口转发,这样像在本地一样用浏览器操作远程 Notebook。
3. 基础篇:Python 语法与常用操作回顾
本节简要回顾 Python 中最常见的语法和操作,帮助零基础读者快速了解,方便后续插入生信示例时不需要过多解释。
注意:如果你熟悉 Python 编程,可略过本节,直接进入第 4 章。
3.1 变量与数据类型
1. 整数、浮点数、字符串
# 整数
a = 10
b = -5# 浮点数
pi = 3.14159# 字符串(单引号 / 双引号 均可)
name = "ATGCGT"
desc = 'Gene1_description'print(a, b, pi, name)
2. 布尔类型
flag = True
is_empty = False
3. None(空值)
result = None
4. 注意:Python 是动态类型,无需显式声明类型
x = 5 # x 是整数
x = "hello" # x 变成字符串,没有类型冲突错误
3.2 条件语句、循环、函数
1. 条件语句 if / elif / else
score = 85
if score >= 90:print("优秀")
elif score >= 75:print("良好")
else:print("需要努力")
2. for 循环
# 遍历列表
seq_list = ["ATG", "CGT", "TTA"]
for seq in seq_list:print(seq)# 遍历数字区间
for i in range(5): # 0,1,2,3,4print(i)
3. while 循环
count = 0
while count < 3:print("count =", count)count += 1
4. 定义函数
def gc_content(seq):"""计算单条 DNA 序列的 GC 含量(返回比例)。"""seq = seq.upper()gc = seq.count('G') + seq.count('C')return gc / len(seq) if len(seq) > 0 else 0print(gc_content("ATGCGC")) # 0.6666...
5.列表推导式(List Comprehension)
seqs = ["ATG", "CGT", "TTA"]
lengths = [len(s) for s in seqs] # [3, 3, 3]
3.3 列表、字典、集合等常见数据结构
1. 列表(list)
fruits = ["apple", "banana", "cherry"]
fruits.append("date")
fruits.remove("banana")
print(fruits[0], fruits[-1]) # apple date
2. 元组(tuple)
coords = (10.0, 20.0) # 不可修改,常用来做函数参数
x, y = coords
3. 字典(dict)
gene_gc = {"gene1": 0.56, "gene2": 0.49}
gene_gc["gene3"] = 0.63
for key, value in gene_gc.items():print(key, value)
4. 集合(set)
samples = {"S1", "S2", "S3"}
samples.add("S4")
if "S2" in samples:print("样本 S2 存在")
3.4 文件读写:读写 FASTA / FASTQ 等文本格式
1. 读取文本文件(逐行遍历)
# 假设有一个简单的文本文件:sequences.txt
with open("sequences.txt", "r") as fh:for line in fh:line = line.strip() # 去除首尾空白(包含换行符)print(line)
2. 写文件
with open("output.txt", "w") as fh:fh.write("Hello, Bioinformatics\n")
3. 以 CSV / TSV 方式写入表格
import csvdata = [("gene1", 0.54), ("gene2", 0.67)]
with open("gc_content.tsv", "w", newline='') as fh:writer = csv.writer(fh, delimiter='\t')writer.writerow(["gene", "gc_content"])for gene, gc in data:writer.writerow([gene, gc])
4. 注意区分二进制模式与文本模式
-
默认
'r'
/'w'
是文本模式(自动进行换行转换)。 -
若必须按二进制方式处理文件(如 gzip 压缩、SAM/BAM 等),需使用
gzip.open
、pysam
等接口。
小结:本文为生物信息学 Python 专栏的第一篇,希望你能通过本文尽快掌握从环境搭建、Python 基础。接下来,我将陆续推送更高级的专题,如转录组分析、变异检测、蛋白质结构解析、深度学习在生信的应用等等,敬请关注!
推荐资源
1. 相关书籍:
“Bioinformatics Programming Using Python: Practical Programming for Biological Data”(电工书坊翻译版可在淘宝查找)
“Python for Biologists”(作者 Martin Jones,入门极佳)
“Automating Boring Stuff with Python”(主要讲 Python 脚本自动化,对生信流程管理也很适用)
2. 相关书籍:
Coursera / edX 上的“Bioinformatics Specialization” 或“Python for Genomic Data Science”
Biostars、Stack Overflow、GitHub 等社区,搜索已有生信 Python 项目学习实践。