FASTAシークエンスのいっぱい入ったファイルの中から、ある特定のFASTAシークエンスを抽出したい時につかえるプログラムを書いてみました。
ここまで書くには結構勉強した。
FASTAフォーマット
>1
ATGATATGAGGATGCGTAGTA
>2
AAAAATTTTGGGGCCCCC
>3
TTTTTCCCGTGTAGTGATGTGTCGTGCTGATCGTACGTCG
という遺伝子が入ったファイルがある。
その中から3のみを抽出したいときは、
>3
と書かれたファイルを用意して下のプログラムを実行すると。
FASTAフォーマットのファイルの中から
>3
TTTTTCCCGTGTAGTGATGTGTCGTGCTGATCGTACGTCG
だけを抽出してくれる。
今5万個とか扱っているのでこれを勉強して書く手間と5万個コピペする手間を考えたら
これを書くほうが楽チン。
プログラムの内容は何でもいいから目的が果たせたらいいという代物なので
褒められたものではないだろう。
ここから下がプログラム
#!/usr/bin/perl -w
use strict;
use warnings;
use POSIX;
# enter the fastafile to hash.
my ($fastafile) = @ARGV;
open FASTA, "<$fastafile";
my %hash=(); # initializes a hash
while (<FASTA>)
{
if ($_ =~ /^>/)
{
my $header = $_;
$header =~ s/\s//g;
my $read_id = $_;
$hash{$header}{name}=$read_id;
my $line = <FASTA>;
$hash{$header}{sequence}= $line;
}
}
close FASTA;
my $counter = 0;
my $name = <STDIN>;
open (FASTANAME, $name);
while (<FASTANAME>)
{
my $filename = $_;
$filename =~ s/\s//g;
my $header = $filename;
if (exists $hash{"$header"})
{
$counter = $counter + 1;
print "$hash{$header}{name}";
print "$hash{$header}{sequence}";
}
}
close (FASTANAME);
print "$counter fasta sequences are here\n";
ここまで書くには結構勉強した。
FASTAフォーマット
>1
ATGATATGAGGATGCGTAGTA
>2
AAAAATTTTGGGGCCCCC
>3
TTTTTCCCGTGTAGTGATGTGTCGTGCTGATCGTACGTCG
という遺伝子が入ったファイルがある。
その中から3のみを抽出したいときは、
>3
と書かれたファイルを用意して下のプログラムを実行すると。
FASTAフォーマットのファイルの中から
>3
TTTTTCCCGTGTAGTGATGTGTCGTGCTGATCGTACGTCG
だけを抽出してくれる。
今5万個とか扱っているのでこれを勉強して書く手間と5万個コピペする手間を考えたら
これを書くほうが楽チン。
プログラムの内容は何でもいいから目的が果たせたらいいという代物なので
褒められたものではないだろう。
ここから下がプログラム
#!/usr/bin/perl -w
use strict;
use warnings;
use POSIX;
# enter the fastafile to hash.
my ($fastafile) = @ARGV;
open FASTA, "<$fastafile";
my %hash=(); # initializes a hash
while (<FASTA>)
{
if ($_ =~ /^>/)
{
my $header = $_;
$header =~ s/\s//g;
my $read_id = $_;
$hash{$header}{name}=$read_id;
my $line = <FASTA>;
$hash{$header}{sequence}= $line;
}
}
close FASTA;
my $counter = 0;
my $name = <STDIN>;
open (FASTANAME, $name);
while (<FASTANAME>)
{
my $filename = $_;
$filename =~ s/\s//g;
my $header = $filename;
if (exists $hash{"$header"})
{
$counter = $counter + 1;
print "$hash{$header}{name}";
print "$hash{$header}{sequence}";
}
}
close (FASTANAME);
print "$counter fasta sequences are here\n";
PR
トラックバック
トラックバックURL: