Example #1
0
def to_mdtraj(system, traj):
    traj = [
        Atoms(positions=xyz, numbers=system.get_atomic_numbers())
        for xyz in traj['positions']
    ]
    # create tmp file
    ase.io.write("junk.pdb", traj)
    traj = mdtraj.load_pdb("junk.pdb")
    import os
    os.remove('junk.pdb')
    show_mdtraj(traj)

    return traj
Example #2
0
def _make_nglview(topology=None,positions=None):

    mdtraj_aux_topology = mdtraj.Topology.from_openmm(topology)
    traj_aux = mdtraj.Trajectory(positions._value, mdtraj_aux_topology)
    view = nglview.show_mdtraj(traj_aux)
    view.center()
    return view
Example #3
0
    def test_just_runs_recomputes_kdtree(self):
        plt.plot(self.pos[:, 0], self.pos[:, 1])
        iax = plt.gca()

        # Prepare a mouse event in the middle of the plot
        x, y = np.array(iax.get_window_extent()).mean(0)

        # Prepare event
        lineh = iax.axhline(iax.get_ybound()[0])
        setattr(lineh, 'whatisthis', 'lineh')
        dot = iax.plot(self.pos[0, 0], self.pos[0, 1])[0]
        setattr(dot, 'whatisthis', 'dot')
        CLAL = molpx._linkutils.ClickOnAxisListener(
            nglview.show_mdtraj(self.MD_trajectory), True, [lineh], iax,
            self.pos, [dot])
        # Resize the figure
        CLAL.ax.figure.set_size_inches(1, 1)
        # Send an event
        CLAL(
            MouseEvent(" ",
                       CLAL.ax.figure.canvas,
                       x,
                       y,
                       button=1,
                       key=None,
                       step=0,
                       dblclick=False,
                       guiEvent=None))
Example #4
0
def visualize_trajectory(wd="./simulation/"):
    xtcfile = path.join(wd, "traj_comp.xtc")
    wrappedxtcfile = path.join(wd, "wrapped.xtc")
    grofile = path.join(wd, "confout.gro")
    try:
        assert all([path.exists(f) for f in [xtcfile, grofile]])
    except:
        raise FileNotFoundError(f"traj_comp.xtc, and confout.gro were "
                                f"not found in {wd}")
    grompp_command = (
        f"echo 0 | gmx trjconv -f traj_comp.xtc -o wrapped.xtc -pbc whole")
    proc = Popen(grompp_command,
                 stdout=PIPE,
                 stderr=PIPE,
                 universal_newlines=True,
                 shell=True,
                 cwd=wd)

    out, err = proc.communicate()

    if "Fatal error" in err:
        print(err)
        raise RuntimeError("Gromacs TRJCONV command failed")

    import nglview as nv
    import mdtraj as md
    traj = md.load(wrappedxtcfile, top=grofile)
    ngl_widget = nv.show_mdtraj(traj)
    return ngl_widget
Example #5
0
 def view(self):
     """Return a nglview view for the actual positions."""
     view = nglview.show_mdtraj(self.mdtraj)
     if len(self.positions) < 10000:
         view.add_ball_and_stick('all')
     view.center(zoom=True)
     return view
Example #6
0
def generate_nglview_object(
        traj: md.Trajectory,
        tautomer_transformation: dict) -> nglview.NGLWidget:
    """
    Generates nglview object from topology and trajectory files.
    Parameters
    ----------
    top_file : file path to mdtraj readable topology file
    traj_file : file path to mdtraj readable trajectory file

    Returns
    -------
    view: nglview object
    """

    view = nglview.show_mdtraj(traj)
    if 'donor_hydrogen_idx' in tautomer_transformation:

        # Clear all representations to try new ones
        print('Hydrogen in GREEN  is real at lambda: 0.')
        print('Hydrogen in YELLOW is real at lambda: 1.')
        view.add_representation(
            'point',
            selection=[tautomer_transformation['donor_hydrogen_idx']],
            color='green',
            pointSize=3.5)
        view.add_representation(
            'point',
            selection=[tautomer_transformation['acceptor_hydrogen_idx']],
            color='yellow',
            pointSize=3.5)

    return view
Example #7
0
 def view(self, re_create: bool = False) -> nj.NGLWidget:
     if not hasattr(self, "_view") or not isinstance(
             self._view, nj.NGLWidget) or re_create:
         self._view = nj.show_mdtraj(self)
         self.view.clear_representations()
         self.view.add_representation("licorice", selection="all")
     return self._view
Example #8
0
def test_coordinates_meta():
    from mdtraj.testing import get_fn
    fn, tn = [get_fn('frame0.pdb'),] * 2
    trajs = [pt.load(fn, tn), md.load(fn, top=tn), pmd.load_file(tn, fn)]

    N_FRAMES = trajs[0].n_frames

    from MDAnalysis import Universe
    u = Universe(tn, fn)
    trajs.append(Universe(tn, fn))

    views = [nv.show_pytraj(trajs[0]), nv.show_mdtraj(trajs[1]), nv.show_parmed(trajs[2])]
    views.append(nv.show_mdanalysis(trajs[3]))

    for index, (view, traj) in enumerate(zip(views, trajs)):
        view.frame = 3
        
        nt.assert_equal(view.trajlist[0].n_frames, N_FRAMES)
        nt.assert_equal(len(view.trajlist[0].get_coordinates_dict().keys()), N_FRAMES)

        if index in [0, 1]:
            # pytraj, mdtraj
            if index == 0:
                aa_eq(view.coordinates[0], traj.xyz[3], decimal=4)
            else:
                aa_eq(view.coordinates[0],10*traj.xyz[3], decimal=4)
            view.coordinates = traj.xyz[2]
def visualize_system(traj: mdtraj.Trajectory) -> nj.NGLWidget:

    protein_resi = set([
        x.index + 1 for x in traj.top.residues
        if (x.name in three_letter_aa_lib)
    ])
    protein_resn = set([
        x.name[:3] for x in traj.top.residues
        if (x.name in three_letter_aa_lib)
    ])

    water_resi = set(
        [x.index + 1 for x in traj.top.residues if (x.name in solvents)])
    ions_resn = set([x.name for x in traj.top.residues if (x.name in ions)])

    if len(protein_resi) > 0 or len(water_resi) > 0 or len(ions_resn) > 0:
        representation = [
            {
                "type": "cartoon",
                "params": {
                    "sele": " ".join(map(str, protein_resi)),
                    "color": "residueindex"
                }
            },
        ]
        view = nj.show_mdtraj(traj, representations=representation)

    else:
        view = nj.show_mdtraj(traj)

    if len(protein_resn) > 0:
        view.add_representation("cartoon",
                                selection=" ".join(map(str, protein_resn)),
                                color="residueindex")

        if len(protein_resn) < 16:
            view.add_representation("hyperball",
                                    selection=" ".join(map(str, protein_resn)))
    if len(water_resi) > 0 and traj.n_frames < 300:
        view.add_representation("line",
                                selection=" ".join(map(str, water_resi)))
    if len(ions_resn) > 0:
        view.add_representation("hyperball",
                                selection=" ".join(map(str, ions_resn)),
                                radius=3,
                                color="green")
    return view
Example #10
0
def make_view(topology, positions):

    if type(positions) == list:
        positions = np.array([tmp_pos._value
                              for tmp_pos in positions]) * positions[0].unit

    topology_mdtraj = md.Topology.from_openmm(topology)
    positions_mdtraj = positions._value
    aux_traj = md.Trajectory(positions_mdtraj, topology_mdtraj)

    return nglview.show_mdtraj(aux_traj)
Example #11
0
def _initialize_nglwidget_if_safe(geom, mock=True):
    try:
        return _nglview.show_mdtraj(geom)
    except:
        if mock:
            print(
                "molPX has to be used inside a notebook, not from terminal. A mock nglwidget is being returned."
                "Ignore this message if testing, "
                "otherwise refer to molPX documentation")
            return _mock_nglwidget(geom)
        else:
            raise Exception(
                "molPX has to be used inside a notebook, not from terminal")
Example #12
0
 def test_feature_color_list(self):
     plt.figure()
     iwd = nglview.show_mdtraj(self.MD_trajectories[0])
     visualize.feature(self.feat.active_features[0],
                       iwd,
                       idxs=[0, 1],
                       color_list=['blue'])
     try:
         visualize.feature(self.feat.active_features[0],
                           iwd,
                           idxs=[0, 1],
                           color_list='blue')
     except TypeError:
         pass
Example #13
0
def animate(
    frames,
    gui=False,
    delete=True,
):
    """
    Creates nglview widget for given list of molecule files (frames).
    """
    T = mdtraj.load(frames, top=frames[0])
    view = nglview.show_mdtraj(T, gui=gui)
    view.add_ball_and_stick()
    if delete:
        for frame in frames:
            os.remove(frame)
    return view
Example #14
0
    def model_viewer(self, model_number = 0):
        """
        Quick viewer for visually inspecting docking contacts output. 
        Takes aggregate_contacts output from contacts_iterator and plots contacts (in red) 
        onto receptor-ligand docking solution (blue). 
        """

        pdb = md.load(self.path  + self.new_path + "model%s.pdb" % (model_number))

        view_single_solution = nv.show_mdtraj(pdb)
        view_single_solution.add_cartoon(selection ="protein", color = "blue")
        view_single_solution.add_ball_and_stick(selection = self.aggregate_contacts[model_number], color = "red")
        
        print("Single models ready for viewing...")

        return view_single_solution
Example #15
0
def to_nglview_NGLWidget(item, atom_indices='all', structure_indices='all', check=True):

    if check:

        digest_item(item, 'mdtraj.Trajectory')
        atom_indices = digest_atom_indices(atom_indices)
        structure_indices = digest_structure_indices(structure_indices)

    from . import extract
    from nglview import show_mdtraj as show_mdtraj

    tmp_item = extract(item, atom_indices=atom_indices, structure_indices=structure_indices,
            copy_if_all=False, check=False)
    tmp_item = show_mdtraj(tmp_item)

    return tmp_item
Example #16
0
    def visualize(self, show_ports=False):
        """Visualize the Compound using nglview. """
        if run_from_ipython():
            structure = self.to_trajectory(show_ports)
            return nglview.show_mdtraj(structure)
        else:
            try:
                """Visualize the Compound using imolecule. """
                import imolecule
                json_mol = self._to_json(show_ports)
                return imolecule.draw(json_mol, format='json', shader='lambert',
                                      drawing_type='ball and stick', camera_type='perspective',
                                      element_properties=None)

            except ImportError:
                raise RuntimeError('Visualization is only supported in Jupyter '
                                   'Notebooks.')
Example #17
0
    def setUpClass(self):
        self.MD_trajectory_files = glob(
            molpx._molpxdir(
                join='notebooks/data/c-alpha_centered.stride.1000*xtc'))
        self.MD_topology_file = molpx._molpxdir(
            join='notebooks/data/bpti-c-alpha_centered.pdb')
        self.MD_topology = md.load(self.MD_topology_file).top
        self.MD_trajectories = [
            md.load(ff, top=self.MD_topology_file)
            for ff in self.MD_trajectory_files
        ]

        self.n_sample = 20
        self.pos = np.zeros((self.n_sample, 2))
        self.pos[:, 0] = np.linspace(0, 1, self.n_sample)
        self.pos[:, 1] = np.random.randn(self.n_sample)
        self.geom = self.MD_trajectories[0][:20]
        self.ngl_wdg = nglview.show_mdtraj(self.geom)
Example #18
0
def test_coordinates_meta():
    from mdtraj.testing import get_fn
    fn, tn = [get_fn('frame0.pdb'),] * 2
    trajs = [pt.load(fn, tn), md.load(fn, top=tn), pmd.load_file(tn, fn)]

    N_FRAMES = trajs[0].n_frames

    from MDAnalysis import Universe
    u = Universe(tn, fn)
    trajs.append(Universe(tn, fn))

    views = [nv.show_pytraj(trajs[0]), nv.show_mdtraj(trajs[1]), nv.show_parmed(trajs[2])]
    views.append(nv.show_mdanalysis(trajs[3]))

    for index, (view, traj) in enumerate(zip(views, trajs)):
        view.frame = 3
        
        nt.assert_equal(view._trajlist[0].n_frames, N_FRAMES)
def test_coordinates_meta():
    from mdtraj.testing import get_fn
    fn, tn = [get_fn('frame0.pdb'),] * 2
    trajs = [pt.load(fn, tn), md.load(fn, top=tn), pmd.load_file(tn, fn)]

    N_FRAMES = trajs[0].n_frames

    from MDAnalysis import Universe
    u = Universe(tn, fn)
    trajs.append(Universe(tn, fn))

    views = [nv.show_pytraj(trajs[0]), nv.show_mdtraj(trajs[1]), nv.show_parmed(trajs[2])]
    views.append(nv.show_mdanalysis(trajs[3]))

    for index, (view, traj) in enumerate(zip(views, trajs)):
        view.frame = 3
        
        nt.assert_equal(view._trajlist[0].n_frames, N_FRAMES)
Example #20
0
def generate_nglview_object(
    traj: md.Trajectory,
    radius: int = 0.0,
    donor_hydrogen_idx: int = -1,
    acceptor_hydrogen_idx: int = -1,
    mark_residues=[],
) -> nglview.NGLWidget:
    """
    Generates nglview object from a trajectory object. Generated with md.Trajectory(traj, top).
    Parameters
    ----------
    traj : md.Trajectory
    donor_hydrogen_idx : int
    acceptor_hydrogen_idx : int

    Returns
    -------
    view: nglview object
    """

    view = nglview.show_mdtraj(traj)
    view.add_representation(
        repr_type="ball+stick", selection="water", opacity=0.4, color="blue"
    )
    if radius > 0.0:
        view.shape.add_sphere(
            [radius / 2, radius / 2, radius / 2], [0, 0, 1], (radius) / 2
        )
        view.update_representation(component=1, repr_index=0, opacity=0.2)

    if donor_hydrogen_idx != -1 and acceptor_hydrogen_idx != -1:

        # Clear all representations to try new ones
        print("Hydrogen in GREEN  is real at lambda: 0.")
        print("Hydrogen in YELLOW is real at lambda: 1.")
        view.add_representation(
            "point", selection=[donor_hydrogen_idx], color="green", pointSize=3.5
        )
        view.add_representation(
            "point", selection=[acceptor_hydrogen_idx], color="yellow", pointSize=3.5
        )
    return view
Example #21
0
def show_mdtraj(fp, stride=None, atom_indices=None, top=None, **kwargs):
    """
    Return a trajectory view.

    Parameters
    ----------
    fp : filename or list of filenames
    stride : int, optional
        Read every stride-th frame
    atom_indices : array, optional
        Read only a subset of the atoms coordinates from the file
    top : {str, Trajectory, Topology}
    kwargs : dict
        Molecular representation of selections, e.g. protein='cartoon'

    Returns
    -------
    View object

    """
    load_args = dict(stride=stride, atom_indices=atom_indices)
    topography = None
    topology = None
    if isinstance(top, yank.Topography):
        topography = top
        topology = top.topology
    if isinstance(top, mm.app.Topology):
        topology = mdtraj.Topology.from_openmm(top)
    if isinstance(top, mdtraj.Topology):
        topology = top
    if topology:
        load_args['top'] = topology

    if isinstance(fp, mdtraj.Trajectory):
        traj = fp
    else:
        traj = mdtraj.load(fp, **load_args)
    view = nglview.show_mdtraj(traj)
    top = topography or topology
    setup_view(view, top=top, **kwargs)  # TODO: fix
    return view
Example #22
0
def plot_frame(xp, top):
    """Create an MDTraj Trajectory object and return a nglview view.

    Parameters
    ----------
    xp : array-like
    top : topology

    Return
    ------
    nglview view object

    """

    mdtop = mdtraj.Topology.from_openmm(top)
    traj = mdtraj.Trajectory(xp / unit.nanometers, mdtop)
    view = nglview.show_mdtraj(traj)
    if len(xp) < 10000:
        view.add_ball_and_stick('all')
    view.center(zoom=True)
    return view
Example #23
0
    def __init__(self, traj, figure, *args, **kwargs):
        super().__init__(*args, **kwargs)

        view = nv.show_mdtraj(traj, **kwargs)

        self.traj = traj
        self.view = view
        self.figure = figure
        self.children = [figure, view]

        link((self, 'frame'), (self.view, 'frame'))

        self.view._remote_call("setSize",
                               target='Widget',
                               args=['100%', '100%'])

        self.view.layout = w.Layout(max_width="1000px")
        self.figure.layout = w.Layout()
        self.layout = w.Layout(display='flex',
                               flex_flow='row wrap',
                               align_items='flex-start')
Example #24
0
def _nglwidget_wrapper(geom, ngl_wdg=None, n_small=10):
    r""" Wrapper to nlgivew.show_geom's method that allows for some other automatic choice of
    representation

    Parameters
    ----------

    geom : :obj:`mdtraj.Trajectory` object or str with a filename to anything that :obj:`mdtraj` can read

    ngl_wdg : an already instantiated widget to add the geom, default is None

    n_small : if the geometry has less than n_small residues, force a "ball and stick" represenation


    :return: :nglview.widget object
    """

    if isinstance(geom, str):
        geom = _md.load(geom)

    if ngl_wdg is None:
        if geom is None:
            ngl_wdg = _nglview.NGLWidget()
        else:
            ngl_wdg = _nglview.show_mdtraj(geom)
    else:
        ngl_wdg.add_trajectory(geom)

    # Let' some customization take place
    ## Do we need a ball+stick representation?
    if geom is not None:
        if geom.top.n_residues < n_small:
            for ic in range(len(ngl_wdg._ngl_component_ids)):
                # TODO FIND OUT WHY THIS FAILS FOR THE LAST REPRESENTATION
                #print("removing reps for component",ic)
                ngl_wdg.remove_cartoon(component=ic)
                ngl_wdg.clear_representations(component=ic)
                ngl_wdg.add_ball_and_stick(component=ic)

    return ngl_wdg
Example #25
0
    def setUpClass(self):
        self.MD_trajectory_files = glob(
            molpx._molpxdir(
                join='notebooks/data/c-alpha_centered.stride.1000*xtc'))
        self.MD_topology_file = molpx._molpxdir(
            join='notebooks/data/bpti-c-alpha_centered.pdb')
        self.MD_topology = md.load(self.MD_topology_file).top
        self.MD_trajectories = [
            md.load(ff, top=self.MD_topology_file)
            for ff in self.MD_trajectory_files
        ]
        self.MD_trajectory = self.MD_trajectories[0]

        self.pos = np.random.rand(self.MD_trajectory.n_frames, 2)
        plt.plot(self.pos[:, 0], self.pos[:, 1])
        iax = plt.gca()
        # Prepare event
        self.lineh = iax.axhline(iax.get_ybound()[0])
        setattr(self.lineh, 'whatisthis', 'lineh')
        self.dot = iax.plot(self.pos[0, 0], self.pos[0, 1])[0]
        setattr(self.dot, 'whatisthis', 'dot')
        self.ngl_wdg = nglview.show_mdtraj(self.MD_trajectory)
Example #26
0
def display(systems, topology=None):
    """
    Produce an ngl wiget for a molecular system.
    
    Args:
        system (object): An mdtraj.Trajectory or something that can be made into one
        
    Returns:
        ngl wiget for the system.
    """
    import nglview
    import mdtraj as mdt

    bigsys = None
    if not isinstance(systems, list):
        lsys = [systems]
    else:
        lsys = systems

    for system in lsys:
        if not isinstance(system, mdt.Trajectory):
            if topology is None:
                sys = mdt.load(system.as_file())
            else:
                sys = mdt.load(system.as_file(), top=topology.as_file())
        else:
            sys = system

        if bigsys is None:
            bigsys = sys
        else:
            bigsys = bigsys + sys

    print(len(bigsys))
    view = nglview.show_mdtraj(bigsys)
    view.add_representation('line', selection='water')
    view.add_representation('licorice', selection='protein')
    return view
def test_show_mdtraj():
    import mdtraj as md
    from mdtraj.testing import get_fn
    fn = nv.datafiles.PDB
    traj = md.load(fn)
    view = nv.show_mdtraj(traj)
Example #28
0
def render_traj(topology, positions):
    traj = Trajectory(positions / unit.nanometers,
                      Topology.from_openmm(topology))
    return (show_mdtraj(traj).add_ball_and_stick('all').center_view(zoom=True))
Example #29
0
def test_show_mdtraj():
    import mdtraj as md
    traj = md.load(nv.datafiles.PDB)
    view = nv.show_mdtraj(traj)
Example #30
0
    def heatmap(self, plot_receptor = True, plot_ligand = False):
        """
        Constructs a heatmap of contact points onto receptor and ligand structures.
        Requires input from atom_contacts_parser. Color cutoffs are currently hard-coded
        for this particular data set, but can be easily modified. 
        """
        pdb = md.load(self.path + self.new_path + "model0.pdb")

        rec = []

        for i in range(len(self.receptor_chains)):
            c = [atom.index for atom in pdb.topology.chain(self.receptor_chains[i]).atoms]
            rec.append(c)

        rec = np.array(rec)
        rec = np.hstack(rec).tolist()
        rec_structure = md.load(self.path + self.new_path + "model0.pdb", atom_indices=rec)

        lig = []

        for i in range(len(self.ligand_chains)):
            c = [atom.index for atom in pdb.topology.chain(self.ligand_chains[i]).atoms]
            lig.append(c)

        lig = np.array(lig)
        lig = np.hstack(lig).tolist()
        lig_structure = md.load(self.path + self.new_path + "model0.pdb", atom_indices=lig)

        if plot_receptor == True:

            heatmap_viewer = nv.show_mdtraj(rec_structure)
            heatmap_viewer.clear()
            heatmap_viewer.add_ball_and_stick(selection ="residue", color = "blue")

            low = []
            med = []
            hi = []

            for i in range(len(self.receptor_atoms)):
                if self.receptor_atom_counts[i] > 1 and self.receptor_atom_counts[i] < 6:
                    low.append(self.receptor_atoms[i])
                elif self.receptor_atom_counts[i] > 5 and self.receptor_atom_counts[i] < 11:
                    med.append(self.receptor_atoms[i])
                else:
                    hi.append(self.receptor_atoms[i])

            heatmap_viewer.add_ball_and_stick(selection = low, color = "yellow")
            heatmap_viewer.add_ball_and_stick(selection = med, color = "orange")
            heatmap_viewer.add_ball_and_stick(selection = hi, color = "red")

        if plot_ligand == True:

            heatmap_viewer = nv.show_mdtraj(lig_structure)
            heatmap_viewer.clear()
            heatmap_viewer.add_ball_and_stick(selection ="residue", color = "blue")

            l = []
            m = []
            h = []

            for i in range(len(self.actual_ligand_atoms)):
                if self.ligand_atom_counts[i] > 6 and self.ligand_atom_counts[i] < 26:
                    l.append(self.actual_ligand_atoms[i])
                elif self.ligand_atom_counts[i] > 25 and self.ligand_atom_counts[i] < 51:
                    m.append(self.actual_ligand_atoms[i])
                else:
                    h.append(self.actual_ligand_atoms[i])

            heatmap_viewer.add_ball_and_stick(selection = l, color = "yellow")
            heatmap_viewer.add_ball_and_stick(selection = m, color = "orange")
            heatmap_viewer.add_ball_and_stick(selection = h, color = "red")
            
        print("Heatmaps constructed...done")

        return heatmap_viewer
Example #31
0
def display_traj(system, traj):
    from nglview import show_mdtraj

    return show_mdtraj(to_mdtraj(system, traj))
Example #32
0
def test_show_mdtraj():
    import mdtraj as md
    from mdtraj.testing import get_fn
    fn = nv.datafiles.PDB 
    traj = md.load(fn)
    view = nv.show_mdtraj(traj)
Example #33
0
 def test_feature(self):
     plt.figure()
     iwd = nglview.show_mdtraj(self.MD_trajectories[0])
     visualize.feature(self.feat.active_features[0], iwd)
Example #34
0
 def test_just_runs(self):
     self.just_runs(nglview.show_mdtraj(self.MD_trajectory))