3、输入文件准备:FASTA格式、序列ID规范、多序列文件
3.1 先聊聊FASTA格式的基本盘
做过生物信息的朋友,对FASTA格式都不陌生。说白了,它就是一种纯文本的序列存储方式。我刚开始做大规模注释时,觉得这份简单得很,但后来吃了不少亏才明白——越是简单的格式,越容易在细节上翻车。
一个标准的FASTA文件,两行一个记录:
- 第一行以 > 开头,后面跟着序列描述信息
- 第二行开始写序列数据(核苷酸或氨基酸)
- 一条序列可以跨多行,但每行建议不超过80个字符
举个正确的例子:
>sp|P01130|LDLR_HUMAN Low-density lipoprotein receptor
MLGPCPLLCLLPLLLALLALALALAPAVQGDRCERNEFQCQDGKCISYKWVCDGSAECQDGSDESQE
TCLSVTCKSGDFSCGGRVANRGIQIGIRGPSGQCAKPCKLPEVATSCQ
嗯,这里要注意一个常见坑:序列行不能有空行。我记得有次帮同事排查,他跑了五小时的InterProScan全崩了,最后发现就是序列间插了个空行,程序直接报解析错误。
- 描述行空行:>后直接回车,这在多数工具里会报错
- 等号连接信息:>sp|P01130 (正常应为竖线分隔|)
- 序列中包含空格或数字:>AS MVLST... 这类写法请避免
- 文件编码不是UTF-8,导致特殊字符乱码
3.2 序列ID规范——这个真的容易被忽略
现在说说序列ID。InterProScan在处理批次注释时,会拿这个ID作为输出结果的唯一标识。如果ID不达标,后面所有解析都是白费功夫。
我个人习惯把序列ID限制在以下几类字符:
- 字母数字:a-z, A-Z, 0-9
- 下划线:_ 用于区分不同字段
- 分隔符:| 在UniProt格式中常用
- 点号:. 用于表示版本号(如gene_123.1)
绝对不能用的字符:空格、制表符、中文标点、特殊符号如@#$%^&*()。为什么会这样?因为InterProScan底层会用这些ID做文件名,Windows/Linux文件系统对这些字符敏感得很。
| ID类型 | 正确示例 | 错误示例 | 说明 |
|---|---|---|---|
| UniProt | sp|P01130|LDLR | sp P01130 LDLR | 必须使用竖线分隔 |
| 自定义 | Os01g0100100 | Os 01g 0100 100 | 不能有空格 |
| 长描述序列 | AF123456.1 | AF123456(1) | 括号会引发解析异常 |
| 多基因名 | Eukaryota_BRCA1 | Eukaryota-BRCA-1 | 连字符可能导致排序问题 |
grep "^>" your.fasta | head -5 查看前几条ID。所有非ASCII字符全部删掉最保险。
3.3 多序列文件的组织方式
讲完了单条序列,咱们来谈谈多序列文件。很多人拿到的FASTA文件是直接从某些数据库导出的,格式五花八门。我曾经接手过一个项目,十六万条序列塞在一个文件里,打开一看——有50%都是重复的或ID冲突的。
多序列文件的几个硬性要求:
- ID必须唯一:不能出现两条序列以同一个>开头
- 序列完整:不能截断,不能混入非标准氨基酸字符
- 顺序无关:InterProScan不依赖输入顺序,但建议按相似度或基因组顺序排列
- 文件大小:单个FASTA文件不要超过2GB,超过后建议分拆
举个例子,我常用的检查脚本会先提取文件中的所有ID,看看有没有重复:
grep "^>" your_sequences.fasta | sort | uniq -d
如果这个命令输出不为空,恭喜你,有麻烦了。重复的ID会导致InterProScan在最终输出中覆盖数据,结果会少掉一半。
3.4 避开那些我曾走过的弯路
我总结的几条避坑经验,现在分享给你:
- 序列行不能有数字或空格——很多NCBI导出的FASTA里序列行末尾会有行号,必须去掉
- 不要用中文或全角字符做ID——哪怕你用的是Mac或Linux,跨平台交换时必出编码错乱
- ID长度不要超过50个字符——太长的话,输出文件中的制表符对齐会乱掉
- 多序列之间保留1行空行?——不行,任何工具都不允许,只能用一个>号来分隔
一条完整的标准多序列FASTA示例:
>seq1_HUMAN
MKFLILFNILVSTLAFLSSSCFQEEIQELKAKYATRLVDENKII
>seq2_MOUSE
MKSRLILFNILVSTLAFLSSSCFQEEIQELRAKYAARLVDENKII
>seq3_RAT
MKSTLILFNILVSTLAFLSSSCFQEEIQELKAKYAARLVDENKIV
你看,这样干净清爽。第三行的ID我用了常见的物种缩写,中间用下划线连接。这种命名方式在后续查找注释结果时会非常方便。
3.5 核心逻辑图:序列文件准备流程
下面这张图总结了我处理FASTA文件时的标准流程,帮你快速理清思路:
看懂这张图了吗?就是三步走:先过ID关,再去重,最后检查序列质量。按这个流程执行,你的FASTA文件基本不会出大问题。我这些年看过的序列文件有个惊人的相似点——80%的报错都是ID不规范引起的。别小看这个步骤,它能省你几小时调错时间。
一句话记忆法:FASTA文件三要素——ID干净、不重复、序列纯字符。做到了这三点,批处理就能跑得顺顺当当。