Gets ignition type and target.

    Args:
        root (`~xml.etree.ElementTree.Element`): Root of ReSpecTh XML file

    Returns:
        properties (`dict`): Dictionary with ignition type/target information

def get_ignition_type(root):
    """Gets ignition type and target.

    Args:
        root (`~xml.etree.ElementTree.Element`): Root of ReSpecTh XML file

    Returns:
        properties (`dict`): Dictionary with ignition type/target information
    """
    properties = {}
    elem = root.find('ignitionType')

    if elem is None:
        raise MissingElementError('ignitionType')
    elem = elem.attrib

    if 'target' in elem:
        ign_target = elem['target'].rstrip(';').upper()
    else:
        raise MissingAttributeError('target', 'ignitionType')

    if 'type' in elem:
        ign_type = elem['type']
        if ign_type == 'baseline max intercept from d/dt':
            ign_type = 'd/dt max extrapolated'
    else:
        raise MissingAttributeError('type', 'ignitionType')

    # ReSpecTh allows multiple ignition targets
    if len(ign_target.split(';')) > 1:
        raise NotImplementedError('Multiple ignition targets not supported.')

    # Acceptable ignition targets include pressure, temperature, and species
    # concentrations
    if ign_target == 'OHEX':
        ign_target = 'OH*'
    elif ign_target == 'CHEX':
        ign_target = 'CH*'
    elif ign_target == 'P':
        ign_target = 'pressure'
    elif ign_target == 'T':
        ign_target = 'temperature'

    if ign_target not in ['pressure', 'temperature', 'OH', 'OH*', 'CH*', 'CH']:
        raise KeywordError(ign_target + ' not valid ignition target')

    if ign_type not in ['max', 'd/dt max', '1/2 max', 'min', 'd/dt max extrapolated']:
        raise KeywordError(ign_type + ' not valid ignition type')

    properties['type'] = ign_type
    properties['target'] = ign_target

    return properties