Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 def mouse_up(self, event):
     MouseMode.mouse_up(self, event)
     if self._markers:
         self._log_tape_command()
         self._markers = []
     else:
         self._clear()
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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()
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
 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.
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
 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.
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
 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)
Ejemplo n.º 13
0
    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)
Ejemplo n.º 14
0
    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()
Ejemplo n.º 15
0
    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
Ejemplo n.º 16
0
 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
Ejemplo n.º 17
0
 def mouse_down(self, event):
     MouseMode.mouse_down(self, event)
Ejemplo n.º 18
0
 def __init__(self, session):
     MouseMode.__init__(self, session)
     self._first_atom = None
Ejemplo n.º 19
0
 def mouse_up(self, event):
     self._drawing.display=False
     MouseMode.mouse_up(self, event)
Ejemplo n.º 20
0
 def mouse_down(self, event):
     MouseMode.mouse_down(self, event)
     self._set_drawing_position()
     self._set_drawing_color()
     self._drawing.display=True
Ejemplo n.º 21
0
 def mouse_down(self, event):
     MouseMode.mouse_down(self, event)
     pick = self._picked_bond(event)
     self._bond_rot = self._bond_rotation(pick)
Ejemplo n.º 22
0
 def move_marker_begin(self, event):
     self._moving_marker = self.picked_marker(event)
     if not isinstance(event, LaserEvent):
         MouseMode.mouse_down(self, event)
Ejemplo n.º 23
0
 def __init__(self, session):
   MouseMode.__init__(self, session)
 
   self._series = None
   self._player = None
   self.last_mouse_x = None
Ejemplo n.º 24
0
 def mouse_up(self, event):
     MouseMode.mouse_up(self, event)
     self.tugging = False
Ejemplo n.º 25
0
 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)
Ejemplo n.º 26
0
 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)
Ejemplo n.º 27
0
 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.
Ejemplo n.º 28
0
 def __init__(self, session):
     MouseMode.__init__(self, session)
     self._wrap = False
     self._vr_full_range = 0.5	# Meters.  Motion to play full coordset.
Ejemplo n.º 29
0
 def mouse_up(self, event):
     MouseMode.mouse_up(self, event)
     self._log_command()
     self._delete_bond_rotation()
Ejemplo n.º 30
0
 def mouse_up(self, event):
     self._unlabel()
     MouseMode.mouse_up(self, event)
     _log_swapaa_command(self._residue)
     self._residue = None
     self._last_y = None