code: def get_data(paths: List[PathLike]):
      task2bvs_old = None
      task2bvs_new = None
  
      for path in tqdm(paths):  # each experiment
          res = json.load(open(path, "r"))["eval"]
          ntask = len(res)
  
          assert ntask == 164
  
          if task2bvs_old is None and task2bvs_new is None:
              task2bvs_old = [[] for _ in range(ntask)]
              task2bvs_new = [[] for _ in range(ntask)]
              # i-th => task-i pass rate for an experiment
  
          for i, v in enumerate(res.values()):  # each task
              base = v["base"]
              plus = v["plus"]
              bbv = np.array([s == SUCCESS for s, _ in base])
              pbv = np.array([s == SUCCESS for s, _ in plus]) & bbv
              assert bbv.mean() >= pbv.mean()
  
              task2bvs_old[i].append(bbv)
              task2bvs_new[i].append(pbv)
  
      assert len(task2bvs_old) == len(task2bvs_new)
      return task2bvs_old, task2bvs_new
  
file_path: evalplus/tools/viz_passrate.py
imports: import json
  import os
  import pickle
  from os import PathLike
  from typing import List
  import matplotlib.pyplot
  import numpy
  from tqdm import tqdm
  from evalplus.data import get_human_eval_plus
  from evalplus.eval import estimate_pass_at_k
label_desc: Use image node_id 2 for calling a global function with example usage: get_data(paths) and returns: task2bvs_old,  task2bvs_new