public SegmentUpdate GetSegmentActiveSynapses(int t, HTMSegment segment = null, bool newSynapses = false)
{
SegmentUpdate segmentUpdate = new SegmentUpdate();
segmentUpdate.ActiveSynapses = new List<HTMSynapse>();
segmentUpdate.NewSynapses = new List<HTMCell>();
segmentUpdate.AddNewSynapses = newSynapses;
segmentUpdate.Segment = segment;
if (segmentUpdate.Segment != null)
segmentUpdate.ActiveSynapses = segment.GetActiveSynapses(t, false, false);
if (!newSynapses)
return segmentUpdate;
int newSynapseCount = Math.Max(0, _newSynapseCount - segmentUpdate.ActiveSynapses.Count);
//List<HTMCell> learningCells = GetRandomActiveCells(t);
List<HTMCell> learningCells = GetRandomLearningCells(t);
newSynapseCount = Math.Min(newSynapseCount, learningCells.Count);
// Truncate the array of learning cells. To do : get a random sample of the array.
for (int i = 0 ; i < newSynapseCount; i++)
segmentUpdate.NewSynapses.Add(learningCells[i]);
return segmentUpdate;
}