distance_dependence_first_order_connectivity_recurrent_inhibition.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from conmorph.connections import RecurrentInhibition
  2. import numpy as np
  3. from conmorph.util import load_spec
  4. from interneuron_polarity.model.morphology.volume import get_distance_from_to
  5. labels=["polar", "circular"]
  6. ex_ex_connections = [RecurrentInhibition.load("../../data/{:s}_recurrent_inhibition.pickle".format(label)) for label
  7. in labels]
  8. model = load_spec("morphological_model.json")
  9. density_ex = model["excitatory_neurons"]["density"]
  10. density_in = model["inhibitory_neurons"]["density"]
  11. volume = 4.0/3*np.pi* model["inhibitory_neurons"]["long_axis"]*model["inhibitory_neurons"]["short_axis"]**2
  12. distance_step = 5
  13. max_distance = model["inhibitory_neurons"]["long_axis"]*2
  14. distance_bins = np.arange(0, max_distance, distance_step)
  15. offsets= [-4, 4]
  16. bin_width = 2
  17. filename="../../data/first_order_connectivity_"
  18. np.save("{:s}{:s}.npy".format(filename, "distance_bins"), distance_bins)
  19. def print_statistics(distances):
  20. print("Number of connections per neuron: {:d}".format(len(distances)))
  21. print("Mean distance: {:.1f}".format(np.mean(distances)))
  22. print("Std distance: {:.1f}".format(np.std(distances)))
  23. print("Min distance: {:.1f}".format(np.min(distances)))
  24. print("Max distance: {:.1f}".format(np.max(distances)))
  25. for conn, label, off in zip(ex_ex_connections, labels, offsets):
  26. assert isinstance(conn, RecurrentInhibition)
  27. distances = conn.get_distances_to_neighbors()
  28. print(label)
  29. print_statistics(distances)
  30. print()
  31. distance_histo, _ = np.histogram(distances, distance_bins)
  32. number_of_available_neighbors, _ = np.histogram(get_distance_from_to(conn.positions, conn.positions), distance_bins)
  33. number_of_available_neighbors[0] = number_of_available_neighbors[0]-conn.n_ex
  34. average_number_of_connections = distance_histo / number_of_available_neighbors
  35. np.save("{:s}{:s}.npy".format(filename, label), average_number_of_connections)