<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _get_impact_info(vcf_reader):
 """Retrieve impact parsing information from INFO header. """

    ImpactInfo = collections.namedtuple("ImpactInfo", "header, gclass, id")
    KEY_2_CLASS = {
        'CSQ': geneimpacts.VEP,
        'ANN': geneimpacts.SnpEff,
        'BCSQ': geneimpacts.BCFT}
    for l in (x.strip() for x in _from_bytes(vcf_reader.raw_header).split("\n")):
        if l.startswith("##INFO"):
            patt = re.compile("(\w+)=(\"[^\"]+\"|[^,]+)")
            stub = l.split("=<")[1].rstrip(">")
            d = dict(patt.findall(_from_bytes(stub)))
            if d["ID"] in KEY_2_CLASS:
                return ImpactInfo(_parse_impact_header(d), KEY_2_CLASS[d["ID"]], d["ID"])