Exemple #1
0
static struct mafAli *getRefAli(char *database, char *chrom, int start, int end)
{
struct mafAli *ali;
struct mafComp *comp;
char buffer[1024];

AllocVar(ali);
AllocVar(comp);
ali->components = comp;
ali->textSize = end - start;

safef(buffer, sizeof buffer, "%s.%s", database, chrom);
comp->src = cloneString(buffer);
comp->start = start;
comp->strand = '+';
comp->size = end - start;
struct dnaSeq *seq = hChromSeqMixed(database, chrom, start , end);
comp->text = cloneString(seq->dna);
freeDnaSeq(&seq);

return ali;
}
Exemple #2
0
void ultraPcrRegions(char *database, char *bedFile, char *outFa)
/* ultraPcrRegions - Get regions to PCR up and some surrounding sequence. */
{
int extraSize = 1000;
FILE *f = mustOpen(outFa, "w");
struct bed *bed, *bedList = bedLoadNAll(bedFile, 4);
hSetDb(database);
for (bed = bedList; bed != NULL; bed = bed->next)
    {
    int bedSize = bed->chromEnd - bed->chromStart;
    int chromSize = hChromSize(bed->chrom);
    int seqSize;
    int seqStart = bed->chromStart - extraSize;
    int seqEnd = bed->chromEnd + extraSize;
    int firstParenPos, secondParenPos;
    struct dyString *dy;
    char fileName[512];
    struct dnaSeq *seq;
    if (seqStart < 0)
        seqStart = 0;
    if (seqEnd > chromSize)
        seqEnd = chromSize;
    seqSize = seqEnd - seqStart;
    firstParenPos = bed->chromStart - seqStart;
    secondParenPos = firstParenPos + bedSize;
    seq = hChromSeqMixed(bed->chrom, seqStart, seqEnd);
    dy = dyStringNew(seqSize+2);
    dyStringAppendN(dy, seq->dna, firstParenPos);
    dyStringAppendC(dy, '(');
    dyStringAppendN(dy, seq->dna+firstParenPos, secondParenPos-firstParenPos);
    dyStringAppendC(dy, ')');
    dyStringAppendN(dy, seq->dna+secondParenPos, seqSize - secondParenPos);
    faWriteNext(f, bed->name, dy->string, dy->stringSize);
    }
carefulClose(&f);
}