docstr: Change formatting Returns list of steps in reasoning chain.
docstr_tok: ["Change","formatting","Returns","list","of","steps","in","reasoning","chain","."]
code: def parse_chain(self, chain: List[str]) -> List[str]:
      """
      Change formatting Returns list of steps in reasoning chain.
      """
      steps = []
      for step in chain:
          if len(step) > 0:
              step = step.replace("\t", " ")
              # "dots" are not always generated, to ensure uniformity
              while len(step) > 0 and (
                  step[-1] == "." or step[-1] == " "
              ):
                  step = step[:-1]
              if len(step) == 0:
                  print(
                      f"WARNING: Found step without text in chain {chain}"
                  )
              else:
                  steps.append(step)
          else:
              print(f"WARNING: Found empty step in chain {chain}")
      return steps
  
file_path: ParlAI/projects/roscoe/synthetic_evaluation/synthetic_roscoe.py
imports: import json
  import os
  from typing import List
  from projects.roscoe.score import EMBEDDING_MODEL_NAMES, EMBEDDING_MODELS, SEQ_EMB_MODEL_TYPES, Chain, Evaluator, REASONING_SCORES, SCORE_GROUPS, select_semantic_scores, select_inference_scores, select_language_scores, SENT_TRANS
  from projects.roscoe.utils import print_and_reset_max_gpu_memory, save_scores
  from parlai.core.params import ParlaiParser
label_desc: Use image node_id 2 for calling the SyntheticChain obj's underlying member method code with example usage: obj.parse_chain(chain) and returns: steps