annotate variant_effect_predictor/Bio/EnsEMBL/Compara/PeptideAlignFeature.pm @ 1:d6778b5d8382 draft default tip

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 =head1 NAME - Bio::EnsEMBL::Compara::PeptideAlignFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 # Get an $homology object somehow
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 # For Homology PeptideAlignFeatures, you normally get 2 pafs,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 # one for each member used alternatively as query and database
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 # (hit) in the blast run
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 my $pafs = $homology->get_all_PeptideAlignFeature;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 foreach my $paf (@{$pafs}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 print $paf->query_member->stable_id," ",$self->hit_member->stable_id," ",$paf->evalue,"\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 # Other stuff in the object:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18 # $paf->qstart
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 # $paf->qend
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20 # $paf->hstart
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 # $paf->hend
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 # $paf->score
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 # $paf->alignment_length
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 # $paf->identical_matches
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 # $paf->perc_ident
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 # $paf->positive_matches
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 # $paf->perc_pos
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 # $paf->hit_rank
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 # $paf->cigar_line
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 Describe contact details here
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 my $_paf_build_homology_idx = time(); #global index counter
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 package Bio::EnsEMBL::Compara::PeptideAlignFeature;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 use Bio::EnsEMBL::Compara::Homology;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 use Bio::EnsEMBL::Utils::Exception;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 #se overload '<=>' => "sort_by_score_evalue_and_pid"; # named method
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 my ($class) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55 my $self = {};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 bless $self,$class;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 $self->query_member(new Bio::EnsEMBL::Compara::Member);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60 $self->hit_member(new Bio::EnsEMBL::Compara::Member);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 sub create_homology
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 # create an Homology object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 my $homology = new Bio::EnsEMBL::Compara::Homology;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 my $stable_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73 if($self->query_member->taxon_id < $self->hit_member->taxon_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 $stable_id = $self->query_member->taxon_id() . "_" . $self->hit_member->taxon_id . "_";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 $stable_id = $self->hit_member->taxon_id . "_" . $self->query_member->taxon_id . "_";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 $stable_id .= sprintf ("%011.0d",$_paf_build_homology_idx++);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 $homology->stable_id($stable_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 $homology->method_link_type("ENSEMBL_ORTHOLOGUES");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 # QUERY member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 my $qlen = ($self->qend - $self->qstart + 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 $self->query_member->perc_cov(int($qlen*100/$self->query_member->seq_length));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 $self->query_member->perc_id(int($self->identical_matches*100.0/$qlen));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 $self->query_member->perc_pos(int($self->positive_matches*100/$qlen));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 my $cigar_line = $self->cigar_line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 #print("original cigar_line '$cigar_line'\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 $cigar_line =~ s/I/M/g;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 $cigar_line = compact_cigar_line($cigar_line);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 $self->query_member->cigar_line($cigar_line);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 #print(" '$cigar_line'\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 $homology->add_Member($self->query_member);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 # HIT member
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 # $self->hstart and $self->hend could be stored
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 my $hlen = ($self->hend - $self->hstart + 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 $self->hit_member->perc_cov(int($hlen*100/$self->hit_member->seq_length));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 $self->hit_member->perc_id(int($self->identical_matches*100.0/$hlen));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 $self->hit_member->perc_pos(int($self->positive_matches*100/$hlen));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 $cigar_line = $self->cigar_line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 #print("original cigar_line\n '$cigar_line'\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 $cigar_line =~ s/D/M/g;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 $cigar_line =~ s/I/D/g;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 $cigar_line = compact_cigar_line($cigar_line);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 $self->hit_member->cigar_line($cigar_line);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 #print(" '$cigar_line'\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 $homology->add_Member($self->hit_member);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 return $homology;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 sub compact_cigar_line
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 my $cigar_line = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 #print("cigar_line '$cigar_line' => ");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 my @pieces = ( $cigar_line =~ /(\d*[MDI])/g );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 my @new_pieces = ();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 foreach my $piece (@pieces) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 $piece =~ s/I/M/;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 if (! scalar @new_pieces || $piece =~ /D/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 push @new_pieces, $piece;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 next;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 if ($piece =~ /\d*M/ && $new_pieces[-1] =~ /\d*M/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 my ($matches1) = ($piece =~ /(\d*)M/);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 my ($matches2) = ($new_pieces[-1] =~ /(\d*)M/);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 if (! defined $matches1 || $matches1 eq "") {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 $matches1 = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 if (! defined $matches2 || $matches2 eq "") {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 $matches2 = 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 $new_pieces[-1] = $matches1 + $matches2 . "M";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 push @new_pieces, $piece;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 my $new_cigar_line = join("", @new_pieces);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 #print(" '$new_cigar_line'\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 return $new_cigar_line;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 ##########################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 # getter/setter methods
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 ##########################
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 sub query_member {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 throw("arg must be a [Bio::EnsEMBL::Compara::Member] not a [$arg]")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 unless($arg->isa('Bio::EnsEMBL::Compara::Member'));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 $self->{'_query_member'} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 return $self->{'_query_member'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 sub query_member_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 $self->{'_query_member_id'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 if ($self->{'_query_member_id'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 return $self->{'_query_member_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 } elsif ($self->{'_query_member'} and $self->{'_query_member'}->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177 return $self->{'_query_member'}->dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 sub query_genome_db_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 $self->{'_query_genome_db_id'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 if ($self->{'_query_genome_db_id'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 return $self->{'_query_genome_db_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 } elsif ($self->{'_query_member'} and $self->{'_query_member'}->genome_db
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 and $self->{'_query_member'}->genome_db->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 return $self->{'_query_member'}->genome_db->dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 sub hit_member {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 throw("arg must be a [Bio::EnsEMBL::Compara::Member] not a [$arg]")
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 unless($arg->isa('Bio::EnsEMBL::Compara::Member'));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 $self->{'_hit_member'} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 return $self->{'_hit_member'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 sub hit_member_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 $self->{'_hit_member_id'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 if ($self->{'_hit_member_id'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 return $self->{'_hit_member_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 } elsif ($self->{'_hit_member'} and $self->{'_hit_member'}->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 return $self->{'_hit_member'}->dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 sub hit_genome_db_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218 $self->{'_hit_genome_db_id'} = shift if (@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 if ($self->{'_hit_genome_db_id'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 return $self->{'_hit_genome_db_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 } elsif ($self->{'_hit_member'} and $self->{'_hit_member'}->genome_db
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 and $self->{'_hit_member'}->genome_db->dbID) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 return $self->{'_hit_member'}->genome_db->dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228 sub qstart {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 $self->{_qstart} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 return $self->{_qstart};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 sub hstart {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 $self->{_hstart} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 return $self->{_hstart};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 sub qend {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 $self->{_qend} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 return $self->{_qend};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 sub qlength {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 $self->{_qlength} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 return $self->{_qlength};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264 sub hend {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 $self->{_hend} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 return $self->{_hend};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 sub hlength{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 $self->{_hlength} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 return $self->{_hlength};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 sub score{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 $self->{_score} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 return $self->{_score};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 sub evalue {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 $self->{_evalue} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297 return $self->{_evalue};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 sub perc_ident {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 $self->{_perc_ident} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 return $self->{_perc_ident};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 sub perc_pos {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313 $self->{_perc_pos} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 return $self->{_perc_pos};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 sub identical_matches {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322 $self->{_identical_matches} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 if(defined($self->alignment_length)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 $self->perc_ident(int($arg*100/$self->alignment_length));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 return $self->{_identical_matches};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 sub positive_matches {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 $self->{_positive_matches} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335 if(defined($self->alignment_length)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 $self->perc_pos(int($arg*100/$self->alignment_length));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339 return $self->{_positive_matches};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342 sub alignment_length {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 $self->{_alignment_length} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348 return $self->{_alignment_length};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 sub cigar_line {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 $self->{_cigar_line} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 return $self->{_cigar_line};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360 sub hit_rank {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 my ($self,$arg) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 if (defined($arg)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364 $self->{_hit_rank} = $arg;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 return $self->{_hit_rank};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 sub dbID {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370 my ( $self, $dbID ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 $self->{'_dbID'} = $dbID if defined $dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 return $self->{'_dbID'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375 sub rhit_dbID {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 my ( $self, $dbID ) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 $self->{'_rhit_dbID'} = $dbID if defined $dbID;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 return $self->{'_rhit_dbID'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381 sub display_short {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383 print($self->get_description(), "\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 sub get_description {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387 my($self) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389 unless(defined($self)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 print("qy_stable_id\t\t\thit_stable_id\t\t\tscore\talen\t\%ident\t\%positive\thit_rank\n");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 return;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 my $qm = $self->query_member;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395 my $hm = $self->hit_member;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396 my $dbID = $self->dbID; $dbID = '' unless($dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398 my $header = "PAF(".$dbID.")";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399 $header .= "(".$self->rhit_dbID.")" if($self->rhit_dbID);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 while(length($header)<17) { $header .= ' '; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402 my $qmem = sprintf("%s(%d,%d)(%s:%d)",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403 $qm->stable_id, $self->qstart, $self->qend, $qm->chr_name, $qm->chr_start);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 my $hmem = sprintf("%s(%d,%d)(%s:%d)",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405 $hm->stable_id, $self->hstart, $self->hend, $hm->chr_name, $hm->chr_start);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 while(length($qmem)<50) { $qmem .= ' '; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 while(length($hmem)<50) { $hmem .= ' '; }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 my $desc_string = sprintf("%s%s%s%7.3f%7d%7d%7d%7d",
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411 $header, $qmem, $hmem,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 $self->score,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413 $self->alignment_length,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414 $self->perc_ident,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415 $self->perc_pos,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416 $self->hit_rank);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 return $desc_string;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 =head2 hash_key
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 Example : $somehash->{$paf->hash_key} = $someValue;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 Description: used for keeping track of known/stored gene/gene relationships
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 Returntype : string $key
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431 sub hash_key
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432 {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434 my $key = '1';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436 return $key unless($self->query_member);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437 return $key unless($self->hit_member);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 my $gene1 = $self->query_member->gene_member;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439 my $gene2 = $self->hit_member->gene_member;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440 $gene1 = $self->query_member unless($gene1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 $gene2 = $self->hit_member unless($gene2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442 if($gene1->genome_db_id > $gene2->genome_db_id) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 my $temp = $gene1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 $gene1 = $gene2;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445 $gene2 = $temp;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 $key = $gene1->stable_id . '_' . $gene2->stable_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448 return $key;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451 1;