🧪 实验 1:下载一个基因组数据压缩包并解压;统计文件行数与字符数
🎯 实验目标
- 熟悉 macOS 终端常用命令
- 学会下载、解压并查看基因组 FASTA 文件
- 统计行数、字符数、序列数,理解 DNA 序列的基本结构
🧰 实验环境准备(macOS)
✅ 步骤 1:打开终端
你可以在两种方式中任选其一:
- 用 Spotlight 搜索 “Terminal”
- 或使用快捷键:
Command + Space→ 输入terminal→ 回车
终端打开后,你会看到一个提示符,例如:
MacBook-Air:~ username$ |
✅ 步骤 2:创建实验目录
mkdir -p ~/bioinfo_lab/week1 |
这将在你的“用户目录”中创建一个名为 bioinfo_lab/week1 的文件夹,并进入其中。
✅ 步骤 3:安装 wget(如果还没有)
macOS 默认没有 wget,我们使用 Homebrew 安装:
# 如果你还没有 Homebrew,先执行这一行: |
💡 Homebrew 是 macOS 的软件包管理工具,非常实用。
🧩 实验步骤
Step 1:下载大肠杆菌基因组文件
wget https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.fna.gz |
你会看到类似:
Saving to: ‘GCF_000005845.2_ASM584v2_genomic.fna.gz’ |
Step 2:查看文件
ls -lh |
输出示例:
-rw-r--r--@ 1 user staff 4.6M Nov 2 14:20 GCF_000005845.2_ASM584v2_genomic.fna.gz |
Step 3:解压文件
gunzip GCF_000005845.2_ASM584v2_genomic.fna.gz |
现在文件变成:
GCF_000005845.2_ASM584v2_genomic.fna |
Step 4:查看前几行
head -n 10 GCF_000005845.2_ASM584v2_genomic.fna |
输出:
>NC_000913.3 Escherichia coli str. K-12 substr. MG1655, complete genome |
💡 “>” 开头的是序列名称,后面是 DNA 碱基序列(A/T/C/G)。
Step 5:统计行数、字符数
wc -l GCF_000005845.2_ASM584v2_genomic.fna # 行数 |
示例结果:
93118 GCF_000005845.2_ASM584v2_genomic.fna |
👉 表示此基因组长度约 4.6 Mbp(460 万个碱基)。
Step 6:统计序列数量
grep -c "^>" GCF_000005845.2_ASM584v2_genomic.fna |
输出:
1 |
说明文件中仅有一条完整的基因组序列。
🧭 思考题
- 为什么 DNA 文件只包含 A、T、C、G 四种字符?
- 为什么压缩文件体积更小?
- 4.6 Mbp 的序列大约代表了几千个基因?
🧾 实验记录模板
| 项目 | 结果 |
|---|---|
| 文件名 | GCF_000005845.2_ASM584v2_genomic.fna |
| 下载链接 | wget https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.fna.gz |
| 文件大小 | 4.5M |
| 行数 | 58022 |
| 字符数 | 4699745 |
| 序列数 | 1 |
| 实验总结 | 大肠杆菌基因组文件大概4.5M,共58022行,4699745个字符。 |
🔗 推荐拓展练习
| 内容 | 链接 |
|---|---|
| Rosalind:统计 DNA 碱基数量 | https://rosalind.info/problems/dna/ |
| NCBI 基因组浏览器 | https://www.ncbi.nlm.nih.gov/genome/ |
| 免费 Linux 命令速查表 | https://www.freecodecamp.org/news/the-linux-commands-handbook/ |
📒实验记录
命令行记录
booboowei@[25-11-14 5:49PM] [week1]$ wget https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.fna.gz |
回答思考题
Q1: 为什么 DNA 文件只包含 A、T、C、G 四种字符?
因为 DNA 分子本质上就是由 四种核苷酸组成,它们分别用字母代表:
| 字母 | 核苷酸 | 全名 |
|---|---|---|
| A | 腺嘌呤 | Adenine |
| T | 胸腺嘧啶 | Thymine |
| C | 胞嘧啶 | Cytosine |
| G | 鸟嘌呤 | Guanine |
实际测序时,仪器识别的本质是这四种碱基的信号(荧光、离子电流等)。
最终导出的 FASTA、FASTQ 文件只是把生物大分子的化学结构,抽象成一个字符串。
你可以把它理解成“生命的源代码”,而 A、T、C、G 就是 4 个字符的编程语言。
——是的,这语言的语法巨简单,但运行出来的生物体复杂得可怕。
Q2:为什么压缩文件体积更小?
因为 DNA 序列不是随机的,它有大量 重复、模式化 和 偏好性。
比如:
- 人类基因组中有超过 50% 是重复序列(LINE、SINE、转座子等)。
- FASTQ 文件里每一条 reads 的质量分数(30、31、32……)也非常模式化。
- 同一种细菌的基因组会高度相似。
压缩算法(如 gzip、xz、bzip2)会:
- 把重复模式替换成短编码
- 用变长编码存储高频字符
- 消除冗余结构
因此文件越重复、越模式化 → 越好压缩。
DNA 数据恰好是压缩算法的“完美猎物”。
4.6 Mbp 的序列大约代表了几千个基因?
你这数字一看就像大肠杆菌(E. coli)的基因组大小:
E. coli ≈ 4.6 Mbp(4.6 million base pairs)
经验规律:
典型原核生物 → 1000 bp 左右编码一个蛋白质基因
当然这是非常粗略,但够用。
计算一下:
4.6 Mbp ÷ 1000 bp/基因 ≈ 4600 个基因
这和真实情况很接近:
- 大肠杆菌 K-12 有 ~4300–4500 个基因
所以你的直觉没错:
4.6 Mbp 的原核生物基因组通常对应约 4000–5000 个基因。
拓展问题回答
Q1:DNA核苷酸计数问题
a='AGCTTTTCATTCTGACTGCAACGGGCAATAGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC' |
📌 million base pairs = 百万个碱基对
- base pair (bp) = 1 个碱基对
(A–T 或 C–G,一对就是 1 bp) - million base pairs (Mbp) = 1,000,000 bp
就是一百万个碱基对。
所以:
- 1 Mbp = 1,000,000 bp
- 4.6 Mbp = 4,600,000 bp
你可以把它理解成:
基因组序列长度的计量单位,类似于“字节”“千米”,只是测 DNA 的。