private IEnumerable <double> IntegrateBatch2D(string variable, Array prefetchedData, int[] prefetchedDataOrigin, IEnumerable <IPs[]> ipsArrays) { Type dataType = prefetchedData.GetType().GetElementType(); bool effectiveMvCheck = checkForMissingValues; object missingValue = dataSetInfo.GetMissingValue(variable); if (missingValue == null) { if (dataType == typeof(double)) { missingValue = double.NaN; } else if (dataType == typeof(float)) { missingValue = float.NaN; } else { effectiveMvCheck = false; //switching off MV check if no MV information is available } } //invoking method from library if (effectiveMvCheck) { foreach (var pointResult in Utils.ArrayMean.IntegrateSequenceWithMVs2D(variable, prefetchedData, missingValue, prefetchedDataOrigin, ipsArrays)) { yield return(pointResult.Integral / pointResult.SumOfWeights); } } else { foreach (var pointResult in Utils.ArrayMean.IntegrateSequence2D(variable, prefetchedData, prefetchedDataOrigin, ipsArrays)) { yield return(pointResult.Integral / pointResult.SumOfWeights); } } }
public IEnumerable <double> CalculateMode(string variable, Array prefetchedData, int[] prefetchedDataOrigin, IEnumerable <int[][]> idxArrays) { Type dataType = prefetchedData.GetType().GetElementType(); bool effectiveMvCheck = checkForMissingValues; object missingValue = dataSetInfo.GetMissingValue(variable); if (missingValue == null) { if (dataType == typeof(double)) { missingValue = double.NaN; } else if (dataType == typeof(float)) { missingValue = float.NaN; } else { effectiveMvCheck = false; //switching off MV check if no MV information is available } } switch (prefetchedData.Rank) { //case 2: // if (effectiveMvCheck) // return Utils.ArrayMode.FindModeSequenceWithMVs2D(variable, prefetchedData, missingValue, prefetchedDataOrigin, idxArrays); // else // return Utils.ArrayMode.FindModeSequence2D(variable, prefetchedData, prefetchedDataOrigin, idxArrays); case 3: if (effectiveMvCheck) { return(Utils.ArrayMode.FindModeSequence3D(variable, prefetchedData, prefetchedDataOrigin, idxArrays, missingValue)); } else { return(Utils.ArrayMode.FindModeSequence3D(variable, prefetchedData, prefetchedDataOrigin, idxArrays)); } default: throw new InvalidOperationException("Unexpected prefetched array rank. Now only 3D varaibles are supported"); } }