[Bio] / Sprout / SHSigGenes.pm Repository:
ViewVC logotype

Diff of /Sprout/SHSigGenes.pm

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

revision 1.4, Wed Oct 4 16:03:55 2006 UTC revision 1.6, Sun Oct 8 01:50:06 2006 UTC
# Line 80  Line 80 
80      # there is the selector for the given genome, the commonality and cutoff values,      # there is the selector for the given genome, the commonality and cutoff values,
81      # and the submit button. Our first task, then, is to get the genome selection      # and the submit button. Our first task, then, is to get the genome selection
82      # menus.      # menus.
83      my $givenMenu   = $self->NmpdrGenomeMenu('given', 0, [$cgi->param('genome')]);      my $givenMenu   = $self->NmpdrGenomeMenu('given', 0, [$cgi->param('given')]);
84      my $targetMenu  = $self->NmpdrGenomeMenu('target', 'multiple', [$cgi->param('target')], 10, 'exclusion');      my $targetMenu  = $self->NmpdrGenomeMenu('target', 'multiple', [$cgi->param('target')], 10, 'exclusion');
85      my $excludeMenu = $self->NmpdrGenomeMenu('exclusion', 'multiple', [$cgi->param('exclusion')], 10, 'target');      my $excludeMenu = $self->NmpdrGenomeMenu('exclusion', 'multiple', [$cgi->param('exclusion')], 10, 'target');
86      # Get the default values to use for the commonality and cutoff controls.      # Get the default values to use for the commonality and cutoff controls.
87      my $commonality = $cgi->param('commonality') || "0.8";      my $commonality = $cgi->param('commonality') || "0.8";
88      my $cutoff = $cgi->param('cutoff') || "1e-10";      my $cutoff = $cgi->param('cutoff') || "1e-10";
89        my $statistical = $cgi->param('statistical') || 1;
90      # Now we build the table rows. The top contains the two numeric parameters and      # Now we build the table rows. The top contains the two numeric parameters and
91      # the submit button.      # the submit button.
92      my @rows = ();      my @rows = ();
93      push @rows, $cgi->Tr($cgi->td("Commonality"),      push @rows, $cgi->Tr($cgi->td("Commonality"),
94                           $cgi->td($cgi->textfield(-name => 'commonality',                           $cgi->td($cgi->textfield(-name => 'commonality',
95                                                    -value => $commonality,                                                    -value => $commonality,
96                                                    -size => 5)));                                                    -size => 5) . " " .
97                                      $cgi->checkbox(-name => 'statistical',
98                                                     -checked => $statistical,
99                                                     -value => 1,
100                                                     -label => 'Use Statistical Algorithm')));
101      push @rows, $cgi->Tr($cgi->td("Cutoff"),      push @rows, $cgi->Tr($cgi->td("Cutoff"),
102                           $cgi->td($cgi->textfield(-name => 'cutoff',                           $cgi->td($cgi->textfield(-name => 'cutoff',
103                                                    -value => $cutoff,                                                    -value => $cutoff,
# Line 158  Line 163 
163              # Insure the given genome is in the target set.              # Insure the given genome is in the target set.
164              $targetGenomes{$givenGenomeID} = 1              $targetGenomes{$givenGenomeID} = 1
165          }          }
166            # Find out if we want to use a statistical analysis.
167            my $statistical = $cgi->param('statistical') || 0;
168          # Denote we have not yet found any genomes.          # Denote we have not yet found any genomes.
169          $retVal = 0;          $retVal = 0;
170          # Create a feature query object to loop through the chosen features of the given          # Create a feature query object to loop through the chosen features of the given
# Line 170  Line 177 
177          while (my $record = $fquery->Fetch()) {          while (my $record = $fquery->Fetch()) {
178              # Get the feature's ID.              # Get the feature's ID.
179              my $fid = $fquery->FID();              my $fid = $fquery->FID();
             Trace("Processing feature $fid.") if T(3);  
180              # Request its list of BBHs. The list is actually a hash mapping each BBH to its              # Request its list of BBHs. The list is actually a hash mapping each BBH to its
181              # score. All we care about, however, are the BBHs themselves.              # score. All we care about, however, are the BBHs themselves.
182              my %bbhList = $sprout->LowBBHs($fid, $cutoff);              my %bbhList = $sprout->LowBBHs($fid, $cutoff);
# Line 195  Line 201 
201                      $alreadySeen{$genomeID} = 1;                      $alreadySeen{$genomeID} = 1;
202                  }                  }
203              }              }
204                # Create a variable to indicate whether or not we want to keep this feature.
205                my $okFlag;
206                # We need to see if we're using statistics or not. This only matters
207                # for a two-set situation.
208                if ($statistical && $exclusionSetSize > 0) {
209                    # This looks like it has something to do with variance computations,
210                    # but I'm not sure.
211                    my $targetNotCount = $targetSetSize - $targetCount;
212                    my $targetSquare = $targetCount * $targetCount + $targetNotCount * $targetNotCount;
213                    my $exclusionNotCount = $exclusionSetSize - $exclusionCount;
214                    my $exclusionSquare = $exclusionCount * $exclusionCount + $exclusionNotCount * $exclusionNotCount;
215                    my $mixed = $targetCount * $exclusionCount + $targetNotCount * $exclusionNotCount;
216                    my $inD = 1 - (($exclusionSetSize * $mixed) / ($targetSetSize * $exclusionSquare));
217                    my $outD = 1 - (($targetSetSize * $mixed) / ($exclusionSetSize * $targetSquare));
218                    # If the two differentials are greater than one, we keep this feature.
219                    $okFlag = ($inD + $outD > 1);
220                } else {
221              # Check to see if we're common in set 1 and not in set 2.              # Check to see if we're common in set 1 and not in set 2.
222              if (IsCommon($targetCount, $targetSetSize, $commonality) &&              if (IsCommon($targetCount, $targetSetSize, $commonality) &&
223                  ! IsCommon($exclusionCount, $exclusionSetSize, $commonality)) {                  ! IsCommon($exclusionCount, $exclusionSetSize, $commonality)) {
224                  # We satisfy the criterion, so we put this feature to the output.                  # We satisfy the criterion, so we put this feature to the output.
225                        $okFlag = 1;
226                    }
227                }
228                if ($okFlag) {
229                    # Put this feature to the output.
230                  $self->PutFeature($fquery);                  $self->PutFeature($fquery);
231                  # Increase the result count.                  # Increase the result count.
232                  $retVal++;                  $retVal++;
233              }              }
234          }          }
235            # Close the session file.
236            $self->CloseSession();
237      }      }
238      # Return the result count.      # Return the result count.
239      return $retVal;      return $retVal;

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.6

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3