include/gappedScoring.h File Reference

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int4 gappedScoring_score (struct ungappedExtension *ungappedExtension, struct PSSMatrix PSSMatrix, int4 subjectSize, unsigned char *subject, int4 dropoff)
void gappedScoring_free ()


Function Documentation

void gappedScoring_free (  ) 

Definition at line 909 of file gappedScoring.c.

References gappedScoring_bestRow, and gappedScoring_insertQrow.

Referenced by main().

00910 {
00911     free(gappedScoring_bestRow);
00912     free(gappedScoring_insertQrow);
00913 }

Here is the caller graph for this function:

int4 gappedScoring_score ( struct ungappedExtension ungappedExtension,
struct PSSMatrix  PSSMatrix,
int4  subjectSize,
unsigned char *  subject,
int4  dropoff 
)

Definition at line 24 of file gappedScoring.c.

References dpResults::best, dpResults::bestScore, blast_dloc, blast_numGapped, encoding_alphabetType, encoding_nucleotide, ungappedExtension::end, gappedScoring_dpAfterSeed(), gappedScoring_dpBeforeSeed(), int4, PSSMatrix::length, PSSMatrix::matrix, nuGappedScoring_score(), oldGappedScoring_score(), parameters_restrictedInsertionScoring, parameters_verboseDloc, PSSMatrix_chop(), coordinate::queryOffset, ungappedExtension::seed, ungappedExtension::start, PSSMatrix::strandLength, and coordinate::subjectOffset.

Referenced by alignments_checkForJoin(), alignments_findGoodAlignments(), alignments_getTracebacks(), and alignments_regularGappedAlignment().

00026 {
00027     struct coordinate seed;
00028     unsigned char *choppedSubject;
00029     struct PSSMatrix choppedPSSMatrix;
00030     int4 choppedSubjectSize;
00031     struct dpResults beforeDpResults, afterDpResults;
00032     int4 strandOffset = 0;
00033 
00034     // Increment counter number of HSP's gapped
00035         blast_numGapped++;
00036 
00037     if (encoding_alphabetType == encoding_nucleotide)
00038     {
00039         // Use nucleotide gapped alignment code
00040                 return nuGappedScoring_score(ungappedExtension, PSSMatrix, subjectSize, subject, dropoff);
00041         }
00042 
00043     // Use old code if restricted insertion has been disabled
00044     if (!parameters_restrictedInsertionScoring)
00045     {
00046         return oldGappedScoring_score(ungappedExtension, PSSMatrix, subjectSize, subject, dropoff);
00047     }
00048 
00049     seed = ungappedExtension->seed;
00050     if (seed.queryOffset > PSSMatrix.strandLength)
00051     {
00052             // If query position is in the second strand, remove first strand from PSSM
00053         strandOffset = PSSMatrix.strandLength;
00054                 seed.queryOffset -= PSSMatrix.strandLength;
00055                 PSSMatrix = PSSMatrix_chop(PSSMatrix, PSSMatrix.strandLength);
00056     }
00057     else
00058     {
00059         // Otherwise remove second strand
00060         PSSMatrix.length = PSSMatrix.strandLength;
00061     }
00062 
00063     // Perform dynamic programming for points before the seed
00064     beforeDpResults = gappedScoring_dpBeforeSeed(subject, PSSMatrix, seed, dropoff);
00065 
00066     // Chop the start off the query and subject so they begin at the seed
00067     choppedPSSMatrix = PSSMatrix_chop(PSSMatrix, seed.queryOffset);
00068     choppedSubject = subject + seed.subjectOffset;
00069     choppedSubjectSize = subjectSize - seed.subjectOffset;
00070 
00071     // Perform dynamic programming for points after the seed
00072     afterDpResults = gappedScoring_dpAfterSeed(choppedSubject, choppedPSSMatrix,
00073                                                dropoff, choppedSubjectSize);
00074 
00075     // Re-adjust result change due to chopping subject/query and strand adjustment
00076     afterDpResults.best.queryOffset += seed.queryOffset + strandOffset;
00077     afterDpResults.best.subjectOffset += seed.subjectOffset;
00078     beforeDpResults.best.queryOffset += strandOffset;
00079 
00080     // Associate best scoring start and end points with the ungapped extension
00081     ungappedExtension->start = beforeDpResults.best;
00082     ungappedExtension->end = afterDpResults.best;
00083 
00084     #ifdef VERBOSE
00085     if (parameters_verboseDloc == blast_dloc)
00086         printf("norm[%d,%d,%d](seed=%d,%d)\n", beforeDpResults.bestScore, afterDpResults.bestScore,
00087                 choppedPSSMatrix.matrix[0][choppedSubject[0]], seed.queryOffset, seed.subjectOffset);
00088         #endif
00089 
00090     // Determine score by combining score from the two traces, and the match score at
00091     // the seed position
00092     return beforeDpResults.bestScore + afterDpResults.bestScore +
00093            choppedPSSMatrix.matrix[0][choppedSubject[0]];
00094 }

Here is the call graph for this function:

Here is the caller graph for this function:


Generated on Wed Dec 19 20:49:09 2007 for fsa-blast by  doxygen 1.5.2