2016-03-05 38 views
-2

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

的文件格式是:

open (FILE, $fastaFile); 
while (<FILE>) { 
chomp; 
($name, $name2) = split(/:/); 

print "Name: $name\n"; 
print "Name2: $name2\n"; 

} close (FILE); 

exit; 

我从来不需要寻找特定的文本:

>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 

每个序列与 “>”

我想这将启动。也许这将很容易使用grep只有我不知道。

对我来说,bigest问题是,我有另一个文件的结果从我的其他程序,我需要在另一个文件中找到这些结果。

我主要的程序给我的结果:

>gi|24585363|ref|NP_724239.1| 
>gi|442619469|ref|NP_001262642.1| 

,我需要找到它在第二个文件,并保存到$名称和到$序列这把sequnces该名称:

$name = ">gi|24585363|ref|NP_724239.1|" 
$sequnce = "MFHLKRELSQGCALALICLVSLQMQQPAQAEVSSAQGTPLSNLYDNLLQREYAGPVVFPNHQVERKAQRS 
    PSLRLRFGRSDPDMLNSIVEKRWFGDVNQKPIRSPSLRLRFGRRDPSLPQMRRTAYDDLLERELTLNSQQ 
    QQQQLGTEPDSDLGADYDGLYERVVRKPQRLRWGRSVPQFEANNADNEQIERSQWYNSLLNSDKMRRMLV 
    ALQQQYEIPENVASYANDEDTDTDLNNDTSEFQREVRKPMRLRWGRSTGKAPSEQKHTPEETSSIPPKTQ 
    N" 

任何人都可以给我如何进行的意见?如果使用grep或其他方式到达那里。

+3

你的输入不包含单个冒号,为什么你在'/:/'分裂''? – choroba

回答

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