code: def has_predecessor(self, u, v, t=None):
          
          return self.has_interaction(v, u, t)
docs: Return True if node u has predecessor v at time t (optional).
  
          This is true if graph has the edge u<-v.
  
          Parameters
          ----------
          u, v : nodes
              Nodes can be, for example, strings or numbers.
              Nodes must be hashable (and not None) Python objects.
          t : snapshot id (default=None)
              If None will be returned the presence of the interaction on the flattened graph.