code: def geom_iter(self, g_nums):
          
          # Using the custom coded pack_tups to not have to care whether the
          #  input is iterable
          from .utils import pack_tups
  
          vals = pack_tups(g_nums)
          for val in vals:
              yield self.geom_single(val[0])
docs: Iterator over a subset of geometries.
  
          The indices of the geometries to be returned are indicated by an
          iterable of |int|\\ s passed as `g_nums`.
  
          As with :meth:`geom_single`, each geometry is returned as a
          length-3N |npfloat_| with each atom's x/y/z coordinates
          grouped together::
  
              [A1x, A1y, A1z, A2x, A2y, A2z, ...]
  
          In order to use NumPy `slicing or advanced indexing
          <http://docs.scipy.org/doc/numpy-1.10.0/reference/
          arrays.indexing.html>`__, :data:`geoms` must first be
          explicitly converted to |nparray|, e.g.::
  
              >>> x = opan.xyz.OpanXYZ(path='...')
              >>> np.array(x.geoms)[[2,6,9]]
  
          Parameters
          ----------
          g_nums
              length-R iterable of |int| --
              Indices of the desired geometries
  
          Yields
          ------
          geom
              length-3N |npfloat_| --
              Vectors of the atomic coordinates for each geometry
              indicated in `g_nums`
  
          Raises
          ------
          ~exceptions.IndexError
              If an item in `g_nums` is invalid (out of range)