class_docstr: A reader for OME-NGFF files with the .zarr extension. Supports both 'normal' and
  'HCS' storage modes.
  
  OME-NGFF files below spec version 0.4 which are stored on S3/object storage
  should have the zarr.convenience.consolidate_metadata() function run on them
  to provide optimal performance over a network.
  
  Other non-OME .zarr format images may be readable, but are not strictly supported.
docstr: Should return a dictionary with the following keys:
  Key names are in cellprofiler_core.constants.image
  MD_SIZE_S - int reflecting the number of series
  MD_SIZE_X - list of X dimension sizes, one element per series.
  MD_SIZE_Y - list of Y dimension sizes, one element per series.
  MD_SIZE_Z - list of Z dimension sizes, one element per series.
  MD_SIZE_C - list of C dimension sizes, one element per series.
  MD_SIZE_T - list of T dimension sizes, one element per series.
  MD_SERIES_NAME - list of series names, one element per series.
docstr_tok: ["Should","return","a","dictionary","with","the","following","keys",":","Key","names","are","in","cellprofiler_core.constants.image","MD_SIZE_S","-","int","reflecting","the","number","of","series","MD_SIZE_X","-","list","of","X","dimension","sizes",",","one","element","per","series",".","MD_SIZE_Y","-","list","of","Y","dimension","sizes",",","one","element","per","series",".","MD_SIZE_Z","-","list","of","Z","dimension","sizes",",","one","element","per","series",".","MD_SIZE_C","-","list","of","C","dimension","sizes",",","one","element","per","series",".","MD_SIZE_T","-","list","of","T","dimension","sizes",",","one","element","per","series",".","MD_SERIES_NAME","-","list","of","series","names",",","one","element","per","series","."]
code: def get_series_metadata(self):
      """Should return a dictionary with the following keys:
      Key names are in cellprofiler_core.constants.image
      MD_SIZE_S - int reflecting the number of series
      MD_SIZE_X - list of X dimension sizes, one element per series.
      MD_SIZE_Y - list of Y dimension sizes, one element per series.
      MD_SIZE_Z - list of Z dimension sizes, one element per series.
      MD_SIZE_C - list of C dimension sizes, one element per series.
      MD_SIZE_T - list of T dimension sizes, one element per series.
      MD_SERIES_NAME - list of series names, one element per series.
      """
      self.planes_extracted = True
      meta_dict = {
          MD_SIZE_S: 0,
          MD_SIZE_X: [],
          MD_SIZE_Y: [],
          MD_SIZE_Z: [],
          MD_SIZE_C: [],
          MD_SIZE_T: [],
          MD_SERIES_NAME: [],
      }
      reader = self.get_reader()
      arrays = self.find_arrays(
          reader, multiscales=False, first_only=False
      )
      self.build_series_map(arrays)
      series_count = len(arrays)
      meta_dict[MD_SIZE_S] = series_count
      for idx, (array, series_name) in enumerate(arrays):
          dims = list(array.shape)
          meta_dict[MD_SIZE_X].append(dims.pop())
          meta_dict[MD_SIZE_Y].append(dims.pop())
          meta_dict[MD_SIZE_Z].append(dims.pop() if dims else 1)
          meta_dict[MD_SIZE_C].append(dims.pop() if dims else 1)
          meta_dict[MD_SIZE_T].append(dims.pop() if dims else 1)
          meta_dict[MD_SERIES_NAME].append(series_name)
      return meta_dict
  
imports: import numpy
  import zarr
  from ..constants.image import MD_SIZE_S, MD_SIZE_C, MD_SIZE_Z, MD_SIZE_T, MD_SIZE_Y, MD_SIZE_X, MD_SERIES_NAME
  from ..constants.reader import ZARR_FILETYPE
  from ..reader import Reader
  import os
  import re
  import logging
  from lxml import etree
label_desc: Use image node_id 10 for calling the NGFFReader obj's underlying member method code with example usage: obj.get_series_metadata() and returns: meta_dict