docs: def _load(self, layer=None):
          """
          Load or update all or part of :attr:`model`.
  
          :param layer: Optionally load only specified layer.
          :type layer: str
          """
          # open model file for reading and convert JSON object to dictionary
          # read and load JSON parameter map file as "parameters"
          with open(self.param_file, 'r') as param_file:
              file_params = json.load(param_file)
              for layer, params in file_params.iteritems():
                  # update parameters from file
                  self.parameters[layer] = ModelParameter(**params)
          # if layer argument spec'd then only update/load spec'd layer
          if not layer or not self.model:
              # update/load model if layer not spec'd or if no model exists yet
              # TODO: separate model and parameters according to comments in #78
              self.model = copy.deepcopy(self.parameters)
          else:
              # convert non-sequence to tuple
              layers = _listify(layer)
              # update/load layers
              for layer in layers:
                  self.model[layer] = copy.deepcopy(self.parameters[layer])