docs: def cut_cuboid(
              self,
              a=20,
              b=None,
              c=None,
              origin=None,
              outside_sliced=True,
              preserve_bonds=False):
          """Cut a cuboid specified by edge and radius.
  
          Args:
              a (float): Value of the a edge.
              b (float): Value of the b edge. Takes value of a if None.
              c (float): Value of the c edge. Takes value of a if None.
              origin (list): Please note that you can also pass an
                  integer. In this case it is interpreted as the index
                  of the atom which is taken as origin.
              outside_sliced (bool): Atoms outside/inside the sphere are
                  cut away.
              preserve_bonds (bool): Do not cut covalent bonds.
  
          Returns:
              Cartesian:
          """
          if origin is None:
              origin = np.zeros(3)
          elif pd.api.types.is_list_like(origin):
              origin = np.array(origin, dtype='f8')
          else:
              origin = self.loc[origin, ['x', 'y', 'z']]
          b = a if b is None else b
          c = a if c is None else c
  
          sides = np.array([a, b, c])
          pos = self.loc[:, ['x', 'y', 'z']]
          if outside_sliced:
              molecule = self[((pos - origin) / (sides / 2)).max(axis=1) < 1.]
          else:
              molecule = self[((pos - origin) / (sides / 2)).max(axis=1) > 1.]
  
          if preserve_bonds:
              molecule = self._preserve_bonds(molecule)
          return molecule