be4195f2c5ee017ac4ca603f7742bb70ed457e74
braney
Mon Aug 14 14:23:51 2023 -0700
take out a pesky printf that will become an optional dialog in the
future
diff --git src/hg/lib/instaPort.c src/hg/lib/instaPort.c
index 9af0ac1..7407bcb 100644
--- src/hg/lib/instaPort.c
+++ src/hg/lib/instaPort.c
@@ -1,111 +1,111 @@
/* Copyright (C) 2023 The Regents of the University of California
* See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */
#include "common.h"
#include "obscure.h"
#include "limits.h"
#include "float.h"
#include "asParse.h"
#include "chain.h"
#include "binRange.h"
#include "basicBed.h"
#include "liftOver.h"
#include "hash.h"
#include "bigBed.h"
#include "bbiFile.h"
#include "chainNetDbLoad.h"
#include "instaPort.h"
static char *getLinkFile(char *instaPortFile)
/* Construct the file name of the chain link file from the name of a chain file.
* That is, change file.bb to file.link.bb */
{
char linkBuffer[4096];
if (!endsWith(instaPortFile, ".bb"))
errAbort("instaPort file (%s) must end in .bb", instaPortFile);
safef(linkBuffer, sizeof linkBuffer, "%s", instaPortFile);
// truncate string at ending ".bb"
int insertOffset = strlen(linkBuffer) - sizeof ".bb" + 1;
char *insert = &linkBuffer[insertOffset];
*insert = 0;
// add .link.bb
strcpy(insert, ".link.bb");
return cloneString(linkBuffer);
}
struct bigBedInterval *instaIntervals(char *instaPortFile, struct bbiFile *bbi, char *chrom, int start, int end, struct hash **pChainHash)
/* Return intervals from "other" species that will map to the current window.
* These intervals are NOT YET MAPPED to the current assembly.
*/
{
char *linkFileName = getLinkFile(instaPortFile);
// need to add some padding to these coordinates
struct chain *chain, *chainList = chainLoadIdRangeHub(NULL, instaPortFile, linkFileName, chrom, start-100000, end+100000, -1);
struct lm *lm = lmInit(0);
struct bigBedInterval *bbList = NULL;
for(chain = chainList; chain; chain = chain->next)
{
struct cBlock *cb;
cb = chain->blockList;
if (cb == NULL)
continue;
int qStart = cb->qStart;
int qEnd = cb->qEnd;
// get the range for the links on the "other" species
for(; cb; cb = cb->next)
{
if (cb->qStart < qStart)
qStart = cb->qStart;
if (cb->qEnd > qEnd)
qEnd = cb->qEnd;
}
// now grab the items
struct bigBedInterval *thisInterval = bigBedIntervalQuery(bbi, chain->qName, qStart, qEnd, 10000, lm);
bbList = slCat(thisInterval, bbList);
// for the mapping we're going to use the same chain we queried on to map the items, but we need to swap it
chainSwap(chain);
if (*pChainHash == NULL)
*pChainHash = newHash(0);
liftOverAddChainHash(*pChainHash, chain);
}
return bbList;
}
struct bed *instaBed(struct bbiFile *bbi, struct hash *chainHash, struct bigBedInterval *bb)
/* Using chains stored in chainHash, port a bigBedInterval from another assembly to a bed
* on the reference.
*/
{
char startBuf[16], endBuf[16];
char *bedRow[bbi->fieldCount];
char chromName[256];
static int lastChromId = -1;
bbiCachedChromLookup(bbi, bb->chromId, lastChromId, chromName, sizeof(chromName));
//lastChromId=bb->chromId;
bigBedIntervalToRow(bb, chromName, startBuf, endBuf, bedRow, ArraySize(bedRow));
struct bed *bed = bedLoadN(bedRow, bbi->definedFieldCount);
char *error;
if ((error = remapBlockedBed(chainHash, bed, 0.0, 0.1, TRUE, TRUE, NULL, NULL)) == NULL)
return bed;
-else
- printf("bed %s error:%s
", bed->name, error);
+//else
+ //printf("bed %s error:%s
", bed->name, error);
return NULL;
}