lib/rangeTree.c File Reference

#include "common.h"
#include "localmem.h"
#include "rbTree.h"
#include "rangeTree.h"

Include dependency graph for rangeTree.c:

Go to the source code of this file.

Functions

int rangeCmp (void *va, void *vb)
rangerangeTreeAdd (struct rbTree *tree, int start, int end)
boolean rangeTreeOverlaps (struct rbTree *tree, int start, int end)
static void rangeListAdd (void *v)
rangerangeTreeList (struct rbTree *tree)
rangerangeTreeFindEnclosing (struct rbTree *tree, int start, int end)
rangerangeTreeAllOverlapping (struct rbTree *tree, int start, int end)
static void addOverlap (void *v)
int rangeTreeOverlapSize (struct rbTree *tree, int start, int end)
rbTreerangeTreeNew ()
rbTreerangeTreeNewDetailed (struct lm *lm, struct rbTreeNode *stack[128])

Variables

static struct rangerangeList
static int totalOverlap
static int overlapStart
static int overlapEnd


Function Documentation

static void addOverlap ( void *  v  )  [static]

Definition at line 104 of file rangeTree.c.

References range::end, overlapEnd, overlapStart, positiveRangeIntersection(), range::start, and totalOverlap.

Referenced by rangeTreeOverlapSize().

00106 {
00107 struct range *r = v;
00108 totalOverlap += positiveRangeIntersection(r->start, r->end, 
00109         overlapStart, overlapEnd);
00110 }

Here is the call graph for this function:

Here is the caller graph for this function:

int rangeCmp ( void *  va,
void *  vb 
)

Definition at line 13 of file rangeTree.c.

References range::end, and range::start.

Referenced by rangeTreeNew(), and rangeTreeNewDetailed().

00016 {
00017 struct range *a = va;
00018 struct range *b = vb;
00019 if (a->end <= b->start)
00020     return -1;
00021 else if (b->end <= a->start)
00022     return 1;
00023 else
00024     return 0;
00025 }

Here is the caller graph for this function:

static void rangeListAdd ( void *  v  )  [static]

Definition at line 56 of file rangeTree.c.

References rangeList, and slAddHead.

Referenced by rangeTreeAllOverlapping(), and rangeTreeList().

00058 {
00059 struct range *r = v;
00060 slAddHead(&rangeList, r);
00061 }

Here is the caller graph for this function:

struct range* rangeTreeAdd ( struct rbTree tree,
int  start,
int  end 
) [read]

Definition at line 27 of file rangeTree.c.

References range::end, rbTree::lm, lmCloneMem(), max, min, rbTreeAdd(), rbTreeRemove(), range::start, and range::val.

00029 {
00030 struct range tempR, *existing;
00031 tempR.start = start;
00032 tempR.end = end;
00033 tempR.val = NULL;
00034 while ((existing = rbTreeRemove(tree, &tempR)) != NULL)
00035      {
00036      tempR.start = min(tempR.start, existing->start);
00037      tempR.end = max(tempR.end, existing->end);
00038      }
00039 struct range *r = lmCloneMem(tree->lm, &tempR, sizeof(tempR));
00040 rbTreeAdd(tree, r);
00041 return r;
00042 }

Here is the call graph for this function:

struct range* rangeTreeAllOverlapping ( struct rbTree tree,
int  start,
int  end 
) [read]

Definition at line 86 of file rangeTree.c.

References range::end, rangeList, rangeListAdd(), rbTreeTraverseRange(), slReverse(), and range::start.

00090 {
00091 struct range tempR;
00092 tempR.start = start;
00093 tempR.end = end;
00094 rangeList = NULL;
00095 rbTreeTraverseRange(tree, &tempR, &tempR, rangeListAdd);
00096 slReverse(&rangeList);
00097 return rangeList;
00098 }

Here is the call graph for this function:

struct range* rangeTreeFindEnclosing ( struct rbTree tree,
int  start,
int  end 
) [read]

Definition at line 73 of file rangeTree.c.

References range::end, rbTreeFind(), and range::start.

00076 {
00077 struct range tempR, *r;
00078 tempR.start = start;
00079 tempR.end = end;
00080 r = rbTreeFind(tree, &tempR);
00081 if (r != NULL && r->start <= start && r->end >= end)
00082     return r;
00083 return NULL;
00084 }

Here is the call graph for this function:

struct range* rangeTreeList ( struct rbTree tree  )  [read]

Definition at line 63 of file rangeTree.c.

References rangeList, rangeListAdd(), rbTreeTraverse(), and slReverse().

00066 {
00067 rangeList = NULL;
00068 rbTreeTraverse(tree, rangeListAdd);
00069 slReverse(&rangeList);
00070 return rangeList;
00071 }

Here is the call graph for this function:

struct rbTree* rangeTreeNew (  )  [read]

Definition at line 126 of file rangeTree.c.

References rangeCmp(), and rbTreeNew().

00128 {
00129 return rbTreeNew(rangeCmp);
00130 }

Here is the call graph for this function:

struct rbTree* rangeTreeNewDetailed ( struct lm lm,
struct rbTreeNode stack[128] 
) [read]

Definition at line 132 of file rangeTree.c.

References lm, rangeCmp(), rbTreeNewDetailed(), and rbTree::stack.

00136 {
00137 return rbTreeNewDetailed(rangeCmp, lm, stack);
00138 }

Here is the call graph for this function:

boolean rangeTreeOverlaps ( struct rbTree tree,
int  start,
int  end 
)

Definition at line 44 of file rangeTree.c.

References range::end, rbTreeFind(), range::start, and range::val.

00046 {
00047 struct range tempR;
00048 tempR.start = start;
00049 tempR.end = end;
00050 tempR.val = NULL;
00051 return rbTreeFind(tree, &tempR) != NULL;
00052 }

Here is the call graph for this function:

int rangeTreeOverlapSize ( struct rbTree tree,
int  start,
int  end 
)

Definition at line 112 of file rangeTree.c.

References addOverlap(), range::end, overlapEnd, overlapStart, rbTreeTraverseRange(), range::start, and totalOverlap.

Referenced by pslRangeTreeOverlap().

00116 {
00117 struct range tempR;
00118 tempR.start = overlapStart = start;
00119 tempR.end = overlapEnd = end;
00120 totalOverlap = 0;
00121 rbTreeTraverseRange(tree, &tempR, &tempR, addOverlap);
00122 return totalOverlap;
00123 }

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

int overlapEnd [static]

Definition at line 102 of file rangeTree.c.

Referenced by addOverlap(), and rangeTreeOverlapSize().

int overlapStart [static]

Definition at line 102 of file rangeTree.c.

Referenced by addOverlap(), and rangeTreeOverlapSize().

struct range* rangeList [static]

Definition at line 54 of file rangeTree.c.

Referenced by fastMapClumpsToBundles(), ffSeedExtInMem(), gfAlignSomeClumps(), gfAlignStrand(), gfAlignTrans(), gfAlignTransTrans(), gfClumpsToBundles(), gfFindAlignAaTrans(), gfLongDnaInMem(), gfPcrGetRanges(), gfPcrOneViaNet(), gfQuerySeq(), gfRangesToFfItem(), gfTransTransFindBundles(), loadHashT3Ranges(), rangeCoorTimes3(), rangeListAdd(), rangeTreeAllOverlapping(), rangeTreeList(), seqClumpToRangeList(), and untranslateRangeList().

int totalOverlap [static]

Definition at line 101 of file rangeTree.c.

Referenced by addOverlap(), and rangeTreeOverlapSize().


Generated on Tue Dec 25 20:14:43 2007 for blat by  doxygen 1.5.2