def rdp_parse(s):
    """Parse RDP taxonomy string with 7 level format (SILVA uses it.)
    D_0__Bacteria;D_1__Epsilonbacteraeota;D_2__Campylobacteria;D_3__Campylobacterales;D_4__Thiovulaceae;D_5__Sulfuricurvum;D_6__Sulfuricurvum sp. EW1
    The ambiguous_taxa will be convert to empty string.
    """
    abbr_dct = {
        "D_0": "kingdom",
        "D_1": "phylum",
        "D_2": "class",
        "D_3": "order",
        "D_4": "family",
        "D_5": "genus",
        "D_6": "species",
    }
    taxa_dct = {
        "kingdom": "",
        "phylum": "",
        "class": "",
        "order": "",
        "family": "",
        "genus": "",
        "species": "",
    }
    tokens = s.split(";")
    for token in tokens:  # D_0__Bacteria, or Ambiguous_taxa
        if token == "Ambiguous_taxa":
            break
        taxLv, taxName = token.split("__")
        # Make the output behave like GG parse
        taxLv = abbr_dct[taxLv]
        taxa_dct[taxLv] = taxName

    return taxa_dct