class_docstr: Initializes a BIFReader object.
  
  Parameters
  ----------
  path : file or str
      File of bif data
  
  string : str
      String of bif data
  
  include_properties: boolean
      If True, gets the properties tag from the file and stores in graph properties.
  
  n_jobs: int (default: -1)
      Number of jobs to run in parallel. `-1` means use all processors.
  
  Examples
  --------
  # dog-problem.bif file is present at
  # http://www.cs.cmu.edu/~javabayes/Examples/DogProblem/dog-problem.bif
  >>> from pgmpy.readwrite import BIFReader
  >>> reader = BIFReader("bif_test.bif")
  <pgmpy.readwrite.BIF.BIFReader object at 0x7f2375621cf8>
  >>> model = reader.get_model()
  
  Reference
  ---------
  [1] Geoff Hulten and Pedro Domingos. The interchange format for bayesian networks.
      http://www.cs.washington.edu/dm/vfml/appendixes/bif.htm, 2003.
code: def _get_values_from_block(self, block):
      names = self.probability_expr.searchString(block)
      var_name, parents = names[0][0], names[0][1:]
      cpds = self.cpd_expr.searchString(block)
  
      # Check if the block is a table.
      if bool(re.search(".*\n[ ]*(table|default) .*\n.*", block)):
          arr = np.array([float(j) for i in cpds for j in i])
          arr = arr.reshape(
              (
                  len(self.variable_states[var_name]),
                  arr.size // len(self.variable_states[var_name]),
              )
          )
      else:
          arr_length = np.prod(
              [len(self.variable_states[var]) for var in parents]
          )
          arr = np.zeros(
              (len(self.variable_states[var_name]), arr_length)
          )
          values_dict = {}
          for prob_line in cpds:
              states = prob_line[: len(parents)]
              vals = [float(i) for i in prob_line[len(parents) :]]
              values_dict[tuple(states)] = vals
          for index, combination in enumerate(
              product(*[self.variable_states[var] for var in parents])
          ):
              arr[:, index] = values_dict[combination]
      return var_name, arr
  
imports: import collections
  import re
  from copy import copy
  from itertools import product
  from string import Template
  import numpy
  import pyparsing
  from joblib import Parallel, delayed
  from pyparsing import CharsNotIn, Group, OneOrMore, Optional, Suppress, Word, ZeroOrMore, alphanums, cppStyleComment, nums, printables
  from pgmpy.factors.discrete import TabularCPD
  from pgmpy.models import BayesianNetwork
  from pgmpy.utils import compat_fns
label_desc: Use image node_id 11 for calling the BIFReader obj's underlying member method code with example usage: obj._get_values_from_block(block) and returns: var_name,  arr