From f6f39f58fef6b2f2f29ab4eb377eabfb98787e7c Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Wed, 24 Feb 2010 15:00:11 +0000 Subject: [PATCH] patch Tm calculation to return NaN if one of the two sequence is composed with letters different than ACGT git-svn-id: https://www.grenoble.prabi.fr/svn/LECASofts/ecoPCR/trunk@243 60f365c0-8329-0410-b2a4-ec073aeeaa1d --- src/libthermo/nnparams.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/libthermo/nnparams.c b/src/libthermo/nnparams.c index 20d175f..2e59c42 100644 --- a/src/libthermo/nnparams.c +++ b/src/libthermo/nnparams.c @@ -507,6 +507,8 @@ void nparam_CleanSeq (char* inseq, char* outseq, int len) case '\3': case 'T': outseq[j++] = 'T'; break; + default: + outseq[0]=0; } } outseq[j] = '\0'; @@ -515,6 +517,8 @@ void nparam_CleanSeq (char* inseq, char* outseq, int len) //Calculate TM for given sequence against its complement double nparam_CalcSelfTM(PNNParams nparm, char* seq, int len) { + const unsigned long long minus1 = 0xFFFFFFFFFFFFFFFF; + const double NaN = *((double*)&minus1); double thedH = 0; //double thedS = nparam_GetInitialEntropy(nparm); double thedS = -5.9f+nparm->rlogc; @@ -528,6 +532,8 @@ double nparam_CalcSelfTM(PNNParams nparm, char* seq, int len) char *useq = seq; nparam_CleanSeq (seq, nseq, len); + if (!nseq[0]) + return NaN; useq = nseq; for ( i=1;irlogc; @@ -565,9 +573,13 @@ double nparam_CalcTwoTM(PNNParams nparm, char* seq1, char* seq2, int len) char *useq2; nparam_CleanSeq (seq1, nseq1, len); + if (!nseq1[0]) + return NaN; useq1 = nseq1; nparam_CleanSeq (seq2, nseq2, len); + if (!nseq2[0]) + return NaN; useq2 = nseq2; //fprintf (stderr,"Primer : %s\n",useq);