code: def __init__(self):
      app.Canvas.__init__(
          self,
          title="Molecular viewer",
          keys="interactive",
          size=(1200, 800),
      )
      self.ps = self.pixel_scale
  
      self.translate = 40
      self.program = gloo.Program(vertex, fragment)
      self.view = translate((0, 0, -self.translate))
      self.model = np.eye(4, dtype=np.float32)
      self.projection = np.eye(4, dtype=np.float32)
  
      self.apply_zoom()
  
      fname = load_data_file("molecular_viewer/micelle.npz")
      self.load_molecule(fname)
      self.load_data()
  
      self.theta = 0
      self.phi = 0
  
      gloo.set_state(depth_test=True, clear_color="black")
      self.timer = app.Timer("auto", connect=self.on_timer, start=True)
  
      self.show()
  
file_path: vispy/examples/demo/gloo/molecular_viewer.py
imports: import numpy
  from vispy import gloo
  from vispy import app
  from vispy.util.transforms import perspective, translate, rotate
  from vispy.io import load_data_file
label_desc: Use image node_id 1 to create a new Canvas object from inherited base classes: app with example: obj = Canvas()