docs: def calc_registration(preregistration_map, anchors,
                        max_steps=2000, max_step_size=0.05, method='random'):
      '''
      calc_registration is a calculator that creates the registration coordinates.
      '''
      # if max steps is a tuple (max, stride) then a trajectory is saved into
      # the registered_map meta-data
      pmap = preregistration_map
      if is_tuple(max_steps) or is_list(max_steps):
          (max_steps, stride) = max_steps
          traj = [preregistration_map.coordinates]
          x = preregistration_map.coordinates
          for s in np.arange(0, max_steps, stride):
              x = mesh_register(
                  preregistration_map,
                  [['edge',      'harmonic',      'scale', 1.0],
                   ['angle',     'infinite-well', 'scale', 1.0],
                   ['perimeter', 'harmonic'],
                   anchors],
                  initial_coordinates=x,
                  method=method,
                  max_steps=stride,
                  max_step_size=max_step_size)
              traj.append(x)
          pmap = pmap.with_meta(trajectory=np.asarray(traj))
      else:
          x = mesh_register(
              preregistration_map,
              [['edge',      'harmonic',      'scale', 1.0],
               ['angle',     'infinite-well', 'scale', 1.0],
               ['perimeter', 'harmonic'],
               anchors],
              method=method,
              max_steps=max_steps,
              max_step_size=max_step_size)
      return pmap.copy(coordinates=x)