gpt4 book ai didi

python - 将多个 fasta 文件拆分为具有相同编号的文件

转载 作者:行者123 更新时间:2023-12-04 12:19:09 26 4
gpt4 key购买 nike

我有一个包含数千个登录号的文件:
看起来像这样..

>NC_033829.1 Kallithea virus isolate DrosEU46_Kharkiv_2014, complete genome
AGTCAGCAACGTCGATGTGGCGTACAATTTCTTGATTACATTTTTGTTCCTAACAAAATGTTGATATACT

>NC_020414.2 Escherichia phage UAB_Phi78, complete genome
TAGGCGTGTGTCAGGTCTCTCGGCCTCGGCCTCGCCGGGATGTCCCCATAGGGTGCCTGTGGGCGCTAGG

如果想将其拆分为多个文件,每个文件都有一个登录号,那么我可以使用以下代码
awk -F '|' '/^>/ {F=sprintf("%s.fasta",$2); print > F;next;} {print >> F;}' < yourfile.fa
我有一个包含数千个登录号(又名 >NC_*)的文件,并希望将其拆分,例如每个文件包含约 5000 个登录号。因为我是 awk/bash/python 的新手,所以我很难找到一个巧妙的解决方案
任何想法或评论表示赞赏

最佳答案

假设:部分由空行分隔。
算法:

  • 按部分拆分文件
  • 部分提取登录号
  • 输出部分到以登录号命名的文件名。

  • awk 术语:“记录”将是我们的部分 - 由空行分隔的文件的一部分(即一个接一个的两个换行符。“字段”通常用空格分隔 - 通过空格或 > 字符分隔第二个字段将是登录号。
    只需将记录分隔符设置为两个换行符并将字段分隔符设置为 >或空格,然后将该行输出到以第二个字段命名的文件名:
    awk -v RS='' -v FS='[> ]' '{f=($2 ".txt"); print >> f; close(f)}'
    @edit 已更改 >>>RS='\n\n'RS=''@edit 并添加关闭

    关于python - 将多个 fasta 文件拆分为具有相同编号的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68521944/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com