def m_vector(self, m): """ Find David Lewin's M-vector. (Also described in Composition with Pitch Classes - Robert Morris) Finds the number of each set-class with cardinality m which are subsets of a given pitch class. The ICV is equivalent to the m-vector of a pitch class when m is 2. """ if m > self._mod: return from sator.pcset import PCSet pc_set = self._pc_set vectors = {} for index, each in enumerate(self.__class__.each_card_in_mod(m, self._mod)): e_prime = each.pcint old_value = vectors.get(e_prime, 0) to_add = 1 if pc_set.issuperset(each._pc_set) else 0 vectors[e_prime] = old_value + to_add return sorted([(PCSet.fromint(pcint), total) \ for pcint, total in vectors.items()], key = lambda x: x[0].pcint)