/// <summary> /// Método de inicialización de la clase en la cual se /// trae de la base de datos el registro de los sensores /// y se crean SeriesCollection para el dibujado de los graficos /// </summary> /// <param name="idSesion"></param> public void Init(int idSesion) { try { Labels = new[] { 0, 50, 100 }; using (var entidades = new Entidades()) { this.Sesion = entidades.Sesiones .Where(s => s.Id == idSesion) .Include(s => s.FrecuenciaCardiacas) .Include(s => s.Eegs) .Include(s => s.Temperaturas) .FirstOrDefault(); } this.Fecha = String.Format("{0:dd/MM/yyyy - hh:mm t}", this.Sesion.Fecha); this.Comentario = this.Sesion.Comentarios; //Frecuencia Cardiaca FrecuenciaCardiacasSc = new SeriesCollection(); LabelsTimeHR = new string[this.Sesion.FrecuenciaCardiacas.Count]; int countH = 0; var lineSeriesHr = new LineSeries { Title = "BPM", Values = new ChartValues <int>(), Stroke = System.Windows.Media.Brushes.Yellow, PointGeometry = null, }; var avgHr = new List <int>(); foreach (var item in this.Sesion.FrecuenciaCardiacas) { lineSeriesHr.Values.Add((int)item.Valor); if (item.Valor > 60) { avgHr.Add((int)item.Valor); } LabelsTimeHR[countH] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss"); countH++; } FrecuenciaCardiacasSc.Add(lineSeriesHr); //Temperaturas this.TemperaturasSc = new SeriesCollection(); LabelsTimeTemp = new string[this.Sesion.Temperaturas.Count]; int countT = 0; var lineSeriesTemp = new LineSeries { Title = "Centigrados", Values = new ChartValues <double>(), PointGeometry = null, }; var avgTemp = new List <double>(); foreach (var item in this.Sesion.Temperaturas) { lineSeriesTemp.Values.Add(Math.Round((double)item.Valor, 2)); avgTemp.Add((double)item.Valor); LabelsTimeTemp[countT] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss"); countT++; } TemperaturasSc.Add(lineSeriesTemp); var mediaHr = Math.Round((double)avgHr.Average(), 2); var mediaTemp = Math.Round((double)avgTemp.Average(), 2); //Eeg ondas Alpha this.EegAlphaSc = new SeriesCollection(); var lineSeriesAlpha = new LineSeries { Title = "Alpha", Values = new ChartValues <float>(), PointGeometry = null, Stroke = System.Windows.Media.Brushes.Green, }; var maxAlpha = this.Sesion.Eegs.Max(s => s.LowAlpha); //var maxDelta = this.Sesion.Eegs.Max(s => s.Delta); List <decimal> datosAlpha = new List <decimal>(); LabelsTimeAplha = new string[this.Sesion.Eegs.Count]; int countA = 0; foreach (var item in this.Sesion.Eegs) { float valAlpha = ((item.LowAlpha * 100) / maxAlpha); lineSeriesAlpha.Values.Add(valAlpha); datosAlpha.Add((decimal)valAlpha); LabelsTimeAplha[countA] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss"); countA++; } decimal resultA = datosAlpha.Average(); EegAlphaSc.Add(lineSeriesAlpha); //Eeg ondas Beta this.EegBetaSc = new SeriesCollection(); var lineSeriesBeta = new LineSeries { Title = "Beta ", Values = new ChartValues <float>(), PointGeometry = null, Stroke = System.Windows.Media.Brushes.Red }; var maxBeta = this.Sesion.Eegs.Max(s => s.LowBeta); List <decimal> datosBeta = new List <decimal>(); LabelsTimeBeta = new string[this.Sesion.Eegs.Count]; int countB = 0; foreach (var item in this.Sesion.Eegs) { float valBeta = ((item.LowBeta * 100) / maxBeta); lineSeriesBeta.Values.Add(valBeta); datosBeta.Add((decimal)valBeta); LabelsTimeBeta[countB] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss"); countB++; } decimal resultB = datosBeta.Average(); EegBetaSc.Add(lineSeriesBeta); } catch (Exception ex) { MessageBox.Show( "Ocurrió un problema al leer los datos registrados o no hay datos registrados", "Error", MessageBoxButton.OK, MessageBoxImage.Error); Debug.WriteLine(ex.Message); Logger.Log.Error("Mensaje: ", ex); } }
public void Init(Sesion sesion) { try { this.Sesion = sesion; this.Sesiones = new List <Sesion>(); using (var entidades = new Entidades()) { var usuarios = entidades.Usuarios .Where(u => u.EsMuestra) .Include(s => s.Sesiones).ToList(); foreach (var usuario in usuarios) { foreach (var item in usuario.Sesiones) { var sesionTemp = entidades.Sesiones .Where(s => s.Id == item.Id && s.Comentarios == "Conducción") .Include(e => e.Eegs) .FirstOrDefault(); if (sesionTemp != null) { this.Sesiones.Add(sesionTemp); } } } } List <double> mediasAlpha = new List <double>(); List <double> mediasBetha = new List <double>(); foreach (var seion1 in Sesiones) { var avgAlpha = seion1.Eegs.Select(a => a.LowAlpha).Average(); mediasAlpha.Add(avgAlpha); var avgBeta = seion1.Eegs.Select(a => a.LowBeta).Average(); mediasBetha.Add(avgBeta); } var mediaMediaAplha = Math.Round((double)mediasAlpha.Average(), 2); var mediaMediaBetha = Math.Round((double)mediasBetha.Average(), 2); //Alpha this.EegAlphaSc = new SeriesCollection(); var lineSeriesAlpha = new LineSeries { Title = "Alpha", Values = new ChartValues <double>(), PointGeometry = null, Stroke = System.Windows.Media.Brushes.Green, }; LabelsTimeAplha = new string[this.Sesion.Eegs.Count]; int countA = 0; List <Double> alpha = new List <double>(); foreach (var item in this.Sesion.Eegs) { double valAlpha = Math.Round(((item.LowAlpha * 50) / mediaMediaAplha), 2); lineSeriesAlpha.Values.Add(valAlpha); alpha.Add(valAlpha); LabelsTimeAplha[countA] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss"); countA++; } EegAlphaSc.Add(lineSeriesAlpha); ////Betha this.EegBetaSc = new SeriesCollection(); var lineSeriesBeta = new LineSeries { Title = "Beta ", Values = new ChartValues <double>(), PointGeometry = null, Stroke = System.Windows.Media.Brushes.Red, }; LabelsTimeBeta = new string[this.Sesion.Eegs.Count]; int countB = 0; List <Double> beta = new List <double>(); foreach (var item in this.Sesion.Eegs) { double valBeta = Math.Round(((item.LowBeta * 50) / mediaMediaBetha), 2); lineSeriesBeta.Values.Add(valBeta); beta.Add(valBeta); LabelsTimeBeta[countB] = item.FechaHora.TimeOfDay.ToString(@"hh\:mm\:ss"); countB++; } var avgAlpha2 = Math.Round((double)alpha.Average(), 4); var avgBeta2 = Math.Round((double)beta.Average(), 4); EegBetaSc.Add(lineSeriesBeta); } catch (Exception ex) { Debug.WriteLine(ex.Message); Logger.Log.Error("Mensaje: ", ex); } }