'p X N matrix input'

def __init__(self, data, names=None):

    A = np.array(data).T
    (n, p) = A.shape
    (self.n, self.p) = (n, p)
    if (p > n):
        from warnings import warn
        warn('p    >    n    -    intentional?', RuntimeWarning)
    self.A = A
    self._origA = A.copy()
    self.__calc()
    self._colors = np.tile(self._colors, (int(((p - 1) / len(self._colors))) + 1))[:p]
    if ((names is not None) and (len(names) != p)):
        raise ValueError('names    must    match    data    dimension')
    self.names = (None if (names is None) else tuple([str(n) for n in names]))
