【问题标题】:fasta file header lines into columnfasta 文件标题行到列中
【发布时间】:2016-04-04 14:36:21
【问题描述】:

我有一个 fasta 文件,其中包含序列头及其对应的序列:

>ID101_hg19
ATGGGTGTATCGTACCC
>ID102_hg19
AGCTTTAGCGGGGTACA

我想将标题行更改为序列旁边的另一个制表符分隔列。这是所需的输出:

>ID101_hg19    ATGGGTGTATCGTACCC
>ID102_hg19    AGCTTTAGCGGGGTACA

关于如何完成这项任务的任何想法?

【问题讨论】:

    标签: python unix awk sed


    【解决方案1】:

    使用 Sed,您可以这样做:

    sed 'N;s/\n/\t/' file.txt
    

    使用 awk,您可以执行以下操作:

    awk '{getline a; printf("%s\t%s", $0, a);}' file.txt
    

    【讨论】:

    • 完美。非常感激。 awk 命令完美运行。
    • 在查看输出后,我注意到下一个序列的 ID 被添加到上一个条目的序列末尾。知道如何解决这个问题吗?
    • 另外,在 sed 方法中,打印一个 't' 而不是制表符
    【解决方案2】:

    对 SMA 的回答稍作修正...

    awk '{getline a; printf("%s\t%s\n", $0, a);}' file.txt

    添加换行符

    【讨论】:

      【解决方案3】:

      通常,FASTA 文件中的每个标题行后面可以跟多行数据,因此可能需要处理这种情况。如果目标是将所有连续的数据线串在一起,那么以下内容就可以完成:

      awk '/^>/ {if (prev) {print prev;}; prev=$0 "\t"; next}
           {prev=prev $0;} 
           END {print prev}'
      

      另一方面,如果标头仅附加到一行数据,那么假设 $'...' 语法可用,则要使用的 sed 命令为:

      sed $'/^>/ {N;s/\\n/\t/;}'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多