python - 拆分一个fasta文件并在第一行的基础上重命名

标签 python linux split fasta

我有一个包含以下内容的大文件:

文件名:输入.txt

>chr1
jdlfnhl
dh,ndh
dnh.

dhjl

>chr2
dhfl
dhl
dh;l

>chr3

shgl
sgl

>chr2_random
dgld

我需要以这样的方式拆分此文件,以便获得如下四个单独的文件:

文件 1:chr1.fa

>chr1
jdlfnhl
dh,ndh
dnh.

dhjl

文件 2:chr2.fa

>chr2
dhfl
dhl
dh;l

文件 3:chr3.fa

>chr3

shgl
sgl

文件 4:chr2_random.fa

>chr2_random
dgld

我在 linux 中尝试了 csplit,但无法通过“>”后的文本重命名它们。

csplit -z input.txt '/>/' '{*}'

最佳答案

由于您表示您使用的是 Linux 机器,“awk”似乎是完成这项工作的正确工具。

用法:
./foo.awk your_input_file

foo.awk:

#!/usr/bin/awk -f

/^>chr/ {
    OUT=substr($0,2) ".fa"
}

OUT {
    print >OUT
}

你也可以一行完成:

awk '/^>chr/ {OUT=substr($0,2) ".fa"}; OUT {print >OUT}' your_input

关于python - 拆分一个fasta文件并在第一行的基础上重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11818495/

相关文章:

linux - register_pernet_subsys 和 register_pernet_device 有什么区别?

linux - 使用 bash 根据其他文件中的范围划分文件

java - 在Java中分割字符串,

string - strsplit 带竖线(管道)

python - 列出所有可能包含 n 个字母的单词

python - Spark 中 IF then ELSE 的等价物

python - 将 .csv 文件从 linux 导入到 windows MYSQl

python - 如何在 Google Colab 中读取 csv 到数据框

linux - 为什么Golang实现的程序不使用libc.so.6的功能,例如socket()?

arrays - 将数组拆分为 n、m、o 组或更多组