mdkits 0.2.1__py3-none-any.whl → 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mdkits might be problematic. Click here for more details.
- mdkits/dft_cli/pdos.py +1 -0
- mdkits/md_cli/angle.py +1 -1
- mdkits/md_cli/density.py +3 -2
- mdkits/md_cli/dipole.py +5 -1
- mdkits/md_cli/hb_distribution.py +6 -5
- mdkits/md_cli/vac.py +5 -7
- mdkits/util/numpy_geo.py +2 -2
- {mdkits-0.2.1.dist-info → mdkits-1.0.0.dist-info}/METADATA +13 -2
- {mdkits-0.2.1.dist-info → mdkits-1.0.0.dist-info}/RECORD +12 -12
- {mdkits-0.2.1.dist-info → mdkits-1.0.0.dist-info}/LICENSE +0 -0
- {mdkits-0.2.1.dist-info → mdkits-1.0.0.dist-info}/WHEEL +0 -0
- {mdkits-0.2.1.dist-info → mdkits-1.0.0.dist-info}/entry_points.txt +0 -0
mdkits/dft_cli/pdos.py
CHANGED
|
@@ -12,6 +12,7 @@ from mdkits.util import os_operation
|
|
|
12
12
|
@click.option('-t', '--type', type=str, default='total', show_default=True)
|
|
13
13
|
@click.option('-c', '--clos', type=tuple)
|
|
14
14
|
def main(filename, type, clos):
|
|
15
|
+
"""analysis cp2k pdos file"""
|
|
15
16
|
if type == 'total':
|
|
16
17
|
dos_obj = Cp2kPdos(filename[0])
|
|
17
18
|
dos, ener = dos_obj.get_raw_dos(dos_type=type)
|
mdkits/md_cli/angle.py
CHANGED
|
@@ -63,7 +63,7 @@ class Angle_distribution(AnalysisBase):
|
|
|
63
63
|
def _single_frame(self):
|
|
64
64
|
surface = numpy_geo.find_surface(self.surface_group.positions[:, 2])
|
|
65
65
|
|
|
66
|
-
if
|
|
66
|
+
if surface[1] == 0:
|
|
67
67
|
o_group = self.atomgroup.select_atoms(f"name O and prop z < {surface[0]+self.water_height}", updating=True)
|
|
68
68
|
else:
|
|
69
69
|
o_group = self.atomgroup.select_atoms(f"name O and (prop z < {surface[0]+self.water_height} or prop z > {surface[1]-self.water_height})", updating=True)
|
mdkits/md_cli/density.py
CHANGED
|
@@ -82,8 +82,7 @@ class Density_distribution(AnalysisBase):
|
|
|
82
82
|
if self.surface_group:
|
|
83
83
|
surface = numpy_geo.find_surface(self.surface_group.positions[:, 2])
|
|
84
84
|
self.surface_pos[0] += surface[0]
|
|
85
|
-
|
|
86
|
-
self.surface_pos[1] += surface[1]
|
|
85
|
+
self.surface_pos[1] += surface[1]
|
|
87
86
|
|
|
88
87
|
self.frame_count += 1
|
|
89
88
|
|
|
@@ -102,6 +101,8 @@ class Density_distribution(AnalysisBase):
|
|
|
102
101
|
lower_z = self.surface_pos[0] / self.frame_count
|
|
103
102
|
if self.surface_pos[1] == 0:
|
|
104
103
|
upper_z = np.inf
|
|
104
|
+
else:
|
|
105
|
+
upper_z = self.surface_pos[1] / self.frame_count
|
|
105
106
|
|
|
106
107
|
mask = (bins_z >= lower_z) & (bins_z <= upper_z)
|
|
107
108
|
filtered_bins_z = bins_z[mask] - lower_z
|
mdkits/md_cli/dipole.py
CHANGED
|
@@ -89,7 +89,11 @@ class Dipole_distribution(AnalysisBase):
|
|
|
89
89
|
bins_z = np.arange(len(average_dipole)) * self.bin_size
|
|
90
90
|
|
|
91
91
|
if self.surface:
|
|
92
|
-
lower_z
|
|
92
|
+
lower_z = self.surface_pos[0] / self.frame_count
|
|
93
|
+
if self.surface_pos[1] == 0:
|
|
94
|
+
upper_z = np.inf
|
|
95
|
+
else:
|
|
96
|
+
upper_z = self.surface_pos[1] / self.frame_count
|
|
93
97
|
|
|
94
98
|
mask = (bins_z >= lower_z) & (bins_z <= upper_z)
|
|
95
99
|
filtered_bins_z = bins_z[mask] - lower_z
|
mdkits/md_cli/hb_distribution.py
CHANGED
|
@@ -123,8 +123,7 @@ class Hb_distribution(AnalysisBase):
|
|
|
123
123
|
if self.surface_group:
|
|
124
124
|
surface = numpy_geo.find_surface(self.surface_group.positions[:, 2])
|
|
125
125
|
self.surface_pos[0] += surface[0]
|
|
126
|
-
|
|
127
|
-
self.surface_pos[1] += surface[1]
|
|
126
|
+
self.surface_pos[1] += surface[1]
|
|
128
127
|
|
|
129
128
|
self.frame_count += 1
|
|
130
129
|
|
|
@@ -138,10 +137,12 @@ class Hb_distribution(AnalysisBase):
|
|
|
138
137
|
bins_z = np.arange(len(self.donor)) * self.bin_size
|
|
139
138
|
|
|
140
139
|
if self.surface:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
if surface[1] ==0:
|
|
140
|
+
lower_z = self.surface_pos[0] / self.frame_count
|
|
141
|
+
if self.surface_pos[1] == 0:
|
|
144
142
|
upper_z = np.inf
|
|
143
|
+
else:
|
|
144
|
+
upper_z = self.surface_pos[1] / self.frame_count
|
|
145
|
+
|
|
145
146
|
mask = (bins_z >= lower_z) & (bins_z <= upper_z)
|
|
146
147
|
filtered_bins_z = bins_z[mask] - lower_z
|
|
147
148
|
filtered_average_accepter = average_accepter[mask]
|
mdkits/md_cli/vac.py
CHANGED
|
@@ -33,17 +33,15 @@ class Velocity_AutoCorrelation(AnalysisBase):
|
|
|
33
33
|
self.cvv = np.array(self.cvv)
|
|
34
34
|
|
|
35
35
|
sf = self.cvv.shape[0]
|
|
36
|
-
|
|
36
|
+
fftraj = np.fft.rfft(self.cvv)
|
|
37
|
+
fdos = np.abs(fftraj)
|
|
37
38
|
|
|
38
|
-
faxis = np.fft.
|
|
39
|
-
pf = np.where(faxis>0)
|
|
40
|
-
faxis = faxis[pf]
|
|
41
|
-
f = f[pf]
|
|
39
|
+
faxis = np.fft.rfftfreq(sf, d=1/sf)
|
|
42
40
|
|
|
43
41
|
combine = np.column_stack((np.arange(len(self.cvv)), self.cvv))
|
|
44
42
|
|
|
45
43
|
np.savetxt('vac.dat', combine, fmt='%.5f', header="frame\tvac")
|
|
46
|
-
np.savetxt('
|
|
44
|
+
np.savetxt('freq.dat', np.column_stack((faxis, fdos)), fmt='%.5f', header="freq\tabundance")
|
|
47
45
|
|
|
48
46
|
|
|
49
47
|
@click.command(name="vac")
|
|
@@ -51,7 +49,7 @@ class Velocity_AutoCorrelation(AnalysisBase):
|
|
|
51
49
|
@click.option("--select", type=str, default="all", help="atom selection", show_default=True)
|
|
52
50
|
@click.option('-r', type=arg_type.FrameRange, help='range of frame to analysis')
|
|
53
51
|
def main(filename, select, r):
|
|
54
|
-
"""analysis velocity autocorrelation function"""
|
|
52
|
+
"""analysis velocity autocorrelation function and frequency"""
|
|
55
53
|
a = Velocity_AutoCorrelation(filename, select)
|
|
56
54
|
|
|
57
55
|
if r is not None:
|
mdkits/util/numpy_geo.py
CHANGED
|
@@ -112,7 +112,7 @@ def find_surface(surface_group:np.ndarray, layer_tolerance=0.05, surface_toleran
|
|
|
112
112
|
layer_mean.append(np.mean(current_layer))
|
|
113
113
|
|
|
114
114
|
if len(layer_mean) == 1:
|
|
115
|
-
return [layer_mean[0]]
|
|
115
|
+
return [layer_mean[0], 0]
|
|
116
116
|
|
|
117
117
|
diff = np.diff(layer_mean)
|
|
118
118
|
if np.any(diff > surface_tolerance):
|
|
@@ -120,5 +120,5 @@ def find_surface(surface_group:np.ndarray, layer_tolerance=0.05, surface_toleran
|
|
|
120
120
|
return (layer_mean[index], layer_mean[index + 1])
|
|
121
121
|
else:
|
|
122
122
|
if layer_mean[-1] > layer_mean[0]:
|
|
123
|
-
return [layer_mean[-1]]
|
|
123
|
+
return [layer_mean[-1], 0]
|
|
124
124
|
return (layer_mean[-1], layer_mean[0])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: mdkits
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: kits for md or dft
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: molecular dynamics,density functional theory
|
|
@@ -121,6 +121,13 @@ mdkits md wrap [FILENAME] --cell 10,10,10
|
|
|
121
121
|
```
|
|
122
122
|
默认的`[FILENAME]`为`*-pos-1.xyz`
|
|
123
123
|
|
|
124
|
+
### 振动态密度(VDOS)
|
|
125
|
+
`vac`用于分析轨迹的速度自相关函数, 同时计算速度自相关函数的傅里叶变换, 即振动动态密度(VDOS), 如分析体系中的VDOS:
|
|
126
|
+
```bash
|
|
127
|
+
mdkits md vac h2o-vel-1.xyz
|
|
128
|
+
```
|
|
129
|
+
默认的`[FILENAME]`为`*-vel-1.xyz`
|
|
130
|
+
|
|
124
131
|
## DFT 性质分析脚本
|
|
125
132
|
`dft`为DFT性质分析工具, 其中包含多个分析工具
|
|
126
133
|
### PDOS
|
|
@@ -235,7 +242,7 @@ mdkits build supercell Li3PO4.cif 2 2 2
|
|
|
235
242
|
```bash
|
|
236
243
|
mdkits extract frames.xyz -r 1000:2000 -o 1000-2000.xyz
|
|
237
244
|
```
|
|
238
|
-
或从`cp2k`的默认输出的轨迹文件`*-pos-1.xyz`文件中提取最后一帧输出为`
|
|
245
|
+
或从`cp2k`的默认输出的轨迹文件`*-pos-1.xyz`文件中提取最后一帧输出为`frames_-1.xyz`(`extract`的默认行为):
|
|
239
246
|
```bash
|
|
240
247
|
mdkits extract
|
|
241
248
|
```
|
|
@@ -243,6 +250,10 @@ mdkits extract
|
|
|
243
250
|
```bash
|
|
244
251
|
mdkits extract -cr ::50
|
|
245
252
|
```
|
|
253
|
+
提取部分元素的位置, 如提取`O`元素和`H`元素的位置:
|
|
254
|
+
```bash
|
|
255
|
+
mdkits extract --select "name O or name H"
|
|
256
|
+
```
|
|
246
257
|
|
|
247
258
|
### 结构文件转换
|
|
248
259
|
`convert`用于将结构文件从一种格式转换为另一种格式, 如将`structure.xyz`转换为`out.cif`(默认文件名为`out`), 对于不储存周期性边界条件的文件, 可以使用`--cell`选项指定`PBC`:
|
|
@@ -17,17 +17,17 @@ mdkits/config/__init__.py,sha256=ZSwmnPK02LxJLMgcYmNb-tIOk8fEuHf5jpqD3SDHWLg,103
|
|
|
17
17
|
mdkits/config/settings.yml,sha256=PY7u0PbFLuxSnd54H5tI9oMjUf-mzyADqSZtm99BwG0,71
|
|
18
18
|
mdkits/dft_cli/cube.py,sha256=G-QNup8W6J1-LCcEl1EHsV3nstd23byePDOcE_95t18,1176
|
|
19
19
|
mdkits/dft_cli/dft_cli.py,sha256=Ou9-e4uGhDJJk2Gdg7tcj6iKApkAJZFSbN1hr7SlCMc,281
|
|
20
|
-
mdkits/dft_cli/pdos.py,sha256=
|
|
21
|
-
mdkits/md_cli/angle.py,sha256=
|
|
22
|
-
mdkits/md_cli/density.py,sha256=
|
|
23
|
-
mdkits/md_cli/dipole.py,sha256=
|
|
24
|
-
mdkits/md_cli/hb_distribution.py,sha256=
|
|
20
|
+
mdkits/dft_cli/pdos.py,sha256=EjZ1oWJHHUocZAZe8dgJUu6bkLPVwgrKkggidF3yduE,1445
|
|
21
|
+
mdkits/md_cli/angle.py,sha256=dS3qMreC-vIrwa5LAaZQ9lRPYuwUAe14_8ZDkntujl0,5448
|
|
22
|
+
mdkits/md_cli/density.py,sha256=br8jq_qlkKwJr_wkdKGHCYbg16TmGPjasX5LI9E55yk,5312
|
|
23
|
+
mdkits/md_cli/dipole.py,sha256=Q2Bp42gB00Q1mxrHgmYbhkLT1w3uVNHMmjA_93TF-V8,5007
|
|
24
|
+
mdkits/md_cli/hb_distribution.py,sha256=aoB6Yk1a4agPLEravjkvJ3llNJAroZbSgQ8vNoNSex8,7930
|
|
25
25
|
mdkits/md_cli/md_cli.py,sha256=2vH04o_3d5kCJsn3qEq-iUPhebKJOrS-e7HJtyiZTiQ,571
|
|
26
26
|
mdkits/md_cli/monitor.py,sha256=JNEgz5RGbFn4x_E85pAiPUY1NVIyZ3b2vjpBk_d1dR8,4536
|
|
27
27
|
mdkits/md_cli/msd.py,sha256=v-9TPKBGHz6ce2PUwexrekVq_9eiutIOQYaw582yN30,965
|
|
28
28
|
mdkits/md_cli/rdf.py,sha256=p4HMMYZLfFRPnGx7YHQU6kZnMAfoL6vOyOVpZhfdBfM,1712
|
|
29
29
|
mdkits/md_cli/setting.py,sha256=mxMTYpm6DUjMt9hOKsJbBSKwCqzMilOR0bo1azSdJP0,846
|
|
30
|
-
mdkits/md_cli/vac.py,sha256=
|
|
30
|
+
mdkits/md_cli/vac.py,sha256=MJi_uftl0UUqhWvqDtcr14qtcRgYRd6X0VSg4J5MFN8,2133
|
|
31
31
|
mdkits/md_cli/wrap.py,sha256=YdUpvhRyKn7bYnIAVgP39qItPdrEoTeJl55TmbS7Qqk,1044
|
|
32
32
|
mdkits/mdkits.py,sha256=EiAt7dxGTaHuuj7bCNxgAqZbX0i3sldO0mBxOG-aMnY,595
|
|
33
33
|
mdkits/util/.fig_operation.py.swp,sha256=iZYqdYMj4UKS1rmbXv8Ve2FcVBcNljX7Y43-neMdPSk,12288
|
|
@@ -37,12 +37,12 @@ mdkits/util/cp2k_input_parsing.py,sha256=7NMVOYEGycarokLJlhLoWWilciM7sd8MWp5FVTF
|
|
|
37
37
|
mdkits/util/encapsulated_ase.py,sha256=uhqIhsALxzwJYuFrfOYGGC6U0QLm_dcZNridvfl_XGc,4339
|
|
38
38
|
mdkits/util/encapsulated_mda.py,sha256=m3i-XrcscMcM5V7JzLnor3JtAOfuDx3LLMl0tZt0n-w,2325
|
|
39
39
|
mdkits/util/fig_operation.py,sha256=FwffNUtXorMl6qE04FipgzcVljEQii7wrNJUCJMyY3E,1045
|
|
40
|
-
mdkits/util/numpy_geo.py,sha256=
|
|
40
|
+
mdkits/util/numpy_geo.py,sha256=B2QVADl1M8iixZrIOre2UUhHqvAeghvM8Q2woEQsH3Q,3880
|
|
41
41
|
mdkits/util/os_operation.py,sha256=ErN2ExjX9vZRfPe3ypsj4eyoQTEePqzlEX0Xm1N4lL4,980
|
|
42
42
|
mdkits/util/out_err.py,sha256=7vGDI7wVoJWe1S0BDbcq-UC2KAhblCzg-NAYZKBZ4lo,900
|
|
43
43
|
mdkits/util/structure_parsing.py,sha256=mRPMJeih3O-ST7HeETDvBEkfV-1psT-XgxyYgDadV0U,4152
|
|
44
|
-
mdkits-0.
|
|
45
|
-
mdkits-0.
|
|
46
|
-
mdkits-0.
|
|
47
|
-
mdkits-0.
|
|
48
|
-
mdkits-0.
|
|
44
|
+
mdkits-1.0.0.dist-info/entry_points.txt,sha256=xoWWZ_yL87S501AzCO2ZjpnVuYkElC6z-8J3tmuIGXQ,44
|
|
45
|
+
mdkits-1.0.0.dist-info/LICENSE,sha256=VLaqyB0r_H7y3hUntfpPWcE3OATTedHWI983htLftcQ,1081
|
|
46
|
+
mdkits-1.0.0.dist-info/METADATA,sha256=Z2GyGDkAg9qgs7DmgDwA2mcgkA6aXOZHAiHlIFwRcSs,11351
|
|
47
|
+
mdkits-1.0.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
|
48
|
+
mdkits-1.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|