@staticmethod
def read(sile, *args, **kwargs):
    """ Reads density matrix from `Sile` using `read_energy_density_matrix`.

        Parameters
        ----------
        sile : Sile, str or pathlib.Path
            a `Sile` object which will be used to read the density matrix
            and the overlap matrix (if any)
            if it is a string it will create a new sile using `get_sile`.
        * : args passed directly to ``read_energy_density_matrix(,**)``
        """
    from sisl.io import get_sile, BaseSile
    if isinstance(sile, BaseSile):
        return sile.read_energy_density_matrix(*args, **kwargs)
    else:
        with get_sile(sile) as fh:
            return fh.read_energy_density_matrix(*args, **kwargs)
