mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Calculation of p10/p90 : Add more tests and treat all computed values equally
This commit is contained in:
@@ -244,7 +244,7 @@ void RifReaderEnsembleStatisticsRft::calculateStatistics( const RifEclipseRftAdd
|
|||||||
if ( p10 != HUGE_VAL ) m_cachedValues[p10Address].push_back( p10 );
|
if ( p10 != HUGE_VAL ) m_cachedValues[p10Address].push_back( p10 );
|
||||||
if ( p50 != HUGE_VAL ) m_cachedValues[p50Address].push_back( p50 );
|
if ( p50 != HUGE_VAL ) m_cachedValues[p50Address].push_back( p50 );
|
||||||
if ( p90 != HUGE_VAL ) m_cachedValues[p90Address].push_back( p90 );
|
if ( p90 != HUGE_VAL ) m_cachedValues[p90Address].push_back( p90 );
|
||||||
m_cachedValues[meanAddress].push_back( mean );
|
if ( mean != HUGE_VAL ) m_cachedValues[meanAddress].push_back( mean );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ void RimEnsembleStatisticsCase::calculate( const std::vector<RimSummaryCase*> su
|
|||||||
if ( p10 != HUGE_VAL ) m_p10Data.push_back( p10 );
|
if ( p10 != HUGE_VAL ) m_p10Data.push_back( p10 );
|
||||||
if ( p50 != HUGE_VAL ) m_p50Data.push_back( p50 );
|
if ( p50 != HUGE_VAL ) m_p50Data.push_back( p50 );
|
||||||
if ( p90 != HUGE_VAL ) m_p90Data.push_back( p90 );
|
if ( p90 != HUGE_VAL ) m_p90Data.push_back( p90 );
|
||||||
m_meanData.push_back( mean );
|
if ( mean != HUGE_VAL ) m_meanData.push_back( mean );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,6 +95,8 @@ void RigStatisticsMath::calculateStatisticsCurves( const std::vector<double>& va
|
|||||||
{
|
{
|
||||||
CVF_ASSERT( p10 && p50 && p90 && mean );
|
CVF_ASSERT( p10 && p50 && p90 && mean );
|
||||||
|
|
||||||
|
if ( values.empty() ) return;
|
||||||
|
|
||||||
enum PValue
|
enum PValue
|
||||||
{
|
{
|
||||||
P10,
|
P10,
|
||||||
|
|||||||
@@ -220,3 +220,74 @@ TEST( RigStatisticsMath, Accumulators )
|
|||||||
EXPECT_EQ( 4u, acc.sampleCount );
|
EXPECT_EQ( 4u, acc.sampleCount );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
TEST( RigStatisticsMath, calculateStatisticsCurves )
|
||||||
|
{
|
||||||
|
{
|
||||||
|
std::vector<double> values;
|
||||||
|
|
||||||
|
double mean = HUGE_VAL;
|
||||||
|
double p10 = HUGE_VAL;
|
||||||
|
double p50 = HUGE_VAL;
|
||||||
|
double p90 = HUGE_VAL;
|
||||||
|
|
||||||
|
RigStatisticsMath::calculateStatisticsCurves( values, &p10, &p50, &p90, &mean );
|
||||||
|
EXPECT_TRUE( std::isinf( p10 ) );
|
||||||
|
EXPECT_TRUE( std::isinf( p50 ) );
|
||||||
|
EXPECT_TRUE( std::isinf( p90 ) );
|
||||||
|
EXPECT_TRUE( std::isinf( mean ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
std::vector<double> values{
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
1.0,
|
||||||
|
};
|
||||||
|
|
||||||
|
double mean = HUGE_VAL;
|
||||||
|
double p10 = HUGE_VAL;
|
||||||
|
double p50 = HUGE_VAL;
|
||||||
|
double p90 = HUGE_VAL;
|
||||||
|
|
||||||
|
// If we have few samples, P10 and P90 cannot be computed
|
||||||
|
RigStatisticsMath::calculateStatisticsCurves( values, &p10, &p50, &p90, &mean );
|
||||||
|
EXPECT_TRUE( std::isinf( p10 ) );
|
||||||
|
EXPECT_TRUE( std::isinf( p90 ) );
|
||||||
|
EXPECT_DOUBLE_EQ( 1.0, p50 );
|
||||||
|
EXPECT_DOUBLE_EQ( 1.0, mean );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
std::vector<double> values{ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 5.0, 10.0 };
|
||||||
|
|
||||||
|
double mean = HUGE_VAL;
|
||||||
|
double p10 = HUGE_VAL;
|
||||||
|
double p50 = HUGE_VAL;
|
||||||
|
double p90 = HUGE_VAL;
|
||||||
|
|
||||||
|
RigStatisticsMath::calculateStatisticsCurves( values, &p10, &p50, &p90, &mean );
|
||||||
|
EXPECT_DOUBLE_EQ( 1.0, p10 );
|
||||||
|
EXPECT_DOUBLE_EQ( 1.0, p50 );
|
||||||
|
EXPECT_FALSE( std::isinf( p90 ) );
|
||||||
|
EXPECT_FALSE( std::isinf( mean ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
std::vector<double> values{ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 };
|
||||||
|
|
||||||
|
double mean = HUGE_VAL;
|
||||||
|
double p10 = HUGE_VAL;
|
||||||
|
double p50 = HUGE_VAL;
|
||||||
|
double p90 = HUGE_VAL;
|
||||||
|
|
||||||
|
RigStatisticsMath::calculateStatisticsCurves( values, &p10, &p50, &p90, &mean );
|
||||||
|
EXPECT_DOUBLE_EQ( 1.0, p10 );
|
||||||
|
EXPECT_DOUBLE_EQ( 1.0, p50 );
|
||||||
|
EXPECT_DOUBLE_EQ( 1.0, p90 );
|
||||||
|
EXPECT_DOUBLE_EQ( 1.0, mean );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user