Determine if a feature's position overlaps with the entry

        Args:
            feature (class): GFF3Entry object

            stranded (bool): allow features to overlap on different strands
                if True [default: False]

        Returns:
            bool: True if features overlap, else False

def overlap(self, feature, stranded: bool=False):
        """Determine if a feature's position overlaps with the entry

        Args:
            feature (class): GFF3Entry object

            stranded (bool): allow features to overlap on different strands
                if True [default: False]

        Returns:
            bool: True if features overlap, else False
        """

        # Allow features to overlap on different strands
        feature_strand = feature.strand
        strand = self.strand

        if stranded and ((strand == '.') or (strand == '+' and \
            feature_strand in ['-', '.']) or (strand == '-' and \
            feature_strand in ['+', '.'])):
            return False

        iv_1 = set(range(feature.start, feature.end + 1))
        iv_2 = set(range(self.start, self.end + 1))

        if len(iv_1.intersection(iv_2)) > 0:
            return True
        else:
            return False