code: def tabix_index(in_file, config, preset=None, tabix_args=None):
      
      in_file = os.path.abspath(in_file)
      out_file = in_file + ".tbi"
      if not utils.file_exists(out_file) or not utils.file_uptodate(out_file, in_file):
          # Remove old index files to prevent linking into tx directory
          utils.remove_safe(out_file)
          with file_transaction(config, out_file) as tx_out_file:
              tabix = tools.get_tabix_cmd(config)
              tx_in_file = os.path.splitext(tx_out_file)[0]
              utils.symlink_plus(in_file, tx_in_file)
              if tabix_args:
                  cmd = "{tabix} -f {tabix_args} {tx_in_file}"
              else:
                  preset = _guess_preset(in_file) if preset is None else preset
                  cmd = "{tabix} -f -p {preset} {tx_in_file}"
              do.run(cmd.format(**locals()), "tabix index %s" % os.path.basename(in_file))
      return out_file
docs: Index a file using tabix.