4.7.2.1. 径向分布函数 MDAnalysis.analysis.rdf

This module contains two classes to calculate radial pair distribution functions (radial distribution functions or "RDF"). The RDF \(g_{ab}(r)\) between types of particles \(a\) and \(b\) is

\[G_{ab}(R)=(N_{a}N_{b})^{-1}\sum_{i=1}^{N_a}\sum_{j=1}^{N_b} \lAngel\Delta(|\mathbf{r}_i-\mathbf{r}_j|-r)\rang.\]

它被归一化,使得对于同质系统中的大间隔,RDF变为1。RDF有效地统计了 \(b\) 隔着一层壳的邻居们 \(r\) 大约在一个 \(a\) 粒子,并将其表示为密度。

径向累积分布函数为

\[G_{ab}(R)=\int_0^r\!dr‘4\pi r’^2 g_{ab}(r‘)\]

和平均数量的 \(b\) 半径内的颗粒 \(r\)

\[N_{ab}(R)=\rho G_{ab}(R)\]

(具有适当的密度 \(\rho\) )。后一函数可用于例如计算配位数,例如第一溶剂化壳层中的邻居数 \(N(r_1)\) 哪里 \(r_1\) 中第一个最小值的位置。 \(g(r)\)

我们提供了计算粒子密度的选项 \(b\) 在远处的一个贝壳里 \(r\) 大约在一个 \(a\) 粒子,这是

\[N_{ab}(R)=\rho g_{ab}(R)\]
class MDAnalysis.analysis.rdf.InterRDF(g1, g2, nbins=75, range=(0.0, 15.0), norm='rdf', exclusion_block=None, exclude_same=None, **kwargs)[源代码]

径向分布函数

InterRDF 是一种计算两组原子之间平均径向分布函数的工具。假设我们有两个原子组 ABA 包含原子 A1A2 ,以及 B 包含 B1B2 。vt.给出 ABInterRDF ,则输出将是以下RDF的平均值 A1B1A1B2A2B1A2B2 。一个典型的应用是计算溶剂本身或与另一种溶质的RDF。

这个 radial distribution function 是通过组织图中所有粒子之间的距离来计算的 g1g2 同时通过最小图像约定考虑周期性边界条件。

这个 exclusion_block 关键字可用于从计算中排除一组距离。

结果在属性中可用 results.rdfresults.count

参数:
  • g1 (AtomGroup) -- 第一个原子组

  • g2 (AtomGroup) -- 第二原子基团

  • nbins (int) -- 直方图中的条件数

  • range (tuple or list) -- RDF的大小

  • norm (str, {'rdf', 'density', 'none'}) -- 对于‘rdf’计算 \(g_{ab}(r)\) 。对于“密度”来说 single particle density \(n_{ab}(r)\) 是经过计算的。‘None’计算每个球壳中出现的粒子的数量。。。添加的版本::2.3.0

  • exclusion_block (tuple) -- 表示要从距离数组中排除的平铺的元组。

  • exclude_same (str) -- 将排除共享相同“残基”、“段”或“链”的原子对。这些是唯一有效的值。这是为了消除由于直接键合连接而在空间上相关的原子。

  • verbose (bool) -- 如果设置为,则显示计算的详细进度 True

results.bins

numpy.ndarray 在世界的中心 nbins 直方图箱。

在 2.0.0 版本加入.

类型:

numpy.ndarray

bins

的别名 results.bins 属性。

自 2.0.0 版本弃用: 该属性将在3.0.0中删除。使用 results.bins 取而代之的是。

类型:

numpy.ndarray

results.edges

numpy.ndarraynbins + 1 直方图箱的边缘。

在 2.0.0 版本加入.

类型:

numpy.ndarray

edges

的别名 results.edges 属性。

自 2.0.0 版本弃用: 该属性将在3.0.0中删除。使用 results.edges 取而代之的是。

类型:

numpy.ndarray

results.rdf

numpy.ndarrayradial distribution function 属性的值 results.bins

在 2.0.0 版本加入.

类型:

numpy.ndarray

rdf

的别名 results.rdf 属性。

自 2.0.0 版本弃用: 该属性将在3.0.0中删除。使用 results.rdf 取而代之的是。

类型:

numpy.ndarray

results.count

numpy.ndarray 表示所有对象的径向直方图,即原始计数 results.bins

在 2.0.0 版本加入.

类型:

numpy.ndarray

count

的别名 results.count 属性。

自 2.0.0 版本弃用: 该属性将在3.0.0中删除。使用 results.count 取而代之的是。

类型:

numpy.ndarray

示例

首先创建 InterRDF 对象,方法是提供两个原子组,然后使用 run() 方法:

rdf = InterRDF(ag1, ag2)
rdf.run()

结果可通过 results.binsresults.rdf 属性::

plt.plot(rdf.results.bins, rdf.results.rdf)

这个 exclusion_block 关键字允许屏蔽来自同一分子内的配对。例如,如果每个分子中每个原子有7个,则排除掩码 (7, 7) 可以使用。

在 0.13.0 版本加入.

在 1.0.0 版本发生变更: 支持 startstop ,以及 step 关键字已删除。相反,这些应该传递给 InterRDF.run()

在 2.0.0 版本发生变更: 将结果存储为属性 binsedgesrdfcountresults 的属性 AnalysisBase

class MDAnalysis.analysis.rdf.InterRDF_s(u, ags, nbins=75, range=(0.0, 15.0), norm='rdf', density=False, **kwargs)[源代码]

场地特定径向分布函数

计算场地特定的径向分布函数。它将原子基团对列表作为输入而不是两组原子, [[A, B], [C, D], ...] 。在相同的情况下 ABInterRDF_s ,则输出将是以下各个RDF的列表 A1B1A1B2A2B1A2B2 (类似地,对于 CD )。如果人们对配体在结合位置的溶剂化壳感兴趣,或者对蛋白质中特定残基的溶剂化感兴趣,则通常计算这些位点特定的径向分布函数。

参数:
  • u (Universe) -- 一个包含原子的宇宙 ags 。。已弃用::2.3.0此参数是多余的,将在MDAnalysis 3.0.0中删除。

  • ags (list) -- 一对情侣列表 AtomGroup 实例

  • nbins (int) -- 直方图中的条件数

  • range (tuple or list) -- RDF的大小

  • norm (str, {'rdf', 'density', 'none'}) -- 对于‘rdf’计算 \(g_{ab}(r)\) 。对于“密度”来说 single particle density \(n_{ab}(r)\) 是经过计算的。‘None’计算每个球壳中出现的粒子的数量。。。添加的版本::2.3.0

  • density (bool) --

    False :计算 \(g_{ab}(r)\)True :计算真值 single particle density \(n_{ab}(r)\)density 重写 norm 参数。

    在 1.0.1 版本加入: 此关键字从0.19.0开始可用,但未记录在案。此外,它还有相反的含义。从1.0.1开始,正式支持它,如文档所示。

    自 2.3.0 版本弃用: 而不是 density=True 使用 norm='density'

results.bins

numpy.ndarray 在世界的中心 nbins 直方图箱;所有单个站点特定的RDF都有相同的箱。

在 2.0.0 版本加入.

类型:

numpy.ndarray

bins

的别名 results.bins 属性。

自 2.0.0 版本弃用: 该属性将在3.0.0中删除。使用 results.bins 取而代之的是。

类型:

numpy.ndarray

results.edges

数组中的 nbins + 1 直方图箱的边缘;所有单个站点特定的RDF都有相同的箱。

在 2.0.0 版本加入.

类型:

numpy.ndarray

edges

的别名 results.edges 属性。

自 2.0.0 版本弃用: 该属性将在3.0.0中删除。使用 results.edges 取而代之的是。

类型:

numpy.ndarray

results.rdf

list 特定于站点的 radial distribution functions 如果 norm='rdf'density functions 对于 bins 如果 norm='density' 。该列表包含 len(ags) 参赛作品。的每个条目 i -第4对 [A, B] = ags[i] 在……里面 ags 是一种 numpy.ndarray 有形状的 (len(A), len(B)) 即一堆RDF。例如, results.rdf[i][0, 2] 是原子之间的RDF吗 A[0]B[2]

在 2.0.0 版本加入.

类型:

列表

rdf

的别名 results.rdf 属性。

自 2.0.0 版本弃用: 该属性将在3.0.0中删除。使用 results.rdf 取而代之的是。

类型:

列表

results.count

list 站点特定的径向直方图,即原始计数 results.bins 。数据的结构与 results.rdf 只是数组包含原始计数。

在 2.0.0 版本加入.

类型:

列表

count

的别名 results.count 属性。

自 2.0.0 版本弃用: 该属性将在3.0.0中删除。使用 results.count 取而代之的是。

类型:

列表

results.cdf

list 特定于站点的 cumulative counts ,为所有人 results.bins 。数据的结构与 results.rdf 除了数组包含累计计数之外。

此属性仅在以下情况下存在 get_cdf() 已经运行过了。

在 2.0.0 版本加入.

类型:

列表

cdf

的别名 results.cdf 属性。

自 2.0.0 版本弃用: 该属性将在3.0.0中删除。使用 results.cdf 取而代之的是。

类型:

列表

示例

首先创建 InterRDF_s 对象,通过提供一个语义层和一个原子组对列表,然后使用 run() 方法:

from MDAnalysisTests.datafiles import GRO_MEMPROT, XTC_MEMPROT
u = mda.Universe(GRO_MEMPROT, XTC_MEMPROT)

s1 = u.select_atoms('name ZND and resid 289')
s2 = u.select_atoms('(name OD1 or name OD2) and resid 51 and sphzone 5.0 (resid 289)')
s3 = u.select_atoms('name ZND and (resid 291 or resid 292)')
s4 = u.select_atoms('(name OD1 or name OD2) and sphzone 5.0 (resid 291)')
ags = [[s1, s2], [s3, s4]]

rdf = InterRDF_s(u, ags)
rdf.run()

结果可通过 results.binsresults.rdf 属性::

plt.plot(rdf.results.bins, rdf.results.rdf[0][0, 0])

(它绘制了第一个原子之间的RDF s1 其中的第一个原子 s2 )

要生成 累积分布函数 (CDF)在“半径内的粒子”意义下 \(r\) “,即, \(N_{{ab}}(r)\) ,请使用 get_cdf() 方法:

cdf = rdf.get_cdf()

结果可通过 results.cdf 属性::

plt.plot(rdf.results.bins, rdf.results.cdf[0][0, 0])

(它绘制了中第一个原子之间的CDF s1 其中的第一个原子 s2 )

在 0.19.0 版本加入.

在 1.0.0 版本发生变更: 支持 startstop ,以及 step 关键字已删除。相反,这些应该传递给 InterRDF_s.run()

在 2.0.0 版本发生变更: 将结果存储为属性 binsedgesrdfcountcdfresults 的属性 AnalysisBase

在 2.3.0 版本发生变更: 介绍 normexclusion_blocks 属性。

自 2.3.0 版本弃用: 而不是 density=True 使用 norm='density'

自 2.3.0 版本弃用: 这个 universe 参数是多余的。

get_cdf()[源代码]

计算所有站点的累计计数。

这是 cumulative count 在给定的半径内,即, \(N_{{ab}}(r)\)

返回结果并将其存储在属性中 results.cdf

返回:

cdf --结构与相同的数组列表 results.rdf

返回类型:

list