def structure2aSys(structure,idoffset=1): """ Converts Structure object of pymatgen to NAPSystem object in nap. Args: structure (Structure): pymatgen Structure object to be converted to NAPSystem object.. Returns: aSys (NAPSystem): """ lattice= structure.lattice alc= 1.0 a1= np.array(lattice.matrix[0]) a2= np.array(lattice.matrix[1]) a3= np.array(lattice.matrix[2]) #... rescale a? vectors a1= a1/alc a2= a2/alc a3= a3/alc aSys= NAPSystem() aSys.set_lattice(alc,a1,a2,a3) for ia in range(structure.num_sites): ai= Atom() si= structure[ia] crd= si.frac_coords ai.set_pos(crd[0],crd[1],crd[2]) sid= structure.symbol_set.index(si.species_string)+idoffset ai.set_sid(sid) ai.set_id(ia+1) aSys.add_atom(ai) return aSys
def doc_to_pos(doc, conf): """ Make a pos file, which has pmd format, from a document in MongoDB. """ psys = NAPSystem() matrix = doc['calculations'][-1]['output']['crystal']['lattice']['matrix'] a1 = matrix[0] a2 = matrix[1] a3 = matrix[2] psys.set_lattice(1.0, a1, a2, a3) species_ids = conf['species_ids'] sites = doc['calculations'][-1]['output']['crystal']['sites'] for site in sites: ra = site['abc'] ai = Atom() ai.set_pos(ra[0], ra[1], ra[2]) ai.set_sid(species_ids[site['species'][0]['element']]) psys.add_atom(ai) return psys