4.2.7.1.3. 降维

4.2.7.1.3.1. 降维前端 MDAnalysis.analysis.encore.dimensionality_reduction.reduce_dimensionality

该模块定义了一个函数,作为各种降维算法的前端,对它们进行包装,以允许它们互换使用。

作者:

马泰奥·蒂贝蒂,Wter Boomsma,Tone Bengtsen

在 0.16.0 版本加入.

MDAnalysis.analysis.encore.dimensionality_reduction.reduce_dimensionality.reduce_dimensionality(ensembles, method=<MDAnalysis.analysis.encore.dimensionality_reduction.DimensionalityReductionMethod.StochasticProximityEmbeddingNative object>, select='name CA', distance_matrix=None, allow_collapsed_result=True, ncores=1, **kwargs)[源代码]

使用一种或多种降维方法,从一个或多个系综中降低帧中的维度。该函数可选地将预先计算的距离矩阵作为参数。注意,并不是所有的降维过程都可以直接作用于距离矩阵,因此对于特定的方法选择,可以忽略距离矩阵。

参数:
  • ensembles (MDAnalysis.Universe, or list or list of list thereof) -- 该函数接受单个宇宙对象、宇宙对象列表或宇宙对象列表。如果给出一个单一的宇宙,它只会作用于轨道上的构象。如果给出一份合奏列表,它将把它们合并在一起进行分析,跟踪每个构象所属的合奏。最后,如果传递一个集合列表,该函数将重复刚才描述的功能--合并外部循环中每个集合的集合。

  • method (MDAnalysis.analysis.encore.dimensionality_reduction.DimensionalityReductionMethod or list) -- 来自DimensionalityReductionMethod模块的DimensionalityReductionMethod类的单个实例或实例列表。将为每种方法运行单独的分析。请注意,可以通过添加相同降维类的不同实例来探索同一方法的不同参数。选项有随机邻近嵌入或主成分分析。

  • select (str, optional) -- MDAnalysis格式的ATOM选择字符串(默认为“名称CA”)

  • distance_matrix (encore.utils.TriangularMatrix, optional) -- 随机邻近嵌入的距离矩阵。如果未提供此参数,将动态计算RMSD距离矩阵(默认)。如果提供了多个距离矩阵,则将对每个距离矩阵进行分析。所提供的距离矩阵的数量应与所提供的系综的数量相匹配。

  • allow_collapsed_result (bool, optional) -- 是否应将包含一个值的列表的返回值折叠为该值(默认值=True)。

  • ncores (int, optional) -- 要使用的最大核心数(默认为1)。

返回:

  • 降维后的坐标数组列表(或可能是单个

  • coordinate array object if allow_collapsed_result is set to True)

示例

使用一个拓扑文件和两个轨迹将两个集合创建为宇宙对象。所使用的拓扑和轨迹文件是从MDAnalysis测试套件中获得的,用于蛋白质ADK的两种不同模拟。在这里,我们将两个集合减少到两个维度,并使用matplotlib:绘制结果

>>> from MDAnalysis import Universe
>>> import MDAnalysis.analysis.encore as encore
>>> from MDAnalysis.tests.datafiles import PSF, DCD, DCD2
>>> ens1 = Universe(PSF, DCD)
>>> ens2 = Universe(PSF, DCD2)
>>> coordinates, details = encore.reduce_dimensionality([ens1,ens2])
>>> plt.scatter(coordinates[0], coordinates[1],
                color=[["red", "blue"][m-1] for m
                in details["ensemble_membership"]])

请注意,我们如何从详细信息变量中提取有关哪个构象属于哪个系综的信息。

您可以通过明确指定以下方法来更改降维方法的参数:

>>> coordinates, details =
        encore.reduce_dimensionality([ens1,ens2],
             method=encore.StochasticProximityEmbeddingNative(dimension=3))

以下是使用主成分分析而不是默认降维方法的插图:

>>> coordinates, details =
        encore.reduce_dimensionality(
             [ens1,ens2],
             method=encore.PrincipalComponentAnalysis(dimension=2))

您还可以在一个调用中组合多个方法::

>>> coordinates, details =
        encore.reduce_dimensionality(
             [ens1,ens2],
             method=[encore.PrincipalComponentAnalysis(dimension=2),
                     encore.StochasticProximityEmbeddingNative(dimension=2)])

4.2.7.1.3.2. 降维前端 MDAnalysis.analysis.encore.clustering.DimensionalityReductionMethod

该模块定义用于接口到各种降维算法的类。其中一个已经在本地实现,并且将始终可用,而其他一些只有在安装了SCRICKIT-LEARN的情况下才可用

作者:

马泰奥·蒂贝蒂,Wter Boomsma,Tone Bengtsen

在 0.16.0 版本加入.

class MDAnalysis.analysis.encore.dimensionality_reduction.DimensionalityReductionMethod.DimensionalityReductionMethod[源代码]

任意降维方法的基类

class MDAnalysis.analysis.encore.dimensionality_reduction.DimensionalityReductionMethod.PrincipalComponentAnalysis(dimension=2, **kwargs)[源代码]

与在skLearning中实现的PCA降维方法的接口。

参数:

dimension (int) -- 构象空间将减少到的维度数(默认为3)。

class MDAnalysis.analysis.encore.dimensionality_reduction.DimensionalityReductionMethod.StochasticProximityEmbeddingNative(dimension=2, distance_cutoff=1.5, min_lam=0.1, max_lam=2.0, ncycle=100, nstep=10000)[源代码]

接口到本机实现的亲和性传播过程。

参数:
  • dimension (int) -- 构象空间将减少到的维度数(默认为3)。

  • min_lam (float, optional) -- 最终的波长学习速率(默认为0.1)。

  • max_lam (float, optional) -- 启动lambda学习率参数(默认为2.0)。

  • ncycle (int, optional) -- 每次运行的周期数(默认为100)。在每个周期结束时,lambda都会更新。

  • nstep (int, optional) -- 每个周期的步数(默认为10000)

4.2.7.1.3.3. 降维算法

以下降维算法始终是本机可用的:

Cython包装器,用于C语言实现的随机邻近嵌入降维算法。

作者:

马泰奥·蒂贝蒂,沃特·布姆斯玛

MDAnalysis.analysis.encore.dimensionality_reduction.stochasticproxembed.StochasticProximityEmbedding(s, double rco, int dim, double maxlam, double minlam, int ncycle, int nstep, int stressfreq)

随机邻近嵌入降维算法。本文描述了在此实现的算法:

Dmitrii N.Rassokhin,Dimitris K.Agrafiotis随机邻近嵌入分子图学与模型杂志的修正更新规则22(2003)133-140

这个类是一个C实现的Cython包装器(参见Spe.c)

参数:
  • s (encore.utils.TriangularMatrix object) -- 包含原始空间中每对元素的距离值的三角矩阵。

  • rco (float) -- 邻域距离截止点

  • dim (int) -- 嵌入空间的维度数

  • minlam (float) -- 最终学习参数

  • maxlam (float) -- 起始学习参数

  • ncycle (int) -- 周期数。每个周期由nStep步长组成。在每个周期结束时,更新学习参数lambda。

  • nstep (int) -- 每个周期的坐标更新步数

返回:

  • 空间 ( (Float,numpy.array) )--Float是获得的最终应力;数组是嵌入空间中元素的坐标

  • 压力频率 ( int )--计算并报告每个压力频率周期的应力值