Doo.Machine.HTM.HTMCell.GetActiveSegment C# (CSharp) Method

GetActiveSegment() public method

public GetActiveSegment ( int t ) : HTMSegment
t int
return HTMSegment
        public HTMSegment GetActiveSegment(int t)
        {
            List<HTMSegment> activeSegs = new List<HTMSegment>();
            foreach (HTMSegment seg in _distalSegments)
                if (seg.GetActive(-1, false, false))
                    activeSegs.Add(seg);

            if (activeSegs.Count == 0)
                return null;
            else if (activeSegs.Count == 1)
                return activeSegs[0];

            // There're more the one active segments so sequence segments given priority.
            List<HTMSegment> sequenceSegs = new List<HTMSegment>();
            foreach (HTMSegment seg in activeSegs)
                if (seg.IsSequence)
                    sequenceSegs.Add(seg);
            if (sequenceSegs.Count == 1)
                return sequenceSegs[0];
            else if (sequenceSegs.Count > 1)
                activeSegs = sequenceSegs;

            // Search the segment that had, in the previous step, the highest activity measured by the number of active synapses.
            HTMSegment mostActiveSegment = null;
            int maxActivity = int.MinValue;
            int activity;
            foreach (HTMSegment seg in activeSegs)
            {
                activity = seg.GetActivity(-1);
                if (activity > maxActivity)
                {
                    maxActivity = activity;
                    mostActiveSegment = seg;
                }
            }
            return mostActiveSegment;
        }