Build and run experiment
This example shows how to build, run, analyze, and visualize the results of an experiment.
import matplotlib.pyplot as plt
import macaqueretina as mr
mr.load_parameters()
You need to build retina first
mr.retina_constructor.construct()
Short contrast response function experiment
First, let's set the stimulus type, frequency and duration
mr.config.visual_stimulus_parameters.pattern = "temporal_sine_pattern"
mr.config.visual_stimulus_parameters.temporal_frequency = 5.0
mr.config.visual_stimulus_parameters.duration_seconds = 1.0
The exp_variables are the variables to be changed in the experiment.
See visual_stimulus_parameters.yaml, safe up to two variables
exp_variables = ["contrast"]
mr.config.experiment_parameters = {
"exp_variables": exp_variables,
"min_max_values": [[0, 1.0]],
"n_steps": [5],
"logarithmic": [False],
"n_sweeps": 1,
"distributions": {"uniform": None},
}
filename = mr.experiment.build_and_run(build_without_run=False)
You will need the filename downstream.
Analyze short experiment
my_analysis_options = {
"exp_variables": exp_variables,
"t_start_ana": 0.5, # 0.5 s baseline as default
"t_end_ana": 1.5,
}
mr.analysis.analyze_experiment(filename, my_analysis_options)
Visualize results
mr.viz.spike_raster_response(filename, sweeps_to_show=[0], savefigname=None)
mr.viz.fr_response(filename, exp_variables, xlog=False, savefigname=None)
mr.viz.F1F2_unit_response(filename, exp_variables, xlog=False, savefigname=None)
plt.show()
Long experiment
Let's change the stimulus pattern and duration:
mr.config.visual_stimulus_parameters.pattern = "sine_grating"
mr.config.visual_stimulus_parameters.duration_seconds = 6.0
exp_variables = ["contrast", "spatial_frequency"]
mr.config.experiment_parameters = {
"exp_variables": exp_variables,
"min_max_values": [[0, 0.6], [0.1, 15.0]]
"n_steps": [10, 16]
"logarithmic": [True, True]
"n_sweeps": 1,
"distributions": {"uniform": None},
}
filename = mr.experiment.build_and_run(build_without_run=False)
Analyze long experiment
my_analysis_options = {
"exp_variables": exp_variables,
"t_start_ana": 0.5, # 0.5 s baseline as default
"t_end_ana": 6.5,
}
mr.analysis.analyze_experiment(filename, my_analysis_options)
Visualize results
mr.viz.spike_raster_response(filename, sweeps_to_show=[0], savefigname=None)
mr.viz.fr_response(filename, exp_variables, xlog=False, savefigname=None)
mr.viz.F1F2_unit_response(filename, exp_variables, xlog=False, savefigname=None)
plt.show()