Bio::Restriction::IO
bairoch
Summary
Bio::Restriction::IO::bairoch - bairoch enzyme set
Package variables
No package variables defined.
Included modules
Inherit
Synopsis
Do not use this module directly. Use it via the Bio::Restriction::IO class.
Description
This is the most complete format of the REBASE files, and basically
includes all the data on each of the restriction enzymes.
This parser is for the Bairoch format (aka MacVector, Vector NTI, PC/Gene
(Bairoch) format), REBASE format #19
Methods
Methods description
Title : read Usage : $renzs = $stream->read Function: reads all the restrction enzymes from the stream Returns : a Bio::Restriction::Restriction object Args : none |
Title : write Usage : $stream->write($renzs) Function: writes restriction enzymes into the stream Returns : 1 for success and 0 for error Args : a Bio::Restriction::Enzyme or a Bio::Restriction::EnzymeCollection object |
Methods code
sub new
{ my($class, @args) = @_;
my $self = bless {}, $class;
$self->_initialize(@args);
return $self;} |
sub _initialize
{ my($self,@args) = @_;
my ($verbose) =
$self->_rearrange([qw(
VERBOSE
)], @args);
$verbose || 0;
$self->verbose($verbose);
return unless $self->SUPER::_initialize(@args);} |
sub read
{ my $self = shift;
my $renzs = Bio::Restriction::EnzymeCollection->new(-empty => 1);
local $/ = '//';
while (defined(my $entry=$self->_readline()) ) {
$self->debug("|$entry|\n");
my ($name) = $entry =~ /ID\s+(\S+)/;
my ($site) = $entry =~ /RS\s+([^\n]+)/;
next unless ($name && $site);
my @sequences;
if ($site =~ /\;/) {
@sequences = split /\;/, $site;
$self->debug(@sequences,"\n");
$site=shift @sequences;
}
my ($seq, $cut)=split /,\s+/, $site;
$self->debug("SITE: |$site| GAVE: |$seq| and |$cut|\n");
if ($seq eq '?') {
$self->warn("$name: no site. Skipping") if $self->verbose > 1;
next;
}
if ($seq !~ /[NGATC]/i) {
$self->throw("Sequence $name has weird sequence: |$seq|");
}
my $re;
if ($cut eq "?") {
$re = Bio::Restriction::Enzyme->new(-name=>$name, -seq => $seq);
}
else {
if ($cut !~ /^-?\d+$/) {
$self->throw("Cut site from $name is weird: |$cut|\n");
}
$re = Bio::Restriction::Enzyme->new(-name=>$name,
-cut => $cut,
-seq => $seq
);
}
$renzs->enzymes($re);
my ($prototype) = $entry =~ /PT\s+([^\n]+)/;
if ($prototype) {
$re->is_prototype(0);
} else {
$re->is_prototype(1);
}
my ($meth) = $entry =~ /MS\s+([^\n]+)/;
my @meths;
if ($meth) {
if ( $meth =~ /(\S+)\((\d+)\),(\S+)\((\d+)\)/ ) { $re->methylation_sites($self->_meth($re,$1, $2),
$self->_meth($re,$3,$4));
}
elsif ($meth =~ /(\S+)\((\d+)\)/ ) { $re->methylation_sites( $self->_meth($re,$1,$2) );
@meths = split /, /, $meth;
$meth=shift @meths;
} else {
$self->warn("Unknown methylation format [$meth]") if $self->verbose >0;
}
}
my ($microbe) = $entry =~ /OS\s+([^\n]+)/;
$re->microbe($microbe) if $microbe;
my ($vendors) = $entry =~ /CR\s+([^\n]+)/;
$re->vendors(split /,\s*/, $vendors) if $vendors;
$self->warn("Current issues with multisite enzymes using bairoch format\n".
"Recommend using itype2 or withrefm formats for now") if @sequences;
}
return $renzs;} |
sub write
{ my ($self,@h) = @_;
$self->throw_not_implemented;} |
General documentation
User feedback is an integral part of the evolution of this and other
Bioperl modules. Send your comments and suggestions preferably to the
Bioperl mailing lists Your participation is much appreciated.
bioperl-l@bioperl.org - General discussion
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
Report bugs to the Bioperl bug tracking system to help us keep track
the bugs and their resolution. Bug reports can be submitted via the
web:
http://bugzilla.open-bio.org/
Heikki Lehvaslaiho, heikki-at-bioperl-dot-org
The rest of the documentation details each of the object
methods. Internal methods are usually preceded with a _