| Summary | Included libraries | Package variables | Synopsis | Description | General documentation | Methods |
use Bio::Seq;
use Bio::Tools::IUPAC;
my $ambiseq = new Bio::Seq (-seq => 'ARTCGUTGR', -alphabet => 'dna'); my $stream = new Bio::Tools::IUPAC(-seq => $ambiseq); while ($uniqueseq = $stream->next_seq()) { # process the unique Seq object. }
Extended DNA / RNA alphabet :-----------------------------------
(includes symbols for nucleotide ambiguity)
------------------------------------------
Symbol Meaning Nucleic Acid
------------------------------------------
A A Adenine
C C Cytosine
G G Guanine
T T Thymine
U U Uracil
M A or C
R A or G
W A or T
S C or G
Y C or T
K G or T
V A or C or G
H A or C or T
D A or G or T
B C or G or T
X G or A or T or C
N G or A or T or C
IUPAC-IUB SYMBOLS FOR NUCLEOTIDE NOMENCLATURE: Cornish-Bowden (1985) Nucl. Acids Res. 13: 3021-3030.
Amino Acid alphabet:
------------------------------------------
Symbol Meaning
------------------------------------------
A Alanine
B Aspartic Acid, Asparagine
C Cystine
D Aspartic Acid
E Glutamic Acid
F Phenylalanine
G Glycine
H Histidine
I Isoleucine
J Isoleucine/Leucine
K Lysine
L Leucine
M Methionine
N Asparagine
O Pyrrolysine
P Proline
Q Glutamine
R Arginine
S Serine
T Threonine
U Selenocysteine
V Valine
W Tryptophan
X Unknown
Y Tyrosine
Z Glutamic Acid, Glutamine
* Terminator
IUPAC-IUP AMINO ACID SYMBOLS: Biochem J. 1984 Apr 15; 219(2): 345-373 Eur J Biochem. 1993 Apr 1; 213(1): 2
| BEGIN | Code | |
| new | Description | Code |
| next_seq | Description | Code |
| iupac_iup | Description | Code |
| iupac_iub | Description | Code |
| iupac_rev_iub | Description | Code |
| count | Description | Code |
| AUTOLOAD | No description | Code |
| new | code | next | Top |
Title : new |
| next_seq | code | prev | next | Top |
Title : next_seq |
| iupac_iup | code | prev | next | Top |
Title : iupac_iup |
| iupac_iub | code | prev | next | Top |
Title : iupac_iub |
| iupac_rev_iub | code | prev | next | Top |
Title : iupac_rev_iub |
| count | code | prev | next | Top |
Title : count |
| BEGIN | Top |
%IUB = ( A => [qw(A)], C => [qw(C)], G => [qw(G)], T => [qw(T)], U => [qw(U)], M => [qw(A C)], R => [qw(A G)], W => [qw(A T)], S => [qw(C G)], Y => [qw(C T)], K => [qw(G T)], V => [qw(A C G)], H => [qw(A C T)], D => [qw(A G T)], B => [qw(C G T)], X => [qw(G A T C)], N => [qw(G A T C)] ); %REV_IUB = (A => 'A', T => 'T', C => 'C', G => 'G', AC => 'M', AG => 'R', AT => 'W', CG => 'S', CT => 'Y', 'GT' => 'K', ACG => 'V', ACT => 'H', AGT => 'D', CGT => 'B', ACGT=> 'N', N => 'N' ); %IUP = (A => [qw(A)], B => [qw(D N)], C => [qw(C)], D => [qw(D)], E => [qw(E)], F => [qw(F)], G => [qw(G)], H => [qw(H)], I => [qw(I)], J => [qw(I L)], K => [qw(K)], L => [qw(L)], M => [qw(M)], N => [qw(N)], O => [qw(O)], P => [qw(P)], Q => [qw(Q)], R => [qw(R)], S => [qw(S)], T => [qw(T)], U => [qw(U)], V => [qw(V)], W => [qw(W)], X => [qw(X)], Y => [qw(Y)], Z => [qw(E Q)], '*' => ['*'] );}
| new | description | prev | next | Top |
my($class,@args) = @_; my $self = $class->SUPER::new(@args); my ($seq) = $self->_rearrange([qw(SEQ)],@args); if((! defined($seq)) && @args && ref($args[0])) { # parameter not passed as named parameter?}
$seq = $args[0]; } $seq->isa('Bio::Seq') or $self->throw("Must supply a Seq.pm object to IUPAC!"); $self->{'_SeqObj'} = $seq; if ($self->{'_SeqObj'}->alphabet() =~ m/^[dr]na$/i ) { # nucleotide seq object
$self->{'_alpha'} = [ map { $IUB{uc($_)} } split('', $self->{'_SeqObj'}->seq()) ]; } elsif ($self->{'_SeqObj'}->alphabet() =~ m/^protein$/i ) { # amino acid seq object
$self->{'_alpha'} = [ map { $IUP{uc($_)} } split('', $self->{'_SeqObj'}->seq()) ]; } else { # unknown type: we could make a guess, but let's not.
$self->throw("You must specify the 'type' of sequence provided to IUPAC"); } $self->{'_string'} = [(0) x length($self->{'_SeqObj'}->seq())]; scalar @{$self->{'_string'}} or $self->throw("Sequence has zero-length!"); $self->{'_string'}->[0] = -1; return $self;
| next_seq | description | prev | next | Top |
my ($self) = @_; for my $i ( 0 .. $#{$self->{'_string'}} ) { next unless $self->{'_string'}->[$i] || @{$self->{'_alpha'}->[$i]} > 1; if ( $self->{'_string'}->[$i] == $#{$self->{'_alpha'}->[$i]} ) { # rollover}
if ( $i == $#{$self->{'_string'}} ) { # end of possibilities
return; } else { $self->{'_string'}->[$i] = 0; next; } } else { $self->{'_string'}->[$i]++; my $j = -1; $self->{'_SeqObj'}->seq(join('', map { $j++; $self->{'_alpha'}->[$j]->[$_]; } @{$self->{'_string'}})); my $desc = $self->{'_SeqObj'}->desc(); if ( !defined $desc ) { $desc = ""; } $self->{'_num'}++; 1 while $self->{'_num'} =~ s/(\d)(\d\d\d)(?!\d)/$1,$2/; $desc =~ s/( \[Bio::Tools::IUPAC-generated\sunique sequence # [^\]]*\])|$/ \[Bio::Tools::IUPAC-generated unique sequence # $self->{'_num'}\]/; $self->{'_SeqObj'}->desc($desc); $self->{'_num'} =~ s/,//g; return $self->{'_SeqObj'}; } }
| iupac_iup | description | prev | next | Top |
return %IUP;}
| iupac_iub | description | prev | next | Top |
return %IUB;}
| iupac_rev_iub | description | prev | next | Top |
return %REV_IUB;}
| count | description | prev | next | Top |
my ($self) = @_; my $count = 1; $count *= scalar(@$_) for (@{$self->{'_alpha'}}); return $count;}
| AUTOLOAD | description | prev | next | Top |
my $self = shift @_;
my $method = $AUTOLOAD;
$method =~ s/.*:://;
return $self->{'_SeqObj'}->$method(@_)
unless $method eq 'DESTROY';}| FEEDBACK | Top |
| Mailing Lists | Top |
bioperl-l@bioperl.org - General discussion
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
| Reporting Bugs | Top |
http://bugzilla.open-bio.org/
| AUTHOR - Aaron Mackey | Top |
| APPENDIX | Top |