code: def concept(self, mechanism, purviews=False, cause_purviews=False,
                  effect_purviews=False):
          
          log.debug('Computing concept %s...', mechanism)
  
          # If the mechanism is empty, there is no concept.
          if not mechanism:
              log.debug('Empty concept; returning null concept')
              return self.null_concept
  
          # Calculate the maximally irreducible cause repertoire.
          cause = self.mic(mechanism, purviews=(cause_purviews or purviews))
  
          # Calculate the maximally irreducible effect repertoire.
          effect = self.mie(mechanism, purviews=(effect_purviews or purviews))
  
          log.debug('Found concept %s', mechanism)
  
          # NOTE: Make sure to expand the repertoires to the size of the
          # subsystem when calculating concept distance. For now, they must
          # remain un-expanded so the concept doesn't depend on the subsystem.
          return Concept(mechanism=mechanism, cause=cause, effect=effect,
                         subsystem=self)
docs: Return the concept specified by a mechanism within this subsytem.
  
          Args:
              mechanism (tuple[int]): The candidate set of nodes.
  
          Keyword Args:
              purviews (tuple[tuple[int]]): Restrict the possible purviews to
                  those in this list.
              cause_purviews (tuple[tuple[int]]): Restrict the possible cause
                  purviews to those in this list. Takes precedence over
                  ``purviews``.
              effect_purviews (tuple[tuple[int]]): Restrict the possible effect
                  purviews to those in this list. Takes precedence over
                  ``purviews``.
  
          Returns:
              Concept: The pair of maximally irreducible cause/effect repertoires
              that constitute the concept specified by the given mechanism.