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.
docstr: Returns the Bayesian Model read from the file/str.
  
  Parameters
  ----------
  state_name_type: int, str or bool (default: str)
      The data type to which to convert the state names of the variables.
  
  Example
  ----------
  >>> from pgmpy.readwrite import BIFReader
  >>> reader = BIFReader("bif_test.bif")
  >>> reader.get_model()
  <pgmpy.models.BayesianNetwork.BayesianNetwork object at 0x7f20af154320>
code: def get_model(self, state_name_type=str):
      """
      Returns the Bayesian Model read from the file/str.
  
      Parameters
      ----------
      state_name_type: int, str or bool (default: str)
          The data type to which to convert the state names of the variables.
  
      Example
      ----------
      >>> from pgmpy.readwrite import BIFReader
      >>> reader = BIFReader("bif_test.bif")
      >>> reader.get_model()
      <pgmpy.models.BayesianNetwork.BayesianNetwork object at 0x7f20af154320>
      """
      try:
          model = BayesianNetwork()
          model.add_nodes_from(self.variable_names)
          model.add_edges_from(self.variable_edges)
          model.name = self.network_name
  
          tabular_cpds = []
          for var in sorted(self.variable_cpds.keys()):
              values = self.variable_cpds[var]
              sn = {
                  p_var: list(
                      map(state_name_type, self.variable_states[p_var])
                  )
                  for p_var in self.variable_parents[var]
              }
              sn[var] = list(
                  map(state_name_type, self.variable_states[var])
              )
              cpd = TabularCPD(
                  var,
                  len(self.variable_states[var]),
                  values,
                  evidence=self.variable_parents[var],
                  evidence_card=[
                      len(self.variable_states[evidence_var])
                      for evidence_var in self.variable_parents[var]
                  ],
                  state_names=sn,
              )
              tabular_cpds.append(cpd)
  
          model.add_cpds(*tabular_cpds)
  
          if self.include_properties:
              for node, properties in self.variable_properties.items():
                  for prop in properties:
                      prop_name, prop_value = map(
                          lambda t: t.strip(), prop.split("=")
                      )
                      model.nodes[node][prop_name] = prop_value
  
          return model
  
      except AttributeError:
          raise AttributeError(
              "First get states of variables, edges, parents and network name"
          )
  
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 14 for calling the BIFReader obj's underlying member method code with example usage: obj.get_model(state_name_type) and returns: model