t/AlignIO/AlignIO.t: fix number of tests in plan (fixup c523e6bed866)
[bioperl-live.git] / Bio / Tools / Prediction / Gene.pm
blob200e14c8e71acdb1aa713215b7689855e7609bdb
2 # BioPerl module for Bio::Tools::Prediction::Gene
4 # Please direct questions and support issues to <bioperl-l@bioperl.org>
6 # Cared for by Hilmar Lapp <hlapp@gmx.net>
8 # Copyright Hilmar Lapp
10 # You may distribute this module under the same terms as perl itself
12 # POD documentation - main docs before the code
14 =head1 NAME
16 Bio::Tools::Prediction::Gene - a predicted gene structure feature
18 =head1 SYNOPSIS
20 #See documentation of methods.
22 =head1 DESCRIPTION
24 A feature representing a predicted gene structure. This class actually
25 inherits off Bio::SeqFeature::Gene::Transcript and therefore has all that
26 functionality, plus a few methods supporting predicted sequence features,
27 like a predicted CDS and a predicted translation.
29 Exons held by an instance of this class will usually be instances of
30 Bio::Tools::Prediction::Exon, although they do not have to be. Refer to the
31 documentation of the class that produced the instance.
33 Normally, you will not want to create an instance of this class yourself.
34 Instead, classes representing the results of gene structure prediction
35 programs will do that.
37 =head1 FEEDBACK
39 =head2 Mailing Lists
41 User feedback is an integral part of the evolution of this and other
42 Bioperl modules. Send your comments and suggestions preferably to one
43 of the Bioperl mailing lists. Your participation is much appreciated.
45 bioperl-l@bioperl.org - General discussion
46 http://bioperl.org/wiki/Mailing_lists - About the mailing lists
48 =head2 Support
50 Please direct usage questions or support issues to the mailing list:
52 I<bioperl-l@bioperl.org>
54 rather than to the module maintainer directly. Many experienced and
55 reponsive experts will be able look at the problem and quickly
56 address it. Please include a thorough description of the problem
57 with code and data examples if at all possible.
59 =head2 Reporting Bugs
61 Report bugs to the Bioperl bug tracking system to help us keep track
62 the bugs and their resolution. Bug reports can be submitted via the
63 web:
65 https://github.com/bioperl/bioperl-live/issues
67 =head1 AUTHOR - Hilmar Lapp
69 Email hlapp-at-gmx.net or hilmar.lapp-at-pharma.novartis.com
71 =head1 APPENDIX
73 The rest of the documentation details each of the object
74 methods. Internal methods are usually preceded with a _
76 =cut
79 # Let the code begin...
82 package Bio::Tools::Prediction::Gene;
83 use strict;
87 use base qw(Bio::SeqFeature::Gene::Transcript);
89 sub new {
90 my($class,@args) = @_;
92 my $self = $class->SUPER::new(@args);
94 my ($primary,$ptag) = $self->_rearrange([qw(PRIMARY PRIMARY_TAG)],@args);
95 $self->primary_tag('predicted_gene') unless $primary || $ptag;
97 return $self;
101 =head2 predicted_cds
103 Title : predicted_cds
104 Usage : $predicted_cds_dna = $gene->predicted_cds();
105 $gene->predicted_cds($predicted_cds_dna);
106 Function: Get/Set the CDS (coding sequence) as predicted by a program.
108 This method is independent of an attached_seq. There is no
109 guarantee whatsoever that the returned CDS has anything to do
110 (e.g., matches) with the sequence covered by the exons as annotated
111 through this object.
113 Example :
114 Returns : A Bio::PrimarySeqI implementing object holding the DNA sequence
115 defined as coding by a prediction of a program.
116 Args : On set, a Bio::PrimarySeqI implementing object holding the DNA
117 sequence defined as coding by a prediction of a program.
119 =cut
121 sub predicted_cds {
122 my ($self, $cds) = @_;
124 if(defined($cds)) {
125 $self->{'_predicted_cds'} = $cds;
127 return $self->{'_predicted_cds'};
130 =head2 predicted_protein
132 Title : predicted_protein
133 Usage : $predicted_protein_seq = $gene->predicted_protein();
134 $gene->predicted_protein($predicted_protein_seq);
135 Function: Get/Set the protein translation as predicted by a program.
137 This method is independent of an attached_seq. There is no
138 guarantee whatsoever that the returned translation has anything to
139 do with the sequence covered by the exons as annotated
140 through this object, or the sequence returned by predicted_cds(),
141 although it should usually be just the standard translation.
143 Example :
144 Returns : A Bio::PrimarySeqI implementing object holding the protein
145 translation as predicted by a program.
146 Args : On set, a Bio::PrimarySeqI implementing object holding the protein
147 translation as predicted by a program.
149 =cut
151 sub predicted_protein {
152 my ($self, $aa) = @_;
154 if(defined($aa)) {
155 $self->{'_predicted_aa'} = $aa;
157 return $self->{'_predicted_aa'};
161 # Everything else is just inherited from SeqFeature::GeneStructure.