code: def _init_from_dict(self, model_dict):
          sort_func = lambda symbol: symbol.name
          self.model_dict = OrderedDict(sorted(model_dict.items(),
                                               key=lambda i: sort_func(i[0])))
          ordered = list(toposort(self.connectivity_mapping))
          independent = sorted(ordered.pop(0), key=sort_func)
          self.dependent_vars = sorted(ordered.pop(-1), key=sort_func)
          self.interdependent_vars = sorted(
              [item for items in ordered for item in items],
              key=sort_func
          )
          self.independent_vars = [s for s in independent if
                                   not isinstance(s, Parameter) and not s in self]
          self.params = [s for s in independent if isinstance(s, Parameter)]
          try:
              assert not any(isinstance(var, Parameter)
                             for var in self.dependent_vars)
              assert not any(isinstance(var, Parameter)
                             for var in self.interdependent_vars)
          except AssertionError:
              raise ModelError('`Parameter`\'s can not feature in the role '
                               'of `Variable`')
          self.sigmas = {var: Variable(name='sigma_{}'.format(var.name))
                         for var in self.dependent_vars}