rweigel / cdawmeta

BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Handling the `FORMAT` attribute #10

Open rweigel opened 2 months ago

rweigel commented 2 months ago

For the HAPI server when output=csv is used, we would like to use the precision part when printing floating point values when the variable has a FORMAT or FORM_PTR attribute.

Two places that seem to handle the FORMAT value are

The following code produces the table that follows it. The first column of the table is the given FORMAT and the third column is the parsed format. If the parsed value is '', the FORMAT value did not have precision information or was invalid. The plan is to include a x_FORMAT attribute in the metadata for a HAPI parameter if a valid one exists. If none exists for a parameter of type=double,.7g will be used if the parameter was stored in the CDF as a 32-bit float and .16g will be used for 32-bit floats (as done in CDAWlib). Note that Nand uses .3e for both, which does not seem to be a good choice.

Values of ? and in the first column were not actually in CDF Master metadata. For the SQL table, ? was inserted for all ISTP attributes when a variable had no VariableAttributes (e.g., https://hapi-server.org/meta/cdaweb/variable/#FORMAT=?) and was inserted when FORMAT=' ' (a single space).

Please review the output of the code at the bottom of this page.

If you want to determine where a given format specifier occurs, use, for example

import re

def f2c_specifier(f_template, cdf_type):

  """Extract the precision part of a Fortran format string found as a FORMAT
  value. 
  """

  # See also
  # https://github.com/rweigel/CDAWlib/blob/952a28b08658413081e75714bd3b9bd3ba9167b9/cdfjson__define.pro#L132
  # https://git.smce.nasa.gov/spdf/hapi-nand/-/blob/main/src/java/org/hapistream/hapi/server/cdaweb/CdawebUtil.java?ref_type=heads#L23

  if isinstance(f_template, list):
    fmts = []
    for f in f_template:
      fmt = f2c_specifier(f, cdf_type)
      if fmt == "":
        # If any not valid, don't use any
        return ""
      else:
        fmts.append(fmt)
    return fmts

  defaults = {
    'CDF_FLOAT': '.7g',
    'CDF_DOUBLE': '.17g',
    'CDF_REAL4': '.7g',
    'CDF_REAL8': '.17g'
  }

  f_template = f_template.lower().strip()
  if f_template == "":
    return ""

  # No precision.
  if "." not in f_template:
    return ""

  # Drop any string or integer related format string.
  fmt = re.sub(r".*[a|s|c|z|b|i].*", "", f_template)
  if fmt == "":
    return fmt

  # e.g., E11.4 => .4e, F8.1 => .1f
  fmt = re.sub(r".*([f|e|g])([0-9].*)\.([0-9].*)", r".\3\1", f_template)

  # Test the format string
  try:
    templ = "{:" + fmt + "}"
    templ.format(1.0)
  except:
    #print("Failed: " + fmt)
    return ""

  return fmt

if __name__ == "__main__":
  import cdawmeta
  kwargs = {
    "id": None,
    "data_dir": "../data",
    "embed_data": True,
    "update": False,
    "max_workers": 1,
    "diffs": False,
    "restructure_master": True,
    "no_spase": True,
    "no_orig_data": True
  }
  meta = cdawmeta.metadata(**kwargs)

  formats = []
  for id in meta.keys():
    if "master" not in meta[id]:
      continue
    master = meta[id]["master"]['data']
    if master is None or "CDFVariables" not in master:
      continue
    variables = master['CDFVariables']
    for variable_name, variable in variables.items():
      if "VarAttributes" not in variable:
        continue
      if "VarDescription" not in variable:
        continue
      if 'DataType' in variable['VarDescription']:
        cdf_type = variable['VarDescription']['DataType']
      else:
        continue

      if 'FORMAT' in variable['VarAttributes']:
        format = variable['VarAttributes']['FORMAT']
        formats.append(f"{format}; {cdf_type}; {f2c_specifier(format, cdf_type)}")

      if 'FORM_PTR' in variable['VarAttributes']:
        FORM_PTR = variable['VarAttributes']['FORM_PTR']
        if FORM_PTR in variables:
          variable = variables[FORM_PTR]
          if 'VarData' in variable:
            VarData = variable['VarData']
            if VarData[0][0:2] == '10':
              # https://github.com/rweigel/cdawmeta/issues/11
              print(id, variable_name, VarData)
            format = ", ".join(variable['VarData'])
            formats.append(f"{format}; {cdf_type}; {','.join(f2c_specifier(VarData, cdf_type))}")

  uniques = list(set(formats))
  for unique in uniques:
    unique = unique.split("; ")
    if len(unique[0].split(",")) > 1:
      if len(unique[2].split(",")) == 0:
        print(f"[{unique[0]}] {unique[1]}' => ''")
      else:
        print(f"[{unique[0]}] {unique[1]}' => [{unique[2]}]")
    else:
      print(f"'{unique[0]}' {unique[1]} => '{unique[2]}'")
VOYAGER1_PLS_ELECTRONS_E1 Channel ['10   - 14,5.............', '14.5 - 19.3.............', '19.3 - 24.5.............', '24.5 - 30...............', '30   - 36...............', '36   - 42.4.............', '42.4 - 49.3.............', '49.3 - 56.7.............', '56.7 - 64.7.............', '64.7 - 73.2.............', '73.2 - 82.4.............', '82.4 - 92.3.............', '92.3 - 102.9............', '102.9 - 114.3...........', '114.3 - 126.6...........', '126.6 - 139.7...........']
VOYAGER1_PLS_ELECTRONS_E2 Channel ['10   - 14,5.............', '14.5 - 19.3.............', '19.3 - 24.5.............', '24.5 - 30...............', '30   - 36...............', '36   - 42.4.............', '42.4 - 49.3.............', '49.3 - 56.7.............', '56.7 - 64.7.............', '64.7 - 73.2.............', '73.2 - 82.4.............', '82.4 - 92.3.............', '92.3 - 102.9............', '102.9 - 114.3...........', '114.3 - 126.6...........', '126.6 - 139.7...........']
VOYAGER1_PLS_IONS_L Channel ['10.0 - 30.0.............', '30.0 - 56.7.............', '56.7 - 92.3.............', '92.3 - 139.7............', '139.7 - 203.0...........', '203.0 - 287.4...........', '287.4 - 399.9...........', '399.9 - 550.0...........', '550.0 - 750.1...........', '750.1 - 1016.9..........', '1017.0 - 1372.0.........', '1372.0 - 1847.3.........', '1847.3 - 2480.1.........', '2480.1 - 3324.0.........', '3324.0 - 4449.3.........', '4449.3 - 5949.9.........']
VOYAGER1_PLS_IONS_M Channel ['10.0 -12.2..............', '12.2 - 14.5.............', '14.5 - 16.8.............', '16.8 - 19.3.............', '19.3 - 21.8.............', '21.8 - 24.5.............', '24.5 - 27.2.............', '27.2 - 30.0.............', '30.0 - 32.9.............', '32.9 - 36.0.............', '36.0 - 39.1.............', '39.1 - 42.4.............', '42.4 - 45.8.............', '45.8 - 49.3.............', '49.3 - 52.9.............', '52.9 - 56.7.............', '56.7 - 60.6.............', '60.6 - 64.7.............', '64.7 - 68.9.............', '68.9 - 73.2.............', '73.2 - 77.7.............', '77.7 - 82.4.............', '82.4 - 87.2.............', '87.2 - 92.3.............', '92.3 - 97.5.............', '97.5 - 102.9............', '102.9 - 108.5...........', '108.5 - 114.3...........', '114.3 - 120.3...........', '120.3 - 126.5...........', '126.5 - 133.0...........', '133.0 - 139.7...........', '139.7 - 146.7...........', '146.7 - 153.9...........', '153.9 - 161.3...........', '161.3 - 169.1...........', '169.0 - 177.1...........', '177.1 - 185.4...........', '185.4 - 194.0...........', '194.0 - 202.9...........', '202.9 - 212.3...........', '212.3 - 221.9...........', '221.9 - 238.1...........', '231.8 - 242.1...........', '242.1 - 252.8...........', '252.8 - 263.9...........', '263.9 - 275.4...........', '275.4 - 287.3...........', '287.3 - 299.7...........', '299.7 - 312.5...........', '312.5 - 325.8...........', '325.8 - 339.6...........', '339.6 - 353.8...........', '353.8 - 368.6...........', '368.6 - 383.9...........', '383.9 - 399.9...........', '399.9 - 416.3...........', '416.3 - 433.4...........', '433.4 - 451.1...........', '451.1 - 469.5...........', '469.5 - 488.5...........', '488.5 - 508.2...........', '508.2 - 528.7...........', '528.7 - 549.9...........', '549.9 - 571.9...........', '571.9 - 594.6...........', '594.6 - 618.3...........', '618.3 - 642.7...........', '642.7 - 668.1...........', '668.1 - 694.4...........', '694.4 - 721.7...........', '721.7 - 749.9...........', '749.9 - 779.2...........', '779.2 - 809.6...........', '809.6 - 841.1...........', '841.1 - 873.8...........', '873.8 - 907.6...........', '907.6 - 942.7...........', '942.7 - 979.0...........', '979.0 - 1016.7..........', '1016.7 - 1055.8.........', '1055.8 - 1096.3.........', '1096.3 - 1138.3.........', '1138.3 - 1181.8.........', '1181.8 - 1226.9.........', '1226.9 - 1273.7.........', '1273.7 - 1322.2.........', '1322.2 - 1372.5.........', '1372.5 - 1424.6.........', '1424.6 - 1478.6.........', '1478.6 - 1534.6.........', '1534.6 - 1592.6.........', '1592.6 - 1652.8.........', '1652.8 - 1715.2.........', '1715.2 - 1779.8.........', '1779.8 - 1846.8.........', '1846.8 - 1916.3.........', '1916.3 - 1988.4.........', '1988.4 - 2063.0.........', '2063.0 - 2140.4.........', '2140.4 - 2220.7.........', '2220.7 - 2303.8.........', '2303.8 - 2390.1.........', '2390.1 - 2479.4.........', '2479.4 - 2572.1.........', '2572.1 - 2668.1.........', '2668.1 - 2676.7.........', '2676.7 - 2870.9.........', '2870.9 - 2977.9.........', '2977.9 - 3088.8.........', '3088.8 - 3203.8.........', '3203.8 - 3322.9.........', '3322.9 - 3446.5.........', '3446.5 - 3574.6.........', '3574.6 - 3707.4.........', '3707.4 - 3845.0.........', '3845.0 - 3987.7.........', '3987.7 - 4135.6.........', '4135.6 - 4288.9.........', '4288.9 - 4447.8.........', '4447.8 - 4612.6.........', '4612.6 - 4783.4.........', '4783.4 - 4960.4.........', '4960.4 - 5143.9.........', '5143.9 - 5334.2.........', '5334.2 - 5531.4.........', '5531.4 - 5735.9.........', '5735.9 - 5947.8.........']
VOYAGER2_PLS_ELECTRONS_E1 Channel ['10   - 14,5.............', '14.5 - 19.3.............', '19.3 - 24.5.............', '24.5 - 30...............', '30   - 36...............', '36   - 42.4.............', '42.4 - 49.3.............', '49.3 - 56.7.............', '56.7 - 64.7.............', '64.7 - 73.2.............', '73.2 - 82.4.............', '82.4 - 92.3.............', '92.3 - 102.9............', '102.9 - 114.3...........', '114.3 - 126.6...........', '126.6 - 139.7...........']
VOYAGER2_PLS_ELECTRONS_E2 Channel ['10   - 14,5.............', '14.5 - 19.3.............', '19.3 - 24.5.............', '24.5 - 30...............', '30   - 36...............', '36   - 42.4.............', '42.4 - 49.3.............', '49.3 - 56.7.............', '56.7 - 64.7.............', '64.7 - 73.2.............', '73.2 - 82.4.............', '82.4 - 92.3.............', '92.3 - 102.9............', '102.9 - 114.3...........', '114.3 - 126.6...........', '126.6 - 139.7...........']
VOYAGER2_PLS_IONS_L Channel ['10.0 - 30.0.............', '30.0 - 56.7.............', '56.7 - 92.3.............', '92.3 - 139.7............', '139.7 - 203.0...........', '203.0 - 287.4...........', '287.4 - 399.9...........', '399.9 - 550.0...........', '550.0 - 750.1...........', '750.1 - 1016.9..........', '1016.9 - 1372.8.........', '1372.8 - 1847.3.........', '1847.3 - 2480.1.........', '2480.1 - 3324.0.........', '3324.0 - 4449.3.........', '4449.3 - 5949.9.........']
VOYAGER2_PLS_IONS_M Channel ['10.0 -12.2..............', '12.2 - 14.5.............', '14.5 - 16.8.............', '16.8 - 19.3.............', '19.3 - 21.8.............', '21.8 - 24.5.............', '24.5 - 27.2.............', '27.2 - 30.0.............', '30.0 - 32.9.............', '32.9 - 36.0.............', '36.0 - 39.1.............', '39.1 - 42.4.............', '42.4 - 45.8.............', '45.8 - 49.3.............', '49.3 - 52.9.............', '52.9 - 56.7.............', '56.7 - 60.6.............', '60.6 - 64.7.............', '64.7 - 68.9.............', '68.9 - 73.2.............', '73.2 - 77.7.............', '77.7 - 82.4.............', '82.4 - 87.2.............', '87.2 - 92.3.............', '92.3 - 97.5.............', '97.5 - 102.9............', '102.9 - 108.5...........', '108.5 - 114.3...........', '114.3 - 120.3...........', '120.3 - 126.5...........', '126.5 - 133.0...........', '133.0 - 139.7...........', '139.7 - 146.7...........', '146.7 - 153.9...........', '153.9 - 161.3...........', '161.3 - 169.1...........', '169.0 - 177.1...........', '177.1 - 185.4...........', '185.4 - 194.0...........', '194.0 - 202.9...........', '202.9 - 212.3...........', '212.3 - 221.9...........', '221.9 - 238.1...........', '231.8 - 242.1...........', '242.1 - 252.8...........', '252.8 - 263.9...........', '263.9 - 275.4...........', '275.4 - 287.3...........', '287.3 - 299.7...........', '299.7 - 312.5...........', '312.5 - 325.8...........', '325.8 - 339.6...........', '339.6 - 353.8...........', '353.8 - 368.6...........', '368.6 - 383.9...........', '383.9 - 399.9...........', '399.9 - 416.3...........', '416.3 - 433.4...........', '433.4 - 451.1...........', '451.1 - 469.5...........', '469.5 - 488.5...........', '488.5 - 508.2...........', '508.2 - 528.7...........', '528.7 - 549.9...........', '549.9 - 571.9...........', '571.9 - 594.6...........', '594.6 - 618.3...........', '618.3 - 642.7...........', '642.7 - 668.1...........', '668.1 - 694.4...........', '694.4 - 721.7...........', '721.7 - 749.9...........', '749.9 - 779.2...........', '779.2 - 809.6...........', '809.6 - 841.1...........', '841.1 - 873.8...........', '873.8 - 907.6...........', '907.6 - 942.7...........', '942.7 - 979.0...........', '979.0 - 1016.7..........', '1016.7 - 1055.8.........', '1055.8 - 1096.3.........', '1096.3 - 1138.3.........', '1138.3 - 1181.8.........', '1181.8 - 1226.9.........', '1226.9 - 1273.7.........', '1273.7 - 1322.2.........', '1322.2 - 1372.5.........', '1372.5 - 1424.6.........', '1424.6 - 1478.6.........', '1478.6 - 1534.6.........', '1534.6 - 1592.6.........', '1592.6 - 1652.8.........', '1652.8 - 1715.2.........', '1715.2 - 1779.8.........', '1779.8 - 1846.8.........', '1846.8 - 1916.3.........', '1916.3 - 1988.4.........', '1988.4 - 2063.0.........', '2063.0 - 2140.4.........', '2140.4 - 2220.7.........', '2220.7 - 2303.8.........', '2303.8 - 2390.1.........', '2390.1 - 2479.4.........', '2479.4 - 2572.1.........', '2572.1 - 2668.1.........', '2668.1 - 2676.7.........', '2676.7 - 2870.9.........', '2870.9 - 2977.9.........', '2977.9 - 3088.8.........', '3088.8 - 3203.8.........', '3203.8 - 3322.9.........', '3322.9 - 3446.5.........', '3446.5 - 3574.6.........', '3574.6 - 3707.4.........', '3707.4 - 3845.0.........', '3845.0 - 3987.7.........', '3987.7 - 4135.6.........', '4135.6 - 4288.9.........', '4288.9 - 4447.8.........', '4447.8 - 4612.6.........', '4612.6 - 4783.4.........', '4783.4 - 4960.4.........', '4960.4 - 5143.9.........', '5143.9 - 5334.2.........', '5334.2 - 5531.4.........', '5531.4 - 5735.9.........', '5735.9 - 5947.8.........']
'i10' CDF_INT4 => ''
'F8.1' CDF_REAL8 => '.1f'
'f13.2' CDF_DOUBLE => '.2f'
'F12.8' CDF_DOUBLE => '.8f'
'C24' CDF_CHAR => ''
'E12.6' CDF_REAL8 => '.6e'
'F10.2' CDF_REAL8 => '.2f'
'F10.3' CDF_REAL8 => '.3f'
'F' CDF_FLOAT => ''
'E14.7' CDF_FLOAT => '.7e'
'F12.6' CDF_REAL4 => '.6f'
'A22' CDF_CHAR => ''
'F10.4' CDF_DOUBLE => '.4f'
'f7.3' CDF_REAL4 => '.3f'
'I1' CDF_BYTE => ''
'i8' CDF_INT2 => ''
'I9' CDF_INT4 => ''
'i8' CDF_INT4 => ''
'f6.1' CDF_REAL4 => '.1f'
'F8.0' CDF_FLOAT => '.0f'
'D2' CDF_INT1 => ''
'I3' CDF_INT4 => ''
'E14.8' CDF_EPOCH => '.8e'
'F7.2' CDF_DOUBLE => '.2f'
'i2' CDF_BYTE => ''
'15(G9.4)' CDF_REAL4 => ''
'I2' CDF_UINT1 => ''
'F6.2' CDF_DOUBLE => '.2f'
'G12.1' CDF_FLOAT => '.1g'
[F10.2, F10.2, F10.2] CDF_REAL4' => [.2f,.2f,.2f]
'b1' CDF_BYTE => ''
'A21' CDF_UCHAR => ''
'F8.0' CDF_UINT2 => '.0f'
'f18.5' CDF_REAL4 => '.5f'
'e10.5' CDF_REAL4 => '.5e'
'E12.4' CDF_REAL4 => '.4e'
[I4, I3, I8] CDF_INT4' => ''
'F6.3' CDF_REAL4 => '.3f'
'f8.4' CDF_FLOAT => '.4f'
'E14.3' CDF_FLOAT => '.3e'
'E12.3' CDF_DOUBLE => '.3e'
'A24' CDF_EPOCH16 => ''
'F7' CDF_INT4 => ''
'a31' CDF_CHAR => ''
'f10.4' CDF_FLOAT => '.4f'
'f7.3' CDF_DOUBLE => '.3f'
'f7.3' CDF_FLOAT => '.3f'
'F3' CDF_FLOAT => ''
'a8' CDF_CHAR => ''
'f12.2' CDF_REAL8 => '.2f'
'E11.3' CDF_REAL4 => '.3e'
'4I1' CDF_INT1 => ''
'F8.4' CDF_UINT2 => '.4f'
'E12.4' CDF_FLOAT => '.4e'
'E11.4' CDF_REAL4 => '.4e'
[F10.2, F10.5] CDF_REAL4' => [.2f,.5f]
'A19' CDF_UCHAR => ''
'a30' CDF_CHAR => ''
'F5' CDF_FLOAT => ''
'F7.0' CDF_REAL4 => '.0f'
'a26' CDF_CHAR => ''
'E9.2' CDF_FLOAT => '.2e'
'A 24' CDF_CHAR => ''
'z10' CDF_INT4 => ''
'a14' CDF_CHAR => ''
'g12.0' CDF_DOUBLE => '.0g'
'A11' CDF_INT2 => ''
'A130' CDF_CHAR => ''
'15(I6)' CDF_INT2 => ''
'I4' CDF_INT1 => ''
'A27' CDF_CHAR => ''
'e14.5' CDF_DOUBLE => '.5e'
'E19.5' CDF_REAL4 => '.5e'
'F16.6' CDF_REAL8 => '.6f'
'a6' CDF_CHAR => ''
'e13.5' CDF_REAL4 => '.5e'
'E9.3' CDF_FLOAT => '.3e'
'F13.2' CDF_FLOAT => '.2f'
'F8.5' CDF_REAL4 => '.5f'
'e12.3' CDF_REAL4 => '.3e'
'F16.12' CDF_DOUBLE => '.12f'
'E5.1' CDF_REAL4 => '.1e'
'F5.2' CDF_FLOAT => '.2f'
'F20.8' CDF_REAL4 => '.8f'
'I1' CDF_INT2 => ''
'F12.2' CDF_DOUBLE => '.2f'
'f14.2' CDF_REAL4 => '.2f'
'I1' CDF_INT4 => ''
'16G13.6' CDF_REAL4 => '.6g'
'e12.6' CDF_REAL8 => '.6e'
'f12.4' CDF_REAL8 => '.4f'
'I4' CDF_INT4 => ''
'E16.6' CDF_REAL4 => '.6e'
'A18' CDF_CHAR => ''
'a3' CDF_CHAR => ''
'A7' CDF_CHAR => ''
'z4.2' CDF_UINT1 => ''
'f6.2' CDF_REAL4 => '.2f'
'f6.3' CDF_FLOAT => '.3f'
'I8' CDF_INT4 => ''
'E12.3' CDF_REAL4 => '.3e'
'f7.1' CDF_REAL4 => '.1f'
'F8.2' CDF_REAL4 => '.2f'
'F9.0' CDF_REAL4 => '.0f'
'F32.6' CDF_REAL8 => '.6f'
'F10.1' CDF_FLOAT => '.1f'
'E11.4' CDF_FLOAT => '.4e'
'E8.4' CDF_FLOAT => '.4e'
'f14.6' CDF_REAL8 => '.6f'
'F17.7' CDF_REAL8 => '.7f'
'a23' CDF_CHAR => ''
'E12.8' CDF_REAL8 => '.8e'
'F12.6' CDF_REAL8 => '.6f'
'F20.7' CDF_FLOAT => '.7f'
'A2' CDF_UCHAR => ''
'i5' CDF_INT4 => ''
'I12' CDF_INT4 => ''
'i1' CDF_INT2 => ''
'F4' CDF_FLOAT => ''
'a28' CDF_CHAR => ''
'A36' CDF_UCHAR => ''
'F8.0' CDF_REAL4 => '.0f'
'I20' CDF_UINT1 => ''
'F7' CDF_REAL8 => ''
'A27' CDF_EPOCH16 => ''
'I2' CDF_INT8 => ''
'E9.1' CDF_REAL4 => '.1e'
'i7' CDF_INT4 => ''
'f7.4' CDF_FLOAT => '.4f'
'E10' CDF_REAL4 => ''
'a10' CDF_CHAR => ''
'F7.0' CDF_FLOAT => '.0f'
'1PE13.2' CDF_EPOCH => '.2e'
'F14.2' CDF_REAL4 => '.2f'
'F10.6' CDF_REAL8 => '.6f'
'A23' CDF_UCHAR => ''
'a24' CDF_CHAR => ''
'i3' CDF_UINT1 => ''
'F14.2' CDF_FLOAT => '.2f'
'e10.3' CDF_FLOAT => '.3e'
'G9.4' CDF_REAL4 => '.4g'
'A2' CDF_CHAR => ''
'e9.3' CDF_REAL4 => '.3e'
'I13' CDF_INT4 => ''
'I' CDF_INT1 => ''
'F10.3' CDF_REAL4 => '.3f'
'a15' CDF_CHAR => ''
'E14.7' CDF_REAL8 => '.7e'
'i10' CDF_UINT4 => ''
'A27' CDF_EPOCH => ''
'f10.3' CDF_FLOAT => '.3f'
'F6.3s' CDF_FLOAT => ''
'I3' CDF_UINT2 => ''
'E8.2' CDF_REAL4 => '.2e'
'e12.0' CDF_EPOCH => '.0e'
'i12' CDF_INT4 => ''
'F9.4' CDF_REAL4 => '.4f'
'e13.6' CDF_REAL4 => '.6e'
'a15' CDF_UCHAR => ''
'f14.1' CDF_REAL8 => '.1f'
'F3.3' CDF_FLOAT => '.3f'
'i9' CDF_INT4 => ''
'g12.3' CDF_UINT1 => '.3g'
'F32.6' CDF_REAL4 => '.6f'
'A40' CDF_CHAR => ''
'F8.1' CDF_FLOAT => '.1f'
'F10.5' CDF_DOUBLE => '.5f'
'f10.1' CDF_REAL4 => '.1f'
'E11.3 ' CDF_REAL4 => '.3e'
'F7.2' CDF_REAL4 => '.2f'
'I6' CDF_UINT2 => ''
'F9.2' CDF_REAL8 => '.2f'
'F15.6' CDF_DOUBLE => '.6f'
'F12.3' CDF_REAL8 => '.3f'
'F13.3' CDF_FLOAT => '.3f'
'I3' CDF_BYTE => ''
'A61' CDF_CHAR => ''
'I' CDF_INT8 => ''
'f5.0' CDF_REAL4 => '.0f'
'f8.2' CDF_REAL8 => '.2f'
'f12.1' CDF_REAL4 => '.1f'
'E25.18' CDF_DOUBLE => '.18e'
'F5.2' CDF_REAL4 => '.2f'
'I20' CDF_INT8 => ''
'F6' CDF_FLOAT => ''
'F' CDF_DOUBLE => ''
'E14.9' CDF_REAL4 => '.9e'
'Z4' CDF_INT2 => ''
'F9.3' CDF_DOUBLE => '.3f'
'a129' CDF_CHAR => ''
'I3' CDF_UINT1 => ''
'I5' CDF_UINT2 => ''
'i6' CDF_UINT1 => ''
'E13.4' CDF_DOUBLE => '.4e'
'i4' CDF_UINT1 => ''
' F6.1' CDF_REAL4 => '.1f'
[F1, F1, F1] CDF_FLOAT' => ''
'f5.1' CDF_REAL4 => '.1f'
'f6.1' CDF_FLOAT => '.1f'
'I11' CDF_INT2 => ''
'F11' CDF_FLOAT => ''
'I22' CDF_TIME_TT2000 => ''
'I3.0' CDF_UINT1 => ''
'E25.18' CDF_EPOCH => '.18e'
'I4' CDF_UINT4 => ''
'f10.5' CDF_REAL4 => '.5f'
'E12.5' CDF_FLOAT => '.5e'
'F7.3' CDF_REAL8 => '.3f'
'E16.2' CDF_FLOAT => '.2e'
'F15.1' CDF_FLOAT => '.1f'
'F8' CDF_FLOAT => ''
'f3.0' CDF_REAL4 => '.0f'
'A25' CDF_CHAR => ''
'i5' CDF_INT2 => ''
'A1' CDF_CHAR => ''
'F4.3' CDF_FLOAT => '.3f'
'A4' CDF_CHAR => ''
'F18.6' CDF_DOUBLE => '.6f'
'F12.1' CDF_REAL8 => '.1f'
'A39' CDF_CHAR => ''
'F7.1' CDF_REAL4 => '.1f'
'g11.4' CDF_REAL4 => '.4g'
'f11.0' CDF_REAL4 => '.0f'
'I10' CDF_TIME_TT2000 => ''
'f8.1' CDF_DOUBLE => '.1f'
'G8.3' CDF_FLOAT => '.3g'
'f10.3' CDF_REAL8 => '.3f'
'F8.4' CDF_EPOCH => '.4f'
'I16' CDF_TIME_TT2000 => ''
'F15.8' CDF_REAL8 => '.8f'
'f11.4' CDF_FLOAT => '.4f'
'G13.5' CDF_FLOAT => '.5g'
'F15.3' CDF_FLOAT => '.3f'
'F6.2' CDF_FLOAT => '.2f'
'E9.2' CDF_REAL8 => '.2e'
'a1' CDF_CHAR => ''
'f10.1' CDF_FLOAT => '.1f'
'F15.7' CDF_FLOAT => '.7f'
'f5.3' CDF_REAL4 => '.3f'
'F14.3' CDF_FLOAT => '.3f'
'f9.2' CDF_FLOAT => '.2f'
'F8.1' CDF_DOUBLE => '.1f'
' ' CDF_TIME_TT2000 => ''
'E13.2' CDF_REAL8 => '.2e'
'E10.2' CDF_REAL8 => '.2e'
'F16' CDF_FLOAT => ''
'F5.1' CDF_REAL4 => '.1f'
'G13.6' CDF_REAL4 => '.6g'
'F24.7' CDF_DOUBLE => '.7f'
'F24.1' CDF_TIME_TT2000 => '.1f'
'a27' CDF_CHAR => ''
'e10.2' CDF_FLOAT => '.2e'
'I10' CDF_INT8 => ''
'e14.4' CDF_REAL8 => '.4e'
'F10.6' CDF_DOUBLE => '.6f'
'E11.5E2' CDF_REAL4 => ''
'F14.0   ' CDF_EPOCH => '.0f'
'F6.4' CDF_REAL4 => '.4f'
'a50' CDF_CHAR => ''
'a24' CDF_UCHAR => ''
'F14.8' CDF_REAL8 => '.8f'
'E14.8' CDF_REAL8 => '.8e'
'E11.3  ' CDF_REAL4 => '.3e'
[10   - 14,5............., 14.5 - 19.3............., 19.3 - 24.5............., 24.5 - 30..............., 30   - 36..............., 36   - 42.4............., 42.4 - 49.3............., 49.3 - 56.7............., 56.7 - 64.7............., 64.7 - 73.2............., 73.2 - 82.4............., 82.4 - 92.3............., 92.3 - 102.9............, 102.9 - 114.3..........., 114.3 - 126.6..........., 126.6 - 139.7...........] CDF_REAL4' => ''
'f13.2' CDF_REAL4 => '.2f'
[ F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ,  F6.3 ] CDF_REAL4' => [.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f,.3f]
'E12.2' CDF_DOUBLE => '.2e'
'i6' CDF_BYTE => ''
'e12.2' CDF_REAL4 => '.2e'
'I3' CDF_REAL4 => ''
'E11.3' CDF_FLOAT => '.3e'
'E10' CDF_REAL8 => ''
'E12.2' CDF_REAL4 => '.2e'
'I2' CDF_BYTE => ''
'i6' CDF_INT2 => ''
'E13.4' CDF_REAL8 => '.4e'
'I1.0' CDF_UINT1 => ''
'A15' CDF_CHAR => ''
'A24' CDF_EPOCH => ''
'I5' CDF_UINT1 => ''
'A33' CDF_CHAR => ''
'F12.2' CDF_EPOCH => '.2f'
'A37' CDF_CHAR => ''
'E9.4' CDF_FLOAT => '.4e'
'A19' CDF_CHAR => ''
'G22.8' CDF_REAL8 => '.8g'
'e12.4' CDF_REAL4 => '.4e'
'F17.5' CDF_REAL4 => '.5f'
'I2  ' CDF_INT2 => ''
'F14.6' CDF_REAL8 => '.6f'
'f4' CDF_FLOAT => ''
'I8' CDF_INT2 => ''
'F11.2' CDF_FLOAT => '.2f'
'A29' CDF_CHAR => ''
'e12.2' CDF_FLOAT => '.2e'
'F9.1' CDF_FLOAT => '.1f'
'E7.1' CDF_REAL4 => '.1e'
'f6.0' CDF_FLOAT => '.0f'
'f11.7' CDF_REAL8 => '.7f'
'I7' CDF_UINT4 => ''
'f8.5' CDF_FLOAT => '.5f'
'G8.2' CDF_FLOAT => '.2g'
'E25.18' CDF_TIME_TT2000 => '.18e'
'i4' CDF_INT4 => ''
'f8.1' CDF_FLOAT => '.1f'
'F8.3' CDF_REAL8 => '.3f'
'A16' CDF_CHAR => ''
'F13.9' CDF_DOUBLE => '.9f'
'f8.2' CDF_REAL4 => '.2f'
'a21' CDF_CHAR => ''
'F24.6' CDF_REAL8 => '.6f'
'A3' CDF_UCHAR => ''
'a65' CDF_CHAR => ''
'E13.5' CDF_REAL4 => '.5e'
'F12.2' CDF_REAL4 => '.2f'
'F7.4' CDF_DOUBLE => '.4f'
'e9.2' CDF_FLOAT => '.2e'
'F11.4' CDF_REAL4 => '.4f'
[F8.2, F8.2, F8.2] CDF_REAL4' => [.2f,.2f,.2f]
'E16.10' CDF_REAL8 => '.10e'
'A15' CDF_UCHAR => ''
'f10.0' CDF_REAL4 => '.0f'
'i4' CDF_UINT4 => ''
'I20' CDF_TIME_TT2000 => ''
'E9.2' CDF_REAL4 => '.2e'
'20F8.2' CDF_REAL4 => '.2f'
'f6.2' CDF_FLOAT => '.2f'
'a19' CDF_CHAR => ''
'A9' CDF_UCHAR => ''
'A17' CDF_EPOCH => ''
'G10' CDF_FLOAT => ''
'1PE11.5' CDF_REAL4 => '.5e'
[F6.4, F8.4, F8.4] CDF_REAL4' => [.4f,.4f,.4f]
'A20' CDF_CHAR => ''
'f9.1' CDF_REAL4 => '.1f'
'F20.3' CDF_FLOAT => '.3f'
'f7.4' CDF_REAL4 => '.4f'
'I6' CDF_INT4 => ''
'A28' CDF_CHAR => ''
'f8.1' CDF_REAL8 => '.1f'
'I20' CDF_UINT4 => ''
'F18.9' CDF_REAL8 => '.9f'
'g12.3' CDF_REAL4 => '.3g'
'I' CDF_UINT2 => ''
'f4.0' CDF_FLOAT => '.0f'
'F15.3' CDF_REAL8 => '.3f'
'e12.6' CDF_REAL4 => '.6e'
'i1' CDF_BYTE => ''
'f14.7' CDF_REAL8 => '.7f'
'f12.2' CDF_FLOAT => '.2f'
'F6.1' CDF_REAL4 => '.1f'
[10.0 -12.2.............., 12.2 - 14.5............., 14.5 - 16.8............., 16.8 - 19.3............., 19.3 - 21.8............., 21.8 - 24.5............., 24.5 - 27.2............., 27.2 - 30.0............., 30.0 - 32.9............., 32.9 - 36.0............., 36.0 - 39.1............., 39.1 - 42.4............., 42.4 - 45.8............., 45.8 - 49.3............., 49.3 - 52.9............., 52.9 - 56.7............., 56.7 - 60.6............., 60.6 - 64.7............., 64.7 - 68.9............., 68.9 - 73.2............., 73.2 - 77.7............., 77.7 - 82.4............., 82.4 - 87.2............., 87.2 - 92.3............., 92.3 - 97.5............., 97.5 - 102.9............, 102.9 - 108.5..........., 108.5 - 114.3..........., 114.3 - 120.3..........., 120.3 - 126.5..........., 126.5 - 133.0..........., 133.0 - 139.7..........., 139.7 - 146.7..........., 146.7 - 153.9..........., 153.9 - 161.3..........., 161.3 - 169.1..........., 169.0 - 177.1..........., 177.1 - 185.4..........., 185.4 - 194.0..........., 194.0 - 202.9..........., 202.9 - 212.3..........., 212.3 - 221.9..........., 221.9 - 238.1..........., 231.8 - 242.1..........., 242.1 - 252.8..........., 252.8 - 263.9..........., 263.9 - 275.4..........., 275.4 - 287.3..........., 287.3 - 299.7..........., 299.7 - 312.5..........., 312.5 - 325.8..........., 325.8 - 339.6..........., 339.6 - 353.8..........., 353.8 - 368.6..........., 368.6 - 383.9..........., 383.9 - 399.9..........., 399.9 - 416.3..........., 416.3 - 433.4..........., 433.4 - 451.1..........., 451.1 - 469.5..........., 469.5 - 488.5..........., 488.5 - 508.2..........., 508.2 - 528.7..........., 528.7 - 549.9..........., 549.9 - 571.9..........., 571.9 - 594.6..........., 594.6 - 618.3..........., 618.3 - 642.7..........., 642.7 - 668.1..........., 668.1 - 694.4..........., 694.4 - 721.7..........., 721.7 - 749.9..........., 749.9 - 779.2..........., 779.2 - 809.6..........., 809.6 - 841.1..........., 841.1 - 873.8..........., 873.8 - 907.6..........., 907.6 - 942.7..........., 942.7 - 979.0..........., 979.0 - 1016.7.........., 1016.7 - 1055.8........., 1055.8 - 1096.3........., 1096.3 - 1138.3........., 1138.3 - 1181.8........., 1181.8 - 1226.9........., 1226.9 - 1273.7........., 1273.7 - 1322.2........., 1322.2 - 1372.5........., 1372.5 - 1424.6........., 1424.6 - 1478.6........., 1478.6 - 1534.6........., 1534.6 - 1592.6........., 1592.6 - 1652.8........., 1652.8 - 1715.2........., 1715.2 - 1779.8........., 1779.8 - 1846.8........., 1846.8 - 1916.3........., 1916.3 - 1988.4........., 1988.4 - 2063.0........., 2063.0 - 2140.4........., 2140.4 - 2220.7........., 2220.7 - 2303.8........., 2303.8 - 2390.1........., 2390.1 - 2479.4........., 2479.4 - 2572.1........., 2572.1 - 2668.1........., 2668.1 - 2676.7........., 2676.7 - 2870.9........., 2870.9 - 2977.9........., 2977.9 - 3088.8........., 3088.8 - 3203.8........., 3203.8 - 3322.9........., 3322.9 - 3446.5........., 3446.5 - 3574.6........., 3574.6 - 3707.4........., 3707.4 - 3845.0........., 3845.0 - 3987.7........., 3987.7 - 4135.6........., 4135.6 - 4288.9........., 4288.9 - 4447.8........., 4447.8 - 4612.6........., 4612.6 - 4783.4........., 4783.4 - 4960.4........., 4960.4 - 5143.9........., 5143.9 - 5334.2........., 5334.2 - 5531.4........., 5531.4 - 5735.9........., 5735.9 - 5947.8.........] CDF_REAL4' => ''
'F12.4' CDF_REAL4 => '.4f'
'A22' CDF_UCHAR => ''
'F16.1' CDF_FLOAT => '.1f'
'A23' CDF_EPOCH => ''
'E8.4' CDF_REAL4 => '.4e'
'f9.1' CDF_DOUBLE => '.1f'
'e15.7' CDF_REAL8 => '.7e'
'16I1' CDF_INT1 => ''
'a10' CDF_UCHAR => ''
'E9.2' CDF_DOUBLE => '.2e'
'a43' CDF_CHAR => ''
'F9.2' CDF_REAL4 => '.2f'
'F9.3' CDF_REAL4 => '.3f'
'A12' CDF_CHAR => ''
'  ' CDF_EPOCH => ''
'I' CDF_UINT4 => ''
'F12.5' CDF_DOUBLE => '.5f'
'i2' CDF_INT4 => ''
'g6.1' CDF_REAL8 => '.1g'
'e13.6' CDF_DOUBLE => '.6e'
'I5.5' CDF_UINT1 => ''
'F14.3' CDF_REAL4 => '.3f'
'F9.6' CDF_REAL4 => '.6f'
'I11' CDF_UINT2 => ''
'f10.6' CDF_REAL4 => '.6f'
'F7.1' CDF_FLOAT => '.1f'
'E13.3' CDF_FLOAT => '.3e'
'a3' CDF_UCHAR => ''
'A34' CDF_CHAR => ''
'D20.6' CDF_REAL8 => ''
'F4.0' CDF_FLOAT => '.0f'
'I8' CDF_UINT2 => ''
'I12' CDF_UINT4 => ''
'E9.4' CDF_REAL4 => '.4e'
'A38' CDF_CHAR => ''
'A3' CDF_CHAR => ''
[10.0 - 30.0............., 30.0 - 56.7............., 56.7 - 92.3............., 92.3 - 139.7............, 139.7 - 203.0..........., 203.0 - 287.4..........., 287.4 - 399.9..........., 399.9 - 550.0..........., 550.0 - 750.1..........., 750.1 - 1016.9.........., 1017.0 - 1372.0........., 1372.0 - 1847.3........., 1847.3 - 2480.1........., 2480.1 - 3324.0........., 3324.0 - 4449.3........., 4449.3 - 5949.9.........] CDF_REAL4' => ''
'i4' CDF_BYTE => ''
'i4' CDF_UINT2 => ''
'f10.7' CDF_FLOAT => '.7f'
'a18' CDF_UCHAR => ''
'I2' CDF_INT4 => ''
'E11.3' CDF_REAL8 => '.3e'
'F5.2    ' CDF_REAL4 => '.2f'
'f8.3' CDF_FLOAT => '.3f'
'F5.3' CDF_FLOAT => '.3f'
'F7.5' CDF_FLOAT => '.5f'
'A6' CDF_CHAR => ''
'G' CDF_REAL8 => ''
'F20.3' CDF_DOUBLE => '.3f'
'E12.2' CDF_TIME_TT2000 => '.2e'
'E10.2' CDF_REAL4 => '.2e'
'I5' CDF_INT4 => ''
'i2' CDF_INT2 => ''
'E8.1' CDF_REAL4 => '.1e'
'G13' CDF_FLOAT => ''
'a32' CDF_CHAR => ''
'A30' CDF_CHAR => ''
[I4, I3, I8,   ] CDF_INT4' => ''
'f11.5' CDF_DOUBLE => '.5f'
'i2' CDF_INT1 => ''
'e11.4' CDF_REAL4 => '.4e'
'i4' CDF_REAL4 => ''
'i3' CDF_BYTE => ''
'F13.1' CDF_FLOAT => '.1f'
'I10' CDF_INT4 => ''
'E12.2' CDF_REAL8 => '.2e'
'I29' CDF_TIME_TT2000 => ''
'E20.12' CDF_REAL8 => '.12e'
'I13' CDF_INT8 => ''
'f9.4' CDF_REAL4 => '.4f'
'i3' CDF_UINT2 => ''
'A21' CDF_CHAR => ''
'F12.2' CDF_FLOAT => '.2f'
'F12.4' CDF_FLOAT => '.4f'
'a17' CDF_CHAR => ''
'e7.2' CDF_REAL4 => '.2e'
'I5' CDF_UINT4 => ''
'F8.2' CDF_REAL8 => '.2f'
'F12.12' CDF_REAL8 => '.12f'
'E10.3' CDF_FLOAT => '.3e'
'E10.3' CDF_REAL4 => '.3e'
'a9' CDF_UCHAR => ''
'F8.4' CDF_FLOAT => '.4f'
'F9.1' CDF_REAL4 => '.1f'
'a20' CDF_CHAR => ''
'I10' CDF_INT2 => ''
'A50' CDF_CHAR => ''
'I4' CDF_BYTE => ''
'F10.2' CDF_FLOAT => '.2f'
'I1' CDF_INT1 => ''
'i5' CDF_UINT1 => ''
'F8.3' CDF_REAL4 => '.3f'
'E20.4' CDF_REAL4 => '.4e'
[F7.4, F6.2, F6.2] CDF_REAL4' => [.4f,.2f,.2f]
'I20' CDF_INT4 => ''
'F7.2' CDF_FLOAT => '.2f'
'I7' CDF_INT2 => ''
'A26' CDF_CHAR => ''
'F16.3' CDF_FLOAT => '.3f'
'I08' CDF_INT2 => ''
'F5.0' CDF_FLOAT => '.0f'
'F7.1' CDF_REAL8 => '.1f'
'E13.6' CDF_EPOCH => '.6e'
'i3' CDF_INT2 => ''
'f5.2' CDF_REAL4 => '.2f'
'G12.6' CDF_FLOAT => '.6g'
'F10.3' CDF_DOUBLE => '.3f'
'e12.5' CDF_FLOAT => '.5e'
'I2' CDF_INT1 => ''
'F4.1' CDF_FLOAT => '.1f'
'F4.0' CDF_REAL4 => '.0f'
'e14.5' CDF_FLOAT => '.5e'
'I10.0' CDF_UINT4 => ''
'E12.8' CDF_REAL4 => '.8e'
'I4' CDF_INT2 => ''
'I3' CDF_INT1 => ''
'f7.0' CDF_UINT1 => '.0f'
'f6.2' CDF_DOUBLE => '.2f'
'I2.2' CDF_UINT1 => ''
'F5.0' CDF_REAL4 => '.0f'
'F10.4' CDF_REAL4 => '.4f'
'A10' CDF_CHAR => ''
'F17.5' CDF_REAL8 => '.5f'
'G10.2E3' CDF_FLOAT => ''
'F' CDF_REAL4 => ''
'I1' CDF_UINT4 => ''
'e10.3' CDF_REAL4 => '.3e'
'F16.8' CDF_DOUBLE => '.8f'
'F4.1' CDF_REAL4 => '.1f'
'I11' CDF_INT4 => ''
'i10' CDF_INT2 => ''
'E31.4' CDF_REAL4 => '.4e'
'a25' CDF_CHAR => ''
'f5.1' CDF_FLOAT => '.1f'
'F14.0' CDF_EPOCH => '.0f'
'E11.4' CDF_DOUBLE => '.4e'
'CDF Epoch Time' CDF_EPOCH => ''
'e11.4' CDF_FLOAT => '.4e'
'E8.3' CDF_REAL4 => '.3e'
'a7' CDF_CHAR => ''
'A' CDF_CHAR => ''
'E12.6' CDF_DOUBLE => '.6e'
'F9.2' CDF_FLOAT => '.2f'
'F11.4' CDF_REAL8 => '.4f'
'f6.1' CDF_REAL8 => '.1f'
'F13' CDF_FLOAT => ''
'f4.1' CDF_REAL4 => '.1f'
'F14.3' CDF_REAL8 => '.3f'
'I1.1' CDF_INT8 => ''
'a9' CDF_CHAR => ''
'e12.5' CDF_DOUBLE => '.5e'
'F22.12' CDF_DOUBLE => '.12f'
'F9.5' CDF_REAL8 => '.5f'
'i10' CDF_UINT2 => ''
'I10.10' CDF_INT4 => ''
'I2' CDF_UINT2 => ''
'G13.6' CDF_FLOAT => '.6g'
'I8' CDF_INT8 => ''
[I2, I4] CDF_INT4' => ''
'D8.3' CDF_DOUBLE => ''
'i6' CDF_UINT2 => ''
'14' CDF_CHAR => ''
'E7.2' CDF_REAL4 => '.2e'
'f8.4' CDF_REAL4 => '.4f'
'E13.6' CDF_REAL4 => '.6e'
'f9.2' CDF_REAL8 => '.2f'
'F8.0' CDF_UINT4 => '.0f'
'A13' CDF_CHAR => ''
'E13.6' CDF_REAL8 => '.6e'
'F14.4' CDF_REAL8 => '.4f'
'F10.6' CDF_FLOAT => '.6f'
'Z8' CDF_INT4 => ''
'G11.1' CDF_FLOAT => '.1g'
'F12.8' CDF_REAL8 => '.8f'
'a2' CDF_CHAR => ''
'I' CDF_UINT1 => ''
'f16.5' CDF_REAL4 => '.5f'
'f9.3' CDF_DOUBLE => '.3f'
'E10.2' CDF_FLOAT => '.2e'
'I10' CDF_UINT4 => ''
'F16.1' CDF_EPOCH => '.1f'
'F10.1' CDF_REAL8 => '.1f'
'F12.7' CDF_DOUBLE => '.7f'
'E14.8' CDF_FLOAT => '.8e'
'E12.5' CDF_REAL4 => '.5e'
'f13.1' CDF_REAL8 => '.1f'
'A14' CDF_CHAR => ''
'A20' CDF_UCHAR => ''
'E6.2' CDF_REAL4 => '.2e'
'E13.4' CDF_REAL4 => '.4e'
'e15.8' CDF_REAL8 => '.8e'
'f4.0' CDF_REAL4 => '.0f'
'f7.2' CDF_FLOAT => '.2f'
[I4        , I3        , I8        ] CDF_INT4' => ''
'I6' CDF_INT2 => ''
'a6' CDF_UCHAR => ''
'a33' CDF_CHAR => ''
'A18' CDF_UCHAR => ''
'F19.7' CDF_REAL8 => '.7f'
'F10.2' CDF_REAL4 => '.2f'
'A8' CDF_CHAR => ''
'I7' CDF_UINT1 => ''
'E14.8' CDF_TIME_TT2000 => '.8e'
'E14.8' CDF_REAL4 => '.8e'
'F15.7' CDF_REAL8 => '.7f'
'F16.3' CDF_DOUBLE => '.3f'
'f7.4' CDF_INT4 => '.4f'
'F7.3' CDF_DOUBLE => '.3f'
'I6' CDF_UINT4 => ''
'f14.3' CDF_REAL8 => '.3f'
'e12.0' CDF_DOUBLE => '.0e'
'G12.5' CDF_FLOAT => '.5g'
'F4.2' CDF_REAL4 => '.2f'
'F13.1' CDF_REAL8 => '.1f'
'F12.7' CDF_REAL8 => '.7f'
'F16.2' CDF_EPOCH => '.2f'
'I8' CDF_UINT4 => ''
'f5.2' CDF_FLOAT => '.2f'
'E13.6' CDF_FLOAT => '.6e'
'f9.4' CDF_FLOAT => '.4f'
'e11.5' CDF_FLOAT => '.5e'
'F6.1' CDF_FLOAT => '.1f'
'F4' CDF_REAL4 => ''
'e11.2' CDF_REAL8 => '.2e'
'F12.3' CDF_REAL4 => '.3f'
'G10.4' CDF_REAL4 => '.4g'
'e12.4' CDF_FLOAT => '.4e'
'E12.5E2' CDF_REAL4 => ''
'F25.8' CDF_REAL8 => '.8f'
'E8.2' CDF_FLOAT => '.2e'
'a18' CDF_CHAR => ''
'F13.6' CDF_REAL8 => '.6f'
'F25.6' CDF_DOUBLE => '.6f'
'A48' CDF_CHAR => ''
'e14.6' CDF_REAL4 => '.6e'
'E6.3' CDF_FLOAT => '.3e'
'i1' CDF_INT1 => ''
'a12' CDF_CHAR => ''
'F16.7' CDF_FLOAT => '.7f'
'E14.0' CDF_DOUBLE => '.0e'
'A32' CDF_CHAR => ''
'I20' CDF_DOUBLE => ''
'F16.2' CDF_FLOAT => '.2f'
'E13.6' CDF_TIME_TT2000 => '.6e'
'E14.6' CDF_DOUBLE => '.6e'
'F6' CDF_DOUBLE => ''
'A37' CDF_EPOCH16 => ''
'a16' CDF_CHAR => ''
'F10' CDF_FLOAT => ''
'I2' CDF_INT2 => ''
'A24' CDF_CHAR => ''
'f8.1' CDF_REAL4 => '.1f'
'f9.2' CDF_REAL4 => '.2f'
'a81' CDF_CHAR => ''
'E8.1' CDF_FLOAT => '.1e'
'A43' CDF_CHAR => ''
'F15.3' CDF_DOUBLE => '.3f'
'4G13.6' CDF_REAL4 => '.6g'
'F9.5' CDF_REAL4 => '.5f'
'F2' CDF_FLOAT => ''
'E9.3' CDF_REAL4 => '.3e'
'E12.4' CDF_DOUBLE => '.4e'
'F12.3' CDF_FLOAT => '.3f'
'I10' CDF_UINT1 => ''
'F20.6' CDF_FLOAT => '.6f'
'I5' CDF_INT2 => ''
'F9.4' CDF_FLOAT => '.4f'
'F8.3s' CDF_FLOAT => ''
'S1' CDF_CHAR => ''
'F8.4' CDF_INT4 => '.4f'
'F11.3' CDF_REAL4 => '.3f'
' I3 ' CDF_INT2 => ''
'A9' CDF_CHAR => ''
' E10.2' CDF_REAL4 => '.2e'
'i7' CDF_REAL4 => ''
'f11.2' CDF_REAL4 => '.2f'
'z8' CDF_INT8 => ''
'F7.3' CDF_REAL4 => '.3f'
'F32.6' CDF_DOUBLE => '.6f'
'e12.5' CDF_REAL4 => '.5e'
'E15.7' CDF_FLOAT => '.7e'
'F3.0' CDF_REAL4 => '.0f'
'g13.2' CDF_DOUBLE => '.2g'
'I10' CDF_DOUBLE => ''
'i9' CDF_UINT4 => ''
'e12.5' CDF_REAL8 => '.5e'
'f12.0' CDF_REAL8 => '.0f'
'I' CDF_INT4 => ''
'F12.5' CDF_REAL8 => '.5f'
'F6.3' CDF_REAL8 => '.3f'
'F12.2' CDF_TIME_TT2000 => '.2f'
'I' CDF_TIME_TT2000 => ''
'F20.12' CDF_REAL8 => '.12f'
'F4.2' CDF_FLOAT => '.2f'
'E12.2' CDF_FLOAT => '.2e'
'I3 ' CDF_INT2 => ''
'F7.3' CDF_FLOAT => '.3f'
'E15.8' CDF_REAL4 => '.8e'
'f7.0' CDF_REAL4 => '.0f'
'I16' CDF_INT4 => ''
'E8.1' CDF_REAL8 => '.1e'
'a4' CDF_CHAR => ''
'e13.4' CDF_DOUBLE => '.4e'
'A5' CDF_UCHAR => ''
'A31' CDF_CHAR => ''
'F12.1' CDF_REAL4 => '.1f'
'F20.2' CDF_FLOAT => '.2f'
'f16.2' CDF_EPOCH => '.2f'
'F11.2' CDF_REAL4 => '.2f'
'i6' CDF_REAL4 => ''
'F25.12' CDF_DOUBLE => '.12f'
'f12.3' CDF_FLOAT => '.3f'
'f9.2' CDF_DOUBLE => '.2f'
'f10.2' CDF_DOUBLE => '.2f'
'f8.3' CDF_DOUBLE => '.3f'
'F18.1' CDF_REAL8 => '.1f'
'a80' CDF_CHAR => ''
'Z4' CDF_UINT2 => ''
'F9.3' CDF_FLOAT => '.3f'
'F10.3' CDF_FLOAT => '.3f'
'G8.1' CDF_FLOAT => '.1g'
'i2' CDF_UINT1 => ''
'E10.4' CDF_REAL8 => '.4e'
'i1' CDF_UINT1 => ''
'a13' CDF_CHAR => ''
'i13' CDF_INT8 => ''
'f11.5' CDF_FLOAT => '.5f'
'A5' CDF_CHAR => ''
'E13.6' CDF_DOUBLE => '.6e'
'I19' CDF_INT8 => ''
'E12.3' CDF_FLOAT => '.3e'
'f5.0' CDF_FLOAT => '.0f'
'i5' CDF_BYTE => ''
'F5.1' CDF_FLOAT => '.1f'
'e13.6' CDF_FLOAT => '.6e'
'G7.5' CDF_FLOAT => '.5g'
'I3' CDF_INT2 => ''
'E10.4' CDF_REAL4 => '.4e'
'e6.2' CDF_REAL4 => '.2e'
'%d' CDF_UINT1 => ''
'e9.2' CDF_REAL4 => '.2e'
'G10.4' CDF_FLOAT => '.4g'
'F10.1' CDF_REAL4 => '.1f'
'f16.3' CDF_FLOAT => '.3f'
'f14.4' CDF_REAL8 => '.4f'
'F8.2' CDF_FLOAT => '.2f'
'f9.0' CDF_REAL4 => '.0f'
'E10.3' CDF_DOUBLE => '.3e'
'I3' CDF_UINT4 => ''
'Z10.8' CDF_UINT4 => ''
'A11' CDF_CHAR => ''
'F20.9' CDF_REAL8 => '.9f'
'G10.6' CDF_FLOAT => '.6g'
'F7.2' CDF_REAL8 => '.2f'
'F7' CDF_FLOAT => ''
'I14' CDF_INT8 => ''
'I7' CDF_UINT2 => ''
'F15.9' CDF_REAL8 => '.9f'
'F13.6' CDF_FLOAT => '.6f'
'A36' CDF_CHAR => ''
[F9.4 , F10.5] CDF_REAL4' => [.4f,.5f]
'F3.1' CDF_REAL4 => '.1f'
'F9' CDF_FLOAT => ''
'f8.0' CDF_REAL4 => '.0f'
'F15.0' CDF_EPOCH => '.0f'
'A35' CDF_CHAR => ''
'a22' CDF_CHAR => ''
'f4.2' CDF_FLOAT => '.2f'
'f12.1' CDF_REAL8 => '.1f'
'E13.5' CDF_FLOAT => '.5e'
'G9.3' CDF_REAL4 => '.3g'
'f7.2' CDF_REAL4 => '.2f'
'I5' CDF_BYTE => ''
'I2' CDF_UINT4 => ''
'F8.1' CDF_REAL4 => '.1f'
'E8.0' CDF_FLOAT => '.0e'
'e12.2' CDF_EPOCH => '.2e'
'A12' CDF_UCHAR => ''
'y/n (yes/no)' CDF_INT1 => ''
'A17' CDF_CHAR => ''
'I4.4' CDF_UINT2 => ''
'I20' CDF_INT2 => ''
'i3' CDF_INT4 => ''
'F16.4' CDF_FLOAT => '.4f'
'F20.8' CDF_REAL8 => '.8f'
'g12.3' CDF_FLOAT => '.3g'
'F12.8' CDF_REAL4 => '.8f'
'F9.1' CDF_REAL8 => '.1f'
'f9.0' CDF_FLOAT => '.0f'
'I1' CDF_UINT1 => ''
'f8' CDF_DOUBLE => ''
'%d' CDF_UINT4 => ''
'A31' CDF_UCHAR => ''
'F19.12' CDF_DOUBLE => '.12f'
'f10.2' CDF_FLOAT => '.2f'
'F8.4' CDF_REAL4 => '.4f'
'F10.8' CDF_REAL4 => '.8f'
'I3.3' CDF_UINT1 => ''
'I4' CDF_UINT1 => ''
'f10.4' CDF_REAL4 => '.4f'
'z12.8' CDF_INT8 => ''
'F8.6' CDF_REAL4 => '.6f'
'F5' CDF_REAL4 => ''
'A4' CDF_UCHAR => ''
'F18.7' CDF_FLOAT => '.7f'
'f7.1' CDF_FLOAT => '.1f'
'I1.1' CDF_UINT1 => ''
'f12.2' CDF_DOUBLE => '.2f'
'F3.0' CDF_FLOAT => '.0f'
'G12.3' CDF_FLOAT => '.3g'
'f9.3' CDF_FLOAT => '.3f'
'F6.3' CDF_FLOAT => '.3f'
'i4' CDF_INT2 => ''
[ I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ,  I7 ] CDF_UINT4' => ''
'f8.3' CDF_REAL4 => '.3f'
'I20' CDF_FLOAT => ''
'F10.6' CDF_REAL4 => '.6f'
'F12' CDF_FLOAT => ''
'F5.3' CDF_REAL4 => '.3f'
'F11.3' CDF_FLOAT => '.3f'
'f12.3' CDF_DOUBLE => '.3f'
'f18.3' CDF_REAL4 => '.3f'
'F13.3' CDF_REAL4 => '.3f'
'F5.2' CDF_DOUBLE => '.2f'
'f6.3' CDF_REAL4 => '.3f'
'I5' CDF_INT1 => ''
'20F6.2' CDF_REAL4 => '.2f'
'F8.3' CDF_FLOAT => '.3f'
'F6.2' CDF_REAL4 => '.2f'
'F17.8' CDF_REAL8 => '.8f'
'E4.0' CDF_REAL4 => '.0e'
'I11' CDF_UINT4 => ''
'i6' CDF_INT4 => ''
'f7.2' CDF_INT4 => '.2f'
'f12.5' CDF_DOUBLE => '.5f'
'F8.4' CDF_UINT4 => '.4f'
'F18.1' CDF_REAL4 => '.1f'
'i8' CDF_INT8 => ''
'F6.0' CDF_REAL4 => '.0f'
'F7.0' CDF_REAL8 => '.0f'
'A34' CDF_UCHAR => ''
'A23' CDF_CHAR => ''
'F5.1' CDF_DOUBLE => '.1f'
'a29' CDF_CHAR => ''
'F7.4' CDF_REAL4 => '.4f'
'I7' CDF_INT4 => ''
'E12.7' CDF_REAL4 => '.7e'
[F8.3, F8.3, F6.4] CDF_REAL4' => [.3f,.3f,.4f]
'f8.2' CDF_FLOAT => '.2f'
'D1' CDF_BYTE => ''
'F7.4' CDF_REAL8 => '.4f'
'g13.2' CDF_FLOAT => '.2g'
'f10.2' CDF_REAL4 => '.2f'
'a11' CDF_CHAR => ''
'A1' CDF_UCHAR => ''
'F18.6' CDF_REAL8 => '.6f'
'I4' CDF_UINT2 => ''
[E9.3, F6.3, F6.3, F6.3, F6.3] CDF_REAL4' => [.3e,.3f,.3f,.3f,.3f]
'f8.2' CDF_DOUBLE => '.2f'
'G11.3' CDF_REAL4 => '.3g'
'f6.0' CDF_REAL4 => '.0f'
'a5' CDF_CHAR => ''
'F8.2' CDF_DOUBLE => '.2f'
'I20' CDF_UINT2 => ''
'f10.3' CDF_REAL4 => '.3f'
'E11.4' CDF_REAL8 => '.4e'
'f9.5' CDF_REAL4 => '.5f'
'I10' CDF_UINT2 => ''
[10.0 - 30.0............., 30.0 - 56.7............., 56.7 - 92.3............., 92.3 - 139.7............, 139.7 - 203.0..........., 203.0 - 287.4..........., 287.4 - 399.9..........., 399.9 - 550.0..........., 550.0 - 750.1..........., 750.1 - 1016.9.........., 1016.9 - 1372.8........., 1372.8 - 1847.3........., 1847.3 - 2480.1........., 2480.1 - 3324.0........., 3324.0 - 4449.3........., 4449.3 - 5949.9.........] CDF_REAL4' => ''
'D2' CDF_BYTE => ''
[I4                  , I3                  , I8                  ] CDF_UINT4' => ''
'F30.12' CDF_DOUBLE => '.12f'
'F11.6' CDF_REAL4 => '.6f'
'I5.5' CDF_UINT2 => ''
'G16.10' CDF_FLOAT => '.10g'
' ' CDF_UINT1 => ''
'f9.3' CDF_REAL4 => '.3f'
'E11.3' CDF_DOUBLE => '.3e'
'f12.2' CDF_REAL4 => '.2f'
jbfaden commented 2 months ago

I've had to do this sort of thing elsewhere, and it'll be a useful thing to have around either way.