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

Annotation of /FigWebServices/cv.cgi

Parent Directory Parent Directory | Revision Log Revision Log


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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3