code: def _adjust_stoichiometry(self):
          
          num_O = len(list(self.particles_by_name('O')))
          num_Si = len(list(self.particles_by_name('Si')))
          n_deletions = num_O - 2*num_Si
  
          bottom_Os = [atom for atom in self.particles()
                       if atom.name == 'O' and
                          atom.pos[2] < self._O_buffer and
                          len(self.bond_graph.neighbors(atom)) == 1]
  
          for _ in range(n_deletions):
              O1 = random.choice(bottom_Os)
              bottom_Os.remove(O1)
              self.remove(O1)
docs: Remove O's from underside of surface to yield a 2:1 Si:O ratio.