# Copyright 2000 Brad Chapman.  All rights reserved.
#
# This file is part of the Biopython distribution and governed by your
# choice of the "Biopython License Agreement" or the "BSD 3-Clause License".
# Please see the LICENSE file that should have been included as part of this
# package.
"""Extract information from alignment objects.

In order to try and avoid huge alignment objects with tons of functions,
functions which return summary type information about alignments should
be put into classes in this module.
"""

import warnings

from Bio import BiopythonDeprecationWarning


class SummaryInfo:
    """Calculate summary info about the alignment (DEPRECATED).

    This class should be used to calculate information summarizing the
    results of an alignment. This may either be straight consensus info
    or more complicated things.
    """

    def __init__(self, alignment):
        """Initialize with the alignment to calculate information on.

        ic_vector attribute. A list of ic content for each column number.
        """
        warnings.warn(
            """\
The class SummaryInfo has been deprecated. Instead of

>>> align_info = AlignInfo.SummaryInfo(msa)
>>> sequence = align_info.get_column(1)

please use

>>> alignment = msa.alignment  # to get a new-style Alignment object
>>> sequence = alignment[:, 1]

Here, `msa` is a MultipleSeqAlignment object and `alignment` is an
`Alignment` object.""",
            BiopythonDeprecationWarning,
        )
        self.alignment = alignment
        self.ic_vector = []

    def get_column(self, col):
        """Return column of alignment."""
        # TODO - Deprecate this and implement slicing?
        return self.alignment[:, col]
