1
# $Id: Gumby.pm,v 1.2 2007/06/14 18:01:52 nathan Exp $
3
# BioPerl module for Bio::Tools::Phylo::Gerp
5
# Cared for by Sendu Bala <bix@sendu.me.uk>
9
# You may distribute this module under the same terms as perl itself
11
# POD documentation - main docs before the code
15
Bio::Tools::Phylo::Gerp - Parses output from GERP
21
use Bio::Tools::Phylo::Gerp;
23
my $parser = Bio::Tools::Phylo::Gerp->new(-file => "alignment.rates.elems");
25
while (my $feat = $parser->next_result) {
26
my $start = $feat->start;
28
my $rs_score = $feat->score;
29
my $p_value = ($feat->annotation->get_Annotations('p-value'))[0]->value;
34
This module is used to parse the output from 'GERP' (v2) by Eugene Davydov
35
(originally Gregory M. Cooper et al.). You can get details here:
36
http://mendel.stanford.edu/sidowlab/
38
It works on the .elems files produced by gerpelem.
40
Each result is a Bio::SeqFeature::Annotated representing a single constrained
47
User feedback is an integral part of the evolution of this and other
48
Bioperl modules. Send your comments and suggestions preferably to
49
the Bioperl mailing list. Your participation is much appreciated.
51
bioperl-l@bioperl.org - General discussion
52
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
56
Report bugs to the Bioperl bug tracking system to help us keep track
57
of the bugs and their resolution. Bug reports can be submitted via the
60
http://bugzilla.open-bio.org/
62
=head1 AUTHOR - Sendu Bala
68
The rest of the documentation details each of the object methods.
69
Internal methods are usually preceded with a _
73
# Let the code begin...
75
package Bio::Tools::Phylo::Gerp;
78
use Bio::SeqFeature::Annotated;
79
use Bio::Annotation::SimpleValue;
81
use base qw(Bio::Root::Root Bio::Root::IO);
87
Usage : my $obj = Bio::Tools::Phylo::Gerp->new();
88
Function: Builds a new Bio::Tools::Phylo::Gerp object
89
Returns : Bio::Tools::Phylo::Gerp
90
Args : -file (or -fh) should contain the contents of a gerpelem .elems file
95
my ($class, @args) = @_;
96
my $self = $class->SUPER::new(@args);
98
$self->_initialize_io(@args);
106
Usage : $result = $obj->next_result();
107
Function: Returns the next result available from the input, or undef if there
109
Returns : Bio::SeqFeature::Annotated object. Features are annotated with a tag
110
for 'pvalue', and a 'predicted' tag. They have no sequence id unless
111
the input GERP file is non-standard, with the seq id as the 6th
114
NB: feature coordinates are alignment columns of the alignment
115
used to create the result file.
123
my $line = $self->_readline || return;
125
while ($line !~ /^\d+\s+\d+\s+\d+\s+\S+\s+\S+\s*(?:\S+\s*)?$/) {
126
$line = $self->_readline || return;
129
#start end length RS-score p-value
130
# code elsewhere adds seq_id on the end (not valid GERP), so we capture that
132
my ($start, $end, undef, $rs_score, $p_value, $seq_id) = split(/\s+/, $line);
133
my $feat = Bio::SeqFeature::Annotated->new(
134
$seq_id ? (-seq_id => $seq_id) : (),
139
#-type => 'conserved_region', ***causes 740x increase in SeqFeatureDB storage requirments!
142
my $sv = Bio::Annotation::SimpleValue->new(-tagname => 'predicted', -value => 1);
143
$feat->annotation->add_Annotation($sv);
144
$sv = Bio::Annotation::SimpleValue->new(-tagname => 'pvalue', -value => $p_value);
145
$feat->annotation->add_Annotation($sv);