From: <si...@us...> - 2012-03-30 21:52:04
|
Revision: 4542 http://simupop.svn.sourceforge.net/simupop/?rev=4542&view=rev Author: simupop Date: 2012-03-30 21:51:58 +0000 (Fri, 30 Mar 2012) Log Message: ----------- Fix genotype transmitter bugs for mutant modules Modified Paths: -------------- trunk/src/transmitter.cpp Modified: trunk/src/transmitter.cpp =================================================================== --- trunk/src/transmitter.cpp 2012-03-30 17:28:01 UTC (rev 4541) +++ trunk/src/transmitter.cpp 2012-03-30 21:51:58 UTC (rev 4542) @@ -641,11 +641,11 @@ if (ind.chromType(ch) == CUSTOMIZED || ind.chromType(ch) == MITOCHONDRIAL) { // recombine before customized chromosome. - if (ind.numChrom() != ch + 1 && (ind.chromType(ch + 1) != CUSTOMIZED || ind.chromType(ch + 1) != MITOCHONDRIAL)) { + if (ind.numChrom() != ch + 1 && (ind.chromType(ch + 1) != CUSTOMIZED && ind.chromType(ch + 1) != MITOCHONDRIAL)) { m_recBeforeLoci.push_back(chEnd); vecP.push_back(0.5); } - continue; + break; } if (m_loci.allAvail()) { @@ -815,7 +815,11 @@ if ((ignoreBegin < 0 || gt < static_cast<size_t>(ignoreBegin) || gt >= static_cast<size_t>(ignoreEnd)) && (m_customizedBegin < 0 || gt < static_cast<size_t>(m_customizedBegin) || gt >= static_cast<size_t>(m_customizedEnd))) { // copy +#ifdef MUTANTALLELE + (off + gt).assignIfDiffer((cp[curCp] + gt).value()); +#else off[gt] = cp[curCp][gt]; +#endif LINEAGE_EXPR(lineageOff[gt] = lineagep[curCp][gt]); } // look ahead @@ -882,7 +886,7 @@ if (pos != Bernullitrials::npos) { // first piece # ifdef MUTANTALLELE - copyGenotype(cp[curCp] + gt, cp[curCp] + gt + m_recBeforeLoci[pos], off + gt); + copyGenotype(cp[curCp] + gt, cp[curCp] + m_recBeforeLoci[pos], off + gt); gt = m_recBeforeLoci[pos]; # else for (; gt < m_recBeforeLoci[pos]; ++gt) { @@ -908,7 +912,7 @@ convEnd = gt + convCount; if (convEnd < gtEnd) { # ifdef MUTANTALLELE - copyGenotype(cp[curCp] + gt, cp[curCp] + gt + convEnd, off + gt); + copyGenotype(cp[curCp] + gt, cp[curCp] + convEnd, off + gt); gt = convEnd; # else for (; gt < convEnd; ++gt) { @@ -925,7 +929,7 @@ } // copy from the end of conversion to this recombination point # ifdef MUTANTALLELE - copyGenotype(cp[curCp] + gt, cp[curCp] + gt + gtEnd, off + gt); + copyGenotype(cp[curCp] + gt, cp[curCp] + gtEnd, off + gt); gt = gtEnd; # else for (; gt < gtEnd; ++gt) { @@ -953,7 +957,7 @@ convEnd = gt + convCount; if (convEnd < gtEnd) { # ifdef MUTANTALLELE - copyGenotype(cp[curCp] + gt, cp[curCp] + gt + convEnd, off + gt); + copyGenotype(cp[curCp] + gt, cp[curCp] + convEnd, off + gt); gt = convEnd; # else for (; gt < convEnd; ++gt) { @@ -967,7 +971,7 @@ } } # ifdef MUTANTALLELE - copyGenotype(cp[curCp] + gt, cp[curCp] + gt + gtEnd, off + gt); + copyGenotype(cp[curCp] + gt, cp[curCp] + gtEnd, off + gt); gt = gtEnd; # else for (; gt < gtEnd; ++gt) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |