find_features - Finds the reference sequence features in the alignments and records the positions 

    :param feats: Dictonary of sequence features
    :type feats: ``dict``
    :param sequ: The sequence alignment for the input sequence
    :type sequ: ``List``
    :param annotated: dictonary of the annotated features
    :type annotated: ``dict``
    :param start_pos: Where the reference sequence starts
    :type start_pos: ``int``
    :param missing: List of the unmapped features
    :type missing: ``List``
    :param cutoff: The alignment cutoff
    :type cutoff: ``float``
    :param verbose: Flag for running in verbose mode.
    :type verbose: ``bool``
    :param verbosity: Numerical value to indicate how verbose the output will be in verbose mode.
    :type verbosity: ``int``
    :rtype: ``List``

def find_features(feats, sequ, annotated, start_pos, cutoff):
    """
    find_features - Finds the reference sequence features in the alignments and records the positions 

    :param feats: Dictonary of sequence features
    :type feats: ``dict``
    :param sequ: The sequence alignment for the input sequence
    :type sequ: ``List``
    :param annotated: dictonary of the annotated features
    :type annotated: ``dict``
    :param start_pos: Where the reference sequence starts
    :type start_pos: ``int``
    :param missing: List of the unmapped features
    :type missing: ``List``
    :param cutoff: The alignment cutoff
    :type cutoff: ``float``
    :param verbose: Flag for running in verbose mode.
    :type verbose: ``bool``
    :param verbosity: Numerical value to indicate how verbose the output will be in verbose mode.
    :type verbosity: ``int``
    :rtype: ``List``
    """
    feats_a = list(feats.keys())

    j = 0
    s = 0
    en = 0
    start = 0
    for i in range(0, len(sequ)):
        if j <= len(feats_a)-1:
            if i > int(feats[feats_a[j]].location.end):
                j += 1
            if(sequ[i] == '-'):
                if i == 0:
                    start += 1
                    en += 1
                    s = 1
                else:
                    start += 1
                    en += 1
                    if s == 0:
                        start_val = feats[feats_a[j]].location.start
                        #if feats_a[j] == "five_prime_UTR":
                        #    start_val = 0

                        if((annotated == 0 and start_pos == 0
                            and cutoff < 0.9) or
                            (annotated == 0 and start_pos == 0
                             and st < 6)
                           or (start_pos == 0 and
                               len(feats) == 1 and cutoff < .9)):
                            start_val = 0

                        else:
                            if feats_a[j] == 'five_prime_UTR':
                                start_val = 0

                        feats[feats_a[j]] = SeqFeature(FeatureLocation(ExactPosition(start_val), ExactPosition(int(feats[feats_a[j]].location.end + 1)), strand=1), type=feats[feats_a[j]].type)

                        if j != len(feats_a):
                            for l in range(j+1, len(feats_a)):
                                feats[feats_a[l]] = SeqFeature(FeatureLocation(ExactPosition(feats[feats_a[l]].location.start+1), ExactPosition(int(feats[feats_a[l]].location.end + 1)), strand=1), type=feats[feats_a[l]].type)
            else:
                if s == 1:
                    st = feats[feats_a[j]].location.start + start
                    end = feats[feats_a[j]].location.end + en

                    start_val = st
                    if feats_a[j] != 'five_prime_UTR' and start_pos == 0:
                        if((annotated == 0 and start_pos == 0
                            and cutoff < 0.9) or
                            (annotated == 0 and start_pos == 0
                             and st < 6)
                           or (start_pos == 0 and
                               len(feats) == 1 and cutoff < .9)):
                            start_val = 0
                    else:
                        if feats_a[j] == 'five_prime_UTR':
                            start_val = 0

                    feats[feats_a[j]] = SeqFeature(FeatureLocation(ExactPosition(start_val), ExactPosition(end), strand=1), type=feats[feats_a[j]].type)
                    if j != len(feats_a):
                        for l in range(j+1, len(feats_a)):     
                            feats[feats_a[l]] = SeqFeature(FeatureLocation(ExactPosition(feats[feats_a[l]].location.start+st), ExactPosition(int(feats[feats_a[l]].location.end + st)), strand=1), type=feats[feats_a[l]].type)

                    s = 0
    return feats