我正在寻找在大文件中查找文本的最简单方法,并将其保存到相同的变量中供以后使用。
文件格式为:
>gi|24585363|ref|NP_724239.1| short neuropeptide F precursor [Drosophila melanogaster]
MFHLKRELSQGCALALICLVSLQMQQPAQAEVSSAQGTPLSNLYDNLLQREYAGPVVFPNHQVERKAQRS
PSLRLRFGRSDPDMLNSIVEKRWFGDVNQKPIRSPSLRLRFGRRDPSLPQMRRTAYDDLLERELTLNSQQ
QQQQLGTEPDSDLGADYDGLYERVVRKPQRLRWGRSVPQFEANNADNEQIERSQWYNSLLNSDKMRRMLV
ALQQQYEIPENVASYANDEDTDTDLNNDTSEFQREVRKPMRLRWGRSTGKAPSEQKHTPEETSSIPPKTQ
N
>gi|442619471|ref|NP_001262643.1| neuropeptide F, isoform C [Drosophila melanogaster]
MCQTMRCILVACVALALLAAGCRVEASNSRPPRKNDVNTMADAYKFLQDLDTYYGDRARVRFGKRGSLMD
ILRNHEMDNINLGKNANNGGEFARGFNEEEIF
>gi|442619469|ref|NP_001262642.1| neuropeptide F, isoform B [Drosophila melanogaster]
MCQTMRCILVACVALALLAAGCRVEASNSRPPRKNDVNTMADAYKFLQDLDTYYGDRARVRFGKRGSLMD
ILRNHEMDNINLGKNANNGGEFARGFNEEEIF
每个序列都以“>”
开头我试过了:
open (FILE, $fastaFile);
while (<FILE>) {
chomp;
($name, $name2) = split(/:/);
print "Name: $name\n";
print "Name2: $name2\n";
} close (FILE);
exit;
我从不需要寻找特定的文字。也许只使用grep很容易,我不知道。
对我来说,最大的问题是我的其他程序中有另一个文件结果,我需要在另一个文件中找到这些结果。
我的主程序给了我这些结果:
>gi|24585363|ref|NP_724239.1|
>gi|442619469|ref|NP_001262642.1|
我需要在第二个文件中找到它并将其保存到$ name中并将其保存到$ sequence中以获取该名称的序列。:
$name = ">gi|24585363|ref|NP_724239.1|"
$sequnce = "MFHLKRELSQGCALALICLVSLQMQQPAQAEVSSAQGTPLSNLYDNLLQREYAGPVVFPNHQVERKAQRS
PSLRLRFGRSDPDMLNSIVEKRWFGDVNQKPIRSPSLRLRFGRRDPSLPQMRRTAYDDLLERELTLNSQQ
QQQQLGTEPDSDLGADYDGLYERVVRKPQRLRWGRSVPQFEANNADNEQIERSQWYNSLLNSDKMRRMLV
ALQQQYEIPENVASYANDEDTDTDLNNDTSEFQREVRKPMRLRWGRSTGKAPSEQKHTPEETSSIPPKTQ
N"
有人可以就如何进行给我建议吗?如果使用grep或其他方式到达那里。
答案 0 :(得分:0)
这应该有助于满足您的需求。您需要安装Bio Perl
#!/usr/bin/perl
use warnings;
use strict;
use Bio::SeqIO;
my $seqFile = Bio::SeqIO->new('-format' => 'fasta', '-file' => 'myFasta.fasta');
while((my $seqObj = $seqFile->next_seq())){
print "Seen Sequence " . $seqObj->display_id . "\n";
print "Sequence: " . $seqObj->seq() . "\n";
}