def test_SL_generate_frames_for_index_display(self): sl = sr.SinusoidalLuminance(monitor=self.monitor, indicator=self.indicator, background=0., coordinate='degree', pregap_dur=2., postgap_dur=3., midgap_dur=0., max_level=0.5, min_level=-0.2, start_phase=0., frequency=4., cycle_num=10) frames = sl._generate_frames_for_index_display() # print(frames) assert (len(frames) == 16) assert (frames[0] == (0, None, -1.)) for i in range(1, 8): assert (frames[i][2] == 1.) for i in range(8, 16): assert (frames[i][2] == 0.) colors = [f[1] for f in frames] # print(colors) assert (colors[1] == 0.15) assert (max(colors[1:]) <= 0.5) assert (min(colors[1:]) >= -0.2)
def test_SL_generate_display_index(self): sl = sr.SinusoidalLuminance(monitor=self.monitor, indicator=self.indicator, background=0., coordinate='degree', pregap_dur=2., postgap_dur=3., midgap_dur=0.5, max_level=1., min_level=-1., start_phase=0., frequency=4., cycle_num=3) ind = sl._generate_display_index() # print(ind) assert(ind == [0] * 120 + range(1, 16) + [0] * 30 + range(1, 16) + [0] * 30 + range(1, 16) + [0] * 180)
# ======================= Flashing Circle ========================================= fc = stim.FlashingCircle(monitor=mon, indicator=ind, pregap_dur=pregap_dur, postgap_dur=postgap_dur, coordinate=coordinate, background=background, center=fc_center, radius=fc_radius, color=fc_color, flash_frame_num=fc_flash_frame_num, midgap_dur=fc_midgap_dur, iteration=fc_iteration, is_smooth_edge=fc_is_smooth_edge, smooth_width_ratio=fc_smooth_width_ratio, smooth_func=fc_smooth_func) # ================================================================================= # ============================ SinusoidalLuminance ================================ sl = stim.SinusoidalLuminance(monitor=mon, indicator=ind, pregap_dur=pregap_dur, postgap_dur=postgap_dur, coordinate=coordinate, background=background, max_level=sl_max_level, min_level=sl_min_level, frequency=sl_frequency, cycle_num=sl_cycle_num, start_phase=sl_start_phase, midgap_dur=sl_midgap_dur) # ================================================================================= # ======================== Sparse Noise =========================================== sn = stim.SparseNoise(monitor=mon, indicator=ind, pregap_dur=pregap_dur, postgap_dur=postgap_dur, coordinate=coordinate, background=background, subregion=sn_subregion, grid_space=sn_grid_space, sign=sn_sign, probe_size=sn_probe_size, probe_orientation=sn_probe_orientation, probe_frame_num=sn_probe_frame_num, iteration=sn_iteration, is_include_edge=sn_is_include_edge) # ================================================================================= # ======================= Locally Sparse Noise ====================================
import matplotlib.pyplot as plt import retinotopic_mapping.StimulusRoutines as stim from retinotopic_mapping.MonitorSetup import Monitor, Indicator from retinotopic_mapping.DisplayStimulus import DisplaySequence # Initialize Monitor object mon = Monitor(resolution=(1200, 1920), dis=15., mon_width_cm=52., mon_height_cm=32.) # Initialize Inicator object ind = Indicator(mon) # Initialize DisplaySequence object ds = DisplaySequence(log_dir='C:/data') # Initialize UniformContrast object sl = stim.SinusoidalLuminance(monitor=mon, indicator=ind, pregap_dur=2., midgap_dur=1., postgap_dur=3., max_level=0.5, frequency=0.5, cycle_num=5, start_phase=0.) # set uniform contrast stimulus into the DisplaySequence object ds.set_stim(sl) # start display ds.trigger_display() # plot distribution of frame duration plt.show()