将文件夹中的多个序列从 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";

希望对您有所帮助。