1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import h5py
- import numpy
- import pandas
- import scripts
- from scripts.interneuron_placement import plot_neural_sheet, Pickle
- from scripts.spatial_network.run_entropy_maximisation_orientation_map import get_orientation_map
- from scripts.spatial_packing_entropy.sample_spatial_layout import data_folder, correlation_length, map_seed, \
- sheet_size, NE, NI, long_axis, short_axis, number_of_bins, ds
- if __name__ == "__main__":
- with h5py.File(data_folder + "spatial_layouts.hdf5", "r") as f:
- sampling_result_dict = {
- "seeds": f["sampling"]["seeds"][:],
- "mean_entropies": f["sampling"]["entropies"][:],
- "overlaps": f["sampling"]["overlaps"][:]
- }
- generation_indices = sorted([int(key) for key in f["differential_evolution"]["1"].keys()])
- evolution_result_dict = {
- "generation": generation_indices,
- "mean_entropies": numpy.array([f["differential_evolution"]["1"][str(generation_idx)]["entropy"][()] for \
- generation_idx
- in
- generation_indices]),
- "overlaps": numpy.array([f["differential_evolution"]["1"][str(generation_idx)]["overlap"][()] for \
- generation_idx in
- generation_indices])
- }
- max_entropy_result_dict = {
- "mean_entropy": f["max_entropy"]["entropy"][()] ,
- "overlap": f["max_entropy"]["overlap"][()],
- "orientations": f["max_entropy"]["orientations"][:]
- }
- best_orientation = f["differential_evolution"]["1"][str(generation_indices[-1])]["orientations"][:]
- orientation_map = get_orientation_map(correlation_length, map_seed, sheet_size, NE, data_folder=data_folder)
- spatial_layout = scripts.spatial_layout.SpatialLayout(orientation_map, NE, NI, long_axis, short_axis, sheet_size)
- circular_radius = numpy.sqrt(spatial_layout.long_axis * spatial_layout.short_axis)
- circular_layout = scripts.spatial_layout.SpatialLayout(orientation_map, NE, NI, circular_radius, circular_radius,
- sheet_size)
- df = pandas.DataFrame(sampling_result_dict)
- import matplotlib.pyplot as plt
- fig, ax = plt.subplots(1, 1, figsize=(3, 4))
- ax_overview = ax
- ax_overview.scatter(df["overlaps"].values/1000.0, df["mean_entropies"].values, marker='.', label='rand')
- ax_overview.plot(evolution_result_dict["overlaps"]/1000.0, evolution_result_dict["mean_entropies"], 'r-o',
- label="evolv")
- ax_overview.plot(max_entropy_result_dict["overlap"]/1000.0, max_entropy_result_dict["mean_entropy"], 'r^',
- label="max ent")
- ax_overview.plot(circular_layout.get_overlap(numpy.zeros(NI,), ds)/1000.0, circular_layout.get_mean_entropy(
- numpy.zeros(
- (NI,)), number_of_bins), 'rv', label="circ")
- ax_overview.set_xlabel("overlap (um2) x0.001")
- ax_overview.set_ylabel("<entropy>")
- ax_overview.legend()
- fig.tight_layout()
- fig.savefig("../../figures/evolve_spatial_layout/overlap_vs_entropy.png", dpi=300, bbox="tight")
- plot_neural_sheet(spatial_layout.ex_positions, spatial_layout.ex_tunings, spatial_layout.get_axonal_clouds(best_orientation))
- plt.savefig("../../figures/evolve_spatial_layout/layout_max_entropy.png", dpi=300)
- plot_neural_sheet(spatial_layout.ex_positions, spatial_layout.ex_tunings,
- spatial_layout.get_axonal_clouds(max_entropy_result_dict["orientations"]))
- plt.savefig("../../figures/evolve_spatial_layout/layout_overlap_constrained_max_entropy.png", dpi=300)
- plot_neural_sheet(circular_layout.ex_positions, circular_layout.ex_tunings,
- circular_layout.get_axonal_clouds(numpy.zeros((NI,))))
- plt.savefig("../../figures/evolve_spatial_layout/layout_circular.png", dpi=300)
|