def get_locally_sparse_noise_stimulus_template(self, stimulus, mask_off_screen=True): ''' Return an array of the stimulus template for the specified stimulus. Parameters ---------- stimulus: string Which locally sparse noise stimulus to retrieve. Must be one of: stimulus_info.LOCALLY_SPARSE_NOISE stimulus_info.LOCALLY_SPARSE_NOISE_4DEG stimulus_info.LOCALLY_SPARSE_NOISE_8DEG mask_off_screen: boolean Set off-screen regions of the stimulus to LocallySparseNoise.LSN_OFF_SCREEN. Returns ------- tuple: (template, off-screen mask) ''' if stimulus not in si.LOCALLY_SPARSE_NOISE_DIMENSIONS: raise KeyError("%s is not a known locally sparse noise stimulus" % stimulus) template = self.get_stimulus_template(stimulus) # build mapping from template coordinates to display coordinates template_shape = si.LOCALLY_SPARSE_NOISE_DIMENSIONS[stimulus] template_shape = [template_shape[1], template_shape[0]] template_display_shape = (1260, 720) display_shape = (1920, 1200) scale = [ float(template_shape[0]) / float(template_display_shape[0]), float(template_shape[1]) / float(template_display_shape[1]) ] offset = [ -(display_shape[0] - template_display_shape[0]) * 0.5, -(display_shape[1] - template_display_shape[1]) * 0.5 ] x, y = np.meshgrid(np.arange(display_shape[0]), np.arange(display_shape[1]), indexing='ij') template_display_coords = np.array([(x + offset[0]) * scale[0] - 0.5, (y + offset[1]) * scale[1] - 0.5], dtype=float) template_display_coords = np.rint(template_display_coords).astype(int) # build mask template_mask, template_frac = si_mask_stimulus_template( template_display_coords, template_shape) if mask_off_screen: template[:, ~template_mask.T] = LocallySparseNoise.LSN_OFF_SCREEN return template, template_mask.T
def get_locally_sparse_noise_stimulus_template(self, stimulus, mask_off_screen=True): ''' Return an array of the stimulus template for the specified stimulus. Parameters ---------- stimulus: string Which locally sparse noise stimulus to retrieve. Must be one of: stimulus_info.LOCALLY_SPARSE_NOISE stimulus_info.LOCALLY_SPARSE_NOISE_4DEG stimulus_info.LOCALLY_SPARSE_NOISE_8DEG mask_off_screen: boolean Set off-screen regions of the stimulus to LocallySparseNoise.LSN_OFF_SCREEN. Returns ------- tuple: (template, off-screen mask) ''' if stimulus not in si.LOCALLY_SPARSE_NOISE_DIMENSIONS: raise KeyError("%s is not a known locally sparse noise stimulus" % stimulus) template = self.get_stimulus_template(stimulus) # build mapping from template coordinates to display coordinates template_shape = si.LOCALLY_SPARSE_NOISE_DIMENSIONS[stimulus] template_shape = [ template_shape[1], template_shape[0] ] template_display_shape = (1260, 720) display_shape = (1920, 1200) scale = [ float(template_shape[0]) / float(template_display_shape[0]), float(template_shape[1]) / float(template_display_shape[1]) ] offset = [ -(display_shape[0] - template_display_shape[0]) * 0.5, -(display_shape[1] - template_display_shape[1]) * 0.5 ] x, y = np.meshgrid(np.arange(display_shape[0]), np.arange( display_shape[1]), indexing='ij') template_display_coords = np.array([(x + offset[0]) * scale[0] - 0.5, (y + offset[1]) * scale[1] - 0.5], dtype=float) template_display_coords = np.rint(template_display_coords).astype(int) # build mask template_mask, template_frac = si_mask_stimulus_template( template_display_coords, template_shape) if mask_off_screen: template[:, ~template_mask.T] = LocallySparseNoise.LSN_OFF_SCREEN return template, template_mask.T
def mask_stimulus_template(*args, **kwargs): return si_mask_stimulus_template(*args, **kwargs)