Example #1
0
        /// <summary>
        /// Check the given log line for Completed Frame information (All other clients).
        /// </summary>
        /// <param name="logLine">Log Line</param>
        protected static UnitFrame GetUnitFrame(LogLine logLine)
        {
            Debug.Assert(logLine != null);

             Match mFramesCompleted = FramesCompletedRegex.Match(logLine.LineRaw);
             if (mFramesCompleted.Success)
             {
            var frame = new UnitFrame();

            int result;
            if (Int32.TryParse(mFramesCompleted.Result("${Completed}"), out result))
            {
               frame.RawFramesComplete = result;
            }
            else
            {
               return null;
            }

            if (Int32.TryParse(mFramesCompleted.Result("${Total}"), out result))
            {
               frame.RawFramesTotal = result;
            }
            else
            {
               return null;
            }

            string percentString = mFramesCompleted.Result("${Percent}");

            Match mPercent1 = Percent1Regex.Match(percentString);
            Match mPercent2 = Percent2Regex.Match(percentString);

            int framePercent;
            if (mPercent1.Success)
            {
               framePercent = Int32.Parse(mPercent1.Result("${Percent}"));
            }
            else if (mPercent2.Success)
            {
               framePercent = Int32.Parse(mPercent2.Result("${Percent}"));
            }
            // Try to parse a percentage from in between the parentheses (for older single core clients like v5.02) - Issue 36
            else if (!Int32.TryParse(percentString, out framePercent))
            {
               return null;
            }

            // Validate the steps are in tolerance with the detected frame percent - Issue 98
            double calculatedPercent = ((double)frame.RawFramesComplete / frame.RawFramesTotal) * 100;
            // ex. [00:19:40] Completed 82499 out of 250000 steps  (33%) - Would Validate
            //     [00:19:40] Completed 82750 out of 250000 steps  (33%) - Would Validate
            // 10% frame step tolerance. In the example the completed must be within 250 steps.
            if (Math.Abs(calculatedPercent - framePercent) <= 0.1)
            {
               frame.TimeOfFrame = logLine.ParseTimeStamp();
               frame.FrameID = framePercent;

               return frame;
            }
            /*** ProtoMol Only */
            // Issue 191 - New ProtoMol Projects don't report frame progress on the precent boundry.
            if (Math.Abs(calculatedPercent - (framePercent + 1)) <= 0.1)
            {
               frame.TimeOfFrame = logLine.ParseTimeStamp();
               frame.FrameID = framePercent + 1;

               return frame;
            }
            /*******************/

            return null;
             }

             return null;
        }
Example #2
0
        /// <summary>
        /// Check the given log line for Completed Frame information (GPU Only).
        /// </summary>
        /// <param name="logLine">Log Line</param>
        protected static UnitFrame GetGpuUnitFrame(LogLine logLine)
        {
            Debug.Assert(logLine != null);

             Match mFramesCompletedGpu = FramesCompletedGpuRegex.Match(logLine.LineRaw);
             if (mFramesCompletedGpu.Success)
             {
            var frame = new UnitFrame();

            frame.RawFramesComplete = Int32.Parse(mFramesCompletedGpu.Result("${Percent}"));
            frame.RawFramesTotal = 100; //Instance.CurrentProtein.Frames
            // I get this from the project data but what's the point. 100% is 100%.

            frame.TimeOfFrame = logLine.ParseTimeStamp();
            frame.FrameID = frame.RawFramesComplete;

            return frame;
             }

             return null;
        }