Esempio n. 1
0
    def from_dict(cls, d):
        """
        Args:
            A dict with all data for a band structure symm line object.

        Returns:
            A BandStructureSymmLine object
        """
        labels_dict = d['labels_dict']
        projections = {}
        structure = None
        if 'projections' in d and len(d['projections']) != 0:
            structure = Structure.from_dict(d['structure'])
            projections = {
                Spin.from_int(int(spin)):
                [[{
                    Orbital.from_string(orb): [
                        d['projections'][spin][i][j][orb][k]
                        for k in range(len(d['projections'][spin][i][j][orb]))
                    ]
                    for orb in d['projections'][spin][i][j]
                } for j in range(len(d['projections'][spin][i]))]
                 for i in range(len(d['projections'][spin]))]
                for spin in d['projections']
            }

        return BandStructureSymmLine(
            d['kpoints'],
            {Spin.from_int(int(k)): d['bands'][k]
             for k in d['bands']},
            Lattice(d['lattice_rec']['matrix']),
            d['efermi'],
            labels_dict,
            structure=structure,
            projections=projections)
Esempio n. 2
0
    def from_dict(d):
        """
        Args:
            A dict with all data for a band structure symm line object.

        Returns:
            A BandStructureSymmLine object
        """
        labels_dict = d['labels_dict']
        projections = {}
        structure = None
        if 'projections' in d and len(d['projections']) != 0:
            structure = Structure.from_dict(d['structure'])
            projections = {
                Spin.from_int(int(spin)): [
                    [{Orbital.from_string(orb): [
                        d['projections'][spin][i][j][orb][k]
                        for k in range(len(d['projections'][spin][i][j][orb]))]
                      for orb in d['projections'][spin][i][j]}
                     for j in range(len(d['projections'][spin][i]))]
                    for i in range(len(d['projections'][spin]))]
                for spin in d['projections']}

        return BandStructureSymmLine(
            d['kpoints'], {Spin.from_int(int(k)): d['bands'][k]
                           for k in d['bands']},
            Lattice(d['lattice_rec']['matrix']), d['efermi'],
            labels_dict, structure=structure, projections=projections)
Esempio n. 3
0
    def from_dict(cls, d):
        """
        Args:
            A dict with all data for a band structure symm line object.

        Returns:
            A BandStructureSymmLine object
        """
        # Strip the label to recover initial string (see trick used in as_dict to handle $ chars)
        labels_dict = {k.strip(): v for k, v in d['labels_dict'].items()}
        projections = {}
        structure = None
        if 'projections' in d and len(d['projections']) != 0:
            structure = Structure.from_dict(d['structure'])
            projections = {
                Spin.from_int(int(spin)): [
                    [{Orbital.from_string(orb): [
                        d['projections'][spin][i][j][orb][k]
                        for k in range(len(d['projections'][spin][i][j][orb]))]
                      for orb in d['projections'][spin][i][j]}
                     for j in range(len(d['projections'][spin][i]))]
                    for i in range(len(d['projections'][spin]))]
                for spin in d['projections']}

        return BandStructureSymmLine(
            d['kpoints'], {Spin.from_int(int(k)): d['bands'][k]
                           for k in d['bands']},
            Lattice(d['lattice_rec']['matrix']), d['efermi'],
            labels_dict, structure=structure, projections=projections)
Esempio n. 4
0
 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
Esempio n. 5
0
 def from_dict(cls, d):
     """
     Returns Dos object from dict representation of Dos.
     """
     return Dos(d["efermi"], d["energies"],
                {Spin.from_int(int(k)): v
                 for k, v in d["densities"].items()})
Esempio n. 6
0
 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
Esempio n. 7
0
 def from_dict(cls, d):
     """
     Returns Dos object from dict representation of Dos.
     """
     return Dos(d["efermi"], d["energies"],
                {Spin.from_int(int(k)): v
                 for k, v in d["densities"].items()})
Esempio n. 8
0
 def from_dict(d):
     """
     Returns PDos object from dict representation.
     """
     return PDos(
         d["efermi"],
         d["energies"],
         {Spin.from_int(int(k)): v for k, v in d["densities"].items()},
         Orbital.from_string(d["orbital"]),
     )
Esempio n. 9
0
    def from_dict(cls, d):
        """
        Args:
            A dict with all data for a band structure symm line object.

        Returns:
            A BandStructureSymmLine object
        """
        labels_dict = d["labels_dict"]
        projections = {}
        structure = None
        if "projections" in d and len(d["projections"]) != 0:
            structure = Structure.from_dict(d["structure"])
            projections = {
                Spin.from_int(int(spin)): [
                    [
                        {
                            Orbital.from_string(orb): [
                                d["projections"][spin][i][j][orb][k]
                                for k in range(len(d["projections"][spin][i][j][orb]))
                            ]
                            for orb in d["projections"][spin][i][j]
                        }
                        for j in range(len(d["projections"][spin][i]))
                    ]
                    for i in range(len(d["projections"][spin]))
                ]
                for spin in d["projections"]
            }

        return BandStructureSymmLine(
            d["kpoints"],
            {Spin.from_int(int(k)): d["bands"][k] for k in d["bands"]},
            Lattice(d["lattice_rec"]["matrix"]),
            d["efermi"],
            labels_dict,
            structure=structure,
            projections=projections,
        )
Esempio n. 10
0
    def from_dict(cls, d):
        """
        Args:
            A dict with all data for a band structure symm line object.

        Returns:
            A BandStructureSymmLine object
        """
        # Strip the label to recover initial string (see trick used in as_dict to handle $ chars)
        labels_dict = {k.strip(): v for k, v in d['labels_dict'].items()}
        projections = {}
        structure = None
        if 'projections' in d and len(d['projections']) != 0:
            structure = Structure.from_dict(d['structure'])
            projections = {
                Spin.from_int(int(spin)):
                [[{
                    Orbital.from_string(orb): [
                        d['projections'][spin][i][j][orb][k]
                        for k in range(len(d['projections'][spin][i][j][orb]))
                    ]
                    for orb in d['projections'][spin][i][j]
                } for j in range(len(d['projections'][spin][i]))]
                 for i in range(len(d['projections'][spin]))]
                for spin in d['projections']
            }

        return BandStructureSymmLine(
            d['kpoints'],
            {Spin.from_int(int(k)): d['bands'][k]
             for k in d['bands']},
            Lattice(d['lattice_rec']['matrix']),
            d['efermi'],
            labels_dict,
            structure=structure,
            projections=projections)
Esempio n. 11
0
 def from_dict(cls, d):
     """
     Returns CompleteDos object from dict representation.
     """
     tdos = Dos.from_dict(d)
     struct = Structure.from_dict(d["structure"])
     pdoss = {}
     for i in range(len(d["pdos"])):
         at = struct[i]
         orb_dos = {}
         for orb_str, odos in d["pdos"][i].items():
             orb = Orbital.from_string(orb_str)
             orb_dos[orb] = {Spin.from_int(int(k)): v
                             for k, v in odos["densities"].items()}
         pdoss[at] = orb_dos
     return CompleteDos(struct, tdos, pdoss)
Esempio n. 12
0
 def from_dict(cls, d):
     """
     Returns CompleteDos object from dict representation.
     """
     tdos = Dos.from_dict(d)
     struct = Structure.from_dict(d["structure"])
     pdoss = {}
     for i in range(len(d["pdos"])):
         at = struct[i]
         orb_dos = {}
         for orb_str, odos in d["pdos"][i].items():
             orb = Orbital.from_string(orb_str)
             orb_dos[orb] = {Spin.from_int(int(k)): v
                             for k, v in odos["densities"].items()}
         pdoss[at] = orb_dos
     return CompleteDos(struct, tdos, pdoss)
Esempio n. 13
0
 def test_cached(self):
     self.assertEqual(id(Spin.from_int(1)), id(Spin.up))
Esempio n. 14
0
 def test_from_int(self):
     self.assertEqual(Spin.from_int(1), Spin.up)
     self.assertEqual(Spin.from_int(-1), Spin.down)
     self.assertRaises(ValueError, Spin.from_int, 0)
Esempio n. 15
0
 def test_cached(self):
     self.assertEquals(id(Spin.from_int(1)), id(Spin.up))
Esempio n. 16
0
 def test_from_int(self):
     self.assertEquals(Spin.from_int(1), Spin.up)
     self.assertEquals(Spin.from_int(-1), Spin.down)
     self.assertRaises(ValueError, Spin.from_int, 0)