def _log_place_marker(mset, center, color, radius): c = '%.4g,%.4g,%.4g' % tuple(center) from chimerax.core.colors import color_name cmd = 'marker %s position %s color %s radius %.4g' % ( mset.atomspec, c, color_name(color), radius) from chimerax.core.commands import log_equivalent_command log_equivalent_command(mset.session, cmd)
def _log_marker_move(m): mset = m.structure pos = '%.4g,%.4g,%.4g' % tuple(m.scene_coord) cmd = 'marker change %s:%d position %s' % (mset.atomspec, m.residue.number, pos) from chimerax.core.commands import log_equivalent_command log_equivalent_command(mset.session, cmd)
def _log_link_delete(l): mset = l.structure m1, m2 = l.atoms cmd = 'marker delete %s:%d,%d linksOnly true' % ( mset.atomspec, m1.residue.number, m2.residue.number) from chimerax.core.commands import log_equivalent_command log_equivalent_command(mset.session, cmd)
def _label_pick(self, pick, color = None, background = None, size = None, height = None): if pick is None: from .label3d import label_delete label_delete(self.session, object_type = 'residues') from chimerax.core.commands import log_equivalent_command log_equivalent_command(self.session, 'label delete residues') return from chimerax import atomic if isinstance(pick, atomic.PickedAtom): atoms = pick.atom.residue.atoms elif isinstance(pick, atomic.PickedResidue): atoms = pick.residue.atoms elif isinstance(pick, atomic.PickedBond): atoms = atomic.Atoms(pick.bond.atoms) # Convert tuple to Atoms elif isinstance(pick, atomic.PickedPseudobond): atoms = atomic.Atoms(pick.pbond.atoms) # Convert tuple to Atoms else: return from chimerax.core.objects import Objects objects = Objects(atoms = atoms) object_type = 'residues' ses = self.session from .label3d import label, label_delete if label_delete(ses, objects, object_type) == 0: label(ses, objects, object_type, color=color, bg_color=background, size=size, height=height) from chimerax.core.commands import log_equivalent_command, residues_specifier, options_text rspec = residues_specifier(objects) opts = options_text((('color',color), ('bg_color',background), ('size',size), ('height',height))) log_equivalent_command(ses, 'label %s %s' % (rspec, opts))
def _log_link_resize(l): mset = l.structure m1, m2 = l.atoms cmd = ('marker change %s:%d,%d radius %.4g markers false' % (mset.atomspec, m1.residue.number, m2.residue.number, l.radius)) from chimerax.core.commands import log_equivalent_command log_equivalent_command(mset.session, cmd)
def _log_links_resize(session, links, radius): if len(links) == 0: return from chimerax.core.commands import log_equivalent_command for mspec in _link_specs(links): cmd = 'marker change %s radius %.4g markers false' % (mspec, radius) log_equivalent_command(session, cmd)
def log_volume_level_command(v): if v.image_shown: levels = ' '.join('level %.4g,%.4g' % sl for sl in v.image_levels) elif v.surface_shown: levels = ' '.join('level %.4g' % s.level for s in v.surfaces) command = 'volume #%s %s' % (v.id_string, levels) from chimerax.core.commands import log_equivalent_command log_equivalent_command(v.session, command)
def _log_markers_resize(session, markers, radius): if len(markers) == 0: return mspec = _markers_spec(markers) lf = 'links false' if len(markers.intra_bonds) > 0 else '' cmd = 'marker change %s radius %.4g %s' % (mspec, radius, lf) from chimerax.core.commands import log_equivalent_command log_equivalent_command(session, cmd)
def _log_link_command(marker1, marker2, rgba, radius): mspec = '%s:%d,%d' % (marker1.structure.atomspec, marker1.residue.number, marker2.residue.number) from chimerax.core.colors import color_name cmd = 'marker link %s color %s radius %.4g' % (mspec, color_name(rgba), radius) from chimerax.core.commands import log_equivalent_command log_equivalent_command(marker1.structure.session, cmd)
def _log_markers_recolor(session, markers, color): if len(markers) == 0: return mspec = _markers_spec(markers) lf = 'links false' if len(markers.intra_bonds) > 0 else '' from chimerax.core.colors import color_name cmd = 'marker change %s color %s %s' % (mspec, color_name(color), lf) from chimerax.core.commands import log_equivalent_command log_equivalent_command(session, cmd)
def _log_links_recolor(session, links, color): if len(links) == 0: return from chimerax.core.commands import log_equivalent_command from chimerax.core.colors import color_name cname = color_name(color) for mspec in _link_specs(links): cmd = 'marker change %s color %s markers false' % (mspec, cname) log_equivalent_command(session, cmd)
def log_volume_command(self): v = self._map if v: ro = v.rendering_options options = ( 'tiltedSlabAxis %.4g,%.4g,%.4g' % tuple(ro.tilted_slab_axis) + ' tiltedSlabOffset %.4g' % ro.tilted_slab_offset) command = 'volume #%s %s' % (v.id_string, options) from chimerax.core.commands import log_equivalent_command log_equivalent_command(v.session, command)
def _unlabel(self, log_command = True): res = self._labeled_residues if res is None: return False from chimerax.label.label3d import label_delete label_delete(self.session, res, 'residues') self._labeled_residues = None if log_command: from chimerax.core.commands import log_equivalent_command log_equivalent_command(self.session, 'zone label False') return True
def _log_tape_command(self): m1, m2 = self._markers label, h = self._label_text_and_height() mset = m1.structure p1 = '%.4g,%.4g,%.4g' % tuple(m1.scene_coord) p2 = '%.4g,%.4g,%.4g' % tuple(m2.scene_coord) from chimerax.core.colors import color_name cname = color_name(self._color) cmd = ( 'marker segment %s position %s toPosition %s color %s radius %.4g label %s labelHeight %.4g labelColor %s' % (mset.atomspec, p1, p2, cname, self._radius, label, h, cname)) from chimerax.core.commands import log_equivalent_command log_equivalent_command(mset.session, cmd)
def _unzone(self, log_command = True): r = self._zone_center_residue if r is None: return self._restore_original_display() self._unlabel(log_command = False) from chimerax.map_filter.vopcommand import volume_unzone volume_unzone(self.session, self._shown_volumes()) if log_command: from chimerax.core.commands import log_equivalent_command log_equivalent_command(self.session, 'zone clear') self._zone_center_residue = None
def _log_label_move_command(self): lbl = self._label from .label2d import Label from .arrows import Arrow if isinstance(lbl, Label): command = '2dlabel #%s xpos %.3f ypos %.3f' % ( lbl.drawing.id_string, lbl.xpos, lbl.ypos) from chimerax.core.commands import log_equivalent_command log_equivalent_command(self.session, command) elif isinstance(lbl, Arrow): x, y = self._get_arr_xy() command = '2dlabel arrow #%s %s %.3f,%.3f' % ( lbl.drawing.id_string, self._arr_part, x, y) from chimerax.core.commands import log_equivalent_command log_equivalent_command(self.session, command)
def log_volume_region_command(v): ro = v.rendering_options if v.showing_image('orthoplanes'): planes = ''.join( [n for n, s in zip(('x', 'y', 'z'), ro.orthoplanes_shown) if s]) region = ('orthoplanes %s' % planes + ' positionPlanes %d,%d,%d' % ro.orthoplane_positions) elif v.showing_image('tilted slab'): region = ('tiltedSlabOffset %.4g' % ro.tilted_slab_offset + ' tiltedSlabPlaneCount %d' % ro.tilted_slab_plane_count) else: ijk_min, ijk_max = v.region[:2] region = 'region %d,%d,%d,%d,%d,%d' % (tuple(ijk_min) + tuple(ijk_max)) command = 'volume #%s %s' % (v.id_string, region) from chimerax.core.commands import log_equivalent_command log_equivalent_command(v.session, command)
def _show_zone(self, residue, label=True, ribbon=True, log_command = True): '''Show nearby residues, labels, and surfaces.''' if self._zone_center_residue is None: # Remember original display state. s = residue.structure self._original_atom_display = s.atoms.displays self._original_residue_display = s.residues.ribbon_displays self._zone_center_residue = residue ratoms = residue.atoms nres = self._show_near_residues(residue, show_ligands=ribbon) if label: self._show_labels() if ribbon: self._show_ribbons(nres) self._show_volume_zone(ratoms) # Set center of rotation v = self.session.main_view c = residue.structure.scene_position * residue.center v.center_of_rotation = c if log_command: rspec = residue.string(style='command line') options = ' '.join(('' if ribbon else 'ribbon False', '' if label else 'label False')) if log_command == 'include distances': options = ' '.join((options, 'residueDistance %.3g' % self._residue_distance, 'labelDistance %.3g' % self._label_distance, 'surfaceDistance %.3g' % self._surface_distance)) from chimerax.core.commands import log_equivalent_command log_equivalent_command(self.session, 'zone %s %s' % (rspec, options))
def _log_marker_resize(m): mset = m.structure cmd = 'marker change %s:%d radius %.4g' % (mset.atomspec, m.residue.number, m.radius) from chimerax.core.commands import log_equivalent_command log_equivalent_command(mset.session, cmd)
def _log_clear_command(self): mset = self._marker_set cmd = 'marker delete %s' % mset.atomspec from chimerax.core.commands import log_equivalent_command log_equivalent_command(mset.session, cmd)
def _log_marker_delete(m): mset = m.structure cmd = 'marker delete %s:%d' % (mset.atomspec, m.residue.number) from chimerax.core.commands import log_equivalent_command log_equivalent_command(mset.session, cmd)