python - 如何在 fasta 文件的每个标题中附加文件名?
问题描述
亲爱的,我有成千上万的fasta文件。当您打开每个文件时,您会看到如下所示的标题:
>LOC_1_22 # 16427 # 16873 # 1 # ID=1_22;partial=00;start_type=ATG;rbs_motif=GGAG/GAGG;rbs_spacer=5-10bp;gc_cont=0.635
ATGTTCTTTTATTGCCCGAAGACTGGCGGCTTTTACTCTCCAGAGGTACATGGTGAACAAATGCCAGCGG
>LOC_1_23 # 16964 # 18139 # 1 # ID=1_23;partial=00;start_type=ATG;rbs_motif=GGA/GAG/AGG;rbs_spacer=5-10bp;gc_cont=0.651
ATGGCCGCTGACCAATATCATCACGGTGTCCGGGTCCAAGAGATCAATGACGGGACCCGCCCCATTCGCA
我想将文件名附加到每个文件的标题。
想象一下,我的文件名是NC_003245
然后我希望这个文件的标题在我打开文件时看起来像这样
>NC_003245 LOC_1_22 # 16427 # 16873 # 1 # ID=1_22;partial=00;start_type=ATG;rbs_motif=GGAG/GAGG;rbs_spacer=5-10bp;gc_cont=0.635
ATGTTCTTTTATTGCCCGAAGACTGGCGGCTTTTACTCTCCAGAGGTACATGGTGAACAAATGCCAGCGG
>NC_003245 LOC_1_23 # 16964 # 18139 # 1 # ID=1_23;partial=00;start_type=ATG;rbs_motif=GGA/GAG/AGG;rbs_spacer=5-10bp;gc_cont=0.651
ATGGCCGCTGACCAATATCATCACGGTGTCCGGGTCCAAGAGATCAATGACGGGACCCGCCCCATTCGCA
我对 bash/awk 语言的了解有限,非常感谢任何帮助或建议
解决方案
一个awk
想法:
awk 'sub(/^>/,"") { $0=">" FILENAME " " $0} 1' NC_003245
在哪里:
sub(/^>/,"")
^>
- 如果行 ( )中的第一个字符发生替换,则该sub()
调用被视为“真”,因此...$0=">" FILENAME " " $0
- 将行重新定义为>
+FILENAME
+<space>
+$0
(行的其余部分);FILENAME
是一个awk
内置变量,包含正在处理的当前输入文件的名称- 注意: - 根据 Ed Morton 的评论更新
这会产生:
>NC_003245 LOC_1_22 # 16427 # 16873 # 1 # ID=1_22;partial=00;start_type=ATG;rbs_motif=GGAG/GAGG;rbs_spacer=5-10bp;gc_cont=0.635
ATGTTCTTTTATTGCCCGAAGACTGGCGGCTTTTACTCTCCAGAGGTACATGGTGAACAAATGCCAGCGG
>NC_003245 LOC_1_23 # 16964 # 18139 # 1 # ID=1_23;partial=00;start_type=ATG;rbs_motif=GGA/GAG/AGG;rbs_spacer=5-10bp;gc_cont=0.651
ATGGCCGCTGACCAATATCATCACGGTGTCCGGGTCCAAGAGATCAATGACGGGACCCGCCCCATTCGCA
要更新源文件,并假设使用GNU awk
,请添加-i inplace
:
awk -i inplace 'sub(/^>/,"") { $0=">" FILENAME " " $0} 1' NC_003245
推荐阅读
- python - 尝试通过 pip 安装 mysql-connector 时出现 Python 错误
- laravel - 验证年龄变量 - Laravel RegisterController
- java - java - 如何定义一个接收两个类型为T的参数的方法,以及在java中扩展T的S?
- reporting-services - Report Builder 3.0 中的 LENGTH 等效项
- linux - perf.data 到文本或 csv
- sql - Postgres 自连接递归 CTE 祖先链
- php - 正确的类加载 PHP
- javascript - 查询 Firebase 数据库以获取过滤列表
- r - 防止用户在 R 语言中调用 shell 命令
- javascript - 如何在javascript中从chiptagBody中删除数据