2016-09-08 4 views
0

フォルダに含まれるすべてのfastqファイルをfasta形式に変換したいが、各ファイルは元の名前を保持するが、fasta拡張子では次のコードをperlで作成し、しかし、それは各ファイルの最後のシーケンスを抽出するだけです!!!複数のシーケンスをフォルダ内のfastqからfastaに変換する

#!/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; 

、余分な質問は、私はサブルーチンとして、私は改宗のオプションFASTAファイルへのフォルダまたは1つのファイルにすべてのFASTQファイルを持っている同じスクリップを開発したい、PICE次のコードを使用したいです! !!ちょっと新しいの

while(
         defined(my $head = <LINE>)  && 
         defined(my $seq  = <LINE>)  && 
         defined(my $qhead = <LINE>)  && 
         defined(my $quality = <LINE>)   
       ){ 

答えて

1

は自分自身をperlへとバイオインフォマティクスについての事を知らないが、あなたは、whileループの毎ターンで出力ファイルを上書きしているように見えます。私はあなたが>>だけでなく>をしたいので、ファイルに追加したいと思う。例

open OUTFILE, '>>', $file_name.".fasta"; 

希望します。

+0

ありがとうございます、あなたは私の大きな問題を解決しました!!!! :))) –

関連する問題