def get_chromosomes_summary(snps):
    """ Summary of the chromosomes of SNPs.

    Parameters
    ----------
    snps : pandas.DataFrame

    Returns
    -------
    str
        human-readable listing of chromosomes (e.g., '1-3, MT'), empty str if no chromosomes
    """

    if isinstance(snps, pd.DataFrame):
        chroms = list(pd.unique(snps["chrom"]))

        int_chroms = [int(chrom) for chrom in chroms if chrom.isdigit()]
        str_chroms = [chrom for chrom in chroms if not chrom.isdigit()]

        # https://codereview.stackexchange.com/a/5202
        def as_range(iterable):
            l = list(iterable)
            if len(l) > 1:
                return "{0}-{1}".format(l[0], l[-1])
            else:
                return "{0}".format(l[0])

        # create str representations
        int_chroms = ", ".join(
            as_range(g)
            for _, g in groupby(int_chroms, key=lambda n, c=count(): n - next(c))
        )
        str_chroms = ", ".join(str_chroms)

        if int_chroms != "" and str_chroms != "":
            int_chroms += ", "

        return int_chroms + str_chroms
    else:
        return ""
Summary of the chromosomes of SNPs.

    Parameters
    ----------
    snps : pandas.DataFrame

    Returns
    -------
    str
        human-readable listing of chromosomes (e.g., '1-3, MT'), empty str if no chromosomes