python - 将每个测序数据提取为单独的文件

标签 python linux bash awk sed

有一个 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 将包含原始数据但没有 header :

$cat g027092.txt
ATGAGCCTGATTATTGATGTTATTTCGCGT
AAAACATCCGTCAAACAAACGCTGATTAAT

如何制作?

最佳答案

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... block parses the first file and creates a lookup table

$2 in a{file=$2".txt"; if the current record is in the lookup table, set a file name using the key and txt extension

sub(/[^\n]+\n/,"") delete the header line

print > file and print to the specified filename.

关于python - 将每个测序数据提取为单独的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36778770/

相关文章:

php - 如何使用带有 exec 的 avconv 和 php 显示流的屏幕截图?

bash - Git 哈希输出与 sha1sum 不匹配,为什么?

html - 将 bash 脚本的输出文件格式化为 HTML 表格格式

python - Eigenfaces 训练图像像素大小误差

python - 创建棋盘,棋子出现问题

python - 将递归函数转换为迭代函数

Java AsynchronousFileChannel 在 Linux 中有很多打开的文件处理程序

linux - 编译器 : not found ls: cannot access/usr/bin/convert

python - 如何为我自己的应用程序使用 cherrypy 测试工具?

linux - 使用 bash 脚本比较两个文件并打印详细的差异报告