boolean bedUniqueInTree(struct rbTree *bedTree, struct intronEv *iv)
{
static struct bed searchLo, searchHi; 
struct slRef *refList = NULL, *ref = NULL;
searchLo.chrom = iv->chrom;
searchLo.chromStart =iv->e1S;
searchLo.chromEnd = iv->e2E;

/* searchHi.chrom = iv->chrom; */
/* searchHi.chromStart = iv->e2E; */
/* searchHi.chromEnd = iv->e2E; */
refList = rbTreeItemsInRange(bedTree, &searchLo, &searchLo);
if(refList == NULL)
    return TRUE;
else
    slFreeList(&refList);
return FALSE;
}
示例#2
0
void chainNetGetRange(char *db, char *netTable, char *chrom,
		      int start, int end, char *extraWhere, struct cnFill **fill,
		      struct chainNet **toFree)
/* Load up the appropriate chainNet list for this range. */
{
struct cnFill *searchHi=NULL, *searchLo = NULL;
struct slRef *refList = NULL, *ref = NULL;

(*fill) = NULL;
(*toFree) = NULL;
if(differentString(workingChrom, chrom))
    return;
if(netTree != NULL)
    {
    AllocVar(searchLo);
    searchLo->tStart = start;
    searchLo->tSize = 0;
    AllocVar(searchHi);
    searchHi->tStart = end;
    searchHi->tSize = 0;
    refList = rbTreeItemsInRange(netTree, searchLo, searchHi);
    for(ref = refList; ref != NULL; ref = ref->next)
	{
	slSafeAddHead(fill, ((struct slList *)ref->val));
	}
    slReverse(fill);
    freez(&searchHi);
    freez(&searchLo);
    (*toFree) = NULL;
    }
else
    {
    struct chainNet *net =chainNetLoadRange(db, netTable, chrom,
					   start, end, NULL);
    if(net != NULL)
	(*fill) = net->fillList;
    else
	(*fill) = NULL;
    (*toFree) = net;
    }
}