Skip to content

Commit 11e5687

Browse files
committed
add from_Z method
1 parent 3907672 commit 11e5687

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

dpdata/periodic_table.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@
33

44
fpdt=str(Path(__file__).absolute().parent / "periodic_table.json")
55
_pdt=loadfn(fpdt)
6+
ELEMENTS=['H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', \
7+
'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag',\
8+
'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb',\
9+
'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', \
10+
'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No', 'Lr']
611

712
class Element:
813

914
def __init__(self, symbol: str):
10-
assert symbol in _pdt.keys()
15+
assert symbol in ELEMENTS
1116
self.symbol = "%s" % symbol
1217
d = _pdt[symbol]
1318
self._Z = d['atomic_no']
@@ -22,6 +27,12 @@ def __str__(self):
2227

2328
def __repr__(self):
2429
return "Element : %s"%self.symbol
30+
31+
@classmethod
32+
def from_Z(cls,Z):
33+
assert(Z>0)
34+
assert(Z<len(ELEMENTS))
35+
return cls(ELEMENTS[Z-1])
2536

2637
@property
2738
def Z(self):

tests/test_periodic_table.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def test_H(self):
2121
self.assertEqual(H.mass,data['atomic_mass'])
2222
self.assertEqual(H.radius,data['radius'])
2323
self.assertEqual(H.calculated_radius,data['calculated_radius'])
24+
self.assertEqual(H.X,dpdata.periodic_table.Element.from_Z(1).X)
2425

2526
if __name__ == '__main__':
2627
unittest.main()

0 commit comments

Comments
 (0)