//calculate number of Basal connections to create public int CalcNumBasalSynapsesToCreate(Layer lr, double zoneSizePerc, double zoneCoveragePerc) { double radius = lr.CalcRadius(zoneSizePerc); List <Column> potentialColumns = lr.GetColumnsFromCentre(this.X, this.Y, radius, false); int numToConnect = (int)(potentialColumns.Count * zoneCoveragePerc); return(numToConnect); }
//create Basal connections from each Cell to other Columns in same Layer public void CreateBasalSynapses(Layer lr, double radius, double zoneCoveragePerc) { //create random list of columns to connect - Exclusive of centre List <Column> potentialColumns = lr.GetColumnsFromCentre(this.X, this.Y, radius, false); foreach (Cell cell in Cells) { cell.CreateBasalSynapses(potentialColumns, zoneCoveragePerc); } }
//create Proximal connections from this Column to Columns in Input Layer/Plane public void CreateProximalSynapses(Layer lr, Layer ip, double radius, double zoneCoveragePerc) { //scale layer locations to InputPlane lr.MapPoint(X, Y, ip, out int scaledX, out int scaledY); //create random list of columns to connect - Inclusive of centre List <Column> potentialColumns = ip.GetColumnsFromCentre(scaledX, scaledY, radius, true); ProximalDendrite.CreateSynapses(potentialColumns, zoneCoveragePerc); }