# Path: alfpy/utils/distance.py
# class Distance(object):
#     def __getitem__(self, seqnum):
#     def get_disttypes(cls):
#     def set_disttype(self, disttype):
#     def __init__(self, vector, disttype):
#     def pwdist_euclid_squared(self, seq1idx, seq2idx):
#     def pwdist_euclid_norm(self, seq1idx, seq2idx):
#     def pwdist_google(self, seq1idx, seq2idx):


import numpy as np
from .utils import distance
    from .utils.seqrecords import SeqRecords
    from . import word_vector
    from . import word_pattern
    from .utils import distmatrix
    return (nft, ntf)


def _nbool_correspond_all(u, v):
    """Function used by some distance methods (in Distance class).
    Based on: https://github.com/scipy/scipy

    Args:
        u (numpy.ndarray) : bool, shape: (N, )
        v (numpy.ndarray) : as above

    Returns:
        tuple of four numbers

    Examples:
        >>> u = np.array([True, False, True])
        >>> v = np.array([True, True, False])
        >>> print(_nbool_correspond_all(u, v))
        (0, 1, 1, 1)

    """
    not_u = ~u
    not_v = ~v
    nff = (not_u & not_v).sum()
    nft = (not_u & v).sum()
    ntf = (u & not_v).sum()
    ntt = (u & v).sum()
    return (nff, nft, ntf, ntt)



# Path: alfpy/utils/distance.py
# class Distance(object):
#     def __getitem__(self, seqnum):
#     def get_disttypes(cls):
#     def set_disttype(self, disttype):
#     def __init__(self, vector, disttype):
#     def pwdist_euclid_squared(self, seq1idx, seq2idx):
#     def pwdist_euclid_norm(self, seq1idx, seq2idx):
#     def pwdist_google(self, seq1idx, seq2idx):


# Path: alfpy/word_bool_distance.py
import numpy as np
from .utils import distance
    from .utils.seqrecords import SeqRecords
    from . import word_vector
    from . import word_pattern
    from .utils import distmatrix

    return (nft, ntf)


def _nbool_correspond_all(u, v):
    """Function used by some distance methods (in Distance class).
    Based on: https://github.com/scipy/scipy

    Args:
        u (numpy.ndarray) : bool, shape: (N, )
        v (numpy.ndarray) : as above

    Returns:
        tuple of four numbers

    Examples:
        >>> u = np.array([True, False, True])
        >>> v = np.array([True, True, False])
        >>> print(_nbool_correspond_all(u, v))
        (0, 1, 1, 1)

    """
    not_u = ~u
    not_v = ~v
    nff = (not_u & not_v).sum()
    nft = (not_u & v).sum()
    ntf = (u & not_v).sum()
    ntt = (u & v).sum()
    return (nff, nft, ntf, ntt)



class Distance(distance.Distance):