fixed recursive_children cvterm function, and added tests for parents and children
[cxgn-corelibs.git] / lib / CXGN / CDBI / SGN / Unigene.pm
blob2225af75d73de1142e0afaa554b6302db3a5bfcd
1 package CXGN::CDBI::SGN::Unigene;
2 use strict;
4 =head1 DATA FIELDS
6 Primary Keys:
7 unigene_id
9 Columns:
10 unigene_id
11 unigene_build_id
12 consensi_id
13 cluster_no
14 contig_no
15 nr_members
16 database_name
17 sequence_name
19 Sequence:
20 (sgn base schema).unigene_unigene_id_seq
22 =cut
24 use base 'CXGN::CDBI::Class::DBI';
25 __PACKAGE__->table(__PACKAGE__->qualify_schema('sgn') . '.unigene');
27 our @primary_key_names =
28 qw/
29 unigene_id
32 our @column_names =
33 qw/
34 unigene_id
35 unigene_build_id
36 consensi_id
37 cluster_no
38 contig_no
39 nr_members
40 database_name
41 sequence_name
44 __PACKAGE__->columns( Primary => @primary_key_names, );
45 __PACKAGE__->columns( All => @column_names, );
46 __PACKAGE__->SUPER::sequence( __PACKAGE__->base_schema('sgn').'.unigene_unigene_id_seq' );
49 __PACKAGE__->has_a(unigene_build_id => 'CXGN::CDBI::SGN::UnigeneBuild');
50 __PACKAGE__->has_a(consensi_id => 'CXGN::CDBI::SGN::UnigeneConsensi');
51 __PACKAGE__->has_many(members => 'CXGN::CDBI::SGN::UnigeneMember');
53 sub build_object {
54 shift->unigene_build_id(@_);
57 sub consensus_object {
58 shift->consensi_id(@_);
61 sub seq {
62 my $this = shift;
64 if(my $c = $this->consensi_id) {
65 return $c->seq;
66 } else {
67 my @members = $this->members;
68 @members > 1 and
69 die 'Unigene ID ',$this->unigene_id,' has '.$this->members.' members, but no consensus sequence!';
70 @members < 1 and
71 die 'Unigene ID ',$this->unigene_id,' has no members!';
72 use Data::Dumper;
73 return $members[0]->est_object->trimmed_seq;
77 sub external_identifier {
78 'SGN-U'.shift->unigene_id
81 sub info_page_href {
82 my $this = shift;
83 my $infopage = '/search/unigene.pl?unigene_id='.$this->external_identifier
86 sub species_name {
87 my $this = shift;
89 die 'not yet implemented. wanna do it?';
94 ###
95 1;#do not remove
96 ###