diff --git a/figures/MAM2EBRAINS/.ipynb_checkpoints/M2E_visualize_instantaneous_and_mean_firing_rates-checkpoint.py b/figures/MAM2EBRAINS/.ipynb_checkpoints/M2E_visualize_instantaneous_and_mean_firing_rates-checkpoint.py
new file mode 100644
index 0000000000000000000000000000000000000000..6aa8b694f6184c061fab85696d07a090a28ef238
--- /dev/null
+++ b/figures/MAM2EBRAINS/.ipynb_checkpoints/M2E_visualize_instantaneous_and_mean_firing_rates-checkpoint.py
@@ -0,0 +1,18 @@
+import numpy as np
+
+def plot_instan_mean_firing_rate(M):
+    # load spike data and calculate instantaneous and mean firing rates
+    data = np.loadtxt(M.simulation.data_dir + '/recordings/' + M.simulation.label + "-spikes-1-0.dat", skiprows=3)
+    tsteps, spikecount = np.unique(data[:,1], return_counts=True)
+    firing_rate = spikecount / M.simulation.params['dt'] * 1e3 / np.sum(M.N_vec)
+    
+    # visualize calculate instantaneous and mean firing rates
+    ax = pl.subplot()
+    ax.plot(tsteps, rate)
+    ax.plot(tsteps, np.average(rate)*np.ones(len(tsteps)), label='mean')
+    ax.set_title('Instantaneous and mean firing rate across all populations')
+    ax.set_xlabel('time (ms)')
+    ax.set_ylabel('firing rate (spikes / s)')
+    ax.set_xlim(0, M.simulation['t_sim'])
+    ax.set_ylim(0, 50)
+    ax.legend()
\ No newline at end of file
diff --git a/figures/MAM2EBRAINS/M2E_visualize_instantaneous_and_mean_firing_rates.py b/figures/MAM2EBRAINS/M2E_visualize_instantaneous_and_mean_firing_rates.py
new file mode 100644
index 0000000000000000000000000000000000000000..6aa8b694f6184c061fab85696d07a090a28ef238
--- /dev/null
+++ b/figures/MAM2EBRAINS/M2E_visualize_instantaneous_and_mean_firing_rates.py
@@ -0,0 +1,18 @@
+import numpy as np
+
+def plot_instan_mean_firing_rate(M):
+    # load spike data and calculate instantaneous and mean firing rates
+    data = np.loadtxt(M.simulation.data_dir + '/recordings/' + M.simulation.label + "-spikes-1-0.dat", skiprows=3)
+    tsteps, spikecount = np.unique(data[:,1], return_counts=True)
+    firing_rate = spikecount / M.simulation.params['dt'] * 1e3 / np.sum(M.N_vec)
+    
+    # visualize calculate instantaneous and mean firing rates
+    ax = pl.subplot()
+    ax.plot(tsteps, rate)
+    ax.plot(tsteps, np.average(rate)*np.ones(len(tsteps)), label='mean')
+    ax.set_title('Instantaneous and mean firing rate across all populations')
+    ax.set_xlabel('time (ms)')
+    ax.set_ylabel('firing rate (spikes / s)')
+    ax.set_xlim(0, M.simulation['t_sim'])
+    ax.set_ylim(0, 50)
+    ax.legend()
\ No newline at end of file