def submesh(self, vertices, tag=None, tag_tess=Ellipsis):
subt = self.tess.subtess(vertices, tag=tag_tess)<EOL>if subt is self.tess: return self<EOL>vidcs = self.tess.index(subt.labels)<EOL>props = self._properties<EOL>if props is not None and props.row_count > <NUM_LIT:0>:<EOL><INDENT>props = props[vidcs]<EOL><DEDENT>coords = self.coordinates[:,vidcs]<EOL>md = self.meta_data.set(tag, self) if pimms.is_str(tag)   elseself.meta_data.set('<STR_LIT>', self) if tag is True elseself.meta_data<EOL>dat = {'<STR_LIT>': coords, '<STR_LIT>': subt}<EOL>if props is not self._properties: dat['<STR_LIT>'] = props<EOL>if md is not self.meta_data: dat['<STR_LIT>'] = md<EOL>return self.copy(**dat)<EOL>
mesh.submesh(vertices) yields a sub-mesh of the given mesh object that only contains the
  given vertices, which may be specified as a boolean vector or as a list of vertex labels.
  Faces and edges are trimmed automatically, but the vertex labels for the new vertices
  remain the same as in the original graph.
The optional argument tag may be set to True, in which case the new mesh's meta-data
will contain the key 'supermesh' whose value is the original tesselation tess; alternately
tag may be a string in which case it is used as the key name in place of 'supermesh'.
Additionally, the optional argument tess_tag is the equivalent to the tag option except that
it is passed along to the mesh's tesselation object; the value Ellipsis (default) can be
given in order to specify that tag_tess should take the same value as tag.