def parse_metadata_state_descriptions(state_string):
    """From string in format 'col1:good1,good2;col2:good1' return dict."""
    result = {}
    state_string = state_string.strip()
    if state_string:
        cols = [s.strip()  for s in state_string.split(';')]
        for c in cols:
            # split on the first colon to account for category names with colons
            colname, vals = [s.strip() for s in c.split(':', 1)]

            vals = [v.strip() for v in vals.split(',')]
            result[colname] = set(vals)
    return result