Build the object from Abinit ixc (integer)

def from_abinit_ixc(cls, ixc):
        """Build the object from Abinit ixc (integer)"""
        ixc = int(ixc)
        if ixc >= 0:
            return cls(**cls.abinitixc_to_libxc[ixc])
        else:
            # libxc notation employed in Abinit: a six-digit number in the form XXXCCC or CCCXXX
            #ixc = str(ixc)
            #assert len(ixc[1:]) == 6
            #first, last = ixc[1:4], ixc[4:]
            ixc = abs(ixc)
            first = ixc // 1000
            last = ixc - first * 1000
            x, c = LibxcFunc(int(first)), LibxcFunc(int(last))
            if not x.is_x_kind: x, c = c, x  # Swap
            assert x.is_x_kind and c.is_c_kind
            return cls(x=x, c=c)