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

Annotation of /FigWebServices/cv.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download)

1 : mkubal 1.1 # -*- perl -*-
2 :     use InterfaceRoutines;
3 :     use FIG;
4 :     use FIG_Config;
5 :     use URI::Escape; # uri_escape
6 :     use HTML;
7 :     use Data::Dumper;
8 :     #use strict;
9 :     use GenoGraphics;
10 :     use CGI;
11 :     use Tracer;
12 :    
13 :     my $cgi = new CGI;
14 :    
15 :     use HTML;
16 :     use raelib;
17 :     my $raelib=new raelib;
18 :    
19 :     use LWP::Simple qw(!head); # see the caveat in perldoc LWP about importing two head methods.
20 :    
21 :     #for testing
22 :    
23 : mkubal 1.2 my $peg = $cgi->param('prot');
24 :     #my $peg = "fig|9598.2.peg.1";
25 : mkubal 1.1
26 :     my $fig;
27 :     eval {
28 :     $fig = new FIG;
29 :     };
30 :    
31 :     if ($@ ne "")
32 :     {
33 :     my $err = $@;
34 :    
35 :     my(@html);
36 :    
37 :     push(@html, $cgi->p("Error connecting to SEED database."));
38 :     if ($err =~ /Could not connect to DBI:.*could not connect to server/)
39 :     {
40 :     push(@html, $cgi->p("Could not connect to relational database of type $FIG_Config::dbms named $FIG_Config::db on port $FIG_Config::dbport."));
41 :     }
42 :     else
43 :     {
44 :     push(@html, $cgi->pre($err));
45 :     }
46 :     &HTML::show_page($cgi, \@html, 1);
47 :     exit;
48 :     }
49 :    
50 :     my $html = [];
51 :     my $user = $cgi->param('user');
52 :    
53 :     unshift(@$html, "<TITLE>Controlled Vocabulary Workbench</TITLE>\n");
54 :    
55 :     my $ids;
56 :     my $tag_to_id;
57 :     my $inputs;
58 :    
59 :     if ($cgi->param('request') eq "Delete Checked Terms")
60 :     {
61 :     my %id_term_to_source;
62 :     my @checked;
63 :     my @param_list = $cgi->param();
64 :     if (@param_list)
65 :     {
66 :     foreach my $p (@param_list)
67 :     {
68 :     if ( $p=~/delete_checked/)
69 :     {
70 :     if($cgi->param($p))
71 :     {
72 :     $value = $cgi->param($p);
73 :     push(@checked,$value)
74 :     }
75 :     }
76 :     }
77 :    
78 :     for my $c (@checked)
79 :     {
80 :     @temp = split('\t',$c);
81 :     $id_term_to_source{$temp[1]} = $temp[0];
82 :     }
83 :     }
84 :     &delete_terms($fig,$cgi,$html,$peg,\%id_term_to_source);
85 :     }
86 :     elsif ($cgi->param('request') eq "Search Selected Controlled Vocabulary")
87 :     {
88 :     if ($cgi->param('search_term')) {$search_term=$cgi->param('search_term')}
89 :     if ($cgi->param('select_cv')) {$cv=$cgi->param('select_cv')}
90 :     &search($fig,$cgi,$html,$peg,$cv,$search_term);
91 :     }
92 : mkubal 1.2 elsif ($cgi->param('request') eq "Add New Terms")
93 :     {
94 :     my %id_term_to_source;
95 :     my @checked;
96 :     my @param_list = $cgi->param();
97 :     if (@param_list)
98 :     {
99 :     foreach my $p (@param_list)
100 :     {
101 :     if ( $p=~/add_checked/)
102 :     {
103 :     print STDERR "checked_param:$p\n";
104 :     if($cgi->param($p))
105 :     {
106 :     $value = $cgi->param($p);
107 :     push(@checked,$value)
108 :     }
109 :     }
110 :     }
111 :    
112 :     for my $c (@checked)
113 :     {
114 :     @temp = split("split_here",$c);
115 :     $source = $temp[0];
116 :     $id_term = $temp[1];
117 :     $id_term_to_source{$id_term} =$source ;
118 :     print STDERR "checked_source:$source\n";
119 :     print STDERR "checked_value:$c\n";
120 :     }
121 :     }
122 :     &add_terms($fig,$cgi,$html,$peg,\%id_term_to_source);
123 :    
124 :     }
125 :    
126 : mkubal 1.1 elsif ($cgi->param('request') eq "Add Custom Term")
127 :     {
128 : mkubal 1.2 my %id_term_to_source;
129 :     my $id_term;
130 : mkubal 1.1 if ($cgi->param('custom_source')) {$custom_source=$cgi->param('custom_source')}
131 :     if ($cgi->param('custom_id')) {$custom_id=$cgi->param('custom_id')}
132 :     if ($cgi->param('custom_term')) {$custom_term=$cgi->param('custom_term')}
133 : mkubal 1.2 $id_term = $custom_id.": ".$custom_term;
134 :     $id_term_to_source{$id_term} = $custom_source;
135 :     &add_terms($fig,$cgi,$html,$peg,\%id_term_to_source);
136 : mkubal 1.1 }
137 :    
138 :     else
139 :     {
140 :     &show_initial($fig,$cgi,$html,$peg);
141 :     }
142 :    
143 :     &HTML::show_page($cgi,$html,1);
144 :     exit;
145 :    
146 :     sub delete_terms
147 :     {
148 :     my ($fig,$cgi,$html,$peg,$id_term_to_source) = @_;
149 :     my @id_term = keys(%{$id_term_to_source});
150 :     foreach my $it (@id_term){$fig->delete_attribute($peg,$id_term_to_source->{$it},$it)}
151 :     &show_initial($fig,$cgi,$html,$peg);
152 :     }
153 :    
154 :     sub search
155 :     {
156 :     my ($fig,$cgi,$html,$peg,$cv,$search_term) =@_;
157 : mkubal 1.2 $file = $FIG_Config::global."/".$cv."_lookup.txt";
158 :     open(LOOKUP,"$file");
159 : mkubal 1.1 my @lines = <LOOKUP>;
160 : mkubal 1.2 my @grep_results = grep(/$search_term/i,@lines);
161 :     print STDERR "$grep_results[0]\n";
162 :     my $search_results = [@grep_results];
163 : mkubal 1.1 &show_search_results($fig,$cgi,$html,$peg,$cv,$search_results);
164 :     }
165 :    
166 : mkubal 1.2 sub add_terms
167 : mkubal 1.1 {
168 : mkubal 1.2 my ($fig,$cgi,$html,$peg,$id_term_to_source) =@_ ;
169 :     my @id_term = keys(%{$id_term_to_source});
170 :     foreach my $it (@id_term)
171 :     {
172 :     print STDERR "added_source:$id_term_to_source->{$it}\n";
173 :     print STDERR "added_value:$it\n";
174 :    
175 :     $fig->add_attribute($peg,$id_term_to_source->{$it},$it);
176 :    
177 :     }
178 :     &show_initial($fig,$cgi,$html,$peg);
179 : mkubal 1.1 }
180 :    
181 :     sub show_search_results {
182 :     my ($fig,$cgi,$html,$peg,$cv,$search_results)=@_;
183 :     @sr = @$search_results;
184 :     my $add_col_hdrs = ["Add","Source","ID: Term"];
185 :     my $add_table_rows;
186 : mkubal 1.2 my $counter = 0;
187 : mkubal 1.1 for my $r (@sr)
188 :     {
189 :     @temp = split("\t",$r);
190 :     $row = [];
191 :     $source = $cv;
192 : mkubal 1.2 $id= $temp[1];
193 :     print STDERR "id:$id\n";
194 :     $term = $temp[2];
195 :     print STDERR "term:$term\n";
196 :     $id_and_term = $id.": ".$term;
197 :     $cb_value = $cv."split_here".$id.": ".$term;
198 :     print STDERR "iandt:$id_and_term\n";
199 :     $cb ="<input type=checkbox name=add_checked_$counter value='$cb_value'>" ;
200 : mkubal 1.1 push(@$row,$cb);
201 :     push(@$row,$source);
202 :     push(@$row,$id_and_term);
203 : mkubal 1.2 push(@$add_table_rows,$row);
204 :     $counter = $counter + 1;
205 : mkubal 1.1 }
206 :    
207 :     my $delete_col_hdrs = ["Delete","Source","ID: Term"];
208 :     my @results = $fig->get_attributes($peg,'GO');
209 :     my $delete_table_rows;
210 : mkubal 1.2 $counter = 0;
211 : mkubal 1.1 for my $r (@results)
212 :     {
213 :     $row = [];
214 :     $source = $r->[1];
215 : mkubal 1.2
216 : mkubal 1.1 $id_and_term = $r->[2];
217 :     $cb ="<input type=checkbox name=delete_checked_$counter value=$id_and_term>" ;
218 :     push(@$row,$cb);
219 :     push(@$row,$source);
220 :     push(@$row,$id_and_term);
221 :     push(@$delete_table_rows,$row);
222 :     $counter = $counter + 1;
223 :     }
224 :    
225 :     push @$html,
226 :     $cgi->start_multipart_form(),
227 :     "<h2>Controlled Vocabulary Workbench</h2>\n",
228 :     $cgi->hr,
229 :     "<h4>Current Terms Assigned To Peg </h4>\n",
230 :     &HTML::make_table($delete_col_hdrs,$delete_table_rows),
231 :     $cgi->br,
232 :     $cgi->submit(-name=>'request', -value=>'Delete Checked Terms'),
233 :     $cgi->hr,
234 :     $cgi->br,
235 :     "<h4>Search for New Terms to Add </h4>\n",
236 :     "<select name=select_cv>
237 :     <option value=go >Gene Ontology</option>
238 :     </select> &nbsp;&nbsp",
239 :     $cgi->textfield(-name => "search_term", -size => 20),
240 :     $cgi->submit(-name=>'request', -value=>'Search Selected Controlled Vocabulary'),
241 :     $cgi->br,
242 :     &HTML::make_table($add_col_hdrs,$add_table_rows),
243 : mkubal 1.2 $cgi->br,
244 :     $cgi->submit(-name=>'request', -value=>'Add New Terms'),
245 : mkubal 1.1 $cgi->hr,
246 :     $cgi->br,
247 :     "<h4>Add Custom Terms </h4>\n",
248 :     "<h5>Source </h5>\n",
249 :     $cgi->textfield(-name => "custom_source", -size => 20),
250 :     "<h5>ID</h5>\n",
251 :     $cgi->textfield(-name => "custom_id", -size => 20),
252 :     "<h5>Term</h5>\n",
253 :     $cgi->textfield(-name => "custom_term", -size => 20),
254 :     $cgi->br,$cgi->br,
255 :     $cgi->submit(-name=>'request', -value=>'Add Custom Term'),
256 :     $cgi->br,
257 :     $cgi->hr,
258 :     $cgi->end_form;
259 :    
260 :     return $html;
261 :     }
262 :    
263 :     sub show_initial {
264 :     my ($fig,$cgi,$html,$peg)=@_;
265 :     # generate a blank page
266 :    
267 : mkubal 1.2 my $delete_col_hdrs = ["Delete","Source","ID: Term"];
268 :     my @results = $fig->get_attributes($peg);
269 :     print STDERR "@results\n";
270 :     print STDERR "peg:$peg\n";
271 :     my $delete_table_rows;
272 :     my $counter =0;
273 : mkubal 1.1 for my $r (@results)
274 :     {
275 :     $row = [];
276 :     $source = $r->[1];
277 : mkubal 1.2 print STDERR "source:$source\n";
278 : mkubal 1.1 $id_and_term = $r->[2];
279 : mkubal 1.2 $cb ="<input type=checkbox name=delete_checked_$counter value=$source\t$id_and_term>" ;
280 : mkubal 1.1 push(@$row,$cb);
281 :     push(@$row,$source);
282 :     push(@$row,$id_and_term);
283 : mkubal 1.2 push(@$delete_table_rows,$row);
284 :     $counter = $counter + 1;
285 : mkubal 1.1 }
286 : mkubal 1.2 my $link = "protein.cgi?prot=$peg";
287 :     push @$html,
288 : mkubal 1.1 $cgi->start_multipart_form(),
289 : mkubal 1.2 $cgi->br,
290 :     "<a href=$link>Back to protein page</a>",
291 :     $cgi->br,
292 : mkubal 1.1 "<h2>Controlled Vocabulary Workbench</h2>\n",
293 :     $cgi->hr,
294 :     "<h4>Current Terms Assigned To Peg </h4>\n",
295 : mkubal 1.2 &HTML::make_table($delete_col_hdrs,$delete_table_rows),
296 : mkubal 1.1 $cgi->br,
297 :     $cgi->submit(-name=>'request', -value=>'Delete Checked Terms'),
298 :     $cgi->hr,
299 :     $cgi->br,
300 :     "<h4>Search for New Terms to Add </h4>\n",
301 :     "<select name=select_cv>
302 : mkubal 1.2 <option value=GO >Gene Ontology</option>
303 : mkubal 1.1 </select> &nbsp;&nbsp",
304 :     $cgi->textfield(-name => 'search_term', -size => 20),
305 :     $cgi->submit(-name=>'request', -value=>'Search Selected Controlled Vocabulary'),
306 :     $cgi->hr,
307 :     $cgi->br,
308 :     "<h4>Add Custom Terms </h4>\n",
309 :     "<h5>Source </h5>\n",
310 :     $cgi->textfield(-name => 'custom_source', -size => 20),
311 :     "<h5>ID</h5>\n",
312 :     $cgi->textfield(-name => 'custom_id', -size => 20),
313 :     "<h5>Term</h5>\n",
314 : mkubal 1.2 $cgi->textfield(-name => 'custom_term', -size => 20),
315 : mkubal 1.1 $cgi->br,$cgi->br,
316 :     $cgi->submit(-name=>'request', -value=>'Add Custom Term'),
317 :     $cgi->br,
318 :     $cgi->hr,
319 :     $cgi->end_form;
320 :    
321 :     return $html;
322 : mkubal 1.2 }
323 : mkubal 1.1

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3