def getChrPartTypeByNotation(notation, graph=None):
    """
    This method will figure out the kind of feature that a given band
    is based on pattern matching to standard karyotype notation.
    (e.g. 13q22.2 ==> chromosome sub-band)

    This has been validated against human, mouse, fish, and rat nomenclature.
    :param notation: the band (without the chromosome prefix)
    :return:

    """

    # Note that for mouse,
    # they don't usually include the "q" in their notation,
    # though UCSC does. We may need to adjust for that here

    if re.match(r'p$', notation):
        rti = graph.globaltt['short_chromosome_arm']
    elif re.match(r'q$', notation):
        rti = graph.globaltt['long_chromosome_arm']
    elif re.match(r'[pq][A-H\d]$', notation):
        rti = graph.globaltt['chromosome_region']
    elif re.match(r'[pq][A-H\d]\d', notation):
        rti = graph.globaltt['chromosome_band']
    elif re.match(r'[pq][A-H\d]\d\.\d+', notation):
        rti = graph.globaltt['chromosome_subband']
    else:
        rti = graph.globaltt['chromosome_part']

    return rti