def color_electrodes(current_electrode, prev_electrode): current_electrode_group = mu.elec_group(current_electrode, bpy.context.scene.bipolar) current_electrode_hemi = ElecsPanel.groups_hemi[current_electrode_group] prev_electrode_group = mu.elec_group(prev_electrode, bpy.context.scene.bipolar) prev_electrode_hemi = ElecsPanel.groups_hemi[prev_electrode_group] if current_electrode_hemi != prev_electrode_hemi: print('flip hemis! clear {}'.format(prev_electrode_hemi)) ElecsPanel.addon.clear_cortex([prev_electrode_hemi]) color = bpy.context.scene.electrode_color ElecsPanel.addon.object_coloring(bpy.data.objects[current_electrode], tuple(color)) #cu.name_to_rgb('green')) if prev_electrode != current_electrode: ElecsPanel.addon.object_coloring(bpy.data.objects[prev_electrode], (1, 1, 1, 1))
def color_electrodes(current_electrode, prev_electrode): # bpy.context.scene.bipolar = '-' in current_electrode current_electrode_group = mu.elec_group(current_electrode, bpy.context.scene.bipolar) if ElecsPanel.groups_hemi: current_electrode_hemi = ElecsPanel.groups_hemi[current_electrode_group] prev_electrode_group = mu.elec_group(prev_electrode, bpy.context.scene.bipolar) prev_electrode_hemi = ElecsPanel.groups_hemi[prev_electrode_group] if current_electrode_hemi != prev_electrode_hemi: print('flip hemis! clear {}'.format(prev_electrode_hemi)) _addon().clear_cortex([prev_electrode_hemi]) else: _addon().clear_cortex()
def create_groups_lookup_table(electrodes): groups = {} bipolar = '-' in electrodes[0] for elc in electrodes: group = mu.elec_group(elc, bipolar) groups[elc] = group return groups
def create_groups_electrodes_lookup(electrodes): groups = defaultdict(list) bipolar = '-' in electrodes[0] for elc in electrodes: group = mu.elec_group(elc, bipolar) groups[group].append(elc) return groups
def init(addon, addon_prefs=None): FreeviewPanel.addon = addon # print('freeview command: {}'.format(addon_prefs.freeview_cmd)) # print('Use -verbose? {}'.format(addon_prefs.freeview_cmd_verbose)) # print('Use -stdin? {}'.format(addon_prefs.freeview_cmd_stdin)) FreeviewPanel.addon_prefs = addon_prefs bpy.context.scene.freeview_listen_to_keyboard = False bpy.context.scene.freeview_listener_is_running = False bpy.context.scene.fMRI_files_exist = len(glob.glob(op.join(mu.get_user_fol(), 'fmri', '*_lh.npy'))) > 0 #mu.hemi_files_exists(op.join(mu.get_user_fol(), 'fmri_{hemi}.npy')) bpy.context.scene.electrodes_exist = bpy.data.objects.get('Deep_electrodes', None) is not None if bpy.context.scene.electrodes_exist: FreeviewPanel.electrodes_groups = set([mu.elec_group(obj.name, bpy.context.scene.bipolar) for obj in bpy.data.objects['Deep_electrodes'].children]) else: FreeviewPanel.electrodes_groups = [] bpy.context.scene.freeview_messages = '' root = mu.get_user_fol() mmvt_ct_fname = op.join(root, 'ct', 'ct_reg_to_mr.mgz') # if not op.isfile(mmvt_ct_fname): # subjects_ct_fname = op.join(mu.get_subjects_dir(), mu.get_user(), 'mri', 'ct_nas.nii.gz') # if op.isfile(subjects_ct_fname): # shutil.copy(subjects_ct_fname, mmvt_ct_fname) FreeviewPanel.CT_files_exist = op.isfile(mmvt_ct_fname) FreeviewPanel.init = True FreeviewPanel.freeview_is_open = False register()
def prev_electrode(): electrode_lead = mu.elec_group(bpy.context.scene.electrodes, bpy.context.scene.bipolar) lead_electrodes = ElecsPanel.groups_electrodes[electrode_lead] index = lead_electrodes.index(bpy.context.scene.electrodes) if index > 0: prev_elc = lead_electrodes[index - 1] else: prev_elc = lead_electrodes[-1] bpy.context.scene.electrodes = prev_elc
def get_electrodes_command(self, root): if bpy.data.objects.get('Deep_electrodes'): cmd = ' -c ' groups = set([mu.elec_group(obj.name, bpy.context.scene.bipolar) for obj in bpy.data.objects['Deep_electrodes'].children]) for group in groups: cmd += '"{}" '.format(op.join(root, 'freeview', '{}.dat'.format(group))) else: cmd = '' return cmd
def find_first_electrode_per_group(electrodes): groups = defaultdict(list) first_electrodes = {} bipolar = '-' in electrodes[0] for elc in electrodes: groups[mu.elec_group(elc, bipolar)].append(elc) for group, group_electrodes in groups.items(): first_electrode = sorted(group_electrodes)[0] first_electrodes[group] = first_electrode return first_electrodes
def next_electrode(): # index = ElecsPanel.electrodes.index(bpy.context.scene.electrodes) electrode_lead = mu.elec_group(bpy.context.scene.electrodes, bpy.context.scene.bipolar) lead_electrodes = ElecsPanel.groups_electrodes[electrode_lead] index = lead_electrodes.index(bpy.context.scene.electrodes) if index < len(lead_electrodes) - 1: next_elc = lead_electrodes[index + 1] else: next_elc = lead_electrodes[0] bpy.context.scene.electrodes = next_elc
def prev_electrode(): electrode_lead = mu.elec_group(bpy.context.scene.electrodes, bpy.context.scene.bipolar) lead_electrodes = ElecsPanel.groups_electrodes[electrode_lead] index = lead_electrodes.index(bpy.context.scene.electrodes) if index > 0: prev_elc = lead_electrodes[index - 1] else: prev_elc = lead_electrodes[-1] bpy.context.scene.electrodes = prev_elc bpy.data.objects[ElecsPanel.prev_elect].select = False
def next_electrode(): # index = ElecsPanel.electrodes.index(bpy.context.scene.electrodes) electrode_lead = mu.elec_group(bpy.context.scene.electrodes, bpy.context.scene.bipolar) lead_electrodes = ElecsPanel.groups_electrodes[electrode_lead] index = lead_electrodes.index(bpy.context.scene.electrodes) if index < len(lead_electrodes) - 1: next_elc = lead_electrodes[index + 1] else: next_elc = lead_electrodes[0] bpy.context.scene.electrodes = next_elc bpy.data.objects[ElecsPanel.prev_elect].select = False
def prev_electrode(): electrode_lead = mu.elec_group(bpy.context.scene.electrodes, bpy.context.scene.bipolar) lead_electrodes = ElecsPanel.groups_electrodes[electrode_lead] index = lead_electrodes.index(bpy.context.scene.electrodes) if index > 0: prev_elc = lead_electrodes[index - 1] else: prev_elc = lead_electrodes[-1] bpy.context.scene.electrodes = prev_elc _addon().de_select_electrode_and_sensor(ElecsPanel.prev_elect)
def next_electrode(): # index = ElecsPanel.electrodes.index(bpy.context.scene.electrodes) electrode_lead = mu.elec_group(bpy.context.scene.electrodes, bpy.context.scene.bipolar) lead_electrodes = ElecsPanel.groups_electrodes[electrode_lead] index = lead_electrodes.index(bpy.context.scene.electrodes) if index < len(lead_electrodes) - 1: next_elc = lead_electrodes[index + 1] else: next_elc = lead_electrodes[0] bpy.context.scene.electrodes = next_elc _addon().de_select_electrode_and_sensor(ElecsPanel.prev_elect)
def get_electrodes_command(self, root): if bpy.data.objects.get('Deep_electrodes'): cmd = ' -c ' groups = set([ mu.elec_group(obj.name, bpy.context.scene.bipolar) for obj in bpy.data.objects['Deep_electrodes'].children ]) for group in groups: cmd += '"{}" '.format( op.join(root, 'freeview', '{}.dat'.format(group))) else: cmd = '' return cmd