def get_dos_from_id(self, task_id): """ Overrides the get_dos_from_id for the MIT gridfs format. """ args = {'task_id': task_id} fields = ['calculations'] structure = self.get_structure_from_id(task_id) dosid = None for r in self.query(fields, args): dosid = r['calculations'][-1]['dos_fs_id'] if dosid != None: self._fs = gridfs.GridFS(self.db, 'dos_fs') with self._fs.get(dosid) as dosfile: s = dosfile.read() try: d = json.loads(s) except: s = zlib.decompress(s) d = json.loads(s) tdos = Dos.from_dict(d) pdoss = {} for i in range(len(d['pdos'])): ados = d['pdos'][i] all_ados = {} for j in range(len(ados)): orb = Orbital.from_vasp_index(j) odos = ados[str(orb)] all_ados[orb] = {Spin.from_int(int(k)): v for k, v in odos['densities'].items()} pdoss[structure[i]] = all_ados return CompleteDos(structure, tdos, pdoss) return None
def get_dos_from_id(self, task_id): """ Overrides the get_dos_from_id for the MIT gridfs format. """ args = {'task_id': task_id} fields = ['calculations'] structure = self.get_structure_from_id(task_id) dosid = None for r in self.query(fields, args): dosid = r['calculations'][-1]['dos_fs_id'] if dosid != None: self._fs = gridfs.GridFS(self.db, 'dos_fs') with self._fs.get(dosid) as dosfile: s = dosfile.read() try: d = json.loads(s) except: s = zlib.decompress(s) d = json.loads(s) tdos = Dos.from_dict(d) pdoss = {} for i in range(len(d['pdos'])): ados = d['pdos'][i] all_ados = {} for j in range(len(ados)): orb = Orbital.from_vasp_index(j) odos = ados[str(orb)] all_ados[orb] = { Spin.from_int(int(k)): v for k, v in odos['densities'].items() } pdoss[structure[i]] = all_ados return CompleteDos(structure, tdos, pdoss) return None
def test_cached(self): self.assertEqual(id(Orbital.from_vasp_index(0)), id(Orbital.s))
def test_init(self): for i, orb in enumerate(Orbital.all_orbitals): self.assertEqual(Orbital.from_vasp_index(i), orb) self.assertRaises(IndexError, Orbital.from_vasp_index, 100)
def test_cached(self): self.assertEquals(id(Orbital.from_vasp_index(0)), id(Orbital.s))
def test_init(self): for i, orb in enumerate(Orbital.all_orbitals): self.assertEqual(Orbital.from_vasp_index(i), orb) self.assertRaises(IndexError, Orbital.from_vasp_index, 100)