将文件夹中的多个序列从 fastq 转换为 fasta
Convert multiples sequences from fastq to fasta in a folder
我想把一个文件夹里的所有fastq文件都转成fasta格式,每个文件都会保留原来的名字,但是在fasta扩展名里,我用perl做了下一段代码,但是它只提取了最后一个序列每个文件!!!
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
my ($dir, $files, $file_name, $file_format);
GetOptions (
'dr=s' =>$dir
);
foreach $files (glob("$dir/*.fastq")) {
open LINE, "<", $files or die "can't read open $files";
while(
defined(my $head = <LINE>) &&
defined(my $seq = <LINE>) &&
defined(my $qhead = <LINE>) &&
defined(my $quality = <LINE>)
){
substr($head, 0, 1, '>');
($file_name, $file_format) = split (/\./,$files);
open OUTFILE, '>', $file_name.".fasta";
print OUTFILE $head, $seq;
}
}
close LINE;
close OUTFILE;
exit;
还有一个额外的问题,我想使用 pice next 代码,作为一个子程序,我想开发相同的脚本来选择将文件夹中的所有 fastq 文件或单个文件转换为 fasta 文件!!!
while(
defined(my $head = <LINE>) &&
defined(my $seq = <LINE>) &&
defined(my $qhead = <LINE>) &&
defined(my $quality = <LINE>)
){
我自己对 perl 有点陌生,对生物信息学一无所知,但看起来你在 while 循环的每一圈都覆盖了输出文件。我想你想追加到文件,所以你想要一个 >> 而不仅仅是 >。例子
open OUTFILE, '>>', $file_name.".fasta";
希望对您有所帮助。
我想把一个文件夹里的所有fastq文件都转成fasta格式,每个文件都会保留原来的名字,但是在fasta扩展名里,我用perl做了下一段代码,但是它只提取了最后一个序列每个文件!!!
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
my ($dir, $files, $file_name, $file_format);
GetOptions (
'dr=s' =>$dir
);
foreach $files (glob("$dir/*.fastq")) {
open LINE, "<", $files or die "can't read open $files";
while(
defined(my $head = <LINE>) &&
defined(my $seq = <LINE>) &&
defined(my $qhead = <LINE>) &&
defined(my $quality = <LINE>)
){
substr($head, 0, 1, '>');
($file_name, $file_format) = split (/\./,$files);
open OUTFILE, '>', $file_name.".fasta";
print OUTFILE $head, $seq;
}
}
close LINE;
close OUTFILE;
exit;
还有一个额外的问题,我想使用 pice next 代码,作为一个子程序,我想开发相同的脚本来选择将文件夹中的所有 fastq 文件或单个文件转换为 fasta 文件!!!
while(
defined(my $head = <LINE>) &&
defined(my $seq = <LINE>) &&
defined(my $qhead = <LINE>) &&
defined(my $quality = <LINE>)
){
我自己对 perl 有点陌生,对生物信息学一无所知,但看起来你在 while 循环的每一圈都覆盖了输出文件。我想你想追加到文件,所以你想要一个 >> 而不仅仅是 >。例子
open OUTFILE, '>>', $file_name.".fasta";
希望对您有所帮助。