docs: def _extract_pc(d, root, pc, whichtables):
      """
      Extract all data from a PaleoData dictionary.
      :param dict d: PaleoData dictionary
      :param dict root: Time series root data
      :param str pc: paleoData or chronData
      :param str whichtables: all, meas, summ, or ens
      :return list _ts: Time series
      """
      logger_ts.info("enter extract_pc")
      _ts = []
      try:
          # For each table in pc
          for k, v in d[pc].items():
              if whichtables == "all" or whichtables == "meas":
                  for _table_name1, _table_data1 in v["measurementTable"].items():
                      _ts = _extract_table(_table_data1, copy.deepcopy(root), pc, _ts, "meas")
              if whichtables != "meas":
                  if "model" in v:
                      for _table_name1, _table_data1 in v["model"].items():
                          # get the method info for this model. This will be paired to all summ and ens table data
                          _method = _extract_method(_table_data1["method"])
                          if whichtables == "all" or whichtables == "summ":
                              if "summaryTable" in _table_data1:
                                  for _table_name2, _table_data2 in _table_data1["summaryTable"].items():
                                      # take a copy of this tso root
                                      _tso = copy.deepcopy(root)
                                      # add in the method details
                                      _tso.update(_method)
                                      # add in the table details
                                      _ts = _extract_table(_table_data2, _tso, pc, _ts, "summ")
                          if whichtables == "all" or whichtables == "ens":
                              if "ensembleTable" in _table_data1:
                                  for _table_name2, _table_data2 in _table_data1["ensembleTable"].items():
                                      _tso = copy.deepcopy(root)
                                      _tso.update(_method)
                                      _ts = _extract_table(_table_data2, _tso, pc, _ts, "ens")
  
      except Exception as e:
          logger_ts.warn("extract_pc: Exception: {}".format(e))
      return _ts