【问题标题】:extract each sequencing data as individual file将每个测序数据提取为单独的文件
【发布时间】:2016-08-15 04:42:15
【问题描述】:

有一个ecoli.ffn文件,其中行表示测序基因的名称:

$head ecoli.ffn
>ecoli16:g027092:GCF_000460315:gi|545267691|ref|NZ_KE701669.1|:551259-572036
ATGAGCCTGATTATTGATGTTATTTCGCGT
AAAACATCCGTCAAACAAACGCTGATTAAT
>ecoli16:g000011:55989:gi|218693476|ref|NC_011748.1|:1128430-1131042
GTGTACGCTATGGCGGGTAATTTTGCCGAT
>ecoli16:g000012:55989:gi|218693476|ref|NC_011748.1|:1128430-1131042
GTGTACGCTATGGCGGGTAATTTTGCCGAT
CTGACAGCTGTTCTTACACTGGATTCAACC
CTGACAGCTGTTCTTACACTGGATTCAACC

如上图,基因名称在第1个和第2个冒号之间:

g027092
g000011
g000012

我想用ecoli.ffn生成三个文件:g027092.txtg000011.txtg000012.txt,分别包含每个测序数据。

例如,g027092.txt 将包含原始数据,但没有标题

$cat g027092.txt
ATGAGCCTGATTATTGATGTTATTTCGCGT
AAAACATCCGTCAAACAAACGCTGATTAAT

如何制作?

【问题讨论】:

    标签: python linux bash awk sed


    【解决方案1】:

    awk 来救援!

    $ awk -F: -v RS=">" 'NR==FNR{n=split($0,t,"\n");
                                 for(i=1;i<n;i++) a[t[i]];
                                 next}
                         $2 in a{file=$2".txt"; 
                                 sub(/[^\n]+\n/,""); 
                                 print > file}' index file
    
    
    $ head g*.txt
    ==> g000011.txt <==
    GTGTACGCTATGGCGGGTAATTTTGCCGAT
    
    
    ==> g000012.txt <==
    GTGTACGCTATGGCGGGTAATTTTGCCGAT
    CTGACAGCTGTTCTTACACTGGATTCAACC
    CTGACAGCTGTTCTTACACTGGATTCAACC
    
    
    ==> g027092.txt <==
    ATGAGCCTGATTATTGATGTTATTTCGCGT
    AAAACATCCGTCAAACAAACGCTGATTAAT
    

    说明

    NR==FNR{n=sp... 块解析第一个文件并创建查找 表

    $2 in a{file=$2".txt"; 如果当前记录在查找表中, 使用密钥和txt扩展名设置文件名

    sub(/[^\n]+\n/,"") 删除标题行

    print &gt; file 并打印到指定的 文件名。

    【讨论】:

    • 嗨@karakfa,你能解释一下吗?
    • 完成了。 awk 和正则表达式一样强大。
    猜你喜欢
    • 1970-01-01
    • 2019-11-18
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多