/usr/share/pyshared/cclib/parser/utils.py is in python-cclib 1.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | # This file is part of cclib (http://cclib.sf.net), a library for parsing
# and interpreting the results of computational chemistry packages.
#
# Copyright (C) 2006, the cclib development team
#
# The library is free software, distributed under the terms of
# the GNU Lesser General Public version 2.1 or later. You should have
# received a copy of the license along with cclib. You can also access
# the full license online at http://www.gnu.org/copyleft/lgpl.html.
__revision__ = "$Revision: 993 $"
def convertor(value, fromunits, tounits):
"""Convert from one set of units to another.
>>> print "%.1f" % convertor(8, "eV", "cm-1")
64524.8
"""
_convertor = {"eV_to_cm-1": lambda x: x*8065.6,
"eV_to_kJmol-1": lambda x: x*96.48538,
"hartree_to_eV": lambda x: x*27.2113845,
"Hartree_to_ kJmol-1": lambda x: x*2625.5002,
"bohr_to_Angstrom": lambda x: x*0.529177,
"Angstrom_to_bohr": lambda x: x*1.889716,
"nm_to_cm-1": lambda x: 1e7/x,
"cm-1_to_nm": lambda x: 1e7/x,
"hartree_to_cm-1": lambda x: x*219474.6,
# Taken from GAMESS docs, "Further information",
# "Molecular Properties and Conversion Factors"
"Debye^2/amu-Angstrom^2_to_km/mol": lambda x: x*42.255}
return _convertor["%s_to_%s" % (fromunits, tounits)] (value)
class PeriodicTable(object):
"""Allows conversion between element name and atomic no.
>>> t = PeriodicTable()
>>> t.element[6]
'C'
>>> t.number['C']
6
>>> t.element[44]
'Ru'
>>> t.number['Au']
79
"""
def __init__(self):
self.element = [None,
'H', 'He',
'Li', 'Be',
'B', 'C', 'N', 'O', 'F', 'Ne',
'Na', 'Mg',
'Al', 'Si', 'P', 'S', 'Cl', 'Ar',
'K', 'Ca',
'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn',
'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr',
'Rb', 'Sr',
'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd',
'In', 'Sn', 'Sb', 'Te', 'I', 'Xe',
'Cs', 'Ba',
'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb',
'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg',
'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn',
'Fr', 'Ra',
'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', 'Md', 'No',
'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Uub']
self.number = {}
for i in range(1, len(self.element)):
self.number[self.element[i]] = i
if __name__ == "__main__":
import doctest, utils
doctest.testmod(utils, verbose=False)
|