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; }