Source code for bsb.connectivity.connectome.pf_interneuron

import numpy as np
from ..strategy import ConnectionStrategy


[docs]class ConnectomePFInterneuron(ConnectionStrategy): """ Legacy implementation for the connections between parallel fibers and a molecular layer interneuron cell_type. """
[docs] def validate(self): pass
def connect(self): # Gather information for the legacy code block below. granule_cell_type = self.from_cell_types[0] interneuron_cell_type = self.to_cell_types[0] granules = self.scaffold.cells_by_type[granule_cell_type.name] interneurons = self.scaffold.cells_by_type[interneuron_cell_type.name] first_granule = int(granules[0, 0]) dendrite_radius = interneuron_cell_type.morphology.dendrite_radius # Spoof fixed pf height of 150 µm pf_heights = 150 + granules[:, 3] def connectome_pf_inter(first_granule, interneurons, granules, r_sb, h_pf): pf_interneuron = np.zeros((0, 2)) # for each interneuron find all the parallel fibers that fall into the sphere with centre the cell soma and appropriate radius for i in interneurons: # find all cells that satisfy the condition interneuron_matrix = ( ((granules[:, 2] - i[2]) ** 2) + ((h_pf - i[3]) ** 2) - (r_sb ** 2) ).__le__(0) # indexes of interneurons that can potentially be connected good_pf = np.where(interneuron_matrix)[0] matrix = np.zeros((len(good_pf), 2)) matrix[:, 1] = i[0] matrix[:, 0] = good_pf + first_granule pf_interneuron = np.vstack((pf_interneuron, matrix)) return pf_interneuron result = connectome_pf_inter( first_granule, interneurons, granules, dendrite_radius, pf_heights ) self.scaffold.connect_cells(self, result)