//create Proximal Synapses to Columns in InputPlane //receptive area is InputPlane private void connectProximal(Layer ip) { if (ip != null) //may be null during testing { //calculate radius from INPUT Layer/Plane diagonal dimension (to allow 1-dimensional layers) double radius = ip.CalcRadius(ZoneSizePercProximal); for (int x = 0; x < NumColumnsX; x++) { for (int y = 0; y < NumColumnsY; y++) { Column col = Columns[x][y]; col.CreateProximalSynapses(this, ip, radius, ZoneCoveragePercProximal); } } } else //imput layer empty, remove all Synapses { for (int x = 0; x < NumColumnsX; x++) { for (int y = 0; y < NumColumnsY; y++) { Column col = Columns[x][y]; col.RemoveAllProximalSynapses(); } } } }
//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); }