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

Diff of /FigWebServices/get_dlits.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9, Tue Jul 8 21:26:13 2008 UTC revision 1.11, Thu Jul 10 19:35:34 2008 UTC
# Line 19  Line 19 
19  #  #
20  #  DBMS tables used:  #  DBMS tables used:
21  #  #
22  #     dlit  #     dlits
23  #     flds => "status char(1), md5_hash varchar(32), pubmed varchar(16), curator varchar(30), go_code varchar(15)"  #     flds => "status char(1), md5_hash varchar(32), pubmed varchar(16), curator varchar(30), go_code varchar(15)"
24  #  #
25  #     titles  #     titles
# Line 44  Line 44 
44  use CGI;  use CGI;
45  my $cgi = new CGI;  my $cgi = new CGI;
46    
47    use Data::Dumper;
48    
49  if (0)  if (0)
50  {  {
# Line 76  Line 77 
77  my($genome);  my($genome);
78    
79  my $html = [];  my $html = [];
80  unshift @$html, "<TITLE>Get Dlits</TITLE>\n";  push @$html, "<TITLE>Get Dlits</TITLE>\n";
81    
82  my $user      = $cgi->param('user');           #  Current user  my $user      = $cgi->param('user');           #  Current user
83  my $curator   = $cgi->param('curator') || '';  #  Filter roles by subsystem curator  my $curator   = $cgi->param('curator') || '';  #  Filter roles by subsystem curator
# Line 85  Line 86 
86  my $role      = $cgi->param('role');           #  Find lit by role  my $role      = $cgi->param('role');           #  Find lit by role
87  my $show_just = $cgi->param('show_just');      #  Filter lit by status  my $show_just = $cgi->param('show_just');      #  Filter lit by status
88     $show_just = ($show_just eq "all") ? '' : $show_just;     $show_just = ($show_just eq "all") ? '' : $show_just;
 my $who_says  = $cgi->param('who_says');       #  Show the responsible party  
89    
90  #  Requested actions:  #  Requested actions:
91    
# Line 120  Line 120 
120      $done = 1;      $done = 1;
121  }  }
122    
123    
124    #  This is a one-time special case to add an index to the dlits table
125    
126    if ( $user eq 'master:gjo' && $cgi->param('add_pubmed_index') ) { &add_pubmed_index( $rdbH, $html ) }
127    
128    
129  #  Process a page of curated literature ----------------------------------------  #  Process a page of curated literature ----------------------------------------
130    
131  if ( $submit5 && ! $done )  if ( $submit5 && ! $done )
# Line 141  Line 147 
147  elsif ( $ref_id )  elsif ( $ref_id )
148  {  {
149      my $and_status = $show_just ? " AND ( dlits.status = '$show_just' )" : '';      my $and_status = $show_just ? " AND ( dlits.status = '$show_just' )" : '';
150      my $tuples = $rdbH->SQL( "SELECT DISTINCT status,md5_hash,curator      my $tuples = $rdbH->SQL( "SELECT DISTINCT status,md5_hash,curator "
151                                FROM dlits                             . "FROM dlits "
152                                WHERE ( pubmed = '$ref_id' )"                             . "WHERE ( pubmed = '$ref_id' )"
153                                . $and_status                                . $and_status
154                             );                             );
155      my @to_display = ();      my @to_display = ();
156      foreach my $x ( @$tuples )      foreach my $x ( @$tuples )
157      {      {
158          my( $status, $hash, $cur ) = @$x;          my( $status, $hash, $prev_curator ) = @$x;
159          my @pegs = $fig->pegs_with_md5( $hash );          my @pegs = grep { $fig->is_real_feature($_) }
160                       $fig->pegs_with_md5( $hash );
161          if ( @pegs > 0 )          if ( @pegs > 0 )
162          {          {
163              push( @to_display, [ $status, $pegs[0], $ref_id, $cur ] );              push( @to_display, [ $status, $pegs[0], $ref_id, $prev_curator ] );
164          }          }
165      }      }
166    
# Line 166  Line 173 
173  {  {
174      my $roleQ = quotemeta $role;      my $roleQ = quotemeta $role;
175      my $and_status = $show_just ? " AND ( dlits.status = '$show_just' )" : '';      my $and_status = $show_just ? " AND ( dlits.status = '$show_just' )" : '';
176      my $tuples = $rdbH->SQL( "SELECT DISTINCT dlits.status,dlits.md5_hash,dlits.pubmed,dlits.curator      my $tuples = $rdbH->SQL( "SELECT DISTINCT dlits.status,dlits.md5_hash,dlits.pubmed,dlits.curator "
177                                FROM hash_role,dlits                             . "FROM hash_role,dlits "
178                                WHERE hash_role.role = '$roleQ' AND hash_role.md5_hash = dlits.md5_hash"                             . "WHERE ( hash_role.role = '$roleQ') AND ( hash_role.md5_hash = dlits.md5_hash )"
179                                . $and_status                                . $and_status
180                             );                             );
181      my @to_display = ();      my @to_display = ();
182      foreach my $x ( @$tuples )      foreach my $x ( @$tuples )
183      {      {
184          my( $status, $hash, $pubmed, $cur ) = @$x;          my( $status, $hash, $pubmed, $prev_curator ) = @$x;
185          my @pegs = $fig->pegs_with_md5( $hash );          my @pegs = grep { $fig->is_real_feature($_) }
186                       $fig->pegs_with_md5( $hash );
187          if ( @pegs > 0 )          if ( @pegs > 0 )
188          {          {
189              push( @to_display, [ $status, $pegs[0], $pubmed, $cur ] );              push( @to_display, [ $status, $pegs[0], $pubmed, $prev_curator ] );
190          }          }
191      }      }
192    
# Line 197  Line 205 
205    
206      my @roles = sort { lc $a cmp lc $b }  #  Make sort case insensitive      my @roles = sort { lc $a cmp lc $b }  #  Make sort case insensitive
207                  map { $_->[0] }                  map { $_->[0] }
208                  @{ $rdbH->SQL( "SELECT DISTINCT hash_role.role                  @{ $rdbH->SQL( "SELECT DISTINCT hash_role.role "
209                                  FROM hash_role,dlits,curr_role                               . "FROM hash_role,dlits,curr_role "
210                                  WHERE hash_role.md5_hash = dlits.md5_hash $where1 $where2"                               . "WHERE hash_role.md5_hash = dlits.md5_hash $where1 $where2"
211                               ) };                               ) };
212      push( @$html, $cgi->start_form(-action => "get_dlits.cgi", -method => 'post'),      push( @$html, $cgi->start_form(-action => "get_dlits.cgi", -method => 'post'),
213                    $cgi->hidden( -name => 'user',     -value => $user ),                    $cgi->hidden( -name => 'user',     -value => $user ),
214                    $cgi->hidden( -name => 'curator',  -value => $curator ),                    $cgi->hidden( -name => 'curator',  -value => $curator )
                   $cgi->hidden( -name => 'who_says', -value => $who_says )  
215          );          );
216    
217      my $whom   = $curator ? "'$curator'" : "any one";      my $whom   = $curator ? "'$curator'" : "any one";
# Line 229  Line 236 
236  {  {
237      my $genome = $1;      my $genome = $1;
238      my $where  = $show_just ? " AND (dlits.status = '$show_just')" : '';      my $where  = $show_just ? " AND (dlits.status = '$show_just')" : '';
239      my $tuples = $rdbH->SQL( "SELECT DISTINCT dlits.status,dlits.md5_hash,dlits.pubmed,dlits.curator      my $tuples = $rdbH->SQL( "SELECT DISTINCT dlits.status,dlits.md5_hash,dlits.pubmed,dlits.curator "
240                                FROM genome_hash,dlits                             . "FROM genome_hash,dlits "
241                                WHERE genome_hash.genome = '$genome' AND genome_hash.md5_hash = dlits.md5_hash $where"                             . "WHERE genome_hash.genome = '$genome' AND genome_hash.md5_hash = dlits.md5_hash $where"
242                             );                             );
243      my @to_display = ();      my @to_display = ();
244      foreach my $x ( @$tuples )      foreach my $x ( @$tuples )
245      {      {
246          my ( $status, $hash, $pubmed, $cur ) = @$x;          my ( $status, $hash, $pubmed, $prev_curator ) = @$x;
247          foreach my $peg ( $fig->pegs_with_md5($hash) )          push @to_display, map  { [ $status, $_, $pubmed, $prev_curator ] }
248          {                            grep { &FIG::genome_of($_) eq $genome && $fig->is_real_feature($_) }
249              if ( &FIG::genome_of($peg) eq $genome )                            $fig->pegs_with_md5($hash);
             {  
                 push(@to_display,[ $status, $peg, $pubmed, $cur ]);  
             }  
         }  
250      }      }
251    
252      &display_set( $fig, $cgi, $html, \@to_display, "Genes for $genomeD", 'Show Genome' );      &display_set( $fig, $cgi, $html, \@to_display, "Genes for $genomeD", 'Show Genome' );
253  }  }
254    
# Line 257  Line 261 
261    
262      my $where   = $show_just ? " AND (dlits.status = '$show_just')" : "";      my $where   = $show_just ? " AND (dlits.status = '$show_just')" : "";
263    
264      my $genomes = $rdbH->SQL( "SELECT DISTINCT genome_hash.genome      my $genomes = $rdbH->SQL( "SELECT DISTINCT genome_hash.genome "
265                                 FROM genome_hash,dlits                              . "FROM genome_hash,dlits "
266                                 WHERE genome_hash.md5_hash = dlits.md5_hash $where"                              . "WHERE genome_hash.md5_hash = dlits.md5_hash $where"
267                              );                              );
268      my @genomes = sort { lc $a cmp lc $b }  #  Make sort case insensitive      my @genomes = sort { lc $a cmp lc $b }  #  Make sort case insensitive
269                    map { &compute_genome_label( $fig, $_->[0] ) }                    map { &compute_genome_label( $fig, $_->[0] ) }
# Line 268  Line 272 
272      push( @$html, $cgi->start_form(-action => "get_dlits.cgi", -method => 'post'),      push( @$html, $cgi->start_form(-action => "get_dlits.cgi", -method => 'post'),
273                    $cgi->hidden( -name => 'user',     -value => $user ),                    $cgi->hidden( -name => 'user',     -value => $user ),
274                    $cgi->hidden( -name => 'curator',  -value => $curator ),                    $cgi->hidden( -name => 'curator',  -value => $curator ),
                   $cgi->hidden( -name => 'who_says', -value => $who_says ),  
275                    $cgi->scrolling_list( -name   => 'genomeD',                    $cgi->scrolling_list( -name   => 'genomeD',
276                                          -values => [@genomes],                                          -values => [@genomes],
277                                          -size   => 30                                          -size   => 30
278                                        ),                                        ),
279                    $cgi->br, &show_just_selector( $cgi ),                    $cgi->br, &show_just_selector( $cgi ),
280                    $cgi->br, $cgi->submit( 'Show Genome' ),                    $cgi->br, $cgi->submit( 'Show Genome' ), ' selected above.',
281                    $cgi->br, $cgi->submit( 'Show Roles' ),                    $cgi->br, $cgi->submit( 'Show Roles' ),
282                      ( $curator ? " for subsystem curator '$curator'." : '' ),
283                    $cgi->br, $cgi->submit( 'Change subsystem curator' ), " currently '$curator'.",                    $cgi->br, $cgi->submit( 'Change subsystem curator' ), " currently '$curator'.",
284                    $cgi->end_form                    $cgi->end_form
285           );           );
# Line 297  Line 301 
301    
302      push( @$html, $cgi->start_form(-action => "get_dlits.cgi", -method => 'post'),      push( @$html, $cgi->start_form(-action => "get_dlits.cgi", -method => 'post'),
303                    $cgi->hidden( -name => 'user',     -value => $user ),                    $cgi->hidden( -name => 'user',     -value => $user ),
                   $cgi->hidden( -name => 'who_says', -value => $who_says ),  
304                    $cgi->scrolling_list( -name   => 'curator',                    $cgi->scrolling_list( -name   => 'curator',
305                                          -values => [ @cur ],                                          -values => [ @cur ],
306                                          -size   => $curN                                          -size   => $curN
# Line 343  Line 346 
346      my( $fig, $pubmed ) = @_;      my( $fig, $pubmed ) = @_;
347    
348      my $rdbH  = $fig->db_handle;      my $rdbH  = $fig->db_handle;
349      my $retval = $rdbH->SQL( "SELECT title      my $retval = $rdbH->SQL( "SELECT title "
350                                FROM pubmed_titles                             . "FROM pubmed_titles "
351                                WHERE (pubmed = $pubmed)"                             . "WHERE (pubmed = $pubmed)"
352                             );                             );
353      return ( @$retval > 0 ) ? $retval->[0]->[0] : "";      return ( @$retval > 0 ) ? $retval->[0]->[0] : "";
354  }  }
# Line 367  Line 370 
370      foreach $_ ( @$to_display ) { $_->[0] =~ s/^\s*$/ /; }  # fix empty status strings      foreach $_ ( @$to_display ) { $_->[0] =~ s/^\s*$/ /; }  # fix empty status strings
371      my @tuples = sort { ( $status_code{$a->[0]} <=> $status_code{$b->[0]} )      my @tuples = sort { ( $status_code{$a->[0]} <=> $status_code{$b->[0]} )
372                       or &FIG::by_fig_id( $a->[1], $b->[1] )                       or &FIG::by_fig_id( $a->[1], $b->[1] )
373                       or ( $a->[2] <=> $b->[2] )                       or ( $a->[2] <=> $b->[2] )  # Numeric sort of PMID
374                        }                        }
375                   @$to_display;                   @$to_display;
376      my $total_tuples = @tuples;      my $total_tuples = @tuples;
# Line 431  Line 434 
434      my $role = $cgi->param('role');      my $role = $cgi->param('role');
435      push( @$html, $cgi->hidden( -name => 'role', -value => $role, -override => 1 ) ) if $role;      push( @$html, $cgi->hidden( -name => 'role', -value => $role, -override => 1 ) ) if $role;
436    
     #  Find lit by role  
     my $who_says = $cgi->param('who_says');  
     push( @$html, $cgi->hidden( -name => 'who_says', -value => $who_says, -override => 1 ) ) if $who_says;  
   
437      #  Requested action      #  Requested action
438      push( @$html, $cgi->hidden( -name => 'prev_req', -value => $submit, -override => 1 ) ) if $submit;      push( @$html, $cgi->hidden( -name => 'prev_req', -value => $submit, -override => 1 ) ) if $submit;
439    
# Line 461  Line 460 
460    
461      #  Build the status selection table      #  Build the status selection table
462    
463      my $col_hdrs = $who_says ? [' ','G','N','R','D','Curator','PEG','Function','Genus/Species','PubMed','Title']      my $col_hdrs = [' ','G','N','R','D','Curator','PEG','Function','Genus/Species','PubMed','Title'];
                              : [' ','G','N','R','D','PEG','Function','Genus/Species','PubMed','Title'];  
464      my $tab = [];      my $tab = [];
465      my $i;      my $i;
466      for ( $i = 0; ($i < @tuples); $i++ )      for ( $i = 0; ($i < @tuples); $i++ )
467      {      {
468          my $tuple = $tuples[$i];          my $tuple = $tuples[$i];
469          my( $status, $peg, $pubmed, $cur ) = @$tuple;          my( $status, $peg, $pubmed, $prev_curator ) = @$tuple;
470          next if (! $fig->is_real_feature($peg));          next if ( ! $fig->is_real_feature($peg) );   # This should never fail
471    
472            $prev_curator =~ s/^master://i;  #  Remove master from displayed curator
473          my $gs = $fig->genus_species( &FIG::genome_of( $peg ) );          my $gs = $fig->genus_species( &FIG::genome_of( $peg ) );
474          $gs =~ s/^(\S+\s+\S+).*$/$1/;          $gs =~ s/^(\S+\s+\S+).*$/$1/;
475          my $title = &title_of( $fig, $pubmed );          my $title = &title_of( $fig, $pubmed );
# Line 486  Line 486 
486    
487          if ( $genes_in_pub{ $pubmed } > 1 )          if ( $genes_in_pub{ $pubmed } > 1 )
488          {          {
489              #  This link intentionally omits filtering by status              #  This link intentionally omits $show_just
490              my $href = "get_dlits.cgi?user=$user&ref_id=$pubmed";              my $href = "get_dlits.cgi?user=$user&ref_id=$pubmed";
             $href .= '&who_says=1' if $who_says;  
491              $pub_link .= "<BR />(<A HRef='$href' Target=_blank>$genes_in_pub{$pubmed} seqs</A>)";              $pub_link .= "<BR />(<A HRef='$href' Target=_blank>$genes_in_pub{$pubmed} seqs</A>)";
492          }          }
493          if (($i % 15) == 14) { push(@$tab,$col_hdrs) }          if ( $i && ($i % 15) == 0 ) { push(@$tab,$col_hdrs) }
494          push( @$tab, $who_says ? [ @codes, $cur, &HTML::fid_link( $cgi, $peg ), $func, $gs, $pub_link, $title ]          push( @$tab, [ @codes, $prev_curator, &HTML::fid_link( $cgi, $peg ), $func, $gs, $pub_link, $title ] );
                                : [ @codes, &HTML::fid_link( $cgi, $peg ), $func, $gs, $pub_link, $title ]  
             );  
495      }      }
496    
497      push( @$html,&HTML::make_table( $col_hdrs, $tab, $tab_title ) );      push( @$html,&HTML::make_table( $col_hdrs, $tab, $tab_title ) );
# Line 555  Line 552 
552  }  }
553    
554    
555  #     dlit  #     dlits
556  #     flds => "status char(1), md5_hash varchar(32), pubmed varchar(16), curator varchar(30), go_code varchar(15)"  #     flds => "status char(1), md5_hash varchar(32), pubmed varchar(16), curator varchar(30), go_code varchar(15)"
557    
558  sub all_seqs_in_pub {  sub all_seqs_in_pub {
559      my ( $fig, $pubmed, $status ) = @_;      my ( $fig, $pubmed, $status ) = @_;
560      my $rdbH = $fig->db_handle;      my $rdbH = $fig->db_handle;
561      my $and_status = $status ? " AND ( status = '$status' )" : "";      my $and_status = $status ? " AND ( status = '$status' )" : "";
562      my $response = $rdbH->SQL( "SELECT DISTINCT md5_hash      my $response = $rdbH->SQL( "SELECT DISTINCT md5_hash "
563                                  FROM dlits                               . "FROM dlits "
564                                  WHERE ( pubmed = '$pubmed' )"                               . "WHERE ( pubmed = '$pubmed' )"
565                                      . $and_status                                      . $and_status
566                               );                               );
567      return ( ref $response ) ? map { $_->[0] } @$response : ();      return ( ref $response ) ? map { $_->[0] } @$response : ();
# Line 609  Line 606 
606  }  }
607    
608    
609    # Not sure why this was not done before
610    
611    sub add_pubmed_index {
612        my ( $rdbH, $html ) = @_;
613        return if ! $rdbH;
614        my $rtn = $rdbH->SQL( 'SHOW INDEX FROM dlits' );
615        push @$html, "<BR />Initial return value from 'SHOW INDEX FROM dlits' = $rtn\n";
616        if ( $rtn == 3 )
617        {
618            my $rtn = $rdbH->create_index( idx  => "pubmed_in_dlits_ix",
619                                           tbl  => "dlits",
620                                           type => "btree",
621                                           flds => "pubmed" );
622            $rtn = $rdbH->SQL( 'SHOW INDEX FROM dlits' );
623            push @$html, "<BR />Final return value from 'SHOW INDEX FROM dlits' = $rtn<BR />\n";
624        }
625        else
626        {
627            push @$html, "<BR />Index might already exist<BR />\n";
628        }
629    }

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.11

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3