def marker_set(self, create = False): import VolumePath as vp marker_set = vp.find_marker_set_by_name('Volume eraser') if marker_set == None and create: marker_set = vp.Marker_Set('Volume eraser') return marker_set
def active_marker_set(): import VolumePath d = VolumePath.volume_path_dialog() if d: return d.active_marker_set return None
def marker_set(self): import VolumePath d = VolumePath.volume_path_dialog(create = False) if d == None: return None return d.active_marker_set
def transform_coord(self, from_xyz, from_xform, to_xform): import VolumePath to_xyz = VolumePath.transform_coordinates(from_xyz, from_xform, to_xform) return to_xyz
def open_skeleton_file ( open, dialog, smod ) : if not open: return paths = dialog.getPaths() path = paths[0] import VolumePath g = VolumePath.open_marker_set(path) mlist = g.markers() for m in mlist: m.region = None rid = int(m.extra_attributes['region_id']) if rid in smod.id_to_region: r = smod.id_to_region[rid] rsize = int(m.extra_attributes['region_size']) if r.point_count() == rsize: m.region = r #TODO: The regions file format renumbers the regions consecutively. So # matching based on region id won't work. Should change file format to # hdf5 and include region ids, colors, and any other useful per-region info. nomatch = [m for m in mlist if m.region is None] if nomatch: umsg('%d of %d skeleton nodes did not match a region' % (len(nomatch), len(mlist))) if smod.adj_graph: smod.adj_graph.close() smod.adj_graph = g
def open_marker_set(path): import VolumePath d = VolumePath.show_volume_path_dialog() d.open_marker_set(path) models = [] return models
def marker_refresh_cb(self): """marker_refresh_cb() Refresh markers list whenever models are opened or closed in Chimera. """ # @ Need to update menu with Listbox in VolumePath # whenever that listbox changes. Any better ways? if self.marker_dialog == None: import VolumePath vpd = VolumePath.volume_path_dialog() if vpd == None: return self.marker_dialog = vpd # flush out all entries, get open models list, populate menu self.marker_menu.remove_all_entries() open_models = chimera.openModels.list() for ms in self.marker_sets(): self.marker_menu.add_entry(ms.name) # if previous entry still in current marker sets list, # then reset else, set to top most entry ms = self.marker_set if ms and self.find_marker_set_by_name(ms.name): self.marker_menu.variable.set(ms.name) elif len(self.marker_sets()) > 0: ms = self.marker_sets()[-1] self.marker_menu.variable.set(ms.name) else: self.marker_menu.variable.set('')
def Compute(self): """Compute parameters """ if self.volume_path_dialog == None: import VolumePath self.volume_path_dialog = VolumePath.volume_path_dialog() self.update_parameters_value()
def marker_set(self): return None import VolumePath d = VolumePath.volume_path_dialog(create = False) if d is None: return None return d.active_marker_set
def place_marker(xyz, msys, color, radius, model_name=None, model_id=None): # Locate specified marker model mset = None import VolumePath as VP if not model_id is None: msets = VP.marker_sets(model_id) if len(msets) >= 1: mset = msets[0] if mset is None: # Create a new marker model mname = msys.name + ' center' if model_name is None else model_name mset = VP.Marker_Set(mname) mset.marker_molecule(model_id) mos = mset.marker_molecule().openState if mos != msys.openState: # Transform from volume to marker model coordinates. import Matrix xyz = Matrix.xform_xyz(xyz, msys.openState.xform, mos.xform) # Place marker at center position. mset.place_marker(xyz, color, radius)
def marker_open_cb(self): """marker_open_cb() - callback for marker set open buton Calls the Volume Path Dialog and its open dialog. """ # @ Better way? if self.marker_dialog == None: import VolumePath self.marker_dialog = VolumePath.volume_path_dialog(1) self.marker_dialog.ImportXML() self.marker_dialog.enter() self.marker_dialog.open_dialog.enter() return
def restore_path_tracer_state(path_tracer_dialog_basic_state): from SessionUtil.stateclasses import Model_State, Xform_State classes = (Path_Tracer_Dialog_State, Marker_Set_State, Marker_State, Link_State, Model_State, Xform_State) name_to_class = {} for c in classes: name_to_class[c.__name__] = c from SessionUtil import objecttree s = objecttree.basic_tree_to_instance_tree(path_tracer_dialog_basic_state, name_to_class) import VolumePath d = VolumePath.volume_path_dialog(create=1) set_dialog_state(s, d)
def transform_coord(self, from_xyz, from_xform, to_xform): """transform_coord(from_xyz, from_xform, to_xform) Input: from_xyz from object coordinates from_xform from object's transform to_xform to objcet's transform Output: to_xyz to object coordinates Convert coordinates from 'from object' to 'to object' """ import VolumePath to_xyz = VolumePath.transform_coordinates(from_xyz, from_xform,to_xform) return to_xyz
def place_marker_at_mouse(): import VolumePath VolumePath.place_marker_at_mouse()
def show_path_tracer_dialog(self): import VolumePath VolumePath.show_volume_path_dialog() if self.marker_set() == None and self.series: VolumePath.Marker_Set(self.series[0].menu_name + ' markers')
def open_marker_set(path): import VolumePath VolumePath.open_marker_set(path) models = [] return models
def volume_path_dialog(): import VolumePath return VolumePath.volume_path_dialog(create=1)
def Markers(self): import VolumePath VolumePath.show_volume_path_dialog()
def place_markers_on_atoms(): import VolumePath VolumePath.place_markers_on_atoms()
def volume_path_dialog(): import VolumePath return VolumePath.volume_path_dialog(create = 1)
def show_volume_path_tracer_dialog(): 'Show volume path tracer viewer dialog' import VolumePath VolumePath.show_volume_path_dialog()
def volume_path_dialog(): import VolumePath d = VolumePath.volume_path_dialog(create = True) return d