def run_camstim_debug(img_stack, timing_list, frame_length, runs): assert (img_stack.dtype) == 'uint8' assert len(img_stack.shape) == 3 from camstim import SweepStim, MovieStim from camstim import Foraging from camstim import Window # Create display window, warped window = Window(fullscr=True, monitor='Gamma1.Luminance50', screen=0) tmp_dir = tempfile.mkdtemp() timing_list = sorted(timing_list, key=lambda x: x[0]) movie_path = '%s.npy' % get_hash(img_stack) np.save(movie_path, img_stack) movie = MovieStim(movie_path=movie_path, window=window, frame_length=frame_length, size=(opc.SCREEN_W, opc.SCREEN_H), start_time=0.0, stop_time=None, flip_v=True, runs=runs) movie.set_display_sequence(timing_list) stimuli = [movie] ss = SweepStim(window, stimuli=stimuli, pre_blank_sec=0, post_blank_sec=0) f = Foraging(window=window, auto_update=False, nidaq_tasks={ 'digital_input': ss.di, 'digital_output': ss.do, }) #share di and do with SS ss.add_item(f, "foraging") ss.run()
import numpy as np import hashlib data_path = r'//allen/aibs/technology/nicholasc/openscope' n_repeats = 1 expected_gray_screen_duration = 60.0 expected_randomized_oddball_duration = 250.0 * n_repeats expected_habituated_sequence_duration = 100.0 * n_repeats expected_familiar_movie_duration = 150.0 * n_repeats expected_total_duration = expected_familiar_movie_duration + expected_habituated_sequence_duration + expected_randomized_oddball_duration + 3 * expected_gray_screen_duration assert os.path.basename(__file__).split('.')[0][-1] == str(n_repeats) # Create display window, warped window = Window(fullscr=True, monitor='Gamma1.Luminance50', screen=0) def get_block(file_name, timing_list, frame_length, runs, t0): base_seq_stim = MovieStim( movie_path=file_name, window=window, frame_length=frame_length, size=(1920, 1200), start_time=0.0, stop_time=None, flip_v=True, runs=runs, )
""" Dot stimuli """ from psychopy import visual from camstim import Stimulus, SweepStim from camstim import Foraging from camstim import Window, Warp import numpy as np import os import cPickle as pickle # Create display window window = Window(fullscr=True, monitor='Gamma1.Luminance50',#'GammaCorrect30', screen=0, warp=Warp.Spherical, # warp=Warp.Disabled ) stimFileDir = r"\\allen\programs\braintv\workgroups\nc-ophys\corbettb\motion stimuli\dot stimfiles" movie_path_list = [os.path.join(stimFileDir,f) for f in os.listdir(stimFileDir) if os.path.isfile(os.path.join(stimFileDir,f))] # set display sequences with open(r"\\allen\programs\braintv\workgroups\nc-ophys\corbettb\motion stimuli\ds_dict_two.pkl", 'rb') as f: ds_dict = pickle.load(f) movielist = [] for i, path in enumerate(movie_path_list): ds = ds_dict[str(i)] movie = Stimulus.from_file(path, window)
""" DriftingGratingsGrid.py Volume Imaging Day 1. """ from psychopy import visual from camstim import Stimulus, SweepStim from camstim import Foraging from camstim import Window, Warp # Create display window window = Window( fullscr=True, monitor='Gamma1.Luminance50', screen=0, warp=Warp.Spherical, ) # Paths for stimulus files dg_path = "drifting_gratings_grid_5.stim" lsn_path = "locally_sparse_noise.stim" # dg_path = r"C:\Users\Public\Desktop\pythondev\cam2p_scripts\tests\openscope_surround\drifting_gratings_grid_5.stim" # Create stimuli dg = Stimulus.from_file(dg_path, window) lsn = Stimulus.from_file(lsn_path, window) # set display sequences dg_ds = [(0, 915), (2735, 3650)] lsn_ds = [(925, 2725)]
""" VIPSSN_habituation_day1.py """ #from psychopy import visual from camstim import Stimulus, SweepStim from camstim import Foraging from camstim import Window, Warp import numpy as np # Create display window window = Window(fullscr=True, monitor='Gamma1.Luminance50', screen=0, warp=Warp.Disabled) local_path = r'C:\\ProgramData\AIBS_MPE\camstim\resources\VIPSSN\\' stim_path = local_path + 'VIPSSN_habituation_movie.stim' stim = Stimulus.from_file(stim_path, window) stim_ds = [(0, 600)] stim.set_display_sequence(stim_ds) params = { 'syncsqr': True, #'syncsqrloc': (875,550), #'syncsqrsize': (150,150), 'syncpulse': True, 'syncpulseport': 1, #'syncpulselines': [5, 6], # frame, start/stop 'trigger_delay_sec': 5.0 }
# optional param file param_file = {'target_pos': [0.0, 0.0]} for arg_str in sys.argv: if arg_str.find('coordinates.json') > -1: import json with open(arg_str, 'r') as f: param_file = json.load(f) posx = param_file['target_pos'][0] #in degrees posy = param_file['target_pos'][1] #in degrees # Create display window window = Window( fullscr=True, monitor='Gamma1.Luminance50', screen=1, #TODO: verify screen number for DeepScope warp=Warp.Spherical, ) # Paths for stimulus files size_by_contrast_path = "size_by_contrast.stim" behavior_flashes_path = "visual_behavior_flashes.stim" size_by_contrast_sequence_path = "size_by_contrast_sequence.npy" behavior_flashes_sequence_path = "visual_behavior_flash_sequence.npy" size_by_contrast_sequence = np.load(size_by_contrast_sequence_path).astype(int) behavior_flashes_sequence = np.load(behavior_flashes_sequence_path).astype(int) size_by_contrast = Stimulus.from_file(size_by_contrast_path, window) behavior_flashes = Stimulus.from_file(behavior_flashes_path, window)
""" three_session_A.py """ from psychopy import visual from camstim import Stimulus, SweepStim from camstim import Foraging from camstim import Window, Warp # Create display window window = Window( fullscr=True, monitor='GammaCorrect30', screen=1, warp=Warp.Spherical, ) # Paths for stimulus files dg_path = r"C:\Users\svc_ncbehavior\Desktop\stimulus\cam2p_scripts\cam_1_0\drifting_gratings.stim" # Create stimuli dg = Stimulus.from_file(dg_path, window) # set display sequences dg_ds = [(0, 1830)] dg.set_display_sequence(dg_ds) # kwargs params = { 'syncsqr': True, 'syncsqrloc': (510, 360),