如何编辑FASTA序列标题?含亚种/变种名称的处理咨询
处理FASTA序列标题的解决方案
针对你需要的FASTA标题格式转换需求,这里提供两种实用的处理方式:
方式一:使用sed命令(适用于Linux/macOS命令行)
利用正则表达式精准匹配并替换,能完美处理包含subsp./var.的物种名称:
sed -E 's/^>(NR)_([0-9]+\.[0-9]+) ([A-Za-z]+ [A-Za-z]+( subsp\. [A-Za-z]+| var\. [A-Za-z]+)?).*/>\1\2_\3/; s/ /_/g' input.fasta > output.fasta
命令说明:
- 第一部分正则匹配标题行:捕获
NR_中的NR、版本号,以及包含亚种/变种的完整物种名称 - 第二部分把物种名称里的空格全部替换成下划线,自动将
subsp.变成_subsp._的格式 - 非标题行(序列部分)会保持原样
方式二:使用Python脚本(跨平台通用)
如果需要更灵活的调整,可编写简单的Python脚本:
import re def format_fasta_title(line): if line.startswith(">"): # 匹配标题结构,提取NR编号、版本号和物种名 match = re.match(r">NR_(\d+\.\d+) ([A-Za-z]+ [A-Za-z]+( subsp\. [A-Za-z]+| var\. [A-Za-z]+)?)", line) if match: nr_id = f"NR{match.group(1)}" species = match.group(2).replace(" ", "_") return f">{nr_id}_{species}\n" return line # 处理文件 with open("input.fasta", "r") as infile, open("output.fasta", "w") as outfile: for line in infile: outfile.write(format_fasta_title(line))
脚本说明:
- 只处理以
>开头的标题行,序列行直接保留 - 正则专门匹配包含
subsp.或var.的物种名称,确保完整提取分类学信息 - 替换空格为下划线,生成符合要求的标题格式
效果验证
用你提供的示例输入测试,两种方式都会输出:
>NR130660.1_Hanseniaspora_uvarum AAGGATCATTAGATTGAATTATCATTGTTGCTCGAGTTCTTGTTTAGATCTTTTACAATAATGTGTATCT >NR131850.1_Cortinarius_timiskamingensis GGAAGTAAAAGTCGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTATTGAAATAAACCTGAT >NR171752.1_Melanconis_marginalis_subsp._europaea AACGACCACCCAGGGCCGGAAACTTCTCCAAACTCGATCATTTAGAGGAAGTAAAAGTCGTAACAAGGTC
内容的提问来源于stack exchange,提问作者hellofasta
相关产品推荐
相关产品推荐

