[Bio] / FigWebServices / feature.cgi Repository:
ViewVC logotype

Annotation of /FigWebServices/feature.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.11 - (view) (download)

1 : olson 1.6 #
2 : golsen 1.11 # Copyright (c) 2003-20012 University of Chicago and Fellowship
3 : olson 1.6 # for Interpretations of Genomes. All Rights Reserved.
4 :     #
5 :     # This file is part of the SEED Toolkit.
6 : parrello 1.7 #
7 : olson 1.6 # The SEED Toolkit is free software. You can redistribute
8 :     # it and/or modify it under the terms of the SEED Toolkit
9 : parrello 1.7 # Public License.
10 : olson 1.6 #
11 :     # You should have received a copy of the SEED Toolkit Public License
12 :     # along with this program; if not write to the University of Chicago
13 :     # at info@ci.uchicago.edu or the Fellowship for Interpretation of
14 :     # Genomes at veronika@thefig.info or download a copy from
15 :     # http://www.theseed.org/LICENSE.TXT.
16 :     #
17 :    
18 : mkubal 1.1 use FIG;
19 :     my $fig = new FIG;
20 :    
21 :     use HTML;
22 :     use strict;
23 :     use GenoGraphics;
24 :     use CGI;
25 :     my $cgi = new CGI;
26 : overbeek 1.8 use FIG_CGI;
27 :     use FigWebServices::SeedComponents;
28 : mkubal 1.1
29 : overbeek 1.8 my ($fig, $cgi, $user) = FIG_CGI::init(debug_save => 0,
30 : overbeek 1.9 debug_load => 0,
31 : overbeek 1.8 print_params => 0
32 :     );
33 : golsen 1.11
34 : mkubal 1.1 my $html = [];
35 : golsen 1.11 push( @$html, "<link type='text/css' rel='stylesheet' href='./Html/frame.css'>" );
36 :    
37 :     my $feature = $cgi->param( 'feature' );
38 :     if ( $feature && $feature !~ /^fig\|/ )
39 :     {
40 :     $feature = $_ if ( $_ = $fig->by_alias( $feature ) )
41 :     }
42 : mkubal 1.1
43 : golsen 1.11 if ( ! $feature )
44 : mkubal 1.1 {
45 : golsen 1.11 unshift @$html, "<TITLE>The SEED Feature Page</TITLE>\n";
46 : mkubal 1.1 push(@$html,"<h1>Sorry, you need to specify a feature</h1>\n");
47 :     }
48 : golsen 1.11 elsif ( $feature =~ /^fig\|/ )
49 :     {
50 :     my $request = $cgi->param("request") || "";
51 : mkubal 1.1
52 : golsen 1.11 if ($request eq "view_annotations") { &view_annotations($fig,$cgi,$html,$feature); }
53 :     elsif ($request eq "view_all_annotations") { &view_all_annotations($fig,$cgi,$html,$feature); }
54 :     elsif ($request eq "dna_sequence") { &dna_sequence($fig,$cgi,$html,$feature); }
55 :     else { &show_initial($fig,$cgi,$html,$feature); }
56 :     }
57 :     else
58 : mkubal 1.1 {
59 : golsen 1.11 unshift @$html, "<TITLE>The SEED Feature Page</TITLE>\n";
60 :     push(@$html,"<h1>Sorry, $feature appears not to have a FIG id at this point</h1>\n");
61 : mkubal 1.1 }
62 :    
63 :     &HTML::show_page($cgi,$html);
64 :    
65 :    
66 :     #==============================================================================
67 :     # view_annotations
68 :     #==============================================================================
69 :    
70 :     sub view_annotations {
71 : disz 1.2 my($fig,$cgi,$html,$feature) = @_;
72 : mkubal 1.1
73 : golsen 1.11 unshift @$html, "<TITLE>The SEED:Feature Annotations</TITLE>\n";
74 : mkubal 1.1 my $col_hdrs = ["who","when","annotation"];
75 : disz 1.2 my $tab = [ map { [$_->[2],$_->[1],"<pre>" . $_->[3] . "<\/pre>"] } $fig->feature_annotations($feature) ];
76 : mkubal 1.1 if (@$tab > 0)
77 :     {
78 : disz 1.2 push(@$html,&HTML::make_table($col_hdrs,$tab,"Annotations for $feature"));
79 : mkubal 1.1 }
80 :     else
81 :     {
82 : disz 1.2 push(@$html,"<h1>No Annotations for $feature</h1>\n");
83 : mkubal 1.1 }
84 :     }
85 :    
86 : golsen 1.11
87 : mkubal 1.1 sub view_all_annotations {
88 :     my($fig,$cgi,$html,$peg) = @_;
89 :     my($ann);
90 :    
91 : golsen 1.10 unshift @$html, "<TITLE>The SEED: Feature Annotations</TITLE>\n";
92 : mkubal 1.1 if ($fig->is_real_feature($peg))
93 :     {
94 :     my $col_hdrs = ["who","when","PEG","genome","annotation"];
95 :     my @related = $fig->related_by_func_sim($peg,$cgi->param('user'));
96 :     push(@related,$peg);
97 :    
98 :     my @annotations = $fig->merged_related_annotations(\@related);
99 :    
100 : parrello 1.7 my $tab = [ map { $ann = $_;
101 : mkubal 1.1 [$ann->[2],$ann->[1],&HTML::fid_link($cgi,$ann->[0]),
102 :     $fig->genus_species(&FIG::genome_of($ann->[0])),
103 :     "<pre>" . $ann->[3] . "</pre>"
104 :     ] } @annotations];
105 :     if (@$tab > 0)
106 :     {
107 :     push(@$html,&HTML::make_table($col_hdrs,$tab,"All Related Annotations for $peg"));
108 :     }
109 :     else
110 :     {
111 :     push(@$html,"<h1>No Annotations for $peg</h1>\n");
112 :     }
113 :     }
114 :     }
115 :    
116 :    
117 :     #==============================================================================
118 :     # show_initial
119 :     #==============================================================================
120 :    
121 :     sub show_initial {
122 : disz 1.2 my($fig,$cgi,$html,$feature) = @_;
123 : mkubal 1.1
124 : disz 1.2 unshift @$html, "<TITLE>The SEED: Feature Page</TITLE>\n";
125 :     my $gs = $fig->org_of($feature);
126 : overbeek 1.8
127 :     if (! $fig->is_real_feature($feature))
128 :     {
129 :     push(@$html,"<h1>Sorry, $feature is an unknown identifier</h1>\n");
130 :     }
131 :     else
132 :     {
133 :     push(@$html,"<h1>Feature $feature: $gs</h1>\n");
134 :     &display_fid($fig,$cgi,$html,$feature);
135 :     }
136 : mkubal 1.1 }
137 :    
138 :     #==============================================================================
139 : overbeek 1.8 # display_fid
140 : mkubal 1.1 #==============================================================================
141 :    
142 : overbeek 1.8 sub display_fid {
143 :     my($fig,$cgi,$html,$fid) = @_;
144 : mkubal 1.1 my $loc;
145 :    
146 : overbeek 1.8 my $graph = &FigWebServices::SeedComponents::Protein::get_peg_view({ fig_object => $fig,
147 :     peg_id => $fid
148 :     }
149 :     );
150 :     push(@$html,$graph);
151 :    
152 :     my $contextH = &FigWebServices::SeedComponents::Protein::get_chromosome_context({ fig_object => $fig,
153 :     peg_id => $fid
154 :     }
155 :     );
156 :    
157 :     push(@$html,$contextH->{table});
158 : mkubal 1.1
159 : golsen 1.11 push @$html, $cgi->hr;
160 :     my $query = $cgi->url(-query => 1);
161 :     $query =~ s/^[^?]*\?//;
162 :     my $link1 = "$FIG_Config::cgi_url/feature.cgi?$query&request=view_annotations";
163 :     my $link2 = "$FIG_Config::cgi_url/feature.cgi?$query&request=view_all_annotations";
164 :     push(@$html,"<br><a href=$link1>To View Annotations</a> / <a href=$link2>To View All Related Annotations</a>\n");
165 : mkubal 1.1
166 :    
167 : golsen 1.11 my $link = "$FIG_Config::cgi_url/feature.cgi?$query&request=dna_sequence";
168 : mkubal 1.1 push(@$html,"<br><a href=$link>DNA Sequence</a>\n");
169 :    
170 : golsen 1.11 my $user = $cgi->param('user') || '';
171 :     if ( $user )
172 : parrello 1.7 {
173 : golsen 1.11 $link = "$FIG_Config::cgi_url/fid_checked.cgi?fid=$feature&user=$user&checked=$feature&assign/annotate=assign/annotate";
174 :     push(@$html,"<br><a href=$link target=_blank>To Make an Annotation</a>\n");
175 : mkubal 1.1 }
176 :    
177 : overbeek 1.8 my $has_translation = $fig->translatable($fid);
178 : mkubal 1.1
179 :    
180 :     }
181 :    
182 : golsen 1.11 #==============================================================================
183 :     # dna_sequence
184 :     #==============================================================================
185 :    
186 : mkubal 1.1 sub dna_sequence {
187 :     my($fig,$cgi,$html,$fid) = @_;
188 :     my($seq,$func,$i);
189 :    
190 :     unshift @$html, "<TITLE>The SEED: Nucleotide Sequence</TITLE>\n";
191 :     if ($seq = $fig->dna_seq($fig->genome_of($fid),scalar $fig->feature_location($fid)))
192 :     {
193 : disz 1.2 $func = $fig->function_of($feature,$cgi->param('user'));
194 : golsen 1.11
195 : mkubal 1.1 push(@$html,$cgi->pre,">$fid $func\n");
196 :     for ($i=0; ($i < length($seq)); $i += 60)
197 :     {
198 :     if ($i > (length($seq) - 60))
199 :     {
200 :     push(@$html,substr($seq,$i) . "\n");
201 :     }
202 :     else
203 :     {
204 :     push(@$html,substr($seq,$i,60) . "\n");
205 :     }
206 :     }
207 :     push(@$html,$cgi->end_pre);
208 :     }
209 :     else
210 :     {
211 :     push(@$html,$cgi->h1("No DNA sequence available for $fid"));
212 :     }
213 :     }
214 : parrello 1.7
215 : mkubal 1.1

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3