Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_init(self):
"""Does the class initialize correctly?"""
fpath = os.path.join(__datadir__, "data/ADF/basicADF2007.01/dvb_gopt.adfout")
data = cclib.io.ccread(fpath)
xyz = cclib.io.xyzwriter.XYZ(data)
# The object should keep the ccData instance passed to its constructor.
self.assertEqual(xyz.ccdata, data)
def setUp(self):
self._determine_output_format = cclib.io.ccio._determine_output_format
self.UnknownOutputFormatError = cclib.io.ccio.UnknownOutputFormatError
def test_data_stdin(self):
"""Check that the same attributes are parsed when a file is piped through standard input."""
logfiles = [
"data/ADF/basicADF2007.01/dvb_gopt.adfout",
"data/GAMESS/basicGAMESS-US2017/C_bigbasis.out",
]
get_attributes = lambda data: [a for a in data._attrlist if hasattr(data, a)]
for lf in logfiles:
path = "%s/%s" % (__datadir__, lf)
expected_attributes = get_attributes(cclib.io.ccread(path))
with open(path) as handle:
contents = handle.read()
# This is fix strings not being unicode in Python2.
try:
stdin = io.StringIO(contents)
except TypeError:
stdin = io.StringIO(unicode(contents))
stdin.seek = sys.stdin.seek
data = cclib.io.ccread(stdin)
self.assertEqual(get_attributes(data), expected_attributes)
def test_attributes_one(self):
"""Is an XYZ file with a single geometry read into a ccData properly?
"""
fpath = os.path.join(__datadir__, "test/bridge/uracil.xyz")
xyz = cclib.io.xyzreader.XYZ(fpath)
data = xyz.parse()
self.assertEqual(data.natom, 12)
atomnos = np.array([7, 6, 1, 8, 7, 6, 8, 6, 6, 1, 1, 1], dtype=int)
np.testing.assert_equal(data.atomnos, atomnos)
self.assertEqual(data.atomcoords.shape, (1, 12, 3))
def import_cclib(self, fname):
"""
Imports any cclib parsable file as a Molecule class instance
Parameters
-----------
fname : string
cclib parsable output file name
"""
try:
self.ftype = 'cclib'
data = cclib.io.ccread(fname)
self.n_atom = data.natom
self.at_num = data.atomnos
# This gets the atomic symbols by looking up the keys of the
# atomic numbers. It looks somewhat crazy but it is looking
# through a list of the values stored in the dictionary,
# matching the value to the atomic number and returning
# the key that corresponds to that atomic number. It works
# with this dictionary because the keys to values are 1 to 1.
self.sym = []
for i in data.atomnos:
self.sym.append(qcel.periodictable.to_E(i))
# cclib stores the atomic coordinates in a array of shape
# [molecule, num atoms, 3 for xyz] because I think they might
# have many "molecules" from each step of an optimization or
# something. Here we are taking just the last one.
self.xyz = data.atomcoords[-1]