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

Diff of /Sprout/Sprout.pm

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

revision 1.21, Fri Sep 9 20:40:41 2005 UTC revision 1.31, Wed Sep 14 13:14:12 2005 UTC
# Line 70  Line 70 
70    
71  * B<maxSequenceLength> maximum number of residues per sequence, (default C<8000>)  * B<maxSequenceLength> maximum number of residues per sequence, (default C<8000>)
72    
73    * B<noDBOpen> suppresses the connection to the database if TRUE, else FALSE
74    
75  =back  =back
76    
77  For example, the following constructor call specifies a database named I<Sprout> and a user name of  For example, the following constructor call specifies a database named I<Sprout> and a user name of
# Line 98  Line 100 
100                                                          # database connection port                                                          # database connection port
101                         maxSegmentLength => 4500,        # maximum feature segment length                         maxSegmentLength => 4500,        # maximum feature segment length
102                         maxSequenceLength => 8000,       # maximum contig sequence length                         maxSequenceLength => 8000,       # maximum contig sequence length
103                           noDBOpen     => 0,               # 1 to suppress the database open
104                        }, $options);                        }, $options);
105      # Get the data directory.      # Get the data directory.
106      my $dataDir = $optionTable->{dataDir};      my $dataDir = $optionTable->{dataDir};
# Line 105  Line 108 
108      $optionTable->{userData} =~ m!([^/]*)/(.*)$!;      $optionTable->{userData} =~ m!([^/]*)/(.*)$!;
109      my ($userName, $password) = ($1, $2);      my ($userName, $password) = ($1, $2);
110      # Connect to the database.      # Connect to the database.
111      my $dbh = DBKernel->new($optionTable->{dbType}, $dbName, $userName, $password, $optionTable->{port});      my $dbh;
112        if (! $optionTable->{noDBOpen}) {
113            $dbh = DBKernel->new($optionTable->{dbType}, $dbName, $userName,
114                                    $password, $optionTable->{port});
115        }
116      # Create the ERDB object.      # Create the ERDB object.
117      my $xmlFileName = "$optionTable->{xmlFileName}";      my $xmlFileName = "$optionTable->{xmlFileName}";
118      my $erdb = ERDB->new($dbh, $xmlFileName);      my $erdb = ERDB->new($dbh, $xmlFileName);
# Line 758  Line 765 
765          # the start point is the ending. Note that in the latter case we must reverse the DNA string          # the start point is the ending. Note that in the latter case we must reverse the DNA string
766          # before putting it in the return value.          # before putting it in the return value.
767          my ($start, $stop);          my ($start, $stop);
768            Trace("Parsed location is $beg$dir$len.") if T(SDNA => 4);
769          if ($dir eq "+") {          if ($dir eq "+") {
770              $start = $beg;              $start = $beg;
771              $stop = $beg + $len - 1;              $stop = $beg + $len - 1;
772          } else {          } else {
773              $start = $beg + $len + 1;              $start = $beg - $len + 1;
774              $stop = $beg;              $stop = $beg;
775          }          }
776            Trace("Looking for sequences containing $start through $stop.") if T(SDNA => 4);
777          my $query = $self->Get(['IsMadeUpOf','Sequence'],          my $query = $self->Get(['IsMadeUpOf','Sequence'],
778              "IsMadeUpOf(from-link) = ? AND IsMadeUpOf(start-position) + IsMadeUpOf(len) > ? AND " .              "IsMadeUpOf(from-link) = ? AND IsMadeUpOf(start-position) + IsMadeUpOf(len) > ? AND " .
779              " IsMadeUpOf(start-position) <= ? ORDER BY IsMadeUpOf(start-position)",              " IsMadeUpOf(start-position) <= ? ORDER BY IsMadeUpOf(start-position)",
# Line 776  Line 785 
785                  $sequence->Values(['IsMadeUpOf(start-position)', 'Sequence(sequence)',                  $sequence->Values(['IsMadeUpOf(start-position)', 'Sequence(sequence)',
786                                     'IsMadeUpOf(len)']);                                     'IsMadeUpOf(len)']);
787              my $stopPosition = $startPosition + $sequenceLength;              my $stopPosition = $startPosition + $sequenceLength;
788                Trace("Sequence is from $startPosition to $stopPosition.") if T(SDNA => 4);
789              # Figure out the start point and length of the relevant section.              # Figure out the start point and length of the relevant section.
790              my $pos1 = ($start < $startPosition ? 0 : $start - $startPosition);              my $pos1 = ($start < $startPosition ? 0 : $start - $startPosition);
791              my $len = ($stopPosition <= $stop ? $stopPosition : $stop) - $startPosition - $pos1;              my $len1 = ($stopPosition <= $stop ? $stopPosition : $stop) - $startPosition - $pos1;
792                Trace("Position is $pos1 for length $len1.") if T(SDNA => 4);
793              # Add the relevant data to the location data.              # Add the relevant data to the location data.
794              $locationDNA .= substr($sequenceData, $pos1, $len);              $locationDNA .= substr($sequenceData, $pos1, $len1);
795          }          }
796          # Add this location's data to the return string. Note that we may need to reverse it.          # Add this location's data to the return string. Note that we may need to reverse it.
797          if ($dir eq '+') {          if ($dir eq '+') {
798              $retVal .= $locationDNA;              $retVal .= $locationDNA;
799          } else {          } else {
800              $locationDNA = join('', reverse split //, $locationDNA);              $retVal .= FIG::reverse_comp($locationDNA);
             $retVal .= $locationDNA;  
801          }          }
802      }      }
803      # Return the result.      # Return the result.
# Line 1538  Line 1548 
1548              Trace("Peg 1 is " . $peg1Data->[1] . " and Peg 2 is " . $peg2Data->[1] . ".") if T(Coupling => 4);              Trace("Peg 1 is " . $peg1Data->[1] . " and Peg 2 is " . $peg2Data->[1] . ".") if T(Coupling => 4);
1549              push @retVal, [$peg1Data->[1], $peg2Data->[1], $peg1Data->[0]];              push @retVal, [$peg1Data->[1], $peg2Data->[1], $peg1Data->[0]];
1550          }          }
1551            Trace("Last index in evidence result is is $#retVal.") if T(Coupling => 4);
1552      }      }
1553      # Return the result.      # Return the result.
1554      return @retVal;      return @retVal;
# Line 1587  Line 1598 
1598                                   [$retVal], ["ParticipatesInCoupling(from-link)", "Coupling(score)"]);                                   [$retVal], ["ParticipatesInCoupling(from-link)", "Coupling(score)"]);
1599      # Check to see if we found anything.      # Check to see if we found anything.
1600      if (!@pegs) {      if (!@pegs) {
1601            Trace("No coupling found.") if T(Coupling => 4);
1602          # No coupling, so undefine the return value.          # No coupling, so undefine the return value.
1603          $retVal = undef;          $retVal = undef;
1604      } else {      } else {
1605          # We have a coupling! Get the score and check for inversion.          # We have a coupling! Get the score and check for inversion.
1606          $score = $pegs[0]->[1];          $score = $pegs[0]->[1];
1607          $inverted = ($pegs[0]->[0] eq $peg1);          my $firstFound = $pegs[0]->[0];
1608            $inverted = ($firstFound ne $peg1);
1609            Trace("Coupling score is $score. First peg is $firstFound, peg 1 is $peg1.") if T(Coupling => 4);
1610      }      }
1611      # Return the result.      # Return the result.
1612      return ($retVal, $inverted, $score);      return ($retVal, $inverted, $score);
# Line 1697  Line 1711 
1711          if ($line =~ m/^>\s*(.+?)(\s|\n)/) {          if ($line =~ m/^>\s*(.+?)(\s|\n)/) {
1712              # Here we have a new header. Store the current sequence if we have one.              # Here we have a new header. Store the current sequence if we have one.
1713              if ($id) {              if ($id) {
1714                  $retVal{$id} = uc $sequence;                  $retVal{$id} = lc $sequence;
1715              }              }
1716              # Clear the sequence accumulator and save the new ID.              # Clear the sequence accumulator and save the new ID.
1717              ($id, $sequence) = ("$prefix$1", "");              ($id, $sequence) = ("$prefix$1", "");
1718          } else {          } else {
1719              # Here we have a data line, so we add it to the sequence accumulator.              # Here we have a data line, so we add it to the sequence accumulator.
1720              # First, we get the actual data out. Note that we normalize to upper              # First, we get the actual data out. Note that we normalize to lower
1721              # case.              # case.
1722              $line =~ /^\s*(.*?)(\s|\n)/;              $line =~ /^\s*(.*?)(\s|\n)/;
1723              $sequence .= $1;              $sequence .= $1;
# Line 1711  Line 1725 
1725      }      }
1726      # Flush out the last sequence (if any).      # Flush out the last sequence (if any).
1727      if ($sequence) {      if ($sequence) {
1728          $retVal{$id} = uc $sequence;          $retVal{$id} = lc $sequence;
1729      }      }
1730      # Close the file.      # Close the file.
1731      close FASTAFILE;      close FASTAFILE;
# Line 2037  Line 2051 
2051      # Get the parameters.      # Get the parameters.
2052      my ($self, $entityName, $entityID) = @_;      my ($self, $entityName, $entityID) = @_;
2053      # Check for the entity instance.      # Check for the entity instance.
2054        Trace("Checking existence of $entityName with ID=$entityID.") if T(4);
2055      my $testInstance = $self->GetEntity($entityName, $entityID);      my $testInstance = $self->GetEntity($entityName, $entityID);
2056      # Return an existence indicator.      # Return an existence indicator.
2057      my $retVal = ($testInstance ? 1 : 0);      my $retVal = ($testInstance ? 1 : 0);

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.31

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3