nodes: 0, module; 1, function_definition; 2, function_name:process_file_sorted_by_pmid; 3, parameters; 4, block; 5, identifier:file_name; 6, expression_statement; 7, expression_statement; 8, expression_statement; 9, for_statement; 10, return_statement; 11, comment:"""Processes a file and returns a dictionary mapping pmids to a list of
      statements corresponding to that pmid.
  
      Parameters
      ----------
      file_name : str
          A csxml file to process
  
      Returns
      -------
      s_dict : dict
          Dictionary mapping pmids to a list of statements corresponding to
          that pmid
      """; 12, assignment; 13, assignment; 14, identifier:statement; 15, call; 16, block; 17, identifier:s_dict; 18, identifier:s_dict; 19, call; 20, identifier:mp; 21, call; 22, attribute; 23, argument_list; 24, expression_statement; 25, identifier:defaultdict; 26, argument_list; 27, identifier:process_file; 28, argument_list; 29, identifier:mp; 30, identifier:iter_statements; 31, call; 32, identifier:list; 33, identifier:file_name; 34, keyword_argument; 35, attribute; 36, argument_list; 37, identifier:lazy; 38, True; 39, subscript; 40, identifier:append; 41, identifier:statement; 42, identifier:s_dict; 43, attribute; 44, subscript; 45, identifier:pmid; 46, attribute; 47, integer:0; 48, identifier:statement; 49, identifier:evidence
code: def process_file_sorted_by_pmid(file_name):
      """Processes a file and returns a dictionary mapping pmids to a list of
      statements corresponding to that pmid.
  
      Parameters
      ----------
      file_name : str
          A csxml file to process
  
      Returns
      -------
      s_dict : dict
          Dictionary mapping pmids to a list of statements corresponding to
          that pmid
      """
      s_dict = defaultdict(list)
      mp = process_file(file_name, lazy=True)
  
      for statement in mp.iter_statements():
          s_dict[statement.evidence[0].pmid].append(statement)
      return s_dict