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)
示例#2
0
    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 ====================================
示例#4
0
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()