89acda6500bbd2dd1fb0b8c2ccde759cc302ba61
braney
Wed May 15 22:02:05 2013 -0700
use Glenn's new API... still needs some work to display the target duplications
diff --git src/hg/hgTracks/snakeTrack.c src/hg/hgTracks/snakeTrack.c
index cb0eeb4..05cffbd 100644
--- src/hg/hgTracks/snakeTrack.c
+++ src/hg/hgTracks/snakeTrack.c
@@ -913,77 +913,83 @@
}
}
hFreeConn(&conn);
}
#ifdef USE_HAL
void halSnakeLoadItems(struct track *tg)
{
struct errCatch *errCatch = errCatchNew();
if (errCatchStart(errCatch))
{
char *fileName = trackDbSetting(tg->tdb, "bigDataUrl");
char *otherSpecies = trackDbSetting(tg->tdb, "otherSpecies");
int handle = halOpenLOD(fileName);
int needSeq = (winBaseCount < 50000) ? 1 : 0;
- struct hal_block_t* head = halGetBlocksInTargetRange(handle, otherSpecies, trackHubSkipHubName(database), chromName, winStart, winEnd, needSeq, 1);
- struct hal_block_t* cur = head;
+ struct hal_block_results_t *head = halGetBlocksInTargetRange(handle, otherSpecies, trackHubSkipHubName(database), chromName, winStart, winEnd, needSeq, 1);
+ struct hal_block_t* cur = head->mappedBlocks;
struct linkedFeatures *lf;
struct hash *qChromHash = newHash(5);
struct linkedFeatures *lfList = NULL;
char buffer[4096];
+#ifdef NOTNOW
+ struct hal_target_dupe_list_t* targetDupeBlocks = head->targetDupeBlocks;
+
+ for(;targetDupeBlocks; targetDupeBlocks = targetDupeBlocks->next)
+ {
+ printf("
id: %d qChrom %s\n", targetDupeBlocks->id, targetDupeBlocks->qChrom);
+ struct hal_target_range_t *range = targetDupeBlocks->tRange;
+ for(; range; range = range->next)
+ {
+ printf("
%ld : %ld\n", range->tStart, range->size);
+ }
+ }
+#endif
+
while (cur)
{
struct hashEl* hel;
//safef(buffer, sizeof buffer, "%s.%c", cur->qChrom,cur->strand);
safef(buffer, sizeof buffer, "%s", cur->qChrom);
if ((hel = hashLookup(qChromHash, buffer)) == NULL)
{
AllocVar(lf);
lf->original = (void *)1;
slAddHead(&lfList, lf);
lf->start = 0;
lf->end = 1000000000;
lf->grayIx = maxShade;
lf->name = cloneString(buffer);
lf->extra = cloneString(buffer);
lf->orientation = (cur->strand == '+') ? 1 : -1;
hashAdd(qChromHash, lf->name, lf);
}
else
{
lf = hel->val;
}
struct snakeFeature *sf;
AllocVar(sf);
slAddHead(&lf->components, sf);
sf->start = cur->tStart;
sf->end = cur->tStart + cur->size;
- if (cur->strand == '-')
- {
sf->qStart = cur->qStart;
sf->qEnd = cur->qStart + cur->size;
- }
- else
- {
- sf->qStart = cur->qStart;
- sf->qEnd = cur->qStart + cur->size;
- }
sf->orientation = (cur->strand == '+') ? 1 : -1;
sf->sequence = cloneString(cur->sequence);
// printBlock(stdout, cur);
cur = cur->next;
}
for(lf=lfList; lf ; lf = lf->next)
{
slSort(&lf->components, snakeFeatureCmpQStart);
}
//halFreeBlocks(head);
//halClose(handle, myThread);
tg->items = lfList;
}