code: def convert(cgi_input, twobit_ref, twobit_name, var_only=False):
      
  
      # Set up CGI input. Default is to assume a str generator.
      if isinstance(cgi_input, str) or isinstance(cgi_input, unicode):
          cgi_input = auto_zip_open(cgi_input, 'rb')
  
      # Set up TwoBitFile for retrieving reference sequences.
      reference = twobitreader.TwoBitFile(twobit_ref)
  
      # Output header.
      header = make_header(twobit_name).split('\n')
      for line in header:
          yield line
  
      while True:
          line = cgi_input.readline()
          if not line:
              break
          line = line.decode('utf-8')
  
          # Skip header lines.
          if re.search(r'^\W*$', line) or line.startswith('#'):
              continue
  
          # Store header row labels.
          if line.startswith('>'):
              header_data = line.lstrip('>').rstrip('\n').split('\t')
              header = {header_data[i]: i for i in range(len(header_data))}
              continue
  
          # If we reach this point, this is a line that contains data.
          data = line.rstrip('\n').split("\t")
  
          out = process_next_position(
              data=data, cgi_input=cgi_input, header=header, reference=reference,
              var_only=var_only)
  
          # process_next_position returns an array of one or more lines
          if out:
              for line in out:
                  yield line
docs: Generator that converts CGI var data to VCF-formated strings