示例#1
0
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)
示例#2
0
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)
示例#3
0
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)
示例#4
0
    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))
示例#5
0
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)
示例#6
0
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)
示例#7
0
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)
示例#8
0
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)
示例#9
0
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)
示例#10
0
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)
示例#11
0
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)
示例#12
0
 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)
示例#13
0
 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
示例#14
0
 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)
示例#15
0
    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
示例#16
0
 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)
示例#17
0
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)
示例#18
0
    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))
示例#19
0
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)
示例#20
0
 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)
示例#21
0
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)