public static List <ActivityPerMinute> ProcessRows(List <Activity> rows)
        {
            var activities = new List <ActivityPerMinute>();

            if (rows.Count == 0)
            {
                return(activities);
            }

            var lastKnownTime          = rows.First().SaveTime.AddMinutes(-5);
            ActivityPerMinute activity = null;

            for (int index = 0; index < rows.Count; index++)
            {
                var row         = rows[index];
                var currentDate = new DateTime(row.SaveTime.Year, row.SaveTime.Month, row.SaveTime.Day,
                                               row.SaveTime.Hour, row.SaveTime.Minute, 0);

                double resultant = Math.Sqrt(row.X * row.X + row.Y * row.Y + row.Z * row.Z);

                if (!currentDate.Minute.Equals(lastKnownTime.Minute))
                {
                    if (activity != null)
                    {
                        activities.Add(activity);
                    }

                    activity = new ActivityPerMinute(currentDate, resultant);
                }
                else
                {
                    activity?.AddActivity(resultant);
                }

                lastKnownTime = currentDate;

                if (index == rows.Count - 1 && !activities.Contains(activity))
                {
                    activities.Add(activity);
                }
            }
            return(activities);
        }
        public static List <ActivityPerMinute> ProcessRows(List <RowType> rows)
        {
            var activities             = new List <ActivityPerMinute>();
            var lastKnownTime          = rows.First().DateTime.AddMinutes(-5);
            ActivityPerMinute activity = null;

            for (int index = 0; index < rows.Count; index++)
            {
                var row         = rows[index];
                var currentDate = new DateTime(row.DateTime.Year, row.DateTime.Month, row.DateTime.Day,
                                               row.DateTime.Hour, row.DateTime.Minute, 0);

                double resultant = Math.Abs(row.X) >= Threshold ? 1.0 : 0;
                resultant += Math.Abs(row.Y) >= Threshold ? 1.0 : 0;
                resultant += Math.Abs(row.Z) >= Threshold ? 1.0 : 0;

                if (!currentDate.Minute.Equals(lastKnownTime.Minute))
                {
                    if (activity != null)
                    {
                        activities.Add(activity);
                    }

                    activity = new ActivityPerMinute(currentDate, resultant);
                }
                else
                {
                    activity?.AddActivity(resultant);
                }

                lastKnownTime = currentDate;

                if (index == rows.Count - 1 && !activities.Contains(activity))
                {
                    activities.Add(activity);
                }
            }
            return(activities.ToList());
        }
Example #3
0
        public static List <ActivityPerMinute> ProcessRows(List <RowType> rows)
        {
            var activities             = new List <ActivityPerMinute>();
            var lastKnownTime          = rows.First().DateTime.AddMinutes(-5);
            ActivityPerMinute activity = null;

            bool wasLastXPositive = rows.First().X > 0 && Math.Abs(rows.First().X) >= Threshold;
            bool wasLastYPositive = rows.First().Y > 0 && Math.Abs(rows.First().Y) >= Threshold;
            bool wasLastZPositive = rows.First().Z > 0 && Math.Abs(rows.First().Z) >= Threshold;

            for (int index = 0; index < rows.Count; index++)
            {
                var row         = rows[index];
                var currentDate = new DateTime(row.DateTime.Year, row.DateTime.Month, row.DateTime.Day,
                                               row.DateTime.Hour, row.DateTime.Minute, 0);

                bool isXPositive = row.X > 0 && Math.Abs(row.X) >= Threshold;
                bool isYPositive = row.Y > 0 && Math.Abs(row.Y) >= Threshold;
                bool isZPositive = row.Z > 0 && Math.Abs(row.Z) >= Threshold;

                double zcActivity = 0.0;

                if (wasLastXPositive != isXPositive)
                {
                    zcActivity += 1.0;
                }

                if (wasLastYPositive != isYPositive)
                {
                    zcActivity += 1.0;
                }

                if (wasLastZPositive != isZPositive)
                {
                    zcActivity += 1.0;
                }

                wasLastXPositive = isXPositive;
                wasLastYPositive = isYPositive;
                wasLastZPositive = isZPositive;

                if (!currentDate.Minute.Equals(lastKnownTime.Minute))
                {
                    if (activity != null)
                    {
                        activities.Add(activity);
                    }

                    activity = new ActivityPerMinute(currentDate, zcActivity);
                }
                else
                {
                    activity?.AddActivity(zcActivity);
                }

                lastKnownTime = currentDate;

                if (index == rows.Count - 1 && !activities.Contains(activity))
                {
                    activities.Add(activity);
                }
            }

            return(activities);
        }