code: def rotation(f, line = 'fast'):
      if f.unstructured:
          raise ValueError("Rotation requires a structured file")
      lines = { 'fast': f.fast,
                'slow': f.slow,
                'iline': f.iline,
                'xline': f.xline,
              }
      if line not in lines:
          error = "Unknown line {}".format(line)
          solution = "Must be any of: {}".format(' '.join(lines.keys()))
          raise ValueError('{} {}'.format(error, solution))
      l = lines[line]
      origin = f.header[0][segyio.su.cdpx, segyio.su.cdpy]
      cdpx, cdpy = origin[segyio.su.cdpx], origin[segyio.su.cdpy]
      rot = f.xfd.rotation( len(l),
                            l.stride,
                            len(f.offsets),
                            np.fromiter(l.keys(), dtype = np.intc) )
      return rot, cdpx, cdpy