code: def main(
      action: str,
      consequence: bool,
      tolerate_parse_error: bool,
      block_size: int,
      input_file: str,
      output_file: str,
      part_id: str,
      vep_cmd: str,
  ):
      vep_cmd = shlex.split(vep_cmd)
  
      if action == "csq_header":
          csq_header = get_csq_header(vep_cmd)
          with open(output_file, "w") as out:
              out.write(f"{csq_header}\n")
      else:
          assert action == "vep"
          results = run_vep(
              vep_cmd,
              input_file,
              block_size,
              consequence,
              tolerate_parse_error,
              part_id,
              os.environ,
          )
          with gzip.open(output_file, "wt") as out:
              out.write(f"variant\tvep\tpart_id\tblock_id\n")
              for v, a, part_id, block_id in results:
                  out.write(f"{v}\t{a}\t{part_id}\t{block_id}\n")
  
imports: import gzip
  import io
  import json
  import os
  import re
  import shlex
  import subprocess
  import sys
  import time
  from typing import List
label_desc: Use image node_id 5 for calling a global function with example usage: main(action, consequence, tolerate_parse_error, block_size, input_file, output_file, part_id, vep_cmd) without return types