2016-09-08 14 views
0

폴더에 포함 된 모든 fastq 파일을 fasta 형식으로 변환하려고합니다. 각 파일은 원래 이름을 유지하지만 fasta 확장자로 다음 코드를 작성했습니다. 그러나 각 파일의 마지막 순서 만 추출합니다 !!!폴더에서 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 파일 폴더 나 하나의 파일에있는 모든 fastq 파일이 동일한 전대를 개발하고자는 파이스 다음 코드를 사용하고 싶다! !! !! 일종의 새의

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

답변

1

자신을 펄 및 생물 정보학에 대해 아무것도 모르지만, 당신은 while 루프의 모든 차례에 출력 파일을 덮어 쓰는 것 같습니다. 나는 당신이 파일에 추가하기를 원한다고 생각합니다. 예 :

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

희망이 있습니다.

+0

고마워요, 내 큰 문제를 해결했습니다 !!!! :))) –