public static bool TryParse(string line, out FactoryTelemetry ft)
        {
            var data = line.Split(',');

            if (data.Length == 6 &&
                DateTime.TryParse(data[0], out DateTime timestamp) &&
                double.TryParse(data[1], out double pulse) &&
                double.TryParse(data[2], out double engineEfficiency) &&
                double.TryParse(data[3], out double red) &&
                double.TryParse(data[4], out double blue) &&
                double.TryParse(data[5], out double green))
            {
                ft = new FactoryTelemetry()
                {
                    TimeStamp  = timestamp,
                    Pulse      = pulse,
                    Efficiency = engineEfficiency,
                    Red        = red,
                    Blue       = blue,
                    Green      = green
                };
                return(true);
            }
            else
            {
                ft = null;
                return(false);
            }
        }
        public static IEnumerable <FactoryTelemetry> Load(string filename)
        {
            using (var sr = new StreamReader(filename))
            {
                sr.ReadLine(); // ignore headers

                string line = null;
                while ((line = sr.ReadLine()) != null)
                {
                    if (FactoryTelemetry.TryParse(line, out FactoryTelemetry ft))
                    {
                        yield return(ft);
                    }
                }
            }
        }