def test_gist():
    traj = pt.iterload(tz2_ortho_trajin, tz2_ortho_top, frame_slice=(0, 10))
    traj.autoimage('origin')

    command = "doorder doeij refdens 0.033422885325 gridcntr 1.44 0.67 0.29 \
                 griddim 10 12 10 gridspacn 2.0"

    data = pt.all_actions.gist(traj,
                               do_order=True,
                               do_eij=True,
                               reference_density=0.033422885325,
                               grid_center=(1.44, 0.67, 0.29),
                               grid_dim=(10, 12, 10),
                               grid_spacing=2.0,
                               dtype='cpptraj_dataset')

    state_command = """
    parm {}
    trajin {}
    autoimage origin
    gist {}
    """.format(tz2_ortho_top, tz2_ortho_trajin, command)
    state = pt.load_cpptraj_state(state_command)
    with capture_stdout() as (out, _):
        state.run()

    data_dict = data.to_dict()
    data_state_dict = state.data[1:].to_dict()

    for key, state_key in zip(sorted(data_dict.keys()),
                              sorted(data_state_dict.keys())):
        aa_eq(data_dict[key], data_state_dict[state_key])
 def test_crank(self):
     traj = pt.iterload(fn('tz2.nc'), fn('tz2.parm7'))
     dihedrals = pt.dihedral(
         traj, [':1@C :2@N :2@CA :2@C', ':2@C :3@N :3@CA :3@C'])
     state = pt.load_cpptraj_state(cm)
     with capture_stdout() as (out, _):
         state.run()
     data = pt.crank(dihedrals[0], dihedrals[1], mode='angle')
     assert out.read() == data
Exemple #3
0
    def test_rotdif(self):
        traj = pt.load(trajin, parm)
        ref = pt.load(reference, parm)

        mat = pt.rotation_matrix(traj, ref=ref, mask='@CA,C,N,O')
        data = pt.all_actions.rotdif(mat, short_cm)
        state = pt.load_cpptraj_state(cm)
        with capture_stdout() as (out, _):
            state.run()

        assert data == out.read()
Exemple #4
0
def test_cluster_hieragglo():
    command = """
    parm {}
    trajin {}
    createcrd crd1
    cluster crdset crd1 C0 !@H hieragglo epsilon 0.8 averagelinkage
    """.format(tz2_top, tz2_trajin)

    with tempfolder():
        state = pt.load_cpptraj_state(command)
        with capture_stdout() as (cpp_out, _):
            state.run()
        traj = pt.iterload(tz2_trajin, tz2_top)
        data = pt.cluster.hieragglo(traj,
                                    mask='!@H=',
                                    options='epsilon 0.8 averagelinkage')
        aa_eq(state.data[-2], data.cluster_index)
Exemple #5
0
def test_cluster_dbscan():
    command = """
    parm {}
    trajin {}
    createcrd crd1
    cluster crdset crd1 C0 @CA dbscan epsilon 1.7 minpoints 5
    """.format(tz2_top, tz2_trajin)

    with tempfolder():
        state = pt.load_cpptraj_state(command)
        with capture_stdout() as (out, _):
            state.run()
        traj = pt.iterload(tz2_trajin, tz2_top)
        data = pt.cluster.dbscan(traj,
                                 mask='@CA',
                                 options='epsilon 1.7 minpoints 5')
        aa_eq(state.data[-2], data.cluster_index)
Exemple #6
0
def _cluster(traj,
             algorithm,
             mask="",
             frame_indices=None,
             dtype='dataset',
             top=None,
             options=''):
    """clustering. Limited support.

    Parameters
    ----------
    traj : Trajectory-like or any iterable that produces Frame
    mask : str
        atom mask
    dtype : str
        return data type
    top : Topology, optional
    options: str
        more cpptraj option

    Notes
    -----
    Call `pytraj._verbose()` to see more output. Turn it off by `pytraj._verbose(False)`


    cpptraj manual::

        Algorithms:
          [hieragglo [epsilon <e>] [clusters <n>] [linkage|averagelinkage|complete]
            [epsilonplot <file>]]
          [dbscan minpoints <n> epsilon <e> [sievetoframe] [kdist <k> [kfile <prefix>]]]
          [dpeaks epsilon <e> [noise] [dvdfile <density_vs_dist_file>]
            [choosepoints {manual | auto}]
            [distancecut <distcut>] [densitycut <densitycut>]
            [runavg <runavg_file>] [deltafile <file>] [gauss]]
          [kmeans clusters <n> [randompoint [kseed <seed>]] [maxit <iterations>]
          [{readtxt|readinfo} infofile <file>]
        Distance metric options: {rms | srmsd | dme | data}
          { [[rms | srmsd] [<mask>] [mass] [nofit]] | [dme [<mask>]] |
             [data <dset0>[,<dset1>,...]] }
          [sieve <#> [random [sieveseed <#>]]] [loadpairdist] [savepairdist] [pairdist <name>]
          [pairwisecache {mem | none}]
        Output options:
          [out <cnumvtime>] [gracecolor] [summary <summaryfile>] [info <infofile>]
          [summarysplit <splitfile>] [splitframe <comma-separated frame list>]
          [clustersvtime <filename> cvtwindow <window size>]
          [cpopvtime <file> [normpop | normframe]] [lifetime]
          [sil <silhouette file prefix>]
        Coordinate output options:
          [ clusterout <trajfileprefix> [clusterfmt <trajformat>] ]
          [ singlerepout <trajfilename> [singlerepfmt <trajformat>] ]
          [ repout <repprefix> [repfmt <repfmt>] [repframe] ]
          [ avgout <avgprefix> [avgfmt <avgfmt>] ]
        Experimental options:
          [[drawgraph | drawgraph3d] [draw_tol <tolerance>] [draw_maxit <iterations]]
        Cluster structures based on coordinates (RMSD/DME) or given data set(s).
        <crd set> can be created with the 'createcrd' command.
    """
    # Note: do not use super_dispatch here. We use get_iterator_from_dslist

    ana = c_analysis.Analysis_Clustering()
    # need to creat `dslist` here so that every time `do_clustering` is called,
    # we will get a fresh one (or will get segfault)
    crdname = 'DEFAULT_NAME'
    dslist, _top, mask2 = get_iterator_from_dslist(traj,
                                                   mask,
                                                   frame_indices,
                                                   top,
                                                   crdname=crdname)

    if 'summary' not in options.split():
        options += ' summary'

    # do not output cluster info to STDOUT
    command = ' '.join(
        (algorithm, mask2, "crdset {0}".format(crdname), options))

    with capture_stdout() as (out, _):
        ana(command, dslist)

    # remove frames in dslist to save memory
    dslist.remove_set(dslist[crdname])
    return ClusteringDataset(
        (get_data_from_dtype(dslist[:1], dtype='ndarray'), out.read()))