Simplify CurveData data structures
This commit is contained in:
@@ -1,21 +1,11 @@
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace LeafWeb.Core.Charter
|
||||
{
|
||||
public class CurveData
|
||||
public class CurveData
|
||||
{
|
||||
public string CurveId { get; set; }
|
||||
|
||||
[DisplayName("Internal conductance fixed, compensation point and M-M constants fixed")]
|
||||
public CurveParamSet FixedCndFixedCmp { get; set; }
|
||||
|
||||
[DisplayName("Internal conductance fixed, compensation point and M-M constants estimated")]
|
||||
public CurveParamSet FixedCndEstimatedCmp { get; set; }
|
||||
|
||||
[DisplayName("Internal conductance estimated, compensation point and M-M constants fixed")]
|
||||
public CurveParamSet EstimatedCndFixedCmp { get; set; }
|
||||
|
||||
[DisplayName("Internal conductance estimated, compensation point and M-M constants estimated")]
|
||||
public CurveParamSet EstimatedCndEstimatedCmp { get; set; }
|
||||
public IList<CurveParamSet> ParamSets { get; set; } = new List<CurveParamSet>();
|
||||
}
|
||||
}
|
||||
@@ -28,18 +28,6 @@ namespace LeafWeb.Core.Charter
|
||||
|
||||
foreach (var comparisonGroup in comparisonGroups)
|
||||
{
|
||||
if (comparisonGroup.FitType.Count() != 4)
|
||||
{
|
||||
var missing =
|
||||
from rwp in new[] {true, false}
|
||||
from gamma in new [] {true, false}
|
||||
where !comparisonGroup.FitType.Any(ft => ft.FitRwp == rwp && ft.FitGammaStar == gamma)
|
||||
select $"(FitRwp: {(rwp ? "yes" : "no")}, FitGamma*: {(gamma ? "yes" : "no")})";
|
||||
throw new ParseException(
|
||||
$"Curve data in '{comparisonGroup.CurveID}' requires data sets representing all combinations of FitRwp and FitGamma."
|
||||
+ " Combinations missing are: " + string.Join(", ", missing));
|
||||
}
|
||||
|
||||
var curveData = new CurveData {CurveId = comparisonGroup.CurveID};
|
||||
|
||||
foreach (var fitType in comparisonGroup.FitType)
|
||||
@@ -52,29 +40,18 @@ namespace LeafWeb.Core.Charter
|
||||
// gammastar = chloroplastic CO2 partial pressure photocompensation point = "Cmp"
|
||||
|
||||
// put each comparison into the correct curve location
|
||||
if (!fitType.FitRwp && !fitType.FitGammaStar)
|
||||
curveData.FixedCndFixedCmp = paramSet;
|
||||
else if (!fitType.FitRwp && fitType.FitGammaStar)
|
||||
curveData.FixedCndEstimatedCmp = paramSet;
|
||||
else if (fitType.FitRwp && !fitType.FitGammaStar)
|
||||
curveData.EstimatedCndFixedCmp = paramSet;
|
||||
else if (fitType.FitRwp && fitType.FitGammaStar)
|
||||
curveData.EstimatedCndEstimatedCmp = paramSet;
|
||||
if (!fitType.FitRwp && !fitType.FitGammaStar)
|
||||
paramSet.CurveType = CurveType.FixedCndFixedCmp;
|
||||
else if (!fitType.FitRwp && fitType.FitGammaStar)
|
||||
paramSet.CurveType = CurveType.FixedCndEstimatedCmp;
|
||||
else if ( fitType.FitRwp && !fitType.FitGammaStar)
|
||||
paramSet.CurveType = CurveType.EstimatedCndFixedCmp;
|
||||
else if ( fitType.FitRwp && fitType.FitGammaStar)
|
||||
paramSet.CurveType = CurveType.EstimatedCndEstimatedCmp;
|
||||
|
||||
curveData.ParamSets.Add(paramSet);
|
||||
}
|
||||
|
||||
// guarantee all data is present
|
||||
if (curveData.FixedCndFixedCmp == null)
|
||||
throw new ArgumentException(
|
||||
$"{comparisonGroup.CurveID} missing data for {ReflectionExtensions.GetPropertyDisplayName<CurveData>(c=>c.FixedCndFixedCmp)}");
|
||||
if (curveData.FixedCndEstimatedCmp == null)
|
||||
throw new ArgumentException(
|
||||
$"{comparisonGroup.CurveID} missing data for {ReflectionExtensions.GetPropertyDisplayName<CurveData>(c=>c.FixedCndEstimatedCmp)}");
|
||||
if (curveData.EstimatedCndFixedCmp == null)
|
||||
throw new ArgumentException(
|
||||
$"{comparisonGroup.CurveID} missing data for {ReflectionExtensions.GetPropertyDisplayName<CurveData>(c=>c.EstimatedCndFixedCmp)}");
|
||||
if (curveData.EstimatedCndEstimatedCmp == null)
|
||||
throw new ArgumentException(
|
||||
$"{comparisonGroup.CurveID} missing data for {ReflectionExtensions.GetPropertyDisplayName<CurveData>(c=>c.EstimatedCndEstimatedCmp)}");
|
||||
yield return curveData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,9 @@ namespace LeafWeb.Core.Charter
|
||||
{
|
||||
public class CurveParamSet
|
||||
{
|
||||
public List<XyPoint> AnetMeasChloro1Data { get; } = new List<XyPoint>(); // y=AnetMeas column, x=PCO2c, for PointLimitType=1
|
||||
public CurveType CurveType { get; set; }
|
||||
|
||||
public List<XyPoint> AnetMeasChloro1Data { get; } = new List<XyPoint>(); // y=AnetMeas column, x=PCO2c, for PointLimitType=1
|
||||
public List<XyPoint> AnetMeasChloro2Data { get; } = new List<XyPoint>(); // y=AnetMeas column, x=PCO2c, for PointLimitType=2
|
||||
public List<XyPoint> AnetMeasChloro3Data { get; } = new List<XyPoint>(); // y=AnetMeas column, x=PCO2c, for PointLimitType=3
|
||||
public List<XyPoint> AnetMeasInter1Data { get; } = new List<XyPoint>(); // y=AnetMeas column, x=PCO2i, for PointLimitType=1
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace LeafWeb.Core.Charter
|
||||
{
|
||||
public enum CurveType
|
||||
{
|
||||
[Description("Internal conductance fixed, compensation point and M-M constants fixed")]
|
||||
FixedCndFixedCmp,
|
||||
[Description("Internal conductance fixed, compensation point and M-M constants estimated")]
|
||||
FixedCndEstimatedCmp,
|
||||
[Description("Internal conductance estimated, compensation point and M-M constants fixed")]
|
||||
EstimatedCndFixedCmp,
|
||||
[Description("Internal conductance estimated, compensation point and M-M constants estimated")]
|
||||
EstimatedCndEstimatedCmp
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user