diff --git a/src/ecoPrimer b/src/ecoPrimer index c3e5c3e..96477a6 100755 Binary files a/src/ecoPrimer and b/src/ecoPrimer differ diff --git a/src/global.mk b/src/global.mk index 7135690..94cf61d 100644 --- a/src/global.mk +++ b/src/global.mk @@ -3,7 +3,7 @@ LIBPATH= -Llibapat -LlibecoPCR -Llibecoprimer MAKEDEPEND = gcc -D$(MACHINE) -M $(CPPFLAGS) -o $*.d $< CC=gcc -CFLAGS= -W -Wall -O3 -m64 -fast -g +CFLAGS= -W -Wall -O5 -m64 -fast -g #CFLAGS= -W -Wall -O0 -m64 -g #CFLAGS= -W -Wall -O5 -fast -g diff --git a/src/libecoprimer/aproxpattern.c b/src/libecoprimer/aproxpattern.c index d924281..2dc13bf 100644 --- a/src/libecoprimer/aproxpattern.c +++ b/src/libecoprimer/aproxpattern.c @@ -61,7 +61,7 @@ void encodeSequence(ecoseq_t *seq) for (i=0;iSQ_length;i++,data++,cseq++) { - *data = encoder[(IS_UPPER(*cseq) ? *cseq - 'A' : 'Z')]; + *data = encoder[(IS_UPPER(*cseq) ? *cseq : 'Z') - 'A']; } } @@ -82,7 +82,7 @@ pprimercount_t lookforAproxPrimer(pecodnadb_t database, uint32_t seqdbsize,uint3 uint32_t inSequenceQuorum; uint32_t outSequenceQuorum; bool_t conserved = TRUE; - + //poslist_t ttt; diff --git a/src/libecoprimer/pairs.c b/src/libecoprimer/pairs.c index f01da82..0af6825 100644 --- a/src/libecoprimer/pairs.c +++ b/src/libecoprimer/pairs.c @@ -275,6 +275,7 @@ static void buildPrimerPairsForOneSeq(uint32_t seqid, pprimer_t wswp; bool_t bswp; size_t distance; + bool_t strand; for (i=0;i < primers->size; i++) { @@ -362,7 +363,8 @@ static void buildPrimerPairsForOneSeq(uint32_t seqid, // Standardize the pair - if (current.p2->word < current.p1->word) + strand = current.p2->word > current.p1->word; + if (!strand) { wswp = current.p1; current.p1=current.p2; @@ -384,7 +386,7 @@ static void buildPrimerPairsForOneSeq(uint32_t seqid, pcurrent->inexample++; pcurrent->sumd+=distance; - if (pcurrent->maxd=DMAX || distance > pcurrent->maxd) + if ((pcurrent->maxd==DMAX) || (distance > pcurrent->maxd)) pcurrent->maxd = distance; if (distance < pcurrent->mind) @@ -412,10 +414,14 @@ static void buildPrimerPairsForOneSeq(uint32_t seqid, } } - pcurrent->pcr.amplifias[pcr.ampcount].length=distance; - pcurrent->pcr.amplifias[pcr.ampcount].sequence=*(seqdb[seqid]); - // pcurrent->pcr.amplifias[pcr.ampcount].strand= ; - // pcurrent->pcr.amplifias[pcr.ampcount].amplifia= ; + pcurrent->pcr.amplifias[pcurrent->pcr.ampcount].length=distance; + pcurrent->pcr.amplifias[pcurrent->pcr.ampcount].sequence=seqdb[seqid]; + pcurrent->pcr.amplifias[pcurrent->pcr.ampcount].strand=strand; + + if (strand) + pcurrent->pcr.amplifias[pcurrent->pcr.ampcount].amplifia= seqdb[seqid]->SQ + matches[i].position + options->primer_length; + else + pcurrent->pcr.amplifias[pcurrent->pcr.ampcount].amplifia= seqdb[seqid]->SQ + matches[j].position - 1 ; pcurrent->pcr.ampcount++; diff --git a/src/libecoprimer/pairtree.c b/src/libecoprimer/pairtree.c index 53a38c3..d1c0895 100644 --- a/src/libecoprimer/pairtree.c +++ b/src/libecoprimer/pairtree.c @@ -39,6 +39,7 @@ static ppairlist_t newpairlist(ppairlist_t parent, size_t size) if (parent) parent->next=(void*)tmp; + return tmp; } @@ -103,7 +104,7 @@ ppair_t insertpair(pair_t key, if (list->last->paircount==list->last->pairslots) { - list->last->next=newpairlist(list,100); + list->last->next=newpairlist(list->last,100); list->last=list->last->next; } @@ -121,13 +122,13 @@ ppair_t insertpair(pair_t key, ppairtree_t initpairtree(ppairtree_t tree) { - fprintf(stderr,"coucou from initpairtree\n"); if (!tree) tree = ECOMALLOC(sizeof(pairtree_t),"Cannot allocate pair tree"); - tree->first=newpairlist(NULL,500); + tree->first=newpairlist(NULL,300); tree->last=tree->first; tree->tree=NULL; + return tree; }