寻找特定文本并将其保存到变量中

时间:2016-03-05 21:17:44

标签: perl fasta

我正在寻找在大文件中查找文本的最简单方法,并将其保存到相同的变量中供以后使用。

文件格式为:

>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或其他方式到达那里。

1 个答案:

答案 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";
}
相关问题