2013年4月20日土曜日

Motif Discovery(Weeder2weblogo)

Weederの「OUTPUTファイル」から、weblogoの「INPUTファイル」であるfastaファイルを生成するスクリプトを書いてみました。

Weederで予測されたモチーフ配列を視覚化するために、予測されたモチーフ配列に対してそれぞれのweblogo用のfastaファイルが生成させるスクリプトです。

このスクリプトに通した後、生成されたfastaファイルを一つ一つweblogoで視覚化。
#!/usr/local/bin/perl
####################################
#Weeder2weblogo#####################
#var1.0_Perl
#update: 2012.4.8
####################################

use strict;
use warnings;

my $file = $ARGV[0];
my $number = $ARGV[1];

#main####################################################
open (IN,"<./$file\.wee") || die;

my $flg_gene=0;
my $flg=0;
my $filehandle = 1;
my $count = 1;
my %gene_ID;

while(my $line = <IN>){
 #Gene_ID
 if($line =~ /^Your sequences/){
  $flg_gene = 1;
  next;
 }elsif($flg_gene == 1){
  $flg_gene = 2;
  next;
 }elsif($flg_gene == 2 && $line eq "\n"){
  $flg_gene = 0;
  next;
 }elsif($flg_gene == 2){
  my @data = split(/\s+/,$line);
  $gene_ID{$data[1]}=$data[3];
  next;
 }

 #Sequence_data
 if($line =~ /^Best occurrences/){
  if($filehandle == 0){
   close(OUT);
   $count++;
  }else{
   $filehandle = 0;
  }
  open (OUT,">./$file\#$count\.fasta") || die;
  $flg = 1;
  next;
 }elsif($flg == 1){
  $flg = 2;
  next;
 }elsif($line eq "\n" && $flg == 2){
  $flg = 0;
  next;
 }elsif($flg == 2){
  if($line =~ /^\s+/){
   $line =~ s/^\s+//;
  }
  my @data = split(/\s+/,$line);
  if($data[2] =~ /^\[/){
   $data[2] =~ s/\[//;
   $data[2] =~ s/\]//;
  }
  print OUT "$gene_ID{$data[0]}\n";
  print OUT "$data[2]\n";
  next;
 }
}
close(IN);
close(OUT);
print "...process successfully completed\n";
〈使用方法〉
$ perl Weeder2weblogo INPUT_file
⇒INPUT_fileの拡張子は「.wee」にしておくこと。
(Weederからの出力ファイル「.wee」を利用しているので、拡張子を変更しないように。)
〈ダウンロード先〉
・github -non-bioinformatician_NGS_analysis
https://github.com/Naoto-Imamachi/non-bioinformatician_NGS_analysis

0 件のコメント:

コメントを投稿