Return value if tx_obj2 is a complete subset of tx_obj1 or 
          tx_obj1 is a complete subset of tx_obj2

          Values are:

          * Return 1: Full overlap (mutual subests) 
          * Return 2: two is a subset of one
          * Return 3: one is a subset of two
          * Return False if neither is a subset of the other

      :return: subset value
      :rtype: int

def is_subset(self1):
      """ Return value if tx_obj2 is a complete subset of tx_obj1 or 
          tx_obj1 is a complete subset of tx_obj2

          Values are:

          * Return 1: Full overlap (mutual subests) 
          * Return 2: two is a subset of one
          * Return 3: one is a subset of two
          * Return False if neither is a subset of the other

      :return: subset value
      :rtype: int
      """
      if len(self1.overs) == 0: return False
      if len(self1.dif1) > 0: # make sure they are consecutive if more than one
        if max(self1.dif1) != 1 or max(self1.dif2) != 1: return False
      onecov = self1.start1 and self1.end1
      twocov = self1.start2 and self1.end2
      if onecov and twocov:
        return 1
      elif twocov: return 2
      elif onecov: return 3
      return False