include/nuGappedScoring.h File Reference

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

Go to the source code of this file.

Functions

int4 nuGappedScoring_score (struct ungappedExtension *ungappedExtension, struct PSSMatrix PSSMatrix, int4 subjectSize, unsigned char *subject, int4 dropoff)
void nuGappedScoring_free ()


Function Documentation

void nuGappedScoring_free (  ) 

Definition at line 956 of file nuGappedScoring.c.

References nuGappedScoring_bestRow, and nuGappedScoring_insertQrow.

Referenced by main().

00957 {
00958     free(nuGappedScoring_bestRow);
00959     free(nuGappedScoring_insertQrow);
00960 }

Here is the caller graph for this function:

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

Definition at line 26 of file nuGappedScoring.c.

References dpResults::best, dpResults::bestScore, blast_dloc, encoding_extractBase, ungappedExtension::end, int4, PSSMatrix::length, PSSMatrix::matrix, nuGappedScoring_dpAfterSeed(), nuGappedScoring_dpBeforeSeed(), parameters_verboseDloc, PSSMatrix_chop(), coordinate::queryOffset, ungappedExtension::seed, ungappedExtension::start, PSSMatrix::strandLength, and coordinate::subjectOffset.

Referenced by gappedScoring_score().

00028 {
00029     struct coordinate seed;
00030     unsigned char *choppedSubject;
00031     struct PSSMatrix choppedPSSMatrix;
00032     int4 choppedSubjectSize;
00033     struct dpResults beforeDpResults, afterDpResults;
00034     int4 strandOffset = 0;
00035 
00036     seed = ungappedExtension->seed;
00037 //    printf("Seed=%d,%d dloc=%d\n", seed.queryOffset, seed.subjectOffset, blast_dloc);
00038 //      ungappedExtension_print(ungappedExtension); fflush(stdout);
00039 
00040     if (seed.queryOffset > PSSMatrix.strandLength)
00041     {
00042             // If query position is in the second strand, remove first strand from PSSM
00043         strandOffset = PSSMatrix.strandLength;
00044                 seed.queryOffset -= PSSMatrix.strandLength;
00045                 PSSMatrix = PSSMatrix_chop(PSSMatrix, PSSMatrix.strandLength);
00046     }
00047     else
00048     {
00049         // Otherwise remove second strand
00050         PSSMatrix.length = PSSMatrix.strandLength;
00051     }
00052 
00053     // Adjust to point to start of byte
00054     seed.queryOffset -= 2;
00055     seed.subjectOffset -= 2;
00056 
00057     // Perform dynamic programming for points before the seed
00058     beforeDpResults = nuGappedScoring_dpBeforeSeed(subject, PSSMatrix, seed, dropoff);
00059 
00060     // Chop the start off the query and subject so they begin at the seed
00061     choppedPSSMatrix = PSSMatrix_chop(PSSMatrix, seed.queryOffset);
00062     choppedSubject = subject + (seed.subjectOffset / 4);
00063     choppedSubjectSize = subjectSize - seed.subjectOffset;
00064 
00065     // Perform dynamic programming for points after the seed
00066     afterDpResults = nuGappedScoring_dpAfterSeed(choppedSubject, choppedPSSMatrix,
00067                                                  dropoff, choppedSubjectSize);
00068 
00069         // Convert best endpoints from bytepacked to unpacked offsets
00070         afterDpResults.best.subjectOffset *= 4;
00071         beforeDpResults.best.subjectOffset *= 4;
00072 
00073     // Re-adjust result change due to chopping subject/query and strand adjustment
00074     afterDpResults.best.queryOffset += seed.queryOffset + strandOffset;
00075     afterDpResults.best.subjectOffset += seed.subjectOffset;
00076     beforeDpResults.best.queryOffset += strandOffset;
00077 
00078     // Associate best scoring start and end points with the ungapped extension
00079     ungappedExtension->start = beforeDpResults.best;
00080     ungappedExtension->end = afterDpResults.best;
00081 
00082     #ifdef VERBOSE
00083     if (parameters_verboseDloc == blast_dloc)
00084         printf("norm[%d,%d,%d](seed=%d,%d)\n", beforeDpResults.bestScore, afterDpResults.bestScore,
00085                 choppedPSSMatrix.matrix[0][encoding_extractBase(choppedSubject[0],seed.subjectOffset % 4)],
00086             seed.queryOffset, seed.subjectOffset);
00087         #endif
00088 
00089 //      printf("Start=%d,%d End=%d,%d\n", beforeDpResults.best.queryOffset, beforeDpResults.best.subjectOffset,
00090 //                                      afterDpResults.best.queryOffset, afterDpResults.best.subjectOffset);
00091 
00092     // Determine score by combining score from the two traces, and the match score at
00093     // the seed position
00094     return beforeDpResults.bestScore + afterDpResults.bestScore +
00095            choppedPSSMatrix.matrix[0][encoding_extractBase(choppedSubject[0],seed.subjectOffset % 4)];
00096 }

Here is the call graph for this function:

Here is the caller graph for this function:


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