code: def add_bonds(self, neighbors, center, color=None, opacity=None,
                    radius=0.1):
          
          points = vtk.vtkPoints()
          points.InsertPoint(0, center.x, center.y, center.z)
          n = len(neighbors)
          lines = vtk.vtkCellArray()
          for i in range(n):
              points.InsertPoint(i + 1, neighbors[i].coords)
              lines.InsertNextCell(2)
              lines.InsertCellPoint(0)
              lines.InsertCellPoint(i + 1)
          pd = vtk.vtkPolyData()
          pd.SetPoints(points)
          pd.SetLines(lines)
  
          tube = vtk.vtkTubeFilter()
          if vtk.VTK_MAJOR_VERSION <= 5:
              tube.SetInputConnection(pd.GetProducerPort())
          else:
              tube.SetInputData(pd)
          tube.SetRadius(radius)
  
          mapper = vtk.vtkPolyDataMapper()
          mapper.SetInputConnection(tube.GetOutputPort())
  
          actor = vtk.vtkActor()
          actor.SetMapper(mapper)
          if opacity is not None:
              actor.GetProperty().SetOpacity(opacity)
          if color is not None:
              actor.GetProperty().SetColor(color)
          self.ren.AddActor(actor)
docs: Adds bonds for a site.
  
          Args:
              neighbors: Neighbors of the site.
              center: The site in the center for all bonds.
              color: Color of the tubes representing the bonds
              opacity: Opacity of the tubes representing the bonds
              radius: Radius of tube s representing the bonds