根据AccessionNumber 取得序列?

根据AccessionNumber 取得序列?

根据AccessionNumber 取得序列?
有一序列文件fasta.txt,fasta格式~

>BC035719
atggcgccagtgtcctggatcacccccggcctgaaaacaacagcagtgtgccgaggtgtg
……
>BC130519
atggaatcaaatcacaaatccggggatggattgagcggcactcagaaggaagcagccctc
……

另有一文件acc.txt,只是AccessionNumbe的列表
BC035719
BC130519
BC139854
……
……

1。如何根据acc.txt,从序列文件中抽取这些序列呢?

2。又如何根据acc.txt,从序列文件中抽取acc.txt里有的之外的其它的序列呢?
最好建一个简单的数据库,.
最好建一个简单的数据库,查询就可以了。

如果只能用 perl,可以先读入 accession 到一个数组里,再逐条读入 fasta.txt 的序列,判断是读入序列的 accession 否存在于数组中;
或者读入 fasta.txt 到一个散列,以 accession 为 key,序列为 value。
第一问题是可以解决。。库.
第一问题是可以解决。。库我已经建好了
建库的话第二个问题,想不出办法~~
先查询出数据库里所有的 a.
先查询出数据库里所有的 accession 号,保存到数组 @db_accs;读入 acc.txt 文件,保存到 @accs。逐条查询 @db_accs 的元素是否存在于 @accs 里


LOOP: for my $db_acc (@db_accs) {
  for my $acc (@accs) {
    last LOOP if ($db_acc eq $acc); # if exists, jump out cycle
  }
  push @not_accs, $db_acc; # 或者在这里进行查询,把结果写入输出文件
}




   

#!/usr/bin/perl -w-- #!/usr/bin/perl -w

open (LIST,"/home/zhenglc/20081124/seq/list.txt") or die "cannot open LIST:$!";
my @accs=<LIST>;
close(LIST);

open (ACC,"/home/zhenglc/20081124/seq/mgc_acc.txt") or die "cannot open ACC:$!";
my @db_accs=<ACC>;
close(ACC);

LOOP: for my $db_acc(@db_accs) {
    for my $acc(@accs) {
    last LOOP if ($db_acc eq $acc); # if exists, jump out cycle
  }
  push @not_accs, $db_acc;
  print @not_accs;
}


这样子不行啊?没结果~
push @not_accs, $db_acc;.
push @not_accs, $db_acc;

另外这句如何理解呢?