Improve ensemble cross plot statistics

* Support cross plot in plot templates
* Fix source stepping for cross plots
* Show cross plot data in "Show Plot Data"
* Use bin size and realization count when computing cross plot statistics
This commit is contained in:
Magne Sjaastad
2023-09-28 14:32:32 +02:00
committed by GitHub
parent 0ccddcb836
commit d34bb8a64c
26 changed files with 203 additions and 133 deletions

View File

@@ -410,7 +410,7 @@ void RimEnsembleCurveSet::deleteCurve( RimSummaryCurve* curve )
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsembleCurveSet::setSummaryAddress( RifEclipseSummaryAddress address )
void RimEnsembleCurveSet::setSummaryAddressY( RifEclipseSummaryAddress address )
{
m_yValuesSummaryAddress->setAddress( address );
RimSummaryAddress* summaryAddress = new RimSummaryAddress();
@@ -423,7 +423,7 @@ void RimEnsembleCurveSet::setSummaryAddress( RifEclipseSummaryAddress address )
//--------------------------------------------------------------------------------------------------
void RimEnsembleCurveSet::setCurveAddress( RiaSummaryCurveAddress address )
{
setSummaryAddress( address.summaryAddressY() );
setSummaryAddressY( address.summaryAddressY() );
setSummaryAddressX( address.summaryAddressX() );
if ( address.summaryAddressX().category() == SummaryCategory::SUMMARY_TIME )
@@ -455,9 +455,9 @@ bool RimEnsembleCurveSet::isXAxisSummaryVector() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsembleCurveSet::setSummaryAddressAndStatisticsFlag( RifEclipseSummaryAddress address )
void RimEnsembleCurveSet::setSummaryAddressYAndStatisticsFlag( RifEclipseSummaryAddress address )
{
setSummaryAddress( address );
setSummaryAddressY( address );
m_statistics->setShowStatisticsCurves( !address.isHistoryVector() );
m_statistics->updateAllRequiredEditors();
}
@@ -465,7 +465,7 @@ void RimEnsembleCurveSet::setSummaryAddressAndStatisticsFlag( RifEclipseSummaryA
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifEclipseSummaryAddress RimEnsembleCurveSet::summaryAddress() const
RifEclipseSummaryAddress RimEnsembleCurveSet::summaryAddressY() const
{
return m_yValuesSummaryAddress->address();
}
@@ -477,10 +477,10 @@ RiaSummaryCurveAddress RimEnsembleCurveSet::curveAddress() const
{
if ( m_xAxisType() == RiaDefines::HorizontalAxisType::TIME )
{
return RiaSummaryCurveAddress( RifEclipseSummaryAddress::timeAddress(), summaryAddress() );
return RiaSummaryCurveAddress( RifEclipseSummaryAddress::timeAddress(), summaryAddressY() );
}
return RiaSummaryCurveAddress( m_xAddressSelector->summaryAddress(), summaryAddress() );
return RiaSummaryCurveAddress( m_xAddressSelector->summaryAddress(), summaryAddressY() );
}
//--------------------------------------------------------------------------------------------------
@@ -742,7 +742,7 @@ void RimEnsembleCurveSet::fieldChangedByUi( const caf::PdmFieldHandle* changedFi
if ( !m_xAddressSelector->ensemble() )
{
m_xAddressSelector->setEnsemble( summaryCaseCollection() );
m_xAddressSelector->setAddress( summaryAddress() );
m_xAddressSelector->setAddress( summaryAddressY() );
}
if ( !m_xAddressSelector->plotAxisProperties() )
@@ -2015,14 +2015,14 @@ void RimEnsembleCurveSet::updateStatisticsCurves( const std::vector<RimSummaryCa
{
m_ensembleStatCaseXY->calculate( statCases,
m_xAddressSelector->summaryAddress(),
summaryAddress(),
summaryAddressY(),
m_statistics->includeIncompleteCurves(),
m_statistics->crossPlotCurvesBinCount(),
m_statistics->crossPlotCurvesSampleCountThresholdPerBin() );
m_statistics->crossPlotRealizationCountThresholdPerBin() );
}
else
{
m_ensembleStatCaseY->calculate( statCases, summaryAddress(), m_statistics->includeIncompleteCurves() );
m_ensembleStatCaseY->calculate( statCases, summaryAddressY(), m_statistics->includeIncompleteCurves() );
}
}
@@ -2203,12 +2203,12 @@ std::vector<std::pair<RigEnsembleParameter, double>> RimEnsembleCurveSet::ensemb
{
if ( sortingMode == ParameterSorting::ABSOLUTE_VALUE )
{
return ensemble->correlationSortedEnsembleParameters( summaryAddress() );
return ensemble->correlationSortedEnsembleParameters( summaryAddressY() );
}
if ( sortingMode == ParameterSorting::ALPHABETICALLY )
{
auto parameters = ensemble->parameterCorrelationsAllTimeSteps( summaryAddress() );
auto parameters = ensemble->parameterCorrelationsAllTimeSteps( summaryAddressY() );
std::sort( parameters.begin(),
parameters.end(),
[]( const auto& lhs, const auto& rhs ) { return lhs.first.name < rhs.first.name; } );