Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 将多个FASTA文件拆分为单独的文件,保留其原始名称_Awk_Split_Sequence_Fasta - Fatal编程技术网

Awk 将多个FASTA文件拆分为单独的文件,保留其原始名称

Awk 将多个FASTA文件拆分为单独的文件,保留其原始名称,awk,split,sequence,fasta,Awk,Split,Sequence,Fasta,我正在尝试使用一个AWK脚本,该脚本在本论坛早些时候发布。我正在尝试将一个包含多个DNA序列的大型FASTA文件拆分为单独的FASTA文件。我需要将每个序列分离到它自己的FASTA文件中,每个新FASTA文件的名称需要是原始大型multifasta文件中的DNA序列的名称(所有字符都在>之后) 我尝试了在stackoverflow找到的脚本: awk '/^>chr/ {OUT=substr($0,2) ".fa"}; OUT {print >OUT}' your_input 它工

我正在尝试使用一个AWK脚本,该脚本在本论坛早些时候发布。我正在尝试将一个包含多个DNA序列的大型FASTA文件拆分为单独的FASTA文件。我需要将每个序列分离到它自己的FASTA文件中,每个新FASTA文件的名称需要是原始大型multifasta文件中的DNA序列的名称(所有字符都在>之后)

我尝试了在stackoverflow找到的脚本:

awk '/^>chr/ {OUT=substr($0,2) ".fa"}; OUT {print >OUT}' your_input
它工作得很好,但是DNA序列直接在文件名之后开始,没有空格。DNA序列需要在新行上开始(常规FASTA格式)

如果能帮我解决这个问题,我将不胜感激。
谢谢

你的意思是这样的吗

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

为每个“染色体/序列/事物”创建的新文件在开始时有一个空行吗?

我认为这应该可以

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

希望这个perl脚本能有所帮助

#!/usr/bin/perl
open (INFILE, "< your_input.fa")
or die "Can't open file";
while (<INFILE>) {
$line = $_;
chomp $line;
if ($line =~ /\>/) { #if has fasta >
close OUTFILE;
$new_file = substr($line,1);
$new_file .= ".fa";
open (OUTFILE, ">$new_file")
or die "Can't open: $new_file $!";
}
print OUTFILE "$line\n";
}
close OUTFILE;
#/usr/bin/perl
打开(填充“/){if有fasta>
关闭输出口;
$new_file=substr($line,1);
$new_文件=“.fa”;
打开(输出文件“>$new_文件”)
或者死“无法打开:$new_file$!”;
}
打印输出文件“$line\n”;
}
关闭输出口;

我建议发布一些示例(预期)输出(带有文件名)和输入。本网站的一些用户可能不知道什么是FASTA格式,没有时间研究。。。