docs: def gen_gmfs(gmf_set):
      """
      Generate GMF nodes from a gmf_set
      :param gmf_set: a sequence of GMF objects with attributes
      imt, sa_period, sa_damping, event_id and containing a list
      of GMF nodes with attributes gmv and location. The nodes
      are sorted by lon/lat.
      """
      for gmf in gmf_set:
          gmf_node = Node('gmf')
          gmf_node['IMT'] = gmf.imt
          if gmf.imt == 'SA':
              gmf_node['saPeriod'] = str(gmf.sa_period)
              gmf_node['saDamping'] = str(gmf.sa_damping)
          gmf_node['ruptureId'] = gmf.event_id
          sorted_nodes = sorted(gmf)
          gmf_node.nodes = (
              Node('node', dict(gmv=n.gmv, lon=n.location.x, lat=n.location.y))
              for n in sorted_nodes)
          yield gmf_node