# Olivier Delaire - June 2007
__doc__ = """Converters for UnitCell."""
from UnitCell import *
from Atom import *
import ASE.ListOfAtoms
import ASE.Atom
def listOfAtom2UnitCell(loa):
    """Utility to convert a ListOfAtom instance to a UnitCell instance."""
    symbols = [x.symbol for x in loa]
    cartpos = [x.position for x in loa]
    cellvectors = loa.cell
    uc = UnitCell(cellvectors)
    fracpos = [uc.cartesianToFractional(x) for x in cartpos]
    for n in range(symbols):
        atom = Atom(symbol=symbols[n])
        uc.addAtom(atom, fracpos[n], '')
    return uc
def unitCell2ListOfAtom(uc):
    """Utility to convert a UnitCell instance to a ASE ListOfAtom instance."""
    loa = ASE.ListOfAtoms([],periodic=True) 
    loa.SetUnitCell(uc._cellvectors, fix=True)
    for site in uc:
        aseatom = ASE.Atom(site.getAtom().symbol, site.getPosition().tolist())
    return loa