code: def compute_score(self, gts, res):
      assert gts.keys() == res.keys()
      imgIds = gts.keys()
      scores = []
  
      eval_line = "EVAL"
      self.lock.acquire()
      for i in imgIds:
          assert len(res[i]) == 1
          stat = self._stat(res[i][0], gts[i])
          eval_line += " ||| {}".format(stat)
  
      self.meteor_p.stdin.write("{}\n".format(eval_line).encode())
      self.meteor_p.stdin.flush()
      for _ in range(0, len(imgIds)):
          scores.append(float(self.meteor_p.stdout.readline().strip()))
      score = float(self.meteor_p.stdout.readline().strip())
      self.lock.release()
  
      return score, scores
  
file_path: graph4nlp/graph4nlp/pytorch/modules/evaluation/meteor_tool/meteor.py
imports: import os
  import subprocess
  import threading
label_desc: Use image node_id 2 for calling the Meteor obj's underlying member method code with example usage: obj.compute_score(gts, res) and returns: score,  scores