Awk 将多个FASTA文件拆分为单独的文件,保留其原始名称
我正在尝试使用一个AWK脚本,该脚本在本论坛早些时候发布。我正在尝试将一个包含多个DNA序列的大型FASTA文件拆分为单独的FASTA文件。我需要将每个序列分离到它自己的FASTA文件中,每个新FASTA文件的名称需要是原始大型multifasta文件中的DNA序列的名称(所有字符都在>之后) 我尝试了在stackoverflow找到的脚本: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 '/^>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格式,没有时间研究。。。