Ejemplo n.º 1
0
        /// <summary>
        /// Makes a collection of empty timestamped workflow trace shells, one for each unique "Case ID" in loaded data from an event log.
        /// </summary>
        /// <param name="ids">A "Case ID" column from the data frame, representation of a loaded event log.</param>
        /// <returns>A list of empty timestamped workflow traces, one for each unique "Case ID" in given data.</returns>
        private List <TimestampedWorkflowTrace> MakeEmptyTimestampedWfts(Deedle.Series <int, string> ids)
        {
            List <TimestampedWorkflowTrace> traces = new List <TimestampedWorkflowTrace>();
            HashSet <string> uniqueIds             = new HashSet <string>(ids.Values);

            foreach (var id in uniqueIds)
            {
                traces.Add(new TimestampedWorkflowTrace("" + id));
            }
            return(traces);
        }
Ejemplo n.º 2
0
        public void CouldAddTwoSeriesWithSameKeys(double expected, SortedMap <int, double> sm1,
                                                  SortedMap <int, double> sm2)
        {
            var count = sm1.Count;

            var c1 = sm1.GetEnumerator();
            var c2 = sm2.GetEnumerator();

            var ds1 = new Deedle.Series <int, double>(sm1.Keys.ToArray(), sm1.Values.ToArray());
            var ds2 = new Deedle.Series <int, double>(sm2.Keys.ToArray(), sm2.Values.ToArray());

            Assert.NotNull(c1.Comparer);
            Assert.NotNull(c2.Comparer);


            var    zipSum    = (sm1 + sm2);
            double actual    = 0;
            var    zipCursor = //zipSum.GetEnumerator();
                               new Zip <int, double, double, SortedMapCursor <int, double>,
                                        SortedMapCursor <int, double> >(
                c1, c2);         //.Map((k, v) => v.Item1 + v.Item2)

            var op2 = new Op2 <int, double, AddOp <double>, Zip <int, double, double, SortedMapCursor <int, double>,
                                                                 SortedMapCursor <int, double> > >(zipCursor).Source;

            var zipCursorOp2 = op2.GetEnumerator();

            using (Benchmark.Run("Zip", count * 2))
            {
                while (zipCursorOp2.MoveNext())
                {
                    actual += zipCursorOp2.CurrentValue;
                }
            }
            Assert.AreEqual(expected, actual);

            //var zipped = sm1.Zip(sm2, (k, l, r) => l + r); // sm1.Zip(sm2).Map((k, v) => v.Item1 + v.Item2); //
            //actual = 0;
            //using (Benchmark.Run("Zip MN Extension", count * 2))
            //{
            //    foreach (var keyValuePair in zipped)
            //    {
            //        actual += keyValuePair.Value;
            //    }
            //}
            //Assert.AreEqual(expected, actual);

            //var zipN = new[] { sm1, sm2 }.Zip((k, varr) => varr[0] + varr[1], true).GetCursor();
            //actual = 0;
            //using (Benchmark.Run("ZipN", count * 2))
            //{
            //    while (zipN.MoveNext())
            //    {
            //        actual += zipN.CurrentValue;
            //    }
            //}
            //Assert.AreEqual(expected, actual);


            //var zipNOld = new[] { sm1, sm2 }.ZipOld((k, varr) => varr[0] + varr[1]).GetCursor();
            //actual = 0;
            //using (Benchmark.Run("ZipN (old)", count * 2))
            //{
            //    while (zipNOld.MoveNext())
            //    {
            //        actual += zipNOld.CurrentValue;
            //    }
            //}
            //Assert.AreEqual(expected, actual);

            //zipCursor.Reset();
            //actual = 0;
            //using (Benchmark.Run("Zip MP", count * 2))
            //{
            //    while (zipCursor.MovePrevious())
            //    {
            //        actual += zipCursor.CurrentValue;
            //    }
            //}
            //Assert.AreEqual(expected, actual);

            //actual = 0;
            //using (Benchmark.Run("LINQ", count * 2))
            //{
            //    var linq = sm1.Zip(sm2, (l, r) => l.Value + r.Value);
            //    foreach (var d in linq)
            //    {
            //        actual += d;
            //    }
            //}
            //Assert.AreEqual(expected, actual);

            //actual = 0;
            //using (Benchmark.Run("Deedle", count * 2))
            //{
            //    var sum = ds1 + ds2;
            //    foreach (var v in sum.Values) // ds1.ZipInner(ds2).Values)
            //    {
            //        actual += v; //.Item1 + v.Item2;
            //    }
            //}
            //Assert.AreEqual(expected, actual);
        }