- 论坛徽章:
- 0
|
本帖最后由 longbow0 于 2011-03-27 19:40 编辑
输出文件是 'out.fa'.
在 Debian 下已经调试通过。
- #!/usr/bin/perl
- use strict;
- use warnings;
- use Bio::SeqIO;
- # Read all seqs into a hash
- my $seqi = Bio::SeqIO->new(
- -file => 'nscaf格式.fa',
- -format => 'fasta',
- );
- my $rh_seqs;
- while (my $seq = $seqi->next_seq) {
- $rh_seqs->{$seq->id} = $seq;
- }
- # Output seqs
- my $seqo = Bio::SeqIO->new(
- -file => ">out.fa",
- -format => 'fasta',
- );
- my $i = 1;
- open(FH, "位置信息1.txt") or die "Error: '位置信息1.txt' $!\n";
- while (<FH>) {
- next if /^\s*$/;
-
- my ($geneid, $seqid, $pos) = split /\s+/;
- print 'Gene: ', $geneid, 'Seq: ' . $seqid, "\n";
-
- # 提示不存在的 seqid
- unless ( defined $rh_seqs->{$seqid} ) {
- warn 'Seq ', $seqid, "does NOT exost!\n";
- next;
- }
- my $gene_str = $rh_seqs->{$seqid}->subseq($pos-2000, $pos+500);
-
- my $sseq = Bio::Seq->new(
- -id => 'pro' . $i . '/' . $geneid,
- -seq => $gene_str,
- );
-
- $seqo->write_seq($sseq);
- $i++;
- }
- close FH;
复制代码 |
|