docs: def scaffold_coords(rings):
      """ assign scaffold coordinate and angle
      {node: (coords, angle)}
      """
      rs = deque(sorted(rings, key=len, reverse=True))
      base = rs.popleft()
      first = base[0]
      coords = {first: [0, 0, 0, 1]}
      attach_spiro(coords, base, first)
      # display(coords)
      while rs:
          r = rs.popleft()
          isec = list(set(coords) & set(r))
          if not isec:
              rs.append(r)
          elif len(isec) == 1:  # spiro
              attach_spiro(coords, r, isec)
          elif len(isec) == 2:  # fuse
              attach_fused(coords, r, isec)
          else:  # bridge or append
              bridge(coords, r, isec)
          # display(coords)
      return coords