def test_json(self): f1 = MagresFile(open(os.path.join(DATA_DIR, "ethanol", "ethanol-nmr.magres"))) json = f1.as_json() f2 = MagresFile.load_json(json) self.assertEqual(f1.data_dict, f2.data_dict)
def __init__(self, magres_file=None): """ Load new .magres format file into dictionary structure. """ if type(magres_file) == MagresFile: self.magres_file = magres_file else: self.magres_file = MagresFile(magres_file)
def test_nmr_new(self): f = MagresFile(open(os.path.join(DATA_DIR, "ethanol", "ethanol-nmr-new.magres"))) self.assertTrue("calculation" in f.data_dict) self.assertTrue("atoms" in f.data_dict) self.assertTrue("magres" in f.data_dict) self.assertTrue("lattice" in f.data_dict["atoms"]) self.assertTrue("units" in f.data_dict["atoms"]) self.assertTrue("atom" in f.data_dict["atoms"]) self.assertTrue("units" in f.data_dict["magres"]) self.assertTrue("efg" in f.data_dict["magres"]) self.assertTrue("ms" in f.data_dict["magres"]) num_atoms = len(f.data_dict['atoms']['atom']) self.assertTrue(len(f.data_dict['magres']['efg']), num_atoms) self.assertTrue(len(f.data_dict['magres']['ms']), num_atoms)
def test_full_isc(self): magres_files = [ MagresFile(open(os.path.join(DATA_DIR, "ethanol", f))) for f in os.listdir(os.path.join(DATA_DIR, "ethanol")) if f.startswith('ethanol-jc') ] self.assertEqual(len(magres_files), 9) atoms = MagresAtoms.load_magres(magres_files) for atom in atoms: self.assertTrue(hasattr(atom, "isc")) self.assertEqual(len(atoms.isc), len(atoms) * (len(atoms) - 1)) # Check every atom has couplings to every other atom for atom in atoms: self.assertEqual(len(atom.isc), len(atoms) - 1)
#!/usr/bin/python import sys from numpy.linalg import det from magres.format import MagresFile, BadVersion from magres.atoms import MagresAtoms from magres.utils import find_all_magres magres_files = [] for f in find_all_magres(sys.argv[1]): try: magres_files.append(MagresFile(f)) except BadVersion: continue s1 = sys.argv[2] i1 = int(sys.argv[3]) s2 = sys.argv[4] i2 = int(sys.argv[5]) tensor = 'isc' if len(sys.argv) >= 7: tensor = sys.argv[6] atoms = MagresAtoms.load_magres(magres_files) atom1 = atoms.get_species(s1, i1) atom2 = atoms.get_species(s2, i2) if tensor == "isc_spin_total": K1 = atom1.isc_fc[atom2].K + atom1.isc_spin[atom2].K K2 = atom2.isc_fc[atom1].K + atom2.isc_spin[atom1].K
def test_badversion(self): with self.assertRaises(BadVersion): f = MagresFile(open(os.path.join(DATA_DIR, "noversion.magres"))) with self.assertRaises(BadVersion): f = MagresFile(open(os.path.join(DATA_DIR, "badversion.magres")))
#!/usr/bin/python """ Merge several magres files into one. """ import sys from magres.format import MagresFile if __name__ == "__main__": magres_file_paths = sys.argv[1:] magres_files = [ MagresFile(magres_file_path) for magres_file_path in magres_file_paths ] merged_magres_file = MagresFile.merge(magres_files) print str(merged_magres_file)
from __future__ import print_function from magres.format import MagresFile import sys magres_file = MagresFile(sys.argv[1]) atoms = magres_file.as_ase() print(atoms) for atom in atoms: print(atom.symbol, atom.tag, atom.position)
class AtomsTest(unittest.TestCase): cubic = MagresFile.load_json( '{"atoms": {"units": [["atom", "Angstrom"], ["lattice", "Angstrom"]], "lattice": [[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]], "atom": [{"index": 1, "position": [0.0, 0.0, 0.0], "species": "H", "label": "H"}]}}' ) orthorhombic = MagresFile.load_json( '{"atoms": {"units": [["atom", "Angstrom"], ["lattice", "Angstrom"]], "lattice": [[[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 3.0]]], "atom": [{"index": 1, "position": [0.0, 0.0, 0.0], "species": "H", "label": "H"}]}}' ) species = MagresFile.load_json( '{"atoms": {"units": [["atom", "Angstrom"], ["lattice", "Angstrom"]], "lattice": [[[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]], "atom": [{"index": 1, "position": [0.0, 0.0, 0.0], "species": "H", "label": "H"},{"index": 1, "position": [0.0, 0.0, 1.0], "species": "C", "label": "C1"},{"index": 1, "position": [0.0, 0.0, 2.0], "species": "C", "label": "C2"}]}}' ) def test_within_cubic(self): atoms = MagresAtoms.load_magres(self.cubic) self.assertEquals(len(atoms), 1) p = atoms[0].position self.assertEquals(len(atoms.within(p, 1.0)), 7) num_within_3 = 0 for atom in atoms.within(atoms[0], 5.0): if atom.dist(atoms[0]) <= 3.0: num_within_3 += 1 self.assertEquals(len(atoms.within(p, 3.0)), num_within_3) self.assertEquals(len(atoms.within(p, 5.0).within(p, 2.0)), len(atoms.within(p, 2.0).within(p, 5.0))) def test_within_orthorhombic(self): atoms = MagresAtoms.load_magres(self.orthorhombic) self.assertEquals(len(atoms), 1) p = atoms[0].position self.assertEquals(len(atoms.within(p, 1.0)), 3) num_within_3 = 0 for atom in atoms.within(p, 10.0): if atom.dist(atoms[0]) <= 3.0: num_within_3 += 1 self.assertEquals(len(atoms.within(p, 3.0)), num_within_3) self.assertEquals(len(atoms.within(p, 5.0).within(p, 2.0)), len(atoms.within(p, 2.0).within(p, 5.0))) def test_species(self): atoms = MagresAtoms.load_magres(self.species) self.assertEquals(len(atoms), 3) self.assertEquals(len(atoms.species('H')), 1) self.assertEquals(len(atoms.species('C')), 2) def test_labels(self): atoms = MagresAtoms.load_magres(self.species) self.assertEquals(len(atoms), 3) self.assertEquals(len(atoms.label('H')), 1) self.assertEquals(len(atoms.label('C')), 0) self.assertEquals(len(atoms.label('C1')), 1) self.assertEquals(len(atoms.label('C2')), 1)
#!python """ Merge several magres files into one. """ import sys from magres.format import MagresFile if __name__ == "__main__": magres_file_paths = sys.argv[1:] magres_files = [MagresFile(magres_file_path) for magres_file_path in magres_file_paths] merged_magres_file = MagresFile.merge(magres_files) print str(merged_magres_file)
import sys from magres.format import MagresFile from magres.utils import find_all_magres from magres.atoms import MagresAtoms magres_files = [MagresFile(f) for f in find_all_magres(sys.argv[1])] atoms = MagresAtoms.load_magres(magres_files) coupling_atom = atoms.get_species('C', 1) # Set a bunch of arbitrary references for the magnetic shielding atoms.set_reference('H', 100.0) atoms.set_reference('C', 55.0) atoms.set_reference('O', -2.0) for atom in atoms: print atom, atom.efg.Cq, atom.ms.iso, atom.isc[coupling_atom].J_iso