inc/fuzzyFind.h File Reference

#include "dnautil.h"
#include "localmem.h"
#include "aliType.h"
#include "memgfx.h"

Include dependency graph for fuzzyFind.h:

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

Go to the source code of this file.

Data Structures

struct  ffAli

Defines

#define ffIntronMaxDefault   750000

Functions

void setFfIntronMax (int value)
void setFfExtendThroughN (boolean val)
void ffFreeAli (struct ffAli **pAli)
int ffOneIntronOrientation (struct ffAli *left, struct ffAli *right)
int ffIntronOrientation (struct ffAli *ali)
int ffScoreIntron (DNA a, DNA b, DNA y, DNA z, int orientation)
ffAliffRightmost (struct ffAli *ff)
ffAliffMakeRightLinks (struct ffAli *rightMost)
void ffCountGoodEnds (struct ffAli *aliList)
int ffAliCount (struct ffAli *d)
ffAliffAliFromSym (int symCount, char *nSym, char *hSym, struct lm *lm, char *nStart, char *hStart)
int ffScoreMatch (DNA *a, DNA *b, int size)
int ffScoreCdna (struct ffAli *ali)
int ffScore (struct ffAli *ali, enum ffStringency stringency)
int ffScoreProtein (struct ffAli *ali, enum ffStringency stringency)
int ffScoreSomething (struct ffAli *ali, enum ffStringency stringency, boolean isProt)
int ffScoreSomeAlis (struct ffAli *ali, int count, enum ffStringency stringency)
int ffCalcGapPenalty (int hGap, int nGap, enum ffStringency stringency)
int ffCalcCdnaGapPenalty (int hGap, int nGap)
int ffGapPenalty (struct ffAli *ali, struct ffAli *right, enum ffStringency stringency)
int ffCdnaGapPenalty (struct ffAli *ali, struct ffAli *right)
boolean ffSlideIntrons (struct ffAli *ali)
boolean ffSlideOrientedIntrons (struct ffAli *ali, int orient)
ffAliffRemoveEmptyAlis (struct ffAli *ali, boolean doFree)
ffAliffMergeHayOverlaps (struct ffAli *ali)
ffAliffMergeNeedleAlis (struct ffAli *ali, boolean doFree)
void ffExpandExactRight (struct ffAli *ali, DNA *needleEnd, DNA *hayEnd)
void ffExpandExactLeft (struct ffAli *ali, DNA *needleStart, DNA *hayStart)
ffAliffMergeClose (struct ffAli *aliList, DNA *needleStart, DNA *hayStart)
void ffAliSort (struct ffAli **pList, int(*compare)(const void *elem1, const void *elem2))
void ffCat (struct ffAli **pA, struct ffAli **pB)
int ffCmpHitsHayFirst (const void *va, const void *vb)
int ffCmpHitsNeedleFirst (const void *va, const void *vb)
ffAliffFind (DNA *needleStart, DNA *needleEnd, DNA *hayStart, DNA *hayEnd, enum ffStringency stringency)
boolean ffFindEitherStrand (DNA *needle, DNA *haystack, enum ffStringency stringency, struct ffAli **pAli, boolean *pRcNeedle)
boolean ffFindEitherStrandN (DNA *needle, int needleSize, DNA *haystack, int haySize, enum ffStringency stringency, struct ffAli **pAli, boolean *pRcNeedle)
boolean ffFindAndScore (DNA *needle, int needleSize, DNA *haystack, int haySize, enum ffStringency stringency, struct ffAli **pAli, boolean *pRcNeedle, int *pScore)
int ffShAliPart (FILE *f, struct ffAli *aliList, char *needleName, DNA *needle, int needleSize, int needleNumOffset, char *haystackName, DNA *haystack, int haySize, int hayNumOffset, int blockMaxGap, boolean rcNeedle, boolean rcHaystack, boolean showJumpTable, boolean showNeedle, boolean showHaystack, boolean showSideBySide, boolean upcMatch, int cdsS, int cdsE, int hayPartS, int hayPartE)
int ffShAli (FILE *f, struct ffAli *aliList, char *needleName, DNA *needle, int needleSize, int needleNumOffset, char *haystackName, DNA *haystack, int haySize, int hayNumOffset, int blockMaxGap, boolean rcNeedle)
void ffShowAli (struct ffAli *aliList, char *needleName, DNA *needle, int needleNumOffset, char *haystackName, DNA *haystack, int hayNumOffset, boolean rcNeedle)

Variables

int ffIntronMax


Define Documentation

#define ffIntronMaxDefault   750000

Definition at line 65 of file fuzzyFind.h.

Referenced by main(), ssStitch(), and usage().


Function Documentation

int ffAliCount ( struct ffAli d  ) 

Definition at line 119 of file ffAli.c.

References ffAli::right.

Referenced by jiggleSmallExons(), pslFromFakeFfAli(), savePslx(), ssFindBest(), ssGraphMake(), and trimFlakyEnds().

00121 {
00122 int acc = 0;
00123 while (d != NULL)
00124     {
00125     ++acc;
00126     d = d->right;
00127     }
00128 return acc;
00129 }

Here is the caller graph for this function:

struct ffAli* ffAliFromSym ( int  symCount,
char *  nSym,
char *  hSym,
struct lm lm,
char *  nStart,
char *  hStart 
) [read]

Definition at line 131 of file ffAli.c.

References AllocVar, ffMakeRightLinks(), lm, lmAllocVar, and ffAli::nEnd.

Referenced by bandExtFf(), and smoothOneGap().

00137 {
00138 struct ffAli *ffList = NULL, *ff = NULL;
00139 char n, h;
00140 int i;
00141 
00142 for (i=0; i<=symCount; ++i)
00143     {
00144     boolean isGap;
00145     n = nSym[i];
00146     h = hSym[i];
00147     isGap = (n == '-' || n == 0 || h == '-' || h == 0);
00148     if (isGap)
00149         {
00150         if (ff != NULL)
00151             {
00152             ff->nEnd = nStart;
00153             ff->hEnd = hStart;
00154             ff->left = ffList;
00155             ffList = ff;
00156             ff = NULL;
00157             }
00158         }
00159     else
00160         {
00161         if (ff == NULL)
00162             {
00163             if (lm != NULL)
00164                 {
00165                 lmAllocVar(lm, ff);
00166                 }
00167             else
00168                 {
00169                 AllocVar(ff);
00170                 }
00171             ff->nStart = nStart;
00172             ff->hStart = hStart;
00173             }
00174         }
00175     if (n != '-')
00176         {
00177         ++nStart;
00178         }
00179     if (h != '-')
00180         {
00181         ++hStart;
00182         }
00183     }
00184 ffList = ffMakeRightLinks(ffList);
00185 return ffList;
00186 }

Here is the call graph for this function:

Here is the caller graph for this function:

void ffAliSort ( struct ffAli **  pList,
int(*)(const void *elem1, const void *elem2)  compare 
)

Definition at line 39 of file ffAliHelp.c.

References ffMakeRightLinks(), ffAli::right, slReverse(), and slSort().

Referenced by ssStitch(), and weaveAli().

00041 {
00042 /* Get head of list and handle easy special empty case. */
00043 struct ffAli *r = *pList;
00044 if (r == NULL) return;
00045 
00046 /* Since first pointer is "left", in order to reuse slSort, have
00047  * to jump through some minor hoops. First go to right end of list,
00048  * then sort it. */
00049 while (r->right) r = r->right;
00050 slSort(&r, compare);
00051 
00052 /* We're sorted, but our right links are all broken.  Fix this. */
00053 slReverse(&r);
00054 r = ffMakeRightLinks(r);
00055 *pList = r;
00056 }

Here is the call graph for this function:

Here is the caller graph for this function:

int ffCalcCdnaGapPenalty ( int  hGap,
int  nGap 
)

Definition at line 38 of file ffScore.c.

References digitsBaseTwo(), and ffIntronMax.

Referenced by ffCalcGapPenalty(), ffCdnaGapPenalty(), and smoothOneGap().

00040 {
00041 int acc = 2;
00042 if (hGap > 400000)      /* Discourage really long introns. */
00043     {
00044     acc += (hGap - 400000)/3000;
00045     if (hGap > ffIntronMax)
00046         acc += (hGap - ffIntronMax)/2000;
00047     }
00048 if (hGap < 0)   /* Discourage jumping back in haystack. */
00049     {
00050     hGap = -8*hGap;
00051     if (hGap > 48)
00052         hGap = (hGap*hGap);
00053     }
00054 if (nGap < 0)   /* Jumping back in needle gets rid of previous alignment. */
00055     {
00056     acc += -nGap;
00057     nGap = 0;
00058     }
00059 acc += digitsBaseTwo(hGap)/2;
00060 if (nGap != 0)
00061     {
00062     acc += digitsBaseTwo(nGap);
00063     }
00064 else
00065     {
00066     if (hGap > 30)
00067         acc -= 1;
00068     }
00069 return acc;
00070 }

Here is the call graph for this function:

Here is the caller graph for this function:

int ffCalcGapPenalty ( int  hGap,
int  nGap,
enum ffStringency  stringency 
)

Definition at line 115 of file ffScore.c.

References calcLooseGap(), calcTightGap(), errAbort(), ffCalcCdnaGapPenalty(), ffCdna, ffLoose, and ffTight.

Referenced by ffGapPenalty(), scoreAli(), ssGapCost(), ssGraphMake(), and trimGapPenalty().

00117 {
00118 switch (stringency)
00119     {
00120     case ffCdna:
00121         return ffCalcCdnaGapPenalty(hGap, nGap);
00122     case ffTight:
00123         return calcTightGap(hGap,nGap);
00124     case ffLoose:
00125         return calcLooseGap(hGap,nGap);
00126     default:
00127         errAbort("Unknown stringency type %d", stringency);
00128         return 0;
00129     }
00130 }

Here is the call graph for this function:

Here is the caller graph for this function:

void ffCat ( struct ffAli **  pA,
struct ffAli **  pB 
)

Definition at line 11 of file ffAliHelp.c.

References ffAli::left, and ffAli::right.

Referenced by bandExtAfter(), bandExtBefore(), cutAtBigIntrons(), findFromSmallerSeeds(), mergeProtoGenes(), scanForSmallerExons(), scanForTinyInternal(), and ssStitch().

00014 {
00015 struct ffAli *a = *pA;
00016 struct ffAli *b = *pB;
00017 
00018 /* If list to add is empty our job is real easy. */
00019 if (b == NULL)
00020     return;
00021 
00022 /* If list to add into is empty, then just switch in the
00023  * second list. */
00024 if (a == NULL)
00025     {
00026     *pA = *pB;
00027     *pB = NULL;
00028     return;
00029     }
00030 
00031 /* Neither list empty.  Find rightmost element of first list
00032  * and cross-link it with leftmost element of second list. */
00033 while (a->right != NULL) a = a->right;
00034 b->left = a;
00035 a->right = b;
00036 *pB = NULL;
00037 }

Here is the caller graph for this function:

int ffCdnaGapPenalty ( struct ffAli ali,
struct ffAli right 
)

Definition at line 133 of file ffScore.c.

References ffCalcCdnaGapPenalty(), ffAli::hEnd, ffAli::hStart, ffAli::left, ffAli::nEnd, ffAli::nStart, and ffAli::right.

Referenced by reconsiderAlignedGaps().

00135 {
00136 int hGap = right->hStart - left->hEnd;
00137 int nGap = right->nStart - left->nEnd;
00138 return ffCalcCdnaGapPenalty(hGap, nGap);
00139 }

Here is the call graph for this function:

Here is the caller graph for this function:

int ffCmpHitsHayFirst ( const void *  va,
const void *  vb 
)

Definition at line 58 of file ffAliHelp.c.

References ffAli::hStart, and ffAli::nStart.

Referenced by weaveAli().

00061 {
00062 const struct ffAli *a = *((struct ffAli **)va);
00063 const struct ffAli *b = *((struct ffAli **)vb);
00064 int diff;
00065 if ((diff = a->hStart - b->hStart) != 0)
00066     return diff;
00067 return a->nStart - b->nStart;
00068 }

Here is the caller graph for this function:

int ffCmpHitsNeedleFirst ( const void *  va,
const void *  vb 
)

Definition at line 70 of file ffAliHelp.c.

References ffAli::hStart, and ffAli::nStart.

Referenced by ssStitch().

00073 {
00074 const struct ffAli *a = *((struct ffAli **)va);
00075 const struct ffAli *b = *((struct ffAli **)vb);
00076 int diff;
00077 if ((diff = a->nStart - b->nStart) != 0)
00078     return diff;
00079 return a->hStart - b->hStart;
00080 }

Here is the caller graph for this function:

void ffCountGoodEnds ( struct ffAli aliList  ) 

Definition at line 108 of file ffAli.c.

References countGoodEnd(), countGoodStart(), ffAli::endGood, ffAli::right, and ffAli::startGood.

Referenced by ffFind(), and pslToFfAli().

00110 {
00111 struct ffAli *ali;
00112 for (ali = aliList; ali != NULL; ali = ali->right)
00113     {
00114     ali->startGood = countGoodStart(ali);
00115     ali->endGood = countGoodEnd(ali);
00116     }
00117 }

Here is the call graph for this function:

Here is the caller graph for this function:

void ffExpandExactLeft ( struct ffAli ali,
DNA needleStart,
DNA hayStart 
)

Definition at line 99 of file ffAliHelp.c.

References ffAli::hStart, and ffAli::nStart.

Referenced by addExtraHits(), findAliBetween(), and rwFindTilesBetween().

00101 {
00102 DNA *nStart = ali->nStart-1;
00103 DNA *hStart = ali->hStart-1;
00104 while (nStart >= needleStart && hStart >= hayStart)
00105     {
00106     if (*nStart != *hStart)
00107         break;
00108     nStart -= 1;
00109     hStart -= 1;
00110     }
00111 ali->nStart = nStart + 1;
00112 ali->hStart = hStart + 1;
00113 return;
00114 }

Here is the caller graph for this function:

void ffExpandExactRight ( struct ffAli ali,
DNA needleEnd,
DNA hayEnd 
)

Definition at line 82 of file ffAliHelp.c.

References ffAli::hEnd, and ffAli::nEnd.

Referenced by addExtraHits(), findAliBetween(), and rwFindTilesBetween().

00084 {
00085 DNA *nEnd = ali->nEnd;
00086 DNA *hEnd = ali->hEnd;
00087 while (nEnd < needleEnd && hEnd < hayEnd)
00088     {
00089     if (*nEnd != *hEnd)
00090         break;
00091     nEnd += 1;
00092     hEnd += 1;
00093     }
00094 ali->nEnd = nEnd;
00095 ali->hEnd = hEnd;
00096 return;
00097 }

Here is the caller graph for this function:

struct ffAli* ffFind ( DNA needleStart,
DNA needleEnd,
DNA hayStart,
DNA hayEnd,
enum ffStringency  stringency 
) [read]

Definition at line 1428 of file fuzzyFind.c.

References dnaUtilOpen(), ffAbort(), ffCountGoodEnds(), ffMemCleanup(), ffMemInit(), ffRecover, findBestAli(), popAbortHandler(), pushAbortHandler(), and saveAliToPermanentMem().

Referenced by alignComponents(), ffFindAndScore(), smallMiddleExons(), and ssFindBundles().

01431 {
01432 struct ffAli *bestAli;
01433 int status;
01434 
01435 assert(needleStart <= needleEnd);
01436 assert(hayStart <= hayEnd);
01437 
01438 ffMemInit();
01439 dnaUtilOpen();
01440 
01441 
01442 /* Set up error recovery. */
01443 status = setjmp(ffRecover);
01444 if (status == 0)    /* Always true except after long jump. */
01445     {
01446     pushAbortHandler(ffAbort);
01447     bestAli = findBestAli(needleStart, needleEnd, hayStart, hayEnd, stringency);
01448     ffCountGoodEnds(bestAli);
01449     bestAli = saveAliToPermanentMem(bestAli);
01450     }
01451 else    /* They long jumped here because of an error. */
01452     {
01453     bestAli = NULL;
01454     }
01455 popAbortHandler();
01456 ffMemCleanup();
01457 return bestAli;
01458 }

Here is the call graph for this function:

Here is the caller graph for this function:

boolean ffFindAndScore ( DNA needle,
int  needleSize,
DNA haystack,
int  haySize,
enum ffStringency  stringency,
struct ffAli **  pAli,
boolean *  pRcNeedle,
int *  pScore 
)

Definition at line 1460 of file fuzzyFind.c.

References FALSE, ffFind(), ffFreeAli(), ffScore(), reverseComplement(), and TRUE.

Referenced by ffFindEitherStrandN().

01465 {
01466 int fScore, rScore;
01467 struct ffAli *fAli, *rAli;
01468 
01469 /* Get forward alignment and score it. */
01470 fAli = ffFind(needle, needle+needleSize, haystack, haystack+haySize, stringency);
01471 fScore = ffScore(fAli,stringency);
01472 
01473 /* Get reverse alignment and score it. */
01474 reverseComplement(needle, needleSize);
01475 rAli = ffFind(needle, needle+needleSize, haystack, haystack+haySize, stringency);
01476 rScore = ffScore(rAli,stringency);
01477 reverseComplement(needle, needleSize);
01478 
01479 /* If no good alignment on either strand return FALSE. */
01480 if (fAli == NULL && rAli == NULL)
01481     {
01482     *pAli = NULL;
01483     return FALSE;
01484     }
01485 
01486 /* Return TRUE with best alignment.  Free the other one. */
01487 if (fScore > rScore)
01488     {
01489     *pAli = fAli;
01490     *pRcNeedle = FALSE;
01491     if (pScore != NULL)
01492         *pScore = fScore;
01493     ffFreeAli(&rAli);
01494     }   
01495 else
01496     {
01497     *pAli = rAli;
01498     *pRcNeedle = TRUE;
01499     if (pScore != NULL)
01500         *pScore = rScore;
01501     ffFreeAli(&fAli);
01502     }
01503 return TRUE;
01504 }

Here is the call graph for this function:

Here is the caller graph for this function:

boolean ffFindEitherStrand ( DNA needle,
DNA haystack,
enum ffStringency  stringency,
struct ffAli **  pAli,
boolean *  pRcNeedle 
)

Definition at line 1514 of file fuzzyFind.c.

References ffFindEitherStrandN().

01519 {
01520 return ffFindEitherStrandN(needle, strlen(needle), haystack, strlen(haystack),
01521 stringency, pAli, pRcNeedle);
01522 }

Here is the call graph for this function:

boolean ffFindEitherStrandN ( DNA needle,
int  needleSize,
DNA haystack,
int  haySize,
enum ffStringency  stringency,
struct ffAli **  pAli,
boolean *  pRcNeedle 
)

Definition at line 1506 of file fuzzyFind.c.

References ffFindAndScore().

Referenced by ffFindEitherStrand().

01510 {
01511 return ffFindAndScore(needle, needleSize, haystack, haySize, stringency, pAli, pRcNeedle, NULL);
01512 }

Here is the call graph for this function:

Here is the caller graph for this function:

void ffFreeAli ( struct ffAli **  pAli  ) 

Definition at line 14 of file ffAli.c.

References ffAli::right, and slFreeList().

Referenced by ffFindAndScore(), forceMonotonic(), ssFfItemFree(), and ssStitch().

00016 {
00017 struct ffAli *ali = *pAli;
00018 if (ali != NULL)
00019     {
00020     while (ali->right)
00021         ali = ali->right;
00022     slFreeList(&ali);
00023     }
00024 *pAli = NULL;
00025 }

Here is the call graph for this function:

Here is the caller graph for this function:

int ffGapPenalty ( struct ffAli ali,
struct ffAli right,
enum ffStringency  stringency 
)

Definition at line 141 of file ffScore.c.

References ffCalcGapPenalty(), ffAli::hEnd, ffAli::hStart, ffAli::left, ffAli::nEnd, ffAli::nStart, and ffAli::right.

Referenced by ffScoreSomeAlis(), and ffScoreSomething().

00143 {
00144 int hGap = right->hStart - left->hEnd;
00145 int nGap = right->nStart - left->nEnd;
00146 return ffCalcGapPenalty(hGap, nGap, stringency);
00147 }

Here is the call graph for this function:

Here is the caller graph for this function:

int ffIntronOrientation ( struct ffAli ali  ) 

Definition at line 36 of file ffAli.c.

References ffAli::hEnd, intronOrientation(), ffAli::left, and ffAli::right.

Referenced by ffSlideIntrons(), jiggleSmallExons(), recursiveWeave(), refineSpliceSites(), and trimFlakyEnds().

00039 {
00040 struct ffAli *left = ali, *right;
00041 int orient = 0;
00042 
00043 if (left != NULL)
00044     {
00045     while((right = left->right) != NULL)
00046         {
00047         orient += intronOrientation(left->hEnd, right->hStart);
00048         left = right;
00049         }
00050     }
00051 return orient;
00052 }

Here is the call graph for this function:

Here is the caller graph for this function:

struct ffAli* ffMakeRightLinks ( struct ffAli rightMost  )  [read]

Definition at line 62 of file ffAli.c.

References ffAli::left, and ffAli::right.

Referenced by ffAliFromSym(), ffAliSort(), gfRangesToFfItem(), lumpHits(), pslToFakeFfAli(), pslToFfAli(), rwFindTilesBetween(), scanIndexForSmallExons(), and ssFindBestBig().

00066 {
00067 struct ffAli *ff, *last = NULL;
00068 
00069 for (ff = rightMost; ff != NULL; ff = ff->left)
00070     {
00071     ff->right = last;
00072     last = ff;
00073     }
00074 return last;
00075 }

Here is the caller graph for this function:

struct ffAli* ffMergeClose ( struct ffAli aliList,
DNA needleStart,
DNA hayStart 
) [read]

Definition at line 116 of file ffAliHelp.c.

References ffRemoveEmptyAlis(), ffAli::hEnd, ffAli::hStart, max, min, ffAli::nEnd, ffAli::nStart, ffAli::right, and TRUE.

Referenced by ssStitch().

00121 {
00122 struct ffAli *mid, *ali;
00123 int closeEnough = -3;
00124 
00125 if (aliList == NULL)
00126     return NULL;
00127 for (mid = aliList->right; mid != NULL; mid = mid->right)
00128     {
00129     for (ali = aliList; ali != mid; ali = ali->right)
00130         {
00131         char *nStart, *nEnd;
00132         int nOverlap;
00133         nStart = max(ali->nStart, mid->nStart);
00134         nEnd = min(ali->nEnd, mid->nStart);
00135         nOverlap = nEnd - nStart;
00136         /* Overlap or perfectly abut in needle, and needle/hay
00137          * offset the same. */
00138         if (nOverlap >= closeEnough)
00139             {
00140             int aliDiag = (ali->nStart - needleStart) - (ali->hStart - hayStart);
00141             int midDiag = (mid->nStart - needleStart) - (mid->hStart - hayStart);
00142             if (aliDiag == midDiag)
00143                 {
00144                 /* Make mid encompass both, and make ali empty. */
00145                 mid->nStart = min(ali->nStart, mid->nStart);
00146                 mid->nEnd = max(ali->nEnd, mid->nEnd);
00147                 mid->hStart = min(ali->hStart, mid->hStart);
00148                 mid->hEnd = max(ali->hEnd, mid->hEnd);
00149                 ali->hStart = ali->hEnd = mid->hStart;
00150                 ali->nEnd = ali->nStart = mid->nStart;;
00151                 }
00152             }
00153         }
00154     }
00155 aliList = ffRemoveEmptyAlis(aliList, TRUE);
00156 return aliList;
00157 }

Here is the call graph for this function:

Here is the caller graph for this function:

struct ffAli* ffMergeHayOverlaps ( struct ffAli ali  )  [read]

Definition at line 330 of file ffAliHelp.c.

References ffAli::hEnd, ffAli::hStart, ffAli::nEnd, ffAli::nStart, and ffAli::right.

Referenced by findBestAli(), and ssStitch().

00334 {
00335 struct ffAli *a = NULL;
00336 struct ffAli *leftA = NULL;
00337 
00338 if (ali == NULL)
00339     return NULL;
00340 a = ali;
00341 for (;;)
00342     {
00343     int nOverlap;
00344     int hOverlap;
00345     int aSize;
00346 
00347     /* Advance to next ali */
00348     leftA = a;
00349     a = a->right;
00350     if (a == NULL)
00351         break;
00352 
00353     nOverlap = leftA->nEnd - a->nStart;
00354     hOverlap = leftA->hEnd - a->hStart;
00355     aSize = a->nEnd - a->nStart;
00356     if (hOverlap > 0 && hOverlap < aSize && nOverlap <= 0)
00357         {
00358         a->hStart += hOverlap;
00359         a->nStart += hOverlap;
00360         }
00361     }
00362 return ali;
00363 }

Here is the caller graph for this function:

struct ffAli* ffMergeNeedleAlis ( struct ffAli ali,
boolean  doFree 
) [read]

Definition at line 365 of file ffAliHelp.c.

References freeMem(), ffAli::hEnd, ffAli::hStart, ffAli::left, ffAli::nEnd, ffAli::nStart, and ffAli::right.

Referenced by findBestAli(), smoothSmallGaps(), and ssStitch().

00368 {
00369 struct ffAli *a = NULL;
00370 struct ffAli *leftA = NULL;
00371 struct ffAli *rightA;
00372 
00373 if (ali == NULL)
00374     return NULL;
00375 rightA = ali;
00376 for (;;)
00377     {
00378     /* Advance to next ali */
00379     leftA = a;
00380     a = rightA;
00381     if (a == NULL)
00382         break;
00383     rightA = a->right;
00384     
00385 
00386     /* See if can merge current alignment into left one. */
00387     if (leftA != NULL)
00388         {
00389         int overlap = leftA->nEnd - a->nStart;
00390 
00391         /* Deal with overlaps in needle */
00392         if (overlap > 0)
00393             {
00394             /* See if left encompasses current segment. */
00395             if (leftA->nStart <= a->nStart && leftA->nEnd >= a->nEnd)
00396                 {
00397                 /* Eliminate current segment. */
00398                 leftA->right = rightA;
00399                 if (rightA != NULL)
00400                     rightA->left = leftA;
00401                 if (doFree) freeMem(a);
00402                 a = leftA;
00403                 }
00404             else
00405                 {
00406                 /* Remove overlapping area from current segment, leave
00407                  * it in left segment. */
00408                 a->hStart += overlap;
00409                 a->nStart += overlap;
00410                 }
00411             }
00412         else if (overlap == 0 && leftA->hEnd == a->hStart)
00413             {
00414             /* Remove current segment from list. */
00415             leftA->right = rightA;
00416             if (rightA != NULL)
00417                 rightA->left = leftA;
00418             /* Fold data from current segment into left segment */
00419             leftA->nEnd = a->nEnd;
00420             leftA->hEnd = a->hEnd;
00421             if (doFree) freeMem(a); 
00422             a = leftA;
00423             }
00424         }
00425     }
00426 return ali;
00427 }

Here is the call graph for this function:

Here is the caller graph for this function:

int ffOneIntronOrientation ( struct ffAli left,
struct ffAli right 
)

Definition at line 27 of file ffAli.c.

References ffAli::hEnd, ffAli::hStart, intronOrientation(), ffAli::left, ffAli::nEnd, ffAli::nStart, and ffAli::right.

00030 {
00031 if (left->nEnd != right->nStart)
00032     return 0;
00033 return intronOrientation(left->hEnd, right->hStart);
00034 }

Here is the call graph for this function:

struct ffAli* ffRemoveEmptyAlis ( struct ffAli ali,
boolean  doFree 
) [read]

Definition at line 284 of file ffAliHelp.c.

References freeMem(), ffAli::hEnd, ffAli::hStart, ffAli::left, ffAli::nEnd, ffAli::nStart, and ffAli::right.

Referenced by ffMergeClose(), findBestAli(), refineSmallExons(), refineSpliceSites(), and ssStitch().

00286 {
00287 struct ffAli *leftAli;
00288 struct ffAli *startAli;
00289 struct ffAli *rightAli;
00290 
00291 /* Figure out left most non-empty ali. */
00292 while (ali->left)
00293     ali = ali->left;
00294 while (ali)
00295     {
00296     /* If current ali is empty, chuck it out. */
00297     if (ali->nEnd <= ali->nStart || ali->hEnd <= ali->hStart)
00298         {
00299         struct ffAli *empty = ali;
00300         ali = ali->right;
00301         if (doFree) freeMem(empty);
00302         }
00303     else
00304         break;
00305     }
00306 ali->left = NULL;
00307 
00308 /* Get rid of empty middle alis. */
00309 startAli = leftAli = ali;
00310 ali = ali->right;
00311 while (ali)
00312     {
00313     rightAli = ali->right;
00314     if (ali->nEnd <= ali->nStart || ali->hEnd <= ali->hStart)
00315         {
00316         leftAli->right = rightAli;
00317         if (rightAli != NULL)
00318             rightAli->left = leftAli;
00319         if (doFree) freeMem(ali);
00320         }
00321     else
00322         {
00323         leftAli = ali;
00324         }
00325     ali = rightAli;
00326     }
00327 return startAli;
00328 }

Here is the call graph for this function:

Here is the caller graph for this function:

struct ffAli* ffRightmost ( struct ffAli ff  )  [read]

Definition at line 54 of file ffAli.c.

References ffAli::right.

Referenced by savePslx(), smallMiddleExons(), smoothOneGap(), and trimFlakyEnds().

00056 {
00057 while (ff->right != NULL)
00058     ff = ff->right;
00059 return ff;
00060 }

Here is the caller graph for this function:

int ffScore ( struct ffAli ali,
enum ffStringency  stringency 
)

Definition at line 195 of file ffScore.c.

References FALSE, and ffScoreSomething().

Referenced by cutAtBigIntrons(), ffFindAndScore(), and ffScoreCdna().

00197 {
00198 return ffScoreSomething(ali, stringency, FALSE);
00199 }

Here is the call graph for this function:

Here is the caller graph for this function:

int ffScoreCdna ( struct ffAli ali  ) 

Definition at line 201 of file ffScore.c.

References ffCdna, and ffScore().

00204 {
00205 return ffScore(ali, ffCdna);
00206 }

Here is the call graph for this function:

int ffScoreIntron ( DNA  a,
DNA  b,
DNA  y,
DNA  z,
int  orientation 
)

Definition at line 160 of file ffAliHelp.c.

Referenced by slideIntron(), and trimGapPenalty().

00163 {
00164 int score = 0;
00165 int revScore = 0;
00166 
00167 if (orientation >= 0)
00168     {
00169     if (a == 'g' || a == 'G') ++score;
00170     if (b == 't' || b == 'T') ++score;
00171     if (y == 'a' || y == 'A') ++score;
00172     if (z == 'g' || z == 'G') ++score;
00173     }
00174 
00175 if (orientation <= 0)
00176     {
00177     if (a == 'c' || a == 'C') ++revScore;
00178     if (b == 't' || b == 'T') ++revScore;
00179     if (y == 'a' || y == 'A') ++revScore;
00180     if (z == 'c' || z == 'C') ++revScore;
00181     }
00182 
00183 return score > revScore ? score : revScore;
00184 }

Here is the caller graph for this function:

int ffScoreMatch ( DNA a,
DNA b,
int  size 
)

Definition at line 17 of file ffScore.c.

Referenced by trimFlakyEnds().

00021 {
00022 int i;
00023 int score = 0;
00024 for (i=0; i<size; ++i)
00025     {
00026     DNA aa = a[i];
00027     DNA bb = b[i];
00028     if (aa == 'n' || bb == 'n')
00029         continue;
00030     if (aa == bb)
00031         ++score;
00032     else
00033         score -= 1;
00034     }
00035 return score;
00036 }

Here is the caller graph for this function:

int ffScoreProtein ( struct ffAli ali,
enum ffStringency  stringency 
)

Definition at line 208 of file ffScore.c.

References ffScoreSomething(), and TRUE.

00210 {
00211 return ffScoreSomething(ali, stringency, TRUE);
00212 }

Here is the call graph for this function:

int ffScoreSomeAlis ( struct ffAli ali,
int  count,
enum ffStringency  stringency 
)

Definition at line 149 of file ffScore.c.

References dnaScoreMatch(), ffGapPenalty(), ffAli::hEnd, ffAli::hStart, ffAli::nStart, and ffAli::right.

00151 {
00152 int score = 0;
00153 int oneScore;
00154 
00155 while (--count >= 0)
00156     {
00157     int len = ali->hEnd - ali->hStart;
00158     struct ffAli *right = ali->right;
00159     oneScore = dnaScoreMatch(ali->hStart, ali->nStart, len);
00160     score += oneScore;
00161     if (count > 0)  /* Calculate gap penalty */
00162         score -= ffGapPenalty(ali, right,stringency);
00163     ali = right;
00164     }
00165 return score;
00166 }

Here is the call graph for this function:

int ffScoreSomething ( struct ffAli ali,
enum ffStringency  stringency,
boolean  isProt 
)

Definition at line 168 of file ffScore.c.

References aaScoreMatch(), dnaScoreMatch(), ffGapPenalty(), ffAli::hEnd, ffAli::hStart, ffAli::left, ffAli::nStart, and ffAli::right.

Referenced by ffScore(), and ffScoreProtein().

00171 {
00172 int score = 0;
00173 int oneScore;
00174 int (*scoreMatch)(char *a, char *b, int size);
00175 
00176 if (ali == NULL)
00177     return -0x7FFFFFFF;
00178 scoreMatch = (isProt ? aaScoreMatch : dnaScoreMatch );
00179 while (ali->left != NULL) ali = ali->left;
00180 while (ali != NULL)
00181     {
00182     int len = ali->hEnd - ali->hStart;
00183     struct ffAli *right = ali->right;
00184     oneScore = scoreMatch(ali->hStart, ali->nStart, len);
00185     score += oneScore;
00186     if (right)  /* Calculate gap penalty */
00187         {
00188         score -= ffGapPenalty(ali, right, stringency);
00189         }
00190     ali = right;
00191     }
00192 return score;
00193 }

Here is the call graph for this function:

Here is the caller graph for this function:

int ffShAli ( FILE *  f,
struct ffAli aliList,
char *  needleName,
DNA needle,
int  needleSize,
int  needleNumOffset,
char *  haystackName,
DNA haystack,
int  haySize,
int  hayNumOffset,
int  blockMaxGap,
boolean  rcNeedle 
)

Definition at line 368 of file fuzzyShow.c.

References FALSE, ffShAliPart(), and TRUE.

Referenced by ffShowAli().

00374 {
00375 return ffShAliPart(f, aliList, needleName, needle, needleSize, needleNumOffset,
00376     haystackName, haystack, haySize, hayNumOffset, blockMaxGap, rcNeedle, FALSE,
00377     TRUE, TRUE, TRUE, TRUE, FALSE, 0, 0, 0, 0);
00378 }

Here is the call graph for this function:

Here is the caller graph for this function:

int ffShAliPart ( FILE *  f,
struct ffAli aliList,
char *  needleName,
DNA needle,
int  needleSize,
int  needleNumOffset,
char *  haystackName,
DNA haystack,
int  haySize,
int  hayNumOffset,
int  blockMaxGap,
boolean  rcNeedle,
boolean  rcHaystack,
boolean  showJumpTable,
boolean  showNeedle,
boolean  showHaystack,
boolean  showSideBySide,
boolean  upcMatch,
int  cdsS,
int  cdsE,
int  hayPartS,
int  hayPartE 
)

Definition at line 82 of file fuzzyShow.c.

References FALSE, ffAli::hEnd, ffAli::hStart, ffAli::left, needMem(), ffAli::nEnd, ffAli::nStart, ffAli::right, and TRUE.

Referenced by ffShAli().

00095 {
00096 long i;
00097 struct ffAli *ali;
00098 struct ffAli *lastAli;
00099 struct ffAli *leftAli = aliList;
00100 struct ffAli *rightAli = aliList;
00101 int charsInLine;
00102 struct baf baf;
00103 int maxSize = (needleSize > haySize ? needleSize : haySize);
00104 char *colorFlags = needMem(maxSize);
00105 int anchorCount = 0;
00106 boolean restrictToWindow = FALSE;
00107 int hayOffStart = 0, hayOffEnd = haySize;
00108 int hayPaddedOffStart = 0, hayPaddedOffEnd = haySize;
00109 int hayExtremity = rcHaystack ? (hayNumOffset + haySize) : hayNumOffset;
00110 int nPartS=0, nPartE=0;
00111 
00112 if (aliList != NULL)
00113     {
00114     while (leftAli->left != NULL) leftAli = leftAli->left;
00115     while (rightAli->right != NULL) rightAli = rightAli->right;
00116     }
00117 
00118 /* If we are only showing part of the alignment, translate haystack window
00119  * coords to needle window coords and haystack-offset window coords: */
00120 if (hayPartS > (hayNumOffset + (leftAli->hStart - haystack)) ||
00121     (hayPartE > 0 && hayPartE < (hayNumOffset + (rightAli->hEnd - haystack))))
00122     {
00123     DNA *haystackPartS;
00124     DNA *haystackPartE;
00125     restrictToWindow = TRUE;
00126     if (rcHaystack)
00127         {
00128         haystackPartS = haystack + (haySize - (hayPartE - hayNumOffset));
00129         haystackPartE = haystack + (haySize - (hayPartS - hayNumOffset));
00130         }
00131     else
00132         {
00133         haystackPartS = haystack + hayPartS - hayNumOffset;
00134         haystackPartE = haystack + hayPartE - hayNumOffset;
00135         }
00136     boolean foundStart = FALSE;
00137     hayOffStart = haystackPartS - haystack;
00138     hayOffEnd = haystackPartE - haystack;
00139     for (ali = leftAli;  ali != NULL;  ali = ali->right)
00140         {
00141         if (haystackPartS < ali->hEnd && !foundStart)
00142             {
00143             int offset = haystackPartS - ali->hStart;
00144             if (offset < 0)
00145                 offset = 0;
00146             nPartS = offset + ali->nStart - needle;
00147             hayOffStart = offset + ali->hStart - haystack;
00148             foundStart = TRUE;
00149             }
00150         if (haystackPartE > ali->hStart)
00151             {
00152             if (haystackPartE > ali->hEnd)
00153                 {
00154                 nPartE = ali->nEnd - needle;
00155                 hayOffEnd = ali->hEnd - haystack;
00156                 }
00157             else
00158                 {
00159                 nPartE = haystackPartE - ali->hStart + ali->nStart - needle;
00160                 hayOffEnd = haystackPartE - haystack;
00161                 }
00162             }
00163         }
00164     hayPaddedOffStart = max(0, (hayOffStart - 100));
00165     hayPaddedOffEnd = min(haySize, (hayOffEnd + 100));
00166     if (rcHaystack)
00167         hayExtremity = hayNumOffset + haySize - hayPaddedOffStart;
00168     else
00169         hayExtremity = hayNumOffset + hayPaddedOffEnd;
00170     }
00171 
00172 if (showJumpTable)
00173     {
00174     fputs("<CENTER><P><TABLE BORDER=1 WIDTH=\"97%\"><TR>", f);
00175     fputs("<TD WIDTH=\"23%\"><P ALIGN=CENTER><A HREF=\"#cDNA\">cDNA Sequence</A></TD>", f);
00176     if (restrictToWindow)
00177         fputs("<TD WIDTH=\"23%\"><P ALIGN=CENTER><A HREF=\"#cDNAStart\">cDNA Sequence in window</A></TD>", f);
00178     fputs("<TD WIDTH=\"27%\"><P ALIGN=\"CENTER\"><A HREF=\"#genomic\">Genomic Sequence</A></TD>", f);
00179     fputs("<TD WIDTH=\"29%\"><P ALIGN=\"CENTER\"><A HREF=\"#1\">cDNA in Genomic</A></TD>", f);
00180     fputs("<TD WIDTH=\"21%\"><P ALIGN=\"CENTER\"><A HREF=\"#ali\">Side by Side</A></TD>", f);
00181     fputs("</TR></TABLE>\n", f);
00182     }
00183 if (cdsE > 0) 
00184     {
00185     fprintf(f, "Matching bases in coding regions of cDNA and genomic sequences are colored blue%s. ", 
00186             (upcMatch ? " and capitalized" : ""));
00187     fprintf(f, "Matching bases in UTR regions of cDNA and genomic sequences are colored red%s. ", 
00188             (upcMatch ? " and capitalized" : ""));
00189     fputs("Light blue (coding) or orange (UTR) bases mark the boundaries of gaps in either sequence "
00190           "(often splice sites).\n", f);
00191     } 
00192 else 
00193     {
00194     fprintf(f, "Matching bases in cDNA and genomic sequences are colored blue%s. ", 
00195             (upcMatch ? " and capitalized" : ""));
00196     fputs("Light blue bases mark the boundaries of gaps in either sequence "
00197           "(often splice sites).\n", f);
00198     } 
00199 if (showNeedle && restrictToWindow)
00200     fputs("Bases that were in the selected browser region are shown in bold "
00201           "and underlined, "
00202           "and only the alignment for these bases is displayed in the "
00203           "Genomic and Side by Side sections.\n", f);
00204 
00205 if (showJumpTable)
00206     fputs("</P></CENTER>\n", f);
00207 htmHorizontalLine(f);
00208 
00209 fprintf(f, "<H4><A NAME=cDNA></A>cDNA %s%s</H4>\n", needleName, (rcNeedle ? " (reverse complemented)" : ""));
00210 
00211 /* NOTE: if rcHaystack, hayNumOffset changes here into the end, not start! */
00212 if (rcHaystack) 
00213     hayNumOffset += haySize;
00214 
00215 if (rcNeedle)
00216     reverseComplement(needle, needleSize);
00217 
00218 if (showNeedle)
00219     {
00220     ffShNeedle(f, needle, needleSize, needleNumOffset, colorFlags,
00221                aliList, upcMatch, cdsS, cdsE,
00222                restrictToWindow, nPartS, nPartE);
00223     }
00224 
00225 if (showHaystack)
00226     {
00227     struct cfm *cfm = cfmNew(10, 50, TRUE, rcHaystack, f, hayExtremity);
00228     char *h = cloneMem(haystack, haySize);
00229     char *accentFlags = needMem(haySize);
00230     zeroBytes(accentFlags, haySize);
00231     fprintf(f, "<H4><A NAME=genomic></A>Genomic %s %s:</H4>\n", 
00232         haystackName,
00233         (rcHaystack ? "(reverse strand)" : ""));
00234     fprintf(f, "<TT><PRE>\n");
00235     zeroBytes(colorFlags, haySize);
00236     for (ali = leftAli; ali != NULL; ali = ali->right)
00237         {
00238         boolean utr = FALSE;
00239         int i;
00240         int off = ali->hStart-haystack;
00241         int count = ali->hEnd - ali->hStart;
00242         int offn = ali->nStart-needle;
00243         if ((cdsE > 0) && ((cdsS-offn-1) > 0)) 
00244             utr = TRUE;
00245         for (i=0; i<count; ++i)
00246             {
00247             if (!utr && (i > (cdsE-offn-1)) && (cdsE > 0))
00248                 utr = TRUE;
00249             if (utr && (i == (cdsS-offn)))
00250                 utr = FALSE;
00251             if (toupper(ali->hStart[i]) == toupper(ali->nStart[i]))
00252                 {
00253                 if (utr)
00254                     colorFlags[off+i] = ((i == 0 || i == count-1) ? socOrange : socRed);
00255                 else
00256                     colorFlags[off+i] = ((i == 0 || i == count-1) ? socBrightBlue : socBlue);
00257                 if (upcMatch)
00258                     h[off+i] = toupper(h[off+i]);
00259                 }
00260             if (restrictToWindow && off+i >= hayOffStart && off+i < hayOffEnd)
00261                 accentFlags[off+i] = TRUE;
00262             }
00263         }
00264     ali = leftAli;
00265     lastAli = NULL;
00266     while (ali && (ali->hEnd - haystack) <= hayPaddedOffStart)
00267         ali = ali->right;
00268     for (i = hayPaddedOffStart; i < hayPaddedOffEnd; ++i)
00269         {
00270         /* Put down "anchor" on first match position in haystack
00271          * so user can hop here with a click on the needle. */
00272         if (ali != NULL &&  i == ali->hStart - haystack)
00273             {
00274             if (lastAli == NULL || ali->hStart - lastAli->hEnd > blockMaxGap)
00275                 {
00276                 fprintf(f, "<A NAME=%d></A>", ++anchorCount);
00277                 }
00278             lastAli = ali;
00279             ali = ali->right;
00280             }
00281         cfmOutExt(cfm, h[i], seqOutColorLookup[(int)colorFlags[i]],
00282                   accentFlags[i], accentFlags[i], FALSE);
00283         }
00284     cfmFree(&cfm);
00285     freeMem(h);
00286     fprintf(f, "</TT></PRE>\n");
00287     htmHorizontalLine(f);
00288     }
00289 
00290 if (showSideBySide)
00291     {
00292     fprintf(f, "<H4><A NAME=ali></A>Side by Side Alignment</H4>\n");
00293     fprintf(f, "<TT><PRE>\n");
00294     lastAli = NULL;
00295     charsInLine = 0;
00296     bafInit(&baf, needle, needleNumOffset, FALSE, 
00297         haystack, hayNumOffset, rcHaystack, f, 50, FALSE);
00298     for (ali=leftAli; ali!=NULL; ali = ali->right)
00299         {
00300         boolean doBreak = TRUE;
00301         int aliLen;
00302         int i;
00303 
00304         if ((ali->hEnd - haystack) <= hayOffStart ||
00305             (ali->hStart - haystack) >= hayOffEnd)
00306             continue;
00307 
00308         /* Decide whether to put in a line break and/or blank characters */
00309         if (lastAli != NULL)
00310             {
00311             int nSkip = ali->nStart - lastAli->nEnd;
00312             int hSkip = ali->hStart - lastAli->hEnd;
00313             if (nSkip > 0 && nSkip <= blockMaxGap && hSkip == 0)
00314                 {
00315                 for (i=0; i<nSkip; ++i)
00316                     bafOut(&baf, lastAli->nEnd[i],'.');
00317                 doBreak = FALSE; 
00318                 }
00319             else if (hSkip > 0 && hSkip <= blockMaxGap && nSkip == 0)
00320                 {
00321                 for (i=0; i<hSkip; ++i)
00322                     bafOut(&baf, '.', lastAli->hEnd[i]);
00323                 doBreak = FALSE;
00324                 }
00325             else if (hSkip == nSkip && hSkip <= blockMaxGap)
00326                 {
00327                 for (i=0; i<hSkip; ++i)
00328                     bafOut(&baf, lastAli->nEnd[i], lastAli->hEnd[i]);
00329                 doBreak = FALSE;
00330                 }
00331             }
00332         else
00333             {
00334             doBreak = FALSE;
00335             }
00336         if (doBreak)
00337             bafFlushLine(&baf);
00338         int offset = max(0, (hayOffStart - (ali->hStart - haystack)));
00339         int nStart = offset + ali->nStart - needle;
00340         int hStart = offset + ali->hStart - haystack;
00341         bafSetPos(&baf, nStart, hStart);
00342         if (doBreak || lastAli == NULL)
00343             bafStartLine(&baf);
00344         aliLen = ali->nEnd - ali->nStart;
00345         for (i=0; i<aliLen; ++i)
00346             {
00347             int hayOff = i + (ali->hStart - haystack);
00348             if (hayOff < hayOffStart)
00349                 continue;
00350             if (hayOff >= hayOffEnd)
00351                 break;
00352             bafOut(&baf, ali->nStart[i], ali->hStart[i]);
00353             }
00354         lastAli = ali;
00355         }
00356     if (leftAli != NULL)
00357         bafFlushLine(&baf);
00358     fprintf(f, "</TT></PRE>\n");
00359     fprintf(f, "<EM>*Aligned Blocks with gaps &lt;= %d bases are merged for "
00360             "this display when only one sequence has a gap, or when gaps in "
00361             "both sequences are of the same size.</EM>\n", blockMaxGap);
00362     }
00363 if (rcNeedle)
00364     reverseComplement(needle, needleSize);
00365 return anchorCount;
00366 }

Here is the call graph for this function:

Here is the caller graph for this function:

void ffShowAli ( struct ffAli aliList,
char *  needleName,
DNA needle,
int  needleNumOffset,
char *  haystackName,
DNA haystack,
int  hayNumOffset,
boolean  rcNeedle 
)

Definition at line 380 of file fuzzyShow.c.

References ffShAli().

00383 {
00384 ffShAli(stdout, aliList, needleName, needle, strlen(needle), needleNumOffset,
00385     haystackName, haystack, strlen(haystack), hayNumOffset, 8, rcNeedle);
00386 }

Here is the call graph for this function:

boolean ffSlideIntrons ( struct ffAli ali  ) 

Definition at line 276 of file ffAliHelp.c.

References ffIntronOrientation(), and ffSlideOrientedIntrons().

Referenced by findBestAli(), jiggleSmallExons(), and ssStitch().

00279 {
00280 int orient = ffIntronOrientation(ali);
00281 return ffSlideOrientedIntrons(ali, orient);
00282 }

Here is the call graph for this function:

Here is the caller graph for this function:

boolean ffSlideOrientedIntrons ( struct ffAli ali,
int  orient 
)

Definition at line 259 of file ffAliHelp.c.

References FALSE, ffAli::left, ffAli::right, slideIntron(), and TRUE.

Referenced by ffSlideIntrons(), and refineSpliceSites().

00262 {
00263 struct ffAli *left = ali, *right;
00264 boolean slid = FALSE;
00265 if (left == NULL)
00266     return FALSE;
00267 while((right = left->right) != NULL)
00268     {
00269     if (slideIntron(left, right, orient))
00270         slid = TRUE;
00271     left = right;
00272     }
00273 return slid;
00274 }

Here is the call graph for this function:

Here is the caller graph for this function:

void setFfExtendThroughN ( boolean  val  ) 

Definition at line 605 of file fuzzyFind.c.

References extendThroughN.

Referenced by main().

00607 {
00608 extendThroughN = val;
00609 }

Here is the caller graph for this function:

void setFfIntronMax ( int  value  ) 

Definition at line 12 of file ffScore.c.

References ffIntronMax.

Referenced by main().

00013 {
00014 ffIntronMax = value;
00015 }

Here is the caller graph for this function:


Variable Documentation

int ffIntronMax

Definition at line 10 of file ffScore.c.

Referenced by ffCalcCdnaGapPenalty(), ffSeedExtInMem(), gfAlignSomeClumps(), gfAlignStrand(), gfAlignTrans(), gfAlignTransTrans(), gfFindAlignAaTrans(), scanIndexForSmallExons(), seedResolvePower(), setFfIntronMax(), and ssStitch().


Generated on Tue Dec 25 18:56:43 2007 for blat by  doxygen 1.5.2