示例#1
0
    def test_DGC_blank_block(self):
        dgc = sr.DriftingGratingCircle(monitor=self.monitor, indicator=self.indicator, background=0.,
                                       coordinate='degree', center=(10., 90.), sf_list=(0.02,),
                                       tf_list=(4.0,), dire_list=(45.,), con_list=(0.8,), radius_list=(20.,),
                                       block_dur=0.5, midgap_dur=0.1, iteration=2, pregap_dur=0.2,
                                       postgap_dur=0.3, is_blank_block=True)

        frames = dgc.generate_frames()
        # print('\n'.join([str(f) for f in frames]))
        assert (len(frames) == 168)
        for frame in frames:
            assert (len(frame) == 9)

        _ = dgc._generate_frames_for_index_display_condition((0., 0., 0., 0., 0.))
        frames_unique_blank, index_to_display_blank = _
        # print('\nDGC frames_unique_blank:')
        # print('\n'.join([str(f) for f in frames_unique_blank]))
        # print('\nDGC index_to_display_blank:')
        # print(index_to_display_blank)

        assert (frames_unique_blank == ((1, 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0),
                                        (1, 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)))
        assert (index_to_display_blank == [0] + [1] * 29)

        frames_unique, condi_ind_in_frames_unique = dgc._generate_frames_unique_and_condi_ind_dict()
        # print('\nDGC frames_unique:')
        # print('\n'.join([str(f) for f in frames_unique]))
        # print('\nDGC condi_ind_in_frames_unique:')
        # print(condi_ind_in_frames_unique)
        assert (frames_unique[-1] == (1, 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0))
        assert (frames_unique[-2] == (1, 1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0))
        assert (condi_ind_in_frames_unique['condi_0001'] == [16] + [17] * 29)
    def test_DGC_generate_frames_unique_and_condi_ind_dict(self):
        dgc = sr.DriftingGratingCircle(monitor=self.monitor,
                                       indicator=self.indicator,
                                       block_dur=2.,
                                       sf_list=(0.04, ),
                                       tf_list=(
                                           1.,
                                           3.0,
                                       ),
                                       dire_list=(45., 90.),
                                       con_list=(0.8, ),
                                       radius_list=(10., ),
                                       midgap_dur=0.1,
                                       pregap_dur=0.5,
                                       postgap_dur=0.2,
                                       iteration=2,
                                       is_blank_block=False)
        frames_unique, condi_ind_in_frames_unique = dgc._generate_frames_unique_and_condi_ind_dict(
        )
        assert (len(condi_ind_in_frames_unique) == 4)
        assert (set(condi_ind_in_frames_unique.keys()) == {
            'condi_0000', 'condi_0001', 'condi_0002', 'condi_0003'
        })
        assert (len(frames_unique) == 161)
        for frame in frames_unique:
            assert (len(frame) == 9)

        import numpy as np
        for cond, ind in list(condi_ind_in_frames_unique.items()):
            assert (len(ind) == 120)
            assert (ind[0] % 20 == 1)
            assert (len(np.unique(ind)) == 60 or len(np.unique(ind)) == 20)
    def test_DGC_generate_frames_for_index_display_condition(self):
        dgc = sr.DriftingGratingCircle(monitor=self.monitor,
                                       indicator=self.indicator,
                                       block_dur=2.,
                                       sf_list=(0.04, ),
                                       tf_list=(2.0, ),
                                       dire_list=(45., ),
                                       con_list=(0.8, ),
                                       radius_list=(10., ),
                                       midgap_dur=0.1,
                                       pregap_dur=0.5,
                                       postgap_dur=0.2,
                                       iteration=2,
                                       is_blank_block=False)

        conditions = dgc._generate_all_conditions()
        # print len(conditions)
        assert (len(conditions) == 1)
        frames_unique_condi, index_to_display_condi = dgc._generate_frames_for_index_display_condition(
            conditions[0])
        assert (index_to_display_condi == list(range(30)) * 4)
        assert (max(index_to_display_condi) == len(frames_unique_condi) - 1)
        # print '\n'.join([str(f) for f in frames_unique_condi])
        assert ([f[0] for f in frames_unique_condi] == [1] * 30)
        assert (frames_unique_condi[0][1] == 1)
        assert (frames_unique_condi[0][8] == 1.)
        assert ([f[1] for f in frames_unique_condi[1:]] == [0] * 29)
        assert ([f[8] for f in frames_unique_condi[1:]] == [0.] * 29)
 def test_DGC_generate_display_index(self):
     dgc = sr.DriftingGratingCircle(monitor=self.monitor, indicator=self.indicator,
                                    block_dur=2., sf_list=(0.04,), tf_list=(1., 3.0,),
                                    dire_list=(45., 90.), con_list=(0.8,), radius_list=(10.,),
                                    midgap_dur=0.1, pregap_dur=0.5, postgap_dur=0.2,
                                    iteration=2)
     frames_unique, index_to_display = dgc._generate_display_index()
     # print '\n'.join([str(f) for f in frames_unique])
     assert (len(frames_unique) == 161)
     assert (max(index_to_display) == len(frames_unique) - 1)
     # print len(index_to_display)
     assert (len(index_to_display) == 1044)
    def test_DGC_generate_frames(self):
        dgc = sr.DriftingGratingCircle(monitor=self.monitor,
                                       indicator=self.indicator,
                                       background=0.,
                                       coordinate='degree',
                                       center=(10., 90.),
                                       sf_list=(0.02, 0.04),
                                       tf_list=(1.0, ),
                                       dire_list=(45., ),
                                       con_list=(0.8, ),
                                       radius_list=(20., ),
                                       block_dur=2.,
                                       midgap_dur=1.,
                                       iteration=2,
                                       pregap_dur=1.5,
                                       postgap_dur=3.,
                                       is_blank_block=False)

        frames = dgc.generate_frames()
        assert (len(frames) == 930)
        assert ([f[0] for f in frames[0:90]] == [0] * 90)
        assert ([f[0] for f in frames[210:270]] == [0] * 60)
        assert ([f[0] for f in frames[390:450]] == [0] * 60)
        assert ([f[0] for f in frames[570:630]] == [0] * 60)
        assert ([f[0] for f in frames[750:930]] == [0] * 180)
        assert ([f[8] for f in frames[0:90]] == [-1.] * 90)
        assert ([f[8] for f in frames[210:270]] == [-1.] * 60)
        assert ([f[8] for f in frames[390:450]] == [-1.] * 60)
        assert ([f[8] for f in frames[570:630]] == [-1.] * 60)
        assert ([f[8] for f in frames[750:930]] == [-1.] * 180)

        assert ([f[0] for f in frames[90:210]] == [1] * 120)
        assert ([f[0] for f in frames[270:390]] == [1] * 120)
        assert ([f[0] for f in frames[450:570]] == [1] * 120)
        assert ([f[0] for f in frames[630:750]] == [1] * 120)
        assert (frames[90][8] == 1.)
        assert ([f[8] for f in frames[91:150]] == [0.] * 59)
        assert (frames[150][8] == 1.)
        assert ([f[8] for f in frames[151:210]] == [0.] * 59)
        assert (frames[270][8] == 1.)
        assert ([f[8] for f in frames[271:330]] == [0.] * 59)
        assert (frames[330][8] == 1.)
        assert ([f[8] for f in frames[331:390]] == [0.] * 59)
        assert (frames[450][8] == 1.)
        assert ([f[8] for f in frames[451:510]] == [0.] * 59)
        assert (frames[510][8] == 1.)
        assert ([f[8] for f in frames[511:570]] == [0.] * 59)
        assert (frames[630][8] == 1.)
        assert ([f[8] for f in frames[631:690]] == [0.] * 59)
        assert (frames[690][8] == 1.)
        assert ([f[8] for f in frames[691:750]] == [0.] * 59)
lsn = stim.LocallySparseNoise(monitor=mon, indicator=ind, pregap_dur=pregap_dur,
                              postgap_dur=postgap_dur, coordinate=coordinate,
                              background=background, subregion=lsn_subregion,
                              grid_space=lsn_grid_space, sign=lsn_sign,
                              probe_size=lsn_probe_size, probe_orientation=lsn_probe_orientation,
                              probe_frame_num=lsn_probe_frame_num, iteration=lsn_iteration,
                              is_include_edge=lsn_is_include_edge, min_distance=lsn_min_distance,
                              repeat=lsn_repeat)
# =================================================================================

# ======================= Drifting Grating Circle =================================
dgc = stim.DriftingGratingCircle(monitor=mon, indicator=ind, pregap_dur=pregap_dur,
                                 postgap_dur=postgap_dur, coordinate=coordinate,
                                 background=background, center=dgc_center,
                                 sf_list=dgc_sf_list, tf_list=dgc_tf_list,
                                 dire_list=dgc_dire_list, con_list=dgc_con_list,
                                 radius_list=dgc_radius_list, block_dur=dgc_block_dur,
                                 midgap_dur=dgc_midgap_dur, iteration=dgc_iteration,
                                 is_smooth_edge=dgc_is_smooth_edge,
                                 smooth_width_ratio=dgc_smooth_width_ratio,
                                 smooth_func=dgc_smooth_func, is_blank_block=dgc_is_blank_block)
# =================================================================================

# ======================= Static Grating Cricle ===================================
sgc = stim.StaticGratingCircle(monitor=mon, indicator=ind, pregap_dur=pregap_dur,
                               postgap_dur=postgap_dur, coordinate=coordinate,
                               background=background, center=sgc_center,
                               sf_list=sgc_sf_list, ori_list=sgc_ori_list,
                               con_list=sgc_con_list, radius_list=sgc_radius_list,
                               phase_list=sgc_phase_list, display_dur=sgc_display_dur,
                               midgap_dur=sgc_midgap_dur, iteration=sgc_iteration,
                               is_smooth_edge=sgc_is_smooth_edge,
# -*- coding: utf-8 -*-
"""
the minimum script to run 10 seconds of black screen
"""

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=(768, 1360), dis=15., mon_width_cm=52., mon_height_cm=32.)
ind = Indicator(mon)
ds = DisplaySequence(log_dir='C:/data', is_by_index=True, is_save_sequence=True)
dgc = stim.DriftingGratingCircle(monitor=mon, indicator=ind, background=0.,
                                 coordinate='degree', center=(10., 90.), sf_list=(0.02,),
                                 tf_list=(4.0, 2.0), dire_list=(45.,), con_list=(0.8,), radius_list=(20.,),
                                 block_dur=2., midgap_dur=1., iteration=3, pregap_dur=2.,
                                 postgap_dur=2., is_blank_block=True)
ds.set_stim(dgc)
ds.trigger_display()
plt.show()
示例#8
0
    # creating a monitor object to display the indicator on (since we don' use it)
    mon_bin = Monitor(resolution=(0, 0),
                      dis=15.,
                      mon_width_cm=52.,
                      mon_height_cm=32.)
    ind = Indicator(mon_bin)

    ks = stim.DriftingGratingCircle(
        mon,
        ind,
        radius_list=[50],
        dire_list=[0, 45, 90, 135, 180, 225, 270, 315],
        pregap_dur=3,
        postgap_dur=2,
        is_smooth_edge=False,
        block_dur=5,
        midgap_dur=5,
        center=(0., 60.),
        sf_list=[0.05],
        tf_list=[0.8],
        con_list=[1],
        iteration=5,
        is_blank_block=False,
        sqr=False)
    ds = DisplaySequence(log_dir="/data",
                         is_by_index=True,
                         display_screen=0,
                         is_sync_pulse_LJ=False)

    ds.set_stim(ks)
    ds.trigger_display(fullscr=True)