@@ -33,6 +33,104 @@ def tearDown(self) :
33
33
shutil .rmtree ('tmp.deepmd' )
34
34
35
35
36
+ class TestDeepmdTypeMap (unittest .TestCase ):
37
+ def tearDown (self ) :
38
+ if os .path .exists ('tmp.deepmd' ):
39
+ shutil .rmtree ('tmp.deepmd' )
40
+
41
+ def test_type_map (self ) :
42
+ system_1 = dpdata .LabeledSystem ('poscars/OUTCAR.h2o.md' ,
43
+ fmt = 'vasp/outcar' )
44
+ system_1 .to_deepmd_raw ('tmp.deepmd' )
45
+ with open (os .path .join ('tmp.deepmd' , 'type_map.raw' )) as fp :
46
+ tm = fp .read ().split ()
47
+ self .assertEqual (tm , ['O' , 'H' ])
48
+ self .assertEqual (system_1 ['atom_names' ], ['O' , 'H' ])
49
+ self .assertEqual (system_1 ['atom_types' ][0 ], 0 )
50
+ self .assertEqual (system_1 ['atom_types' ][1 ], 0 )
51
+ self .assertEqual (system_1 ['atom_types' ][2 ], 1 )
52
+ self .assertEqual (system_1 ['atom_types' ][3 ], 1 )
53
+ self .assertEqual (system_1 ['atom_types' ][4 ], 1 )
54
+ self .assertEqual (system_1 ['atom_types' ][5 ], 1 )
55
+
56
+ def test_type_map_load (self ) :
57
+ system_1 = dpdata .LabeledSystem ('poscars/OUTCAR.h2o.md' ,
58
+ fmt = 'vasp/outcar' )
59
+ system_1 .to_deepmd_raw ('tmp.deepmd' )
60
+ system_2 = dpdata .LabeledSystem ('tmp.deepmd' )
61
+ self .assertEqual (system_2 ['atom_names' ], ['O' , 'H' ])
62
+ self .assertEqual (system_2 ['atom_types' ][0 ], 0 )
63
+ self .assertEqual (system_2 ['atom_types' ][1 ], 0 )
64
+ self .assertEqual (system_2 ['atom_types' ][2 ], 1 )
65
+ self .assertEqual (system_2 ['atom_types' ][3 ], 1 )
66
+ self .assertEqual (system_2 ['atom_types' ][4 ], 1 )
67
+ self .assertEqual (system_2 ['atom_types' ][5 ], 1 )
68
+ self .assertEqual (system_2 ['atom_numbs' ][0 ], 2 )
69
+ self .assertEqual (system_2 ['atom_numbs' ][1 ], 4 )
70
+
71
+ def test_type_map_enforce (self ) :
72
+ system_1 = dpdata .LabeledSystem ('poscars/OUTCAR.h2o.md' ,
73
+ fmt = 'vasp/outcar' )
74
+ system_1 .to_deepmd_raw ('tmp.deepmd' )
75
+ system_2 = dpdata .LabeledSystem ('tmp.deepmd' , type_map = ['H' , 'O' ])
76
+ self .assertEqual (system_2 ['atom_names' ], ['H' , 'O' ])
77
+ self .assertEqual (system_2 ['atom_types' ][0 ], 1 )
78
+ self .assertEqual (system_2 ['atom_types' ][1 ], 1 )
79
+ self .assertEqual (system_2 ['atom_types' ][2 ], 0 )
80
+ self .assertEqual (system_2 ['atom_types' ][3 ], 0 )
81
+ self .assertEqual (system_2 ['atom_types' ][4 ], 0 )
82
+ self .assertEqual (system_2 ['atom_types' ][5 ], 0 )
83
+ self .assertEqual (system_2 ['atom_numbs' ][0 ], 4 )
84
+ self .assertEqual (system_2 ['atom_numbs' ][1 ], 2 )
85
+
86
+ def test_npy_type_map (self ) :
87
+ system_1 = dpdata .LabeledSystem ('poscars/OUTCAR.h2o.md' ,
88
+ fmt = 'vasp/outcar' )
89
+ system_1 .to_deepmd_npy ('tmp.deepmd' )
90
+ with open (os .path .join ('tmp.deepmd' , 'type_map.raw' )) as fp :
91
+ tm = fp .read ().split ()
92
+ self .assertEqual (tm , ['O' , 'H' ])
93
+ self .assertEqual (system_1 ['atom_names' ], ['O' , 'H' ])
94
+ self .assertEqual (system_1 ['atom_types' ][0 ], 0 )
95
+ self .assertEqual (system_1 ['atom_types' ][1 ], 0 )
96
+ self .assertEqual (system_1 ['atom_types' ][2 ], 1 )
97
+ self .assertEqual (system_1 ['atom_types' ][3 ], 1 )
98
+ self .assertEqual (system_1 ['atom_types' ][4 ], 1 )
99
+ self .assertEqual (system_1 ['atom_types' ][5 ], 1 )
100
+
101
+ def test_npy_type_map_load (self ) :
102
+ system_1 = dpdata .LabeledSystem ('poscars/OUTCAR.h2o.md' ,
103
+ fmt = 'vasp/outcar' )
104
+ system_1 .to_deepmd_npy ('tmp.deepmd' )
105
+ system_2 = dpdata .LabeledSystem ('tmp.deepmd' , fmt = 'deepmd/npy' )
106
+ self .assertEqual (system_2 ['atom_names' ], ['O' , 'H' ])
107
+ self .assertEqual (system_2 ['atom_types' ][0 ], 0 )
108
+ self .assertEqual (system_2 ['atom_types' ][1 ], 0 )
109
+ self .assertEqual (system_2 ['atom_types' ][2 ], 1 )
110
+ self .assertEqual (system_2 ['atom_types' ][3 ], 1 )
111
+ self .assertEqual (system_2 ['atom_types' ][4 ], 1 )
112
+ self .assertEqual (system_2 ['atom_types' ][5 ], 1 )
113
+ self .assertEqual (system_2 ['atom_numbs' ][0 ], 2 )
114
+ self .assertEqual (system_2 ['atom_numbs' ][1 ], 4 )
115
+
116
+ def test_npy_type_map_enforce (self ) :
117
+ system_1 = dpdata .LabeledSystem ('poscars/OUTCAR.h2o.md' ,
118
+ fmt = 'vasp/outcar' )
119
+ system_1 .to_deepmd_npy ('tmp.deepmd' )
120
+ system_2 = dpdata .LabeledSystem ('tmp.deepmd' , type_map = ['H' , 'O' ], fmt = 'deepmd/npy' )
121
+ self .assertEqual (system_2 ['atom_names' ], ['H' , 'O' ])
122
+ self .assertEqual (system_2 ['atom_types' ][0 ], 1 )
123
+ self .assertEqual (system_2 ['atom_types' ][1 ], 1 )
124
+ self .assertEqual (system_2 ['atom_types' ][2 ], 0 )
125
+ self .assertEqual (system_2 ['atom_types' ][3 ], 0 )
126
+ self .assertEqual (system_2 ['atom_types' ][4 ], 0 )
127
+ self .assertEqual (system_2 ['atom_types' ][5 ], 0 )
128
+ self .assertEqual (system_2 ['atom_numbs' ][0 ], 4 )
129
+ self .assertEqual (system_2 ['atom_numbs' ][1 ], 2 )
130
+
131
+
132
+
133
+
36
134
class TestDeepmdRawNoLabels (unittest .TestCase , CompSys ) :
37
135
def setUp (self ) :
38
136
self .system_1 = dpdata .System ('poscars/POSCAR.h2o.md' ,
0 commit comments