def __init__(self, session, tug_mgr, atoms, spring_constant=None, mode='atom'): MouseMode.__init__(self, session) self.tug_mode = mode self._tugging = False self._last_xy = None self.name = 'ISOLDE_mouse_tug' self._focal_atom = None self._picked_atoms = None self._picked_tuggables = None self._pull_vector = None self._xyz0 = None self._xy = None # Atomic array to pick from self._atoms = atoms # Tuggable atoms manager self._tug_mgr = tug_mgr if spring_constant is None: from .constants import defaults spring_constant = defaults.MOUSE_TUG_SPRING_CONSTANT self.spring_constant = spring_constant self.structure = atoms.unique_structures[0] # Variables to be set by the caller self.last_tugged_atom = None self.already_tugging = False
def mouse_up(self, event): MouseMode.mouse_up(self, event) if self._markers: self._log_tape_command() self._markers = [] else: self._clear()
def __init__(self, session): MouseMode.__init__(self, session) self._moving_marker = None # Atom self._resizing_marker_or_link = None # Atom or Bond self._set_initial_sizes = True # First marker on volume sets marker radius
def mouse_up(self, event): if self._dragged: self.log_volume_command() elif self._multiwindow: self._window_num += 1 self._maps = [] MouseMode.mouse_up(self, event)
def mouse_down(self, event): MouseMode.mouse_down(self, event) res = self._mouse_pick(event) if res: self._show_zone(res) elif not self._unlabel(): self._unzone()
def __init__(self, session): MouseMode.__init__(self, session) self._zone_range = 3 # Angstroms from chosen residue self._minimize_steps = 10 # Number of steps per coordinate update self._tugger = None self._minimize_handler = None
def __init__(self, session): MouseMode.__init__(self, session) self._residue = None self._align_atom_names = ['N', 'C', 'CA'] self._step_pixels = 20 self._step_meters = 0.05 self._last_y = None self._label_atom_name = 'CA' # Which atom to show residue label on.
def __init__(self, session): MouseMode.__init__(self, session) self._map = None self._matching_maps = [] # Adjust region for these maps too. self._xy_last = None self._center = None # Center of rotation
def __init__(self, session): MouseMode.__init__(self, session) self._maps = [] # Allow adjusting multiple windows (non-zero regions of brightness curve). self._multiwindow = True self._centers = [] self._window_num = 0 self._vr_window_switch_motion = 0.02 # meters self._dragged = False
def __init__(self, session): MouseMode.__init__(self, session) self._start_point = None self._marker_set = None self._markers = [] self._color = (255, 255, 0, 255) self._radius = .1 # scene units (usually Angstroms) self._vr_radius = .002 # meters, for use in VR self._min_move = 5 # minimum pixels to draw tape self._start_time = 0 self._clear_time = 0.3 # seconds. Fast click/release causes clear.
def __init__(self, session): MouseMode.__init__(self, session) self._tugger = None self._tugging = False self._tug_handler = None self._last_frame_number = None self._puller = None self._arrow_model = None self._log = Logger('tug.log' if write_logs else None)
def mouse_down(self, event): MouseMode.mouse_down(self, event) x, y = event.position() from .label2d import label_under_window_position self._label = label = label_under_window_position(self.session, x, y) self._arr_part = None if label is None: from .arrows import arrow_under_window_position self._label, self._arr_part = arrow_under_window_position( self.session, x, y) if self._label is None: from .label3d import picked_3d_label self._label = picked_3d_label(self.session, x, y)
def __init__(self, session): MouseMode.__init__(self, session) self.bound_button = None self._map = None self._matching_maps = [] # Adjust region for these maps too. self._axis = None # Clicked face normal axis = 0, 1 or 2 self._side = None # 0 or 1 for min/max box face along axis self._xy_last = None self._frac_istep = 0 self._pixel_size = 1 # Screen pixel size in scene units at click point self._slab_side = 0 # 0 for first slice of tilted slab, 1 for last slice self._slab_dir = (0, 1)
def mouse_up(self, event): MouseMode.mouse_up(self, event) x, y = event.position() pick = self.view.picked_object(x, y) if isinstance(pick, PickedPseudobond) and not self._markerset: bond = pick.pbond if bond.group.name == "TS bonds": atom1, atom2 = bond.atoms run(self.session, "~tsbond %s %s" % (atom1.atomspec, atom2.atomspec)) self.reset() return if isinstance(pick, PickedBond) and not self._markerset: bond = pick.bond run(self.session, "tsbond %s" % bond.atomspec) self.reset() return if not self._atom1: return if isinstance( pick, PickedAtom) and pick.atom.structure is self._atom1.structure: atom = pick.atom else: atom = self._atom2 if not atom: self.reset() return if atom.structure is self._atom1.structure and atom is not self._atom1: avg_radius = self.avg_bond_radius(self._atom1, atom) run( self.session, "tsbond %s %s radius %.3f" % ( self._atom1.atomspec, atom.atomspec, avg_radius, )) self.reset()
def mouse_down(self, event): MouseMode.mouse_down(self, event) x, y = event.position() self._xy = (x, y) v = self.session.main_view if self.tug_mode == 'selection': pa = self._atoms[self._atoms.selecteds] self._reference_point = v.clip_plane_points(x, y)[0] else: # from . import picking # pick = picking.pick_closest_to_line(self.session, x, y, self._atoms, 0.5, hydrogens=True) pick = v.picked_object(x, y, self._pick_exclude) pa = self._pick_atoms(pick) if pa is not None and len(pa): if self._start_tugging_atoms(pa): try: self._set_pull_direction(x, y) except: self.tugging = False
def __init__(self, session): MouseMode.__init__(self, session) self._zone_center_residue = None self._residue_distance = 5 self._label_distance = 4 self._label_size = 64 # Pixels self._label_height = 0.7 # Scene units (Angstroms) from chimerax.core.colors import BuiltinColors self._label_color = BuiltinColors['yellow'] self._label_background = BuiltinColors['black'] self._surface_distance = 8 self._coil_width_scale = (0.2, 0.2) self._helix_width_scale = (0.6, 0.2) self._helix_arrow_scale = (1.2, 0.2, 0.2, 0.2) self._sheet_width_scale = (0.6, 0.2) self._sheet_arrow_scale = (1.2, 0.2, 0.2, 0.2) self._ribbon_transparency = 100 # 0 = completely transparent, 255 = opaque self._labeled_residues = None self._scale_accum = 1 self._scale_step = 1.3 # Minimum scaling step factor self._original_atom_display = None # Boolean mask of which atoms originally shown self._original_residue_display = None # Boolean mask of which residues originally shown
def mouse_down(self, event): MouseMode.mouse_down(self, event)
def __init__(self, session): MouseMode.__init__(self, session) self._first_atom = None
def mouse_up(self, event): self._drawing.display=False MouseMode.mouse_up(self, event)
def mouse_down(self, event): MouseMode.mouse_down(self, event) self._set_drawing_position() self._set_drawing_color() self._drawing.display=True
def mouse_down(self, event): MouseMode.mouse_down(self, event) pick = self._picked_bond(event) self._bond_rot = self._bond_rotation(pick)
def move_marker_begin(self, event): self._moving_marker = self.picked_marker(event) if not isinstance(event, LaserEvent): MouseMode.mouse_down(self, event)
def __init__(self, session): MouseMode.__init__(self, session) self._series = None self._player = None self.last_mouse_x = None
def mouse_up(self, event): MouseMode.mouse_up(self, event) self.tugging = False
def mouse_up(self, event): MouseMode.mouse_up(self, event) x,y = event.position() pick = self.session.main_view.picked_object(x, y) self._picked_object(pick)
def resize_begin(self, event): m, l = self.picked_marker_or_link(event) self._resizing_marker_or_link = m or l if not isinstance(event, LaserEvent): MouseMode.mouse_down(self, event)
def __init__(self, session): MouseMode.__init__(self, session) self._bond_rot = None self._speed_factor = 2 self._minimum_angle_step = 2 # Degrees. Only applies to drag with 3d pointer.
def __init__(self, session): MouseMode.__init__(self, session) self._wrap = False self._vr_full_range = 0.5 # Meters. Motion to play full coordset.
def mouse_up(self, event): MouseMode.mouse_up(self, event) self._log_command() self._delete_bond_rotation()
def mouse_up(self, event): self._unlabel() MouseMode.mouse_up(self, event) _log_swapaa_command(self._residue) self._residue = None self._last_y = None