public IEnumerable <IMeasurement> Unmap(openLSE.Model.LSE.EstimatorOutput outputData, openLSE.Model.LSE._EstimatorOutputMeta outputMeta) { List <IMeasurement> measurements = new List <IMeasurement>(); TypeMapping outputMapping = MappingCompiler.GetTypeMapping(OutputMapping); CollectFromLSEEstimatorOutput(measurements, outputMapping, outputData, outputMeta); return(measurements); }
private openLSE.Model.LSE.EstimatorOutput FillLSEEstimatorOutput(TypeMapping typeMapping) { Dictionary <string, FieldMapping> fieldLookup = typeMapping.FieldMappings.ToDictionary(mapping => mapping.Field.Identifier); openLSE.Model.LSE.EstimatorOutput obj = new openLSE.Model.LSE.EstimatorOutput(); { // Initialize array for "CircuitBreakerStatuses" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CircuitBreakerStatuses"]; obj.CircuitBreakerStatuses = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "TopologyProfilingData" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["TopologyProfilingData"]; obj.TopologyProfilingData = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "MeasurementValidationFlags" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["MeasurementValidationFlags"]; obj.MeasurementValidationFlags = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "VoltageMagnitudeEstimates" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["VoltageMagnitudeEstimates"]; obj.VoltageMagnitudeEstimates = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "VoltageAngleEstimates" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["VoltageAngleEstimates"]; obj.VoltageAngleEstimates = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "VoltageMagnitudeResiduals" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["VoltageMagnitudeResiduals"]; obj.VoltageMagnitudeResiduals = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "VoltageAngleResiduals" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["VoltageAngleResiduals"]; obj.VoltageAngleResiduals = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "CurrentFlowMagnitudeEstimates" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CurrentFlowMagnitudeEstimates"]; obj.CurrentFlowMagnitudeEstimates = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "CurrentFlowAngleEstimates" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CurrentFlowAngleEstimates"]; obj.CurrentFlowAngleEstimates = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "CurrentFlowMagnitudeResiduals" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CurrentFlowMagnitudeResiduals"]; obj.CurrentFlowMagnitudeResiduals = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize array for "CurrentFlowAngleResiduals" field ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CurrentFlowAngleResiduals"]; obj.CurrentFlowAngleResiduals = new double[GetArrayMeasurementCount(arrayMapping)]; } { // Initialize openLSE.Model.LSE.PerformanceMetrics UDT for "PerformanceMetrics" field FieldMapping fieldMapping = fieldLookup["PerformanceMetrics"]; TypeMapping nestedMapping = GetTypeMapping(fieldMapping); PushRelativeFrameTime(fieldMapping); obj.PerformanceMetrics = this.FillLSEPerformanceMetrics(nestedMapping); PopRelativeFrameTime(fieldMapping); } return(obj); }
private void CollectFromLSEEstimatorOutput(List <IMeasurement> measurements, TypeMapping typeMapping, openLSE.Model.LSE.EstimatorOutput data, openLSE.Model.LSE._EstimatorOutputMeta meta) { Dictionary <string, FieldMapping> fieldLookup = typeMapping.FieldMappings.ToDictionary(mapping => mapping.Field.Identifier); { // Convert values from array in "CircuitBreakerStatuses" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CircuitBreakerStatuses"]; int dataLength = data.CircuitBreakerStatuses.Length; int metaLength = meta.CircuitBreakerStatuses.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"CircuitBreakerStatuses\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.CircuitBreakerStatuses[i], (double)data.CircuitBreakerStatuses[i]); measurements.Add(measurement); } } { // Convert values from array in "TopologyProfilingData" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["TopologyProfilingData"]; int dataLength = data.TopologyProfilingData.Length; int metaLength = meta.TopologyProfilingData.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"TopologyProfilingData\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.TopologyProfilingData[i], (double)data.TopologyProfilingData[i]); measurements.Add(measurement); } } { // Convert values from array in "MeasurementValidationFlags" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["MeasurementValidationFlags"]; int dataLength = data.MeasurementValidationFlags.Length; int metaLength = meta.MeasurementValidationFlags.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"MeasurementValidationFlags\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.MeasurementValidationFlags[i], (double)data.MeasurementValidationFlags[i]); measurements.Add(measurement); } } { // Convert values from array in "VoltageMagnitudeEstimates" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["VoltageMagnitudeEstimates"]; int dataLength = data.VoltageMagnitudeEstimates.Length; int metaLength = meta.VoltageMagnitudeEstimates.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"VoltageMagnitudeEstimates\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.VoltageMagnitudeEstimates[i], (double)data.VoltageMagnitudeEstimates[i]); measurements.Add(measurement); } } { // Convert values from array in "VoltageAngleEstimates" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["VoltageAngleEstimates"]; int dataLength = data.VoltageAngleEstimates.Length; int metaLength = meta.VoltageAngleEstimates.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"VoltageAngleEstimates\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.VoltageAngleEstimates[i], (double)data.VoltageAngleEstimates[i]); measurements.Add(measurement); } } { // Convert values from array in "VoltageMagnitudeResiduals" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["VoltageMagnitudeResiduals"]; int dataLength = data.VoltageMagnitudeResiduals.Length; int metaLength = meta.VoltageMagnitudeResiduals.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"VoltageMagnitudeResiduals\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.VoltageMagnitudeResiduals[i], (double)data.VoltageMagnitudeResiduals[i]); measurements.Add(measurement); } } { // Convert values from array in "VoltageAngleResiduals" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["VoltageAngleResiduals"]; int dataLength = data.VoltageAngleResiduals.Length; int metaLength = meta.VoltageAngleResiduals.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"VoltageAngleResiduals\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.VoltageAngleResiduals[i], (double)data.VoltageAngleResiduals[i]); measurements.Add(measurement); } } { // Convert values from array in "CurrentFlowMagnitudeEstimates" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CurrentFlowMagnitudeEstimates"]; int dataLength = data.CurrentFlowMagnitudeEstimates.Length; int metaLength = meta.CurrentFlowMagnitudeEstimates.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"CurrentFlowMagnitudeEstimates\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.CurrentFlowMagnitudeEstimates[i], (double)data.CurrentFlowMagnitudeEstimates[i]); measurements.Add(measurement); } } { // Convert values from array in "CurrentFlowAngleEstimates" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CurrentFlowAngleEstimates"]; int dataLength = data.CurrentFlowAngleEstimates.Length; int metaLength = meta.CurrentFlowAngleEstimates.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"CurrentFlowAngleEstimates\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.CurrentFlowAngleEstimates[i], (double)data.CurrentFlowAngleEstimates[i]); measurements.Add(measurement); } } { // Convert values from array in "CurrentFlowMagnitudeResiduals" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CurrentFlowMagnitudeResiduals"]; int dataLength = data.CurrentFlowMagnitudeResiduals.Length; int metaLength = meta.CurrentFlowMagnitudeResiduals.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"CurrentFlowMagnitudeResiduals\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.CurrentFlowMagnitudeResiduals[i], (double)data.CurrentFlowMagnitudeResiduals[i]); measurements.Add(measurement); } } { // Convert values from array in "CurrentFlowAngleResiduals" field to measurements ArrayMapping arrayMapping = (ArrayMapping)fieldLookup["CurrentFlowAngleResiduals"]; int dataLength = data.CurrentFlowAngleResiduals.Length; int metaLength = meta.CurrentFlowAngleResiduals.Length; if (dataLength != metaLength) { throw new InvalidOperationException($"Values array length ({dataLength}) and MetaValues array length ({metaLength}) for field \"CurrentFlowAngleResiduals\" must be the same."); } for (int i = 0; i < dataLength; i++) { IMeasurement measurement = MakeMeasurement(meta.CurrentFlowAngleResiduals[i], (double)data.CurrentFlowAngleResiduals[i]); measurements.Add(measurement); } } { // Convert values from openLSE.Model.LSE.PerformanceMetrics UDT for "PerformanceMetrics" field to measurements FieldMapping fieldMapping = fieldLookup["PerformanceMetrics"]; TypeMapping nestedMapping = GetTypeMapping(fieldMapping); CollectFromLSEPerformanceMetrics(measurements, nestedMapping, data.PerformanceMetrics, meta.PerformanceMetrics); } }