code: def get_model(is_netfree=False, without_reset=False, seeds=None, effective=False):
      
      try:
          if seeds is not None or is_netfree:
              m = ecell4_base.core.NetfreeModel()
          else:
              m = ecell4_base.core.NetworkModel()
  
          for sp in SPECIES_ATTRIBUTES:
              m.add_species_attribute(sp)
          for rr in REACTION_RULES:
              m.add_reaction_rule(rr)
  
          if not without_reset:
              reset_model()
  
          if seeds is not None:
              return m.expand(seeds)
  
          if isinstance(m, ecell4_base.core.NetfreeModel):
              m.set_effective(effective)
      except Exception as e:
          reset_model()
          raise e
  
      return m
docs: Generate a model with parameters in the global scope, ``SPECIES_ATTRIBUTES``
      and ``REACTIONRULES``.
  
      Parameters
      ----------
      is_netfree : bool, optional
          Return ``NetfreeModel`` if True, and ``NetworkModel`` if else.
          Default is False.
      without_reset : bool, optional
          Do not reset the global variables after the generation if True.
          Default is False.
      seeds : list, optional
          A list of seed ``Species`` for expanding the model.
          If this is not None, generate a ``NetfreeModel`` once, and return a
          ``NetworkModel``, which is an expanded form of that with the given seeds.
          Default is None.
      effective : bool, optional
          See ``NetfreeModel.effective`` and ``Netfree.set_effective``.
          Only meaningfull with option ``is_netfree=True``.
          Default is False
  
      Returns
      -------
      model : NetworkModel, NetfreeModel