code: def get_vcf_metadata(path):
      """Extract metadata from VCF header.
  
      Examples
      --------
  
      >>> hl.get_vcf_metadata('data/example2.vcf.bgz')  # doctest: +SKIP_OUTPUT_CHECK
      {'filter': {'LowQual': {'Description': ''}, ...},
       'format': {'AD': {'Description': 'Allelic depths for the ref and alt alleles in the order listed',
                         'Number': 'R',
                         'Type': 'Integer'}, ...},
       'info': {'AC': {'Description': 'Allele count in genotypes, for each ALT allele, in the same order as listed',
                       'Number': 'A',
                       'Type': 'Integer'}, ...}}
  
      Notes
      -----
  
      This method parses the VCF header to extract the `ID`, `Number`,
      `Type`, and `Description` fields from FORMAT and INFO lines as
      well as `ID` and `Description` for FILTER lines. For example,
      given the following header lines:
  
      .. code-block:: text
  
          ##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
          ##FILTER=<ID=LowQual,Description="Low quality">
          ##INFO=<ID=MQ,Number=1,Type=Float,Description="RMS Mapping Quality">
  
      The resulting Python dictionary returned would be
  
      .. code-block:: python
  
          metadata = {'filter': {'LowQual': {'Description': 'Low quality'}},
                      'format': {'DP': {'Description': 'Read Depth',
                                        'Number': '1',
                                        'Type': 'Integer'}},
                      'info': {'MQ': {'Description': 'RMS Mapping Quality',
                                      'Number': '1',
                                      'Type': 'Float'}}}
  
      which can be used with :func:`.export_vcf` to fill in the relevant fields in the header.
  
      Parameters
      ----------
      path : :class:`str`
          VCF file(s) to read. If more than one file is given, the first
          file is used.
  
      Returns
      -------
      :obj:`dict` of :class:`str` to (:obj:`dict` of :obj:`str` to (:obj:`dict` of :obj:`str` to :obj:`str`))
      """
  
      return Env.backend().parse_vcf_metadata(path)
  
imports: import os
  import re
  from collections import defaultdict
  import avro.schema
  from avro.datafile import DataFileReader
  from avro.io import DatumReader
  import hail
  from hail import ir
  from hail.expr import StructExpression, LocusExpression, expr_array, expr_float64, expr_str, expr_numeric, expr_call, expr_bool, expr_int32, to_expr, analyze
  from hail.expr.types import hail_type, tarray, tfloat64, tstr, tint32, tstruct, tcall, tbool, tint64, tfloat32
  from hail.genetics.reference_genome import reference_genome_type
  from hail.ir.utils import parse_type
  from hail.matrixtable import MatrixTable
  from hail.methods.misc import require_biallelic, require_row_key_variant, require_col_key_str
  from hail.table import Table
  from hail.typecheck import typecheck, nullable, oneof, dictof, anytype, sequenceof, enumeration, sized_tupleof, numeric, table_key_type, char
  from hail.utils import new_temp_file
  from hail.utils.deduplicate import deduplicate
  from hail.utils.java import Env, FatalError, jindexed_seq_args, warning
  from hail.utils.java import info
  from hail.utils.misc import wrap_to_list, plural
  from .import_lines_helpers import split_lines, should_remove_line
label_desc: Use image node_id 18 for calling a global function with example usage: get_vcf_metadata(path) and returns: Env