Skip to content
This repository was archived by the owner on Dec 8, 2024. It is now read-only.

Commit 9ce093c

Browse files
authored
Fchl doc (#45)
* Fixed atomtype parsing bug
1 parent 7164c6b commit 9ce093c

File tree

3 files changed

+60
-5
lines changed

3 files changed

+60
-5
lines changed

qml/compound.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def __init__(self, xyz = None):
5252
# Information about the compound
5353
self.natoms = float("nan")
5454
self.natypes = {}
55-
self.atomtypes = empty_array
55+
self.atomtypes = []
5656
self.atomtype_indices = collections.defaultdict(list)
5757
self.nuclear_charges = empty_array
5858
self.coordinates = empty_array
@@ -305,7 +305,7 @@ def read_xyz(self, filename):
305305
f.close()
306306

307307
self.natoms = int(lines[0])
308-
self.atomtypes = np.empty(self.natoms, dtype=str)
308+
self.atomtypes = []
309309
self.nuclear_charges = np.empty(self.natoms, dtype=int)
310310
self.coordinates = np.empty((self.natoms, 3), dtype=float)
311311

@@ -317,10 +317,10 @@ def read_xyz(self, filename):
317317
if len(tokens) < 4:
318318
break
319319

320-
self.atomtypes[i] = tokens[0]
320+
self.atomtypes.append(tokens[0])
321321
self.atomtype_indices[tokens[0]].append(i)
322322
self.nuclear_charges[i] = NUCLEAR_CHARGE[tokens[0]]
323323

324324
self.coordinates[i] = np.asarray(tokens[1:4], dtype=float)
325-
325+
326326
self.natypes = dict([(key, len(value)) for key,value in self.atomtype_indices.items()])

tests/data/compound_test.xyz

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
5
2+
3+
C -6.00533 0.91552 0.12550
4+
Cl -4.22806 0.88165 0.08802
5+
Br -6.62335 0.37844 1.87701
6+
H -6.40470 0.21664 -0.63793
7+
H -6.36029 1.94371 -0.09267

tests/test_compound.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,49 @@
1-
# Test
1+
# MIT License
2+
#
3+
# Copyright (c) 2018 Anders Steen Christensen
4+
#
5+
# Permission is hereby granted, free of charge, to any person obtaining a copy
6+
# of this software and associated documentation files (the "Software"), to deal
7+
# in the Software without restriction, including without limitation the rights
8+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
# copies of the Software, and to permit persons to whom the Software is
10+
# furnished to do so, subject to the following conditions:
11+
#
12+
# The above copyright notice and this permission notice shall be included in all
13+
# copies or substantial portions of the Software.
14+
#
15+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
# SOFTWARE.
22+
23+
from __future__ import print_function
24+
25+
import os
26+
27+
import qml
28+
import numpy as np
29+
30+
def compare_lists(a, b):
31+
for pair in zip(a,b):
32+
if pair[0] != pair[1]:
33+
return False
34+
return True
35+
36+
def test_compound():
37+
38+
test_dir = os.path.dirname(os.path.realpath(__file__))
39+
c = qml.Compound(xyz=test_dir + "/data/compound_test.xyz")
40+
41+
ref_atomtypes = ['C', 'Cl', 'Br', 'H', 'H']
42+
ref_charges = [ 6, 17, 35, 1 , 1]
43+
44+
assert compare_lists(ref_atomtypes, c.atomtypes), "Failed parsing atomtypes"
45+
assert compare_lists(ref_charges, c.nuclear_charges), "Failed parsing nuclear_charges"
46+
47+
if __name__ == "__main__":
48+
49+
test_compound()

0 commit comments

Comments
 (0)