docs: def read_metadata_mat_file(meta_mat):
      """Read ILSVRC2012 metadata from the distributed MAT file.
  
      Parameters
      ----------
      meta_mat : str or file-like object
          The filename or file-handle for `meta.mat` from the
          ILSVRC2012 development kit.
  
      Returns
      -------
      synsets : ndarray, 1-dimensional, compound dtype
          A table containing ILSVRC2012 metadata for the "synonym sets"
          or "synsets" that comprise the classes and superclasses,
          including the following fields:
           * `ILSVRC2012_ID`: the integer ID used in the original
             competition data.
           * `WNID`: A string identifier that uniquely identifies
             a synset in ImageNet and WordNet.
           * `wordnet_height`: The length of the longest path to
             a leaf node in the FULL ImageNet/WordNet hierarchy
             (leaf nodes in the FULL ImageNet/WordNet hierarchy
             have `wordnet_height` 0).
           * `gloss`: A string representation of an English
             textual description of the concept represented by
             this synset.
           * `num_children`: The number of children in the hierarchy
             for this synset.
           * `words`: A string representation, comma separated,
             of different synoym words or phrases for the concept
             represented by this synset.
           * `children`: A vector of `ILSVRC2012_ID`s of children
             of this synset, padded with -1. Note that these refer
             to `ILSVRC2012_ID`s from the original data and *not*
             the zero-based index in the table.
           * `num_train_images`: The number of training images for
             this synset.
  
      """
      mat = loadmat(meta_mat, squeeze_me=True)
      synsets = mat['synsets']
      new_dtype = numpy.dtype([
          ('ILSVRC2012_ID', numpy.int16),
          ('WNID', ('S', max(map(len, synsets['WNID'])))),
          ('wordnet_height', numpy.int8),
          ('gloss', ('S', max(map(len, synsets['gloss'])))),
          ('num_children', numpy.int8),
          ('words', ('S', max(map(len, synsets['words'])))),
          ('children', (numpy.int8, max(synsets['num_children']))),
          ('num_train_images', numpy.uint16)
      ])
      new_synsets = numpy.empty(synsets.shape, dtype=new_dtype)
      for attr in ['ILSVRC2012_ID', 'WNID', 'wordnet_height', 'gloss',
                   'num_children', 'words', 'num_train_images']:
          new_synsets[attr] = synsets[attr]
      children = [numpy.atleast_1d(ch) for ch in synsets['children']]
      padded_children = [
          numpy.concatenate((c,
                             -numpy.ones(new_dtype['children'].shape[0] - len(c),
                                         dtype=numpy.int16)))
          for c in children
      ]
      new_synsets['children'] = padded_children
      return new_synsets