Skip to content

Commit 180341b

Browse files
committed
more tolerance in SimpleDist input from file
1 parent d72de44 commit 180341b

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

src/Bpp/Io/BppODiscreteDistributionFormat.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,15 @@ unique_ptr<DiscreteDistributionInterface> BppODiscreteDistributionFormat::readDi
8888
while (strtok2.hasMoreToken())
8989
probas.push_back(TextTools::toDouble(strtok2.nextToken()));
9090

91+
double sum = VectorTools::sum(probas);
92+
if (fabs(1. - sum) > 0.00001)
93+
throw Exception("BppODiscreteDistributionFormat for SimpleDiscreteDistribution: Probabilities must equal 1 (sum =" + TextTools::toString(sum) + ").");
94+
else
95+
{
96+
for (size_t ip =0; ip< probas.size(); ip++)
97+
probas[ip]=probas[ip]/sum;
98+
}
99+
91100
std::map<size_t, std::vector<double>> ranges;
92101

93102
if (args.find("ranges") != args.end())

0 commit comments

Comments
 (0)