class_docstr: Class to be inherited by any analysis/explainer block.
class_docstr_tok: ["Class","to","be","inherited","by","any","analysis\/explainer","block","."]
docstr: This method should be called once during the analysis phase, or not called at all.
  It computes any information that the block may either output to the model analysis object,
  or use at inference time when `.explain()` is called (in this case, make sure all needed
  objects are added to the runtime analyzer so that `.explain()` can access them).
  
  :param info: Dictionary where any new information or objects are added. The next analysis block will use
  the output of the previous block as a starting point.
  :param kwargs: Dictionary with named variables from either the core analysis or the rest of the prediction
  pipeline.
docstr_tok: ["This","method","should","be","called","once","during","the","analysis","phase",",","or","not","called","at","all",".","It","computes","any","information","that","the","block","may","either","output","to","the","model","analysis","object",",","or","use","at","inference","time","when","`",".explain","(",")","`","is","called","(","in","this","case",",","make","sure","all","needed","objects","are","added","to","the","runtime","analyzer","so","that","`",".explain","(",")","`","can","access","them",")",".",":","param","info",":","Dictionary","where","any","new","information","or","objects","are","added",".","The","next","analysis","block","will","use","the","output","of","the","previous","block","as","a","starting","point",".",":","param","kwargs",":","Dictionary","with","named","variables","from","either","the","core","analysis","or","the","rest","of","the","prediction","pipeline","."]
code: def analyze(
      self, info: Dict[str, object], **kwargs
  ) -> Dict[str, object]:
      """
      This method should be called once during the analysis phase, or not called at all.
      It computes any information that the block may either output to the model analysis object,
      or use at inference time when `.explain()` is called (in this case, make sure all needed
      objects are added to the runtime analyzer so that `.explain()` can access them).
  
      :param info: Dictionary where any new information or objects are added. The next analysis block will use
      the output of the previous block as a starting point.
      :param kwargs: Dictionary with named variables from either the core analysis or the rest of the prediction
      pipeline.
      """
      log.info(
          f"{self.__class__.__name__}.analyze() has not been implemented, no modifications will be done to the model analysis."
      )  # noqa
      return info
  
imports: from typing import Tuple, Dict, Optional
  import pandas
  from lightwood.helpers.log import log
label_desc: Use image node_id 2 for calling the BaseAnalysisBlock obj's underlying member method code with example usage: obj.analyze(info) and returns: info