annotate cpt_psm_plotter/lib/CPT/Bio/DataSource/Chado.pm @ 0:54c7a3ea81e2 draft

Uploaded
author cpt
date Tue, 05 Jul 2022 05:40:36 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
1 package CPT::Bio::DataSource::Chado;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
2 no warnings;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
3 use Moose;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
4 with 'CPT::Bio::DataSource';
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
5
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
6 has 'host' => ( is => 'rw', isa => 'Str' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
7 has 'pass' => ( is => 'rw', isa => 'Str' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
8 has 'user' => ( is => 'rw', isa => 'Str' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
9 has 'name' => ( is => 'rw', isa => 'Str' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
10 has 'port' => ( is => 'rw', isa => 'Str' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
11
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
12 has 'landmark' => ( is => 'rw', isa => 'Str' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
13 has 'organism' => ( is => 'rw', isa => 'Str' );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
14
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
15
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
16 sub getSeqIO {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
17 my ($self) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
18 require CPT::Chado::GMOD_Conf;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
19
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
20 my $db = Bio::DB::Das::Chado->new(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
21 -dsn => sprintf( 'dbi:Pg:dbname=%s;host=%s;port=%s', $self->name(), $self->host(), $self->port() ),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
22 -user => $self->user(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
23 -pass => $self->pass(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
24 -organism => $self->organism(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
25 -inferCDS => 1,
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
26
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
27 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
28
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
29 # Get a list of "segments". Essentially (seqlen IS NOT NULL)
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
30 my @segments = $db->segment( -name => $self->{'landmark'} );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
31
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
32 # TODO: Need to have a fallback method
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
33 # Should only produce ONE since we specify landmark exactly
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
34 foreach my $segment (@segments) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
35 my $stream = $segment->get_feature_stream();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
36 use Bio::Seq;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
37 my $seq_obj = Bio::Seq->new(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
38 -seq => $segment->seq->seq(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
39 -display_id => $segment->id()
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
40 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
41 use Bio::SeqFeature::Generic;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
42 while ( my $feat = $stream->next_seq ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
43
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
44 # In an IDEAL world we'd just do $seq_obj->add_SeqFeature($feat);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
45 #
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
46 # HOWEVER.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
47 #
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
48 # ------------- EXCEPTION: Bio::Root::NotImplemented -------------
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
49 # MSG: Abstract method "Bio::DB::Das::Chado::Segment::Feature::attach_seq" is not implemented by package Bio::DB::Das::Chado::Segment::Feature.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
50 # This is not your fault - author of Bio::DB::Das::Chado::Segment::Feature should be blamed!
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
51 # STACK: Error::throw
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
52 # STACK: Bio::Root::Root::throw /usr/local/share/perl/5.14.2/Bio/Root/Root.pm:472
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
53 # STACK: Bio::Root::RootI::throw_not_implemented /usr/local/share/perl/5.14.2/Bio/Root/RootI.pm:748
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
54 # STACK: Bio::DB::Das::Chado::Segment::Feature::attach_seq /usr/local/share/perl/5.14.2/Bio/DB/Das/Chado/Segment/Feature.pm:374
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
55 # STACK: Bio::Seq::add_SeqFeature /usr/local/share/perl/5.14.2/Bio/Seq.pm:1148
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
56 # STACK: chado_export.pl:59
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
57 # ----------------------------------------------------------------
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
58
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
59 # BUT WE CAN'T. >_> rageface.tiff
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
60
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
61 my %keys;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
62 foreach my $tag ( $feat->get_all_tags() ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
63 my @values = $feat->get_tag_values($tag);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
64 if ( $tag eq 'Note' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
65 $tag = 'note';
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
66 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
67 if ( $tag eq 'Dbxref' ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
68 $tag = 'db_xref';
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
69
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
70 #@values = map { if($_ ne 'GFF_source:Genbank'){ $_ } } @values;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
71 @values = grep !/GFF_source:Genbank/, @values;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
72 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
73 $keys{$tag} = \@values;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
74 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
75
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
76 #print $feat->gff_string(),"\n";
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
77 my $new_feat = new Bio::SeqFeature::Generic(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
78 -start => $feat->start(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
79 -end => $feat->end(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
80 -strand => $feat->strand(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
81 -primary_tag => $feat->primary_tag(),
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
82 -tag => \%keys,
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
83 );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
84 $seq_obj->add_SeqFeature($new_feat);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
85 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
86
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
87 return $seq_obj;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
88 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
89
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
90 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
91
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
92 no Moose;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
93 1;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
94
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
95 __END__
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
96
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
97 =pod
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
98
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
99 =encoding UTF-8
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
100
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
101 =head1 NAME
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
102
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
103 CPT::Bio::DataSource::Chado
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
104
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
105 =head1 VERSION
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
106
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
107 version 1.99.4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
108
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
109 =head2 getSeqIO
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
110
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
111 supposed to get a seqIO object from a chado DB. not fully implemented
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
112
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
113 =head1 AUTHOR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
114
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
115 Eric Rasche <rasche.eric@yandex.ru>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
116
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
117 =head1 COPYRIGHT AND LICENSE
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
118
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
119 This software is Copyright (c) 2014 by Eric Rasche.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
120
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
121 This is free software, licensed under:
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
122
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
123 The GNU General Public License, Version 3, June 2007
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
124
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
125 =cut