def _match_specie_group(file_metadata):
    """
    Classifies the virus taxonomy group from NCBI based
    structure to broadly used Baltimore Classification

    Based on https://en.wikipedia.org/wiki/Virus#Classification

    Baltimore Classification:
        I: dsDNA viruses (e.g. Adenoviruses, Herpesviruses, Poxviruses)
        II: ssDNA viruses (+ strand or "sense") DNA (e.g. Parvoviruses)
        III: dsRNA viruses (e.g. Reoviruses)
        IV: (+)ssRNA viruses (+ strand or sense) RNA (e.g. Picornaviruses, Togaviruses)
        V: (−)ssRNA viruses (− strand or antisense) RNA (e.g. Orthomyxoviruses, Rhabdoviruses)
        VI: ssRNA-RT viruses (+ strand or sense) RNA with DNA intermediate in life-cycle (e.g. Retroviruses)
        VII: dsDNA-RT viruses DNA with RNA intermediate in life-cycle (e.g. Hepadnaviruses)
    """
    # NCBI based taxonomy
    # https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Undef&id=10239&lvl=3&lin=f&keep=1&srchmode=1&unlock
    groups_patterns = [
        '; dsDNA viruses, no RNA stage; ',
        '; ssDNA viruses; ',
        '; dsRNA viruses; ',
        '; ssRNA positive-strand viruses, no DNA stage; ',
        '; ssRNA negative-strand viruses; ',
        # '; ',  # no clear match with VI from taxonomy
        # '; '  # no clear match with VII
    ]

    groups = [
        'dsDNA',
        'ssDNA',
        'dsRNA',
        '(+)ssRNA',
        '(-)ssRNA',
        'ssRNA-RT',
        'dsDNA-RT'
    ]

    for pattern in groups_patterns:
        if pattern in file_metadata:
            return groups[groups_patterns.index(pattern)]

    return 'unclassified'