From 04084847af20490e8f917b42717f9d51f87307fb Mon Sep 17 00:00:00 2001
From: lkugler <lukas.kugler@gmail.com>
Date: Wed, 22 Feb 2023 10:43:05 +0100
Subject: [PATCH] .

---
 config/obs_kind_mod.f90  | 2700 --------------------------------------
 config/obskind.py        |  335 +++++
 dartwrf/create_obsseq.py |    2 +-
 dartwrf/workflows.py     |   11 +-
 4 files changed, 343 insertions(+), 2705 deletions(-)
 delete mode 100644 config/obs_kind_mod.f90
 create mode 100644 config/obskind.py

diff --git a/config/obs_kind_mod.f90 b/config/obs_kind_mod.f90
deleted file mode 100644
index 9fa9f32..0000000
--- a/config/obs_kind_mod.f90
+++ /dev/null
@@ -1,2700 +0,0 @@
-! DART software - Copyright UCAR. This open source software is provided
-! by UCAR, "as is", without charge, subject to all terms of use at
-! http://www.image.ucar.edu/DAReS/DART/DART_download
-
-!----------------------------------------------------------------------
-! WARNING!!  The file obs_kind_mod.f90 is AUTOGENERATED by the
-! 'preprocess' program.  Any changes made to this file will be
-! overwritten when it is regenerated.  To make permanent changes in
-! the code, edit DEFAULT_obs_kind_mod.F90, edit the observation
-! specific obs_def_xxx_mod.f90 files, or edit the xxx_quantity.f90 files.
-!----------------------------------------------------------------------
-
-! FIXME: this should change to obs_qty_mod - but that is a large footprint,
-! non-backwards compatible change.  almost every other module in the system
-! has a use statement for this module
-
-! module obs_qty_mod
-module obs_kind_mod
-
-use        types_mod, only : obstypelength, r8, MISSING_R8
-use    utilities_mod, only : error_handler, E_ERR, E_WARN,  &
-                             logfileunit, find_namelist_in_file, log_it,     &
-                             check_namelist_read, do_output, ascii_file_format, &
-                             string_to_real
-
-implicit none
-private
-
-public :: get_name_for_type_of_obs,       &
-          assimilate_this_type_of_obs,    &
-          evaluate_this_type_of_obs,      &
-          get_quantity_for_type_of_obs,   &
-          get_index_for_type_of_obs,      &
-          write_type_of_obs_table,        &
-          read_type_of_obs_table,         &
-          get_type_of_obs_from_menu,      &
-          map_type_of_obs_table,          &
-          use_ext_prior_this_type_of_obs, &
-          get_name_for_quantity,          &
-          get_index_for_quantity,         &
-          set_namevalue_for_quantity,     &
-          get_num_items_for_quantity,     &
-          get_itemname_for_quantity,      &
-          get_itemvalue_for_quantity,     &
-          has_bounds_for_quantity
-
-public :: get_num_types_of_obs, get_num_quantities
-
-!----------------------------------------------------------------------------
-! These lists are autogenerated by the 'preprocess' program.
-!
-! To add new observation types (e.g. AIRS_U_WIND_COMPONENT), edit the
-! obs_def_xxx_mod.f90 files and add the filename to the 'obs_type_files' variable
-! in the &preprocess_nml namelist of the model-specific work/input.nml file.
-! There can be multiple filenames listed for 'obs_type_files'.
-!
-! To add a new fundamental quantity (e.g. QTY_TEMPERATURE), first examine
-! all the xxx_quantities_mod.f90 files to be sure it does not already exist.
-! If it really does not, add QTY_xxx to the most appropriate file and
-! add xxx_quantities_mod.f90 to the 'quantity_files' variable in the &preprocess_nml
-! namelist.  There can be multiple filenames listed for 'quantity_files'.
-!
-! Add a descriptive comment along with expected units and any other
-! helpful information.  These quantities should be useable by any
-! model of the same system to allow interoperability and comparisons
-! between model results.
-!
-
-!---------------------------------------------------------------------------  
-                                                                              
-! Integer definitions for DART QUANTITIES
-                                                                              
-integer, parameter, public ::               QTY_STATE_VARIABLE =     0
-integer, parameter, public ::             QTY_U_WIND_COMPONENT =     1
-integer, parameter, public ::             QTY_V_WIND_COMPONENT =     2
-integer, parameter, public ::             QTY_SURFACE_PRESSURE =     3
-integer, parameter, public ::                  QTY_TEMPERATURE =     4
-integer, parameter, public ::            QTY_SPECIFIC_HUMIDITY =     5
-integer, parameter, public ::                     QTY_PRESSURE =     6
-integer, parameter, public ::            QTY_VERTICAL_VELOCITY =     7
-integer, parameter, public ::       QTY_RAINWATER_MIXING_RATIO =     8
-integer, parameter, public ::                     QTY_DEWPOINT =     9
-integer, parameter, public ::                      QTY_DENSITY =    10
-integer, parameter, public ::                  QTY_MEAN_SOURCE =    11
-integer, parameter, public ::                     QTY_VELOCITY =    12
-integer, parameter, public ::           QTY_RADAR_REFLECTIVITY =    13
-integer, parameter, public ::         QTY_GRAUPEL_MIXING_RATIO =    14
-integer, parameter, public ::            QTY_SNOW_MIXING_RATIO =    15
-integer, parameter, public ::                        QTY_GPSRO =    16
-integer, parameter, public ::           QTY_CLOUD_LIQUID_WATER =    17
-integer, parameter, public ::                    QTY_CLOUD_ICE =    18
-integer, parameter, public ::       QTY_CONDENSATIONAL_HEATING =    19
-integer, parameter, public ::           QTY_VAPOR_MIXING_RATIO =    20
-integer, parameter, public ::     QTY_ICE_NUMBER_CONCENTRATION =    21
-integer, parameter, public ::          QTY_GEOPOTENTIAL_HEIGHT =    22
-integer, parameter, public ::        QTY_POTENTIAL_TEMPERATURE =    23
-integer, parameter, public ::                QTY_SOIL_MOISTURE =    24
-integer, parameter, public ::                 QTY_SOURCE_PHASE =    25
-integer, parameter, public ::            QTY_SURFACE_ELEVATION =    26
-integer, parameter, public ::         QTY_GRAV_WAVE_DRAG_EFFIC =    27
-integer, parameter, public ::    QTY_GRAV_WAVE_STRESS_FRACTION =    28
-integer, parameter, public ::    QTY_POWER_WEIGHTED_FALL_SPEED =    29
-integer, parameter, public ::      QTY_CLOUDWATER_MIXING_RATIO =    30
-integer, parameter, public ::             QTY_ICE_MIXING_RATIO =    31
-integer, parameter, public ::      QTY_DROPLET_NUMBER_CONCENTR =    32
-integer, parameter, public ::         QTY_SNOW_NUMBER_CONCENTR =    33
-integer, parameter, public ::         QTY_RAIN_NUMBER_CONCENTR =    34
-integer, parameter, public ::      QTY_GRAUPEL_NUMBER_CONCENTR =    35
-integer, parameter, public ::               QTY_CLOUD_FRACTION =    36
-integer, parameter, public ::                 QTY_ICE_FRACTION =    37
-integer, parameter, public ::            QTY_RELATIVE_HUMIDITY =    38
-integer, parameter, public ::                 QTY_1D_PARAMETER =    39
-integer, parameter, public ::                 QTY_2D_PARAMETER =    40
-integer, parameter, public ::                 QTY_3D_PARAMETER =    41
-integer, parameter, public ::           QTY_ALTIMETER_TENDENCY =    42
-integer, parameter, public ::           QTY_PRECIPITABLE_WATER =    43
-integer, parameter, public ::     QTY_OCCULTATION_REFRACTIVITY =    44
-integer, parameter, public ::      QTY_OCCULTATION_EXCESSPHASE =    45
-integer, parameter, public ::             QTY_GEOMETRIC_HEIGHT =    46
-integer, parameter, public ::            QTY_INFRARED_RADIANCE =    47
-integer, parameter, public ::         QTY_INFRARED_BRIGHT_TEMP =    48
-integer, parameter, public ::                     QTY_LANDMASK =    49
-integer, parameter, public ::            QTY_EDGE_NORMAL_SPEED =    50
-integer, parameter, public ::                     QTY_CLW_PATH =    51
-integer, parameter, public ::                     QTY_CWP_PATH =    52
-integer, parameter, public ::                QTY_CWP_PATH_ZERO =    53
-integer, parameter, public ::           QTY_WIND_TURBINE_POWER =    54
-integer, parameter, public ::         QTY_2M_SPECIFIC_HUMIDITY =    55
-integer, parameter, public ::               QTY_2M_TEMPERATURE =    56
-integer, parameter, public ::         QTY_10M_U_WIND_COMPONENT =    57
-integer, parameter, public ::         QTY_10M_V_WIND_COMPONENT =    58
-integer, parameter, public ::             QTY_SKIN_TEMPERATURE =    59
-integer, parameter, public ::               QTY_NADIR_RADIANCE =    60
-integer, parameter, public ::        QTY_TRACER_1_MIXING_RATIO =    61
-integer, parameter, public ::        QTY_TRACER_2_MIXING_RATIO =    62
-integer, parameter, public ::         QTY_TRACER_CONCENTRATION =    63
-integer, parameter, public ::                QTY_TRACER_SOURCE =    64
-integer, parameter, public ::             QTY_SOIL_TEMPERATURE =    65
-integer, parameter, public ::            QTY_SOIL_LIQUID_WATER =    66
-integer, parameter, public ::           QTY_VERTICAL_VORTICITY =    67
-integer, parameter, public ::               QTY_SURFACE_ALBEDO =    68
-integer, parameter, public ::           QTY_SURFACE_EMISSIVITY =    69
-integer, parameter, public ::             QTY_DUST_OPACITY_7MB =    70
-integer, parameter, public ::                          QTY_THC =    71
-integer, parameter, public ::                   QTY_VORTEX_LON =    72
-integer, parameter, public ::                   QTY_VORTEX_LAT =    73
-integer, parameter, public ::                  QTY_VORTEX_PMIN =    74
-integer, parameter, public ::                  QTY_VORTEX_WMAX =    75
-integer, parameter, public ::               QTY_EXNER_FUNCTION =    76
-integer, parameter, public ::     QTY_TURBULENT_KINETIC_ENERGY =    77
-integer, parameter, public ::     QTY_TOTAL_PRECIPITABLE_WATER =    78
-integer, parameter, public ::                    QTY_VERTLEVEL =    79
-integer, parameter, public ::        QTY_MICROWAVE_BRIGHT_TEMP =    80
-integer, parameter, public ::           QTY_INTEGRATED_SULFATE =    81
-integer, parameter, public ::              QTY_INTEGRATED_DUST =    82
-integer, parameter, public ::             QTY_INTEGRATED_SMOKE =    83
-integer, parameter, public ::           QTY_INTEGRATED_SEASALT =    84
-integer, parameter, public ::               QTY_INTEGRATED_AOD =    85
-integer, parameter, public ::                          QTY_SO2 =    86
-integer, parameter, public ::                      QTY_SULFATE =    87
-integer, parameter, public ::                         QTY_DUST =    88
-integer, parameter, public ::                        QTY_SMOKE =    89
-integer, parameter, public ::                      QTY_SEASALT =    90
-integer, parameter, public ::            QTY_HAIL_MIXING_RATIO =    91
-integer, parameter, public ::         QTY_HAIL_NUMBER_CONCENTR =    92
-integer, parameter, public ::               QTY_GRAUPEL_VOLUME =    93
-integer, parameter, public ::                  QTY_HAIL_VOLUME =    94
-integer, parameter, public ::    QTY_DIFFERENTIAL_REFLECTIVITY =    95
-integer, parameter, public ::  QTY_SPECIFIC_DIFFERENTIAL_PHASE =    96
-integer, parameter, public ::                QTY_FLASH_RATE_2D =    97
-integer, parameter, public ::                     QTY_RADIANCE =    98
-integer, parameter, public ::       QTY_BRIGHTNESS_TEMPERATURE =    99
-integer, parameter, public ::   QTY_BI_DIRECTIONAL_REFLECTANCE =   100
-integer, parameter, public ::                 QTY_SURFACE_TYPE =   101
-integer, parameter, public ::                   QTY_WIND_FETCH =   102
-integer, parameter, public ::                   QTY_WATER_TYPE =   103
-integer, parameter, public ::                    QTY_FOAM_FRAC =   104
-integer, parameter, public ::                QTY_INSOLUBLE_AER =   105
-integer, parameter, public ::              QTY_H2O_SOLUBLE_AER =   106
-integer, parameter, public ::                         QTY_SOOT =   107
-integer, parameter, public ::                QTY_SEASALT_ACCUM =   108
-integer, parameter, public ::               QTY_SEASALT_COARSE =   109
-integer, parameter, public ::              QTY_MINERAL_NUCLEUS =   110
-integer, parameter, public ::                QTY_MINERAL_ACCUM =   111
-integer, parameter, public ::               QTY_MINERAL_COARSE =   112
-integer, parameter, public ::          QTY_MINERAL_TRANSPORTED =   113
-integer, parameter, public ::              QTY_SULPHATED_DROPS =   114
-integer, parameter, public ::                 QTY_VOLCANIC_ASH =   115
-integer, parameter, public ::             QTY_NEW_VOLCANIC_ASH =   116
-integer, parameter, public ::                   QTY_ASIAN_DUST =   117
-integer, parameter, public ::                 QTY_BLACK_CARBON =   118
-integer, parameter, public ::                    QTY_DUST_BIN1 =   119
-integer, parameter, public ::                    QTY_DUST_BIN2 =   120
-integer, parameter, public ::                    QTY_DUST_BIN3 =   121
-integer, parameter, public ::            QTY_AMMONIUM_SULPHATE =   122
-integer, parameter, public ::                QTY_SEA_SALT_BIN1 =   123
-integer, parameter, public ::                QTY_SEA_SALT_BIN2 =   124
-integer, parameter, public ::                QTY_SEA_SALT_BIN3 =   125
-integer, parameter, public ::   QTY_HYDROPHILIC_ORGANIC_MATTER =   126
-integer, parameter, public ::                QTY_CLOUDWATER_DE =   127
-integer, parameter, public ::                 QTY_CLOUD_ICE_DE =   128
-integer, parameter, public ::            QTY_COLUMN_CLOUD_FRAC =   129
-integer, parameter, public ::           QTY_CLOUD_TOP_PRESSURE =   130
-integer, parameter, public ::            QTY_ABSOLUTE_HUMIDITY =   131
-integer, parameter, public ::                           QTY_O3 =   132
-integer, parameter, public ::                          QTY_CO2 =   133
-integer, parameter, public ::                          QTY_N2O =   134
-integer, parameter, public ::                          QTY_CH4 =   135
-integer, parameter, public ::                           QTY_CO =   136
-integer, parameter, public ::                     QTY_SALINITY =   137
-integer, parameter, public ::               QTY_SNOWCOVER_FRAC =   138
-                                                                              
-                                                                              
-integer, parameter, public :: MAX_DEFINED_QUANTITIES =   138
-                                                                              
-!---------------------------------------------------------------------------  
-!---------------------------------------------------------------------------  
-                                                                              
-! Integer definitions for DART OBS TYPES
-                                                                              
-integer, parameter, public ::      RADIOSONDE_U_WIND_COMPONENT =     1
-integer, parameter, public ::      RADIOSONDE_V_WIND_COMPONENT =     2
-integer, parameter, public ::      RADIOSONDE_GEOPOTENTIAL_HGT =     3
-integer, parameter, public ::      RADIOSONDE_SURFACE_PRESSURE =     4
-integer, parameter, public ::           RADIOSONDE_TEMPERATURE =     5
-integer, parameter, public ::     RADIOSONDE_SPECIFIC_HUMIDITY =     6
-integer, parameter, public ::       DROPSONDE_U_WIND_COMPONENT =     7
-integer, parameter, public ::       DROPSONDE_V_WIND_COMPONENT =     8
-integer, parameter, public ::       DROPSONDE_SURFACE_PRESSURE =     9
-integer, parameter, public ::            DROPSONDE_TEMPERATURE =    10
-integer, parameter, public ::      DROPSONDE_SPECIFIC_HUMIDITY =    11
-integer, parameter, public ::        AIRCRAFT_U_WIND_COMPONENT =    12
-integer, parameter, public ::        AIRCRAFT_V_WIND_COMPONENT =    13
-integer, parameter, public ::             AIRCRAFT_TEMPERATURE =    14
-integer, parameter, public ::       AIRCRAFT_SPECIFIC_HUMIDITY =    15
-integer, parameter, public ::           ACARS_U_WIND_COMPONENT =    16
-integer, parameter, public ::           ACARS_V_WIND_COMPONENT =    17
-integer, parameter, public ::                ACARS_TEMPERATURE =    18
-integer, parameter, public ::          ACARS_SPECIFIC_HUMIDITY =    19
-integer, parameter, public ::      MARINE_SFC_U_WIND_COMPONENT =    20
-integer, parameter, public ::      MARINE_SFC_V_WIND_COMPONENT =    21
-integer, parameter, public ::           MARINE_SFC_TEMPERATURE =    22
-integer, parameter, public ::     MARINE_SFC_SPECIFIC_HUMIDITY =    23
-integer, parameter, public ::              MARINE_SFC_PRESSURE =    24
-integer, parameter, public ::        LAND_SFC_U_WIND_COMPONENT =    25
-integer, parameter, public ::        LAND_SFC_V_WIND_COMPONENT =    26
-integer, parameter, public ::             LAND_SFC_TEMPERATURE =    27
-integer, parameter, public ::       LAND_SFC_SPECIFIC_HUMIDITY =    28
-integer, parameter, public ::                LAND_SFC_PRESSURE =    29
-integer, parameter, public ::             SAT_U_WIND_COMPONENT =    30
-integer, parameter, public ::             SAT_V_WIND_COMPONENT =    31
-integer, parameter, public ::                 ATOV_TEMPERATURE =    32
-integer, parameter, public ::                 AIRS_TEMPERATURE =    33
-integer, parameter, public ::           AIRS_SPECIFIC_HUMIDITY =    34
-integer, parameter, public ::           GPS_PRECIPITABLE_WATER =    35
-integer, parameter, public ::          VADWND_U_WIND_COMPONENT =    36
-integer, parameter, public ::          VADWND_V_WIND_COMPONENT =    37
-integer, parameter, public ::       CIMMS_AMV_U_WIND_COMPONENT =    38
-integer, parameter, public ::       CIMMS_AMV_V_WIND_COMPONENT =    39
-integer, parameter, public ::          DOPPLER_RADIAL_VELOCITY =    40
-integer, parameter, public ::               RADAR_REFLECTIVITY =    41
-integer, parameter, public ::      RADAR_CLEARAIR_REFLECTIVITY =    42
-integer, parameter, public ::         PRECIPITATION_FALL_SPEED =    43
-integer, parameter, public ::            METAR_U_10_METER_WIND =    44
-integer, parameter, public ::            METAR_V_10_METER_WIND =    45
-integer, parameter, public ::        METAR_TEMPERATURE_2_METER =    46
-integer, parameter, public ::  METAR_SPECIFIC_HUMIDITY_2_METER =    47
-integer, parameter, public ::           METAR_SURFACE_PRESSURE =    48
-integer, parameter, public ::           METAR_POT_TEMP_2_METER =    49
-integer, parameter, public ::                         DEWPOINT =    50
-integer, parameter, public ::                 DEWPOINT_2_METER =    51
-integer, parameter, public ::                    BUOY_DEWPOINT =    52
-integer, parameter, public ::                    SHIP_DEWPOINT =    53
-integer, parameter, public ::                   SYNOP_DEWPOINT =    54
-integer, parameter, public ::                   AIREP_DEWPOINT =    55
-integer, parameter, public ::                   AMDAR_DEWPOINT =    56
-integer, parameter, public ::                   PILOT_DEWPOINT =    57
-integer, parameter, public ::                   BOGUS_DEWPOINT =    58
-integer, parameter, public ::                    AIRS_DEWPOINT =    59
-integer, parameter, public ::           METAR_DEWPOINT_2_METER =    60
-integer, parameter, public ::              RADIOSONDE_DEWPOINT =    61
-integer, parameter, public ::               DROPSONDE_DEWPOINT =    62
-integer, parameter, public ::                AIRCRAFT_DEWPOINT =    63
-integer, parameter, public ::                   ACARS_DEWPOINT =    64
-integer, parameter, public ::              MARINE_SFC_DEWPOINT =    65
-integer, parameter, public ::                LAND_SFC_DEWPOINT =    66
-integer, parameter, public ::     RADIOSONDE_RELATIVE_HUMIDITY =    67
-integer, parameter, public ::      DROPSONDE_RELATIVE_HUMIDITY =    68
-integer, parameter, public ::       AIRCRAFT_RELATIVE_HUMIDITY =    69
-integer, parameter, public ::          ACARS_RELATIVE_HUMIDITY =    70
-integer, parameter, public ::     MARINE_SFC_RELATIVE_HUMIDITY =    71
-integer, parameter, public ::       LAND_SFC_RELATIVE_HUMIDITY =    72
-integer, parameter, public ::  METAR_RELATIVE_HUMIDITY_2_METER =    73
-integer, parameter, public ::           AIRS_RELATIVE_HUMIDITY =    74
-integer, parameter, public ::        MESONET_RELATIVE_HUMIDITY =    75
-integer, parameter, public ::     RADIOSONDE_SURFACE_ALTIMETER =    76
-integer, parameter, public ::      DROPSONDE_SURFACE_ALTIMETER =    77
-integer, parameter, public ::             MARINE_SFC_ALTIMETER =    78
-integer, parameter, public ::               LAND_SFC_ALTIMETER =    79
-integer, parameter, public ::                  METAR_ALTIMETER =    80
-integer, parameter, public ::        MESONET_SURFACE_ALTIMETER =    81
-integer, parameter, public ::                      TEMPERATURE =    82
-integer, parameter, public ::                SPECIFIC_HUMIDITY =    83
-integer, parameter, public ::                         PRESSURE =    84
-integer, parameter, public ::               GPSRO_REFRACTIVITY =    85
-integer, parameter, public ::                       VORTEX_LAT =    86
-integer, parameter, public ::                       VORTEX_LON =    87
-integer, parameter, public ::                      VORTEX_PMIN =    88
-integer, parameter, public ::                      VORTEX_WMAX =    89
-integer, parameter, public ::            BUOY_U_WIND_COMPONENT =    90
-integer, parameter, public ::            BUOY_V_WIND_COMPONENT =    91
-integer, parameter, public ::            BUOY_SURFACE_PRESSURE =    92
-integer, parameter, public ::                 BUOY_TEMPERATURE =    93
-integer, parameter, public ::            SHIP_U_WIND_COMPONENT =    94
-integer, parameter, public ::            SHIP_V_WIND_COMPONENT =    95
-integer, parameter, public ::            SHIP_SURFACE_PRESSURE =    96
-integer, parameter, public ::                 SHIP_TEMPERATURE =    97
-integer, parameter, public ::           SYNOP_U_WIND_COMPONENT =    98
-integer, parameter, public ::           SYNOP_V_WIND_COMPONENT =    99
-integer, parameter, public ::           SYNOP_SURFACE_PRESSURE =   100
-integer, parameter, public ::          SYNOP_SPECIFIC_HUMIDITY =   101
-integer, parameter, public ::                SYNOP_TEMPERATURE =   102
-integer, parameter, public ::           AIREP_U_WIND_COMPONENT =   103
-integer, parameter, public ::           AIREP_V_WIND_COMPONENT =   104
-integer, parameter, public ::                   AIREP_PRESSURE =   105
-integer, parameter, public ::                AIREP_TEMPERATURE =   106
-integer, parameter, public ::           AMDAR_U_WIND_COMPONENT =   107
-integer, parameter, public ::           AMDAR_V_WIND_COMPONENT =   108
-integer, parameter, public ::                   AMDAR_PRESSURE =   109
-integer, parameter, public ::                AMDAR_TEMPERATURE =   110
-integer, parameter, public ::           PILOT_U_WIND_COMPONENT =   111
-integer, parameter, public ::           PILOT_V_WIND_COMPONENT =   112
-integer, parameter, public ::                   PILOT_PRESSURE =   113
-integer, parameter, public ::                PILOT_TEMPERATURE =   114
-integer, parameter, public ::           BOGUS_U_WIND_COMPONENT =   115
-integer, parameter, public ::           BOGUS_V_WIND_COMPONENT =   116
-integer, parameter, public ::                   BOGUS_PRESSURE =   117
-integer, parameter, public ::                BOGUS_TEMPERATURE =   118
-integer, parameter, public ::        PROFILER_U_WIND_COMPONENT =   119
-integer, parameter, public ::        PROFILER_V_WIND_COMPONENT =   120
-integer, parameter, public ::                PROFILER_PRESSURE =   121
-integer, parameter, public ::                  SATEM_THICKNESS =   122
-integer, parameter, public ::            NOAA_1_VTPR1_RADIANCE =   123
-integer, parameter, public ::            NOAA_2_VTPR1_RADIANCE =   124
-integer, parameter, public ::            NOAA_3_VTPR1_RADIANCE =   125
-integer, parameter, public ::            NOAA_4_VTPR1_RADIANCE =   126
-integer, parameter, public ::             NOAA_5_HIRS_RADIANCE =   127
-integer, parameter, public ::                    NOAA_5_MSU_TB =   128
-integer, parameter, public ::            NOAA_5_AVHRR_RADIANCE =   129
-integer, parameter, public ::             NOAA_6_HIRS_RADIANCE =   130
-integer, parameter, public ::                    NOAA_6_MSU_TB =   131
-integer, parameter, public ::            NOAA_6_AVHRR_RADIANCE =   132
-integer, parameter, public ::             NOAA_7_HIRS_RADIANCE =   133
-integer, parameter, public ::                    NOAA_7_MSU_TB =   134
-integer, parameter, public ::            NOAA_7_AVHRR_RADIANCE =   135
-integer, parameter, public ::             NOAA_8_HIRS_RADIANCE =   136
-integer, parameter, public ::                    NOAA_8_MSU_TB =   137
-integer, parameter, public ::            NOAA_8_AVHRR_RADIANCE =   138
-integer, parameter, public ::             NOAA_9_HIRS_RADIANCE =   139
-integer, parameter, public ::                    NOAA_9_MSU_TB =   140
-integer, parameter, public ::            NOAA_9_AVHRR_RADIANCE =   141
-integer, parameter, public ::            NOAA_10_HIRS_RADIANCE =   142
-integer, parameter, public ::                   NOAA_10_MSU_TB =   143
-integer, parameter, public ::           NOAA_10_AVHRR_RADIANCE =   144
-integer, parameter, public ::            NOAA_11_HIRS_RADIANCE =   145
-integer, parameter, public ::                   NOAA_11_MSU_TB =   146
-integer, parameter, public ::           NOAA_11_AVHRR_RADIANCE =   147
-integer, parameter, public ::            NOAA_12_HIRS_RADIANCE =   148
-integer, parameter, public ::                   NOAA_12_MSU_TB =   149
-integer, parameter, public ::           NOAA_12_AVHRR_RADIANCE =   150
-integer, parameter, public ::           NOAA_13_AVHRR_RADIANCE =   151
-integer, parameter, public ::            NOAA_14_HIRS_RADIANCE =   152
-integer, parameter, public ::                   NOAA_14_MSU_TB =   153
-integer, parameter, public ::           NOAA_14_AVHRR_RADIANCE =   154
-integer, parameter, public ::            NOAA_15_HIRS_RADIANCE =   155
-integer, parameter, public ::                 NOAA_15_AMSUA_TB =   156
-integer, parameter, public ::                 NOAA_15_AMSUB_TB =   157
-integer, parameter, public ::           NOAA_15_AVHRR_RADIANCE =   158
-integer, parameter, public ::            NOAA_16_HIRS_RADIANCE =   159
-integer, parameter, public ::                 NOAA_16_AMSUA_TB =   160
-integer, parameter, public ::                 NOAA_16_AMSUB_TB =   161
-integer, parameter, public ::           NOAA_16_AVHRR_RADIANCE =   162
-integer, parameter, public ::            NOAA_17_HIRS_RADIANCE =   163
-integer, parameter, public ::                 NOAA_17_AMSUA_TB =   164
-integer, parameter, public ::                 NOAA_17_AMSUB_TB =   165
-integer, parameter, public ::           NOAA_17_AVHRR_RADIANCE =   166
-integer, parameter, public ::            NOAA_18_HIRS_RADIANCE =   167
-integer, parameter, public ::                 NOAA_18_AMSUA_TB =   168
-integer, parameter, public ::           NOAA_18_AVHRR_RADIANCE =   169
-integer, parameter, public ::                   NOAA_18_MHS_TB =   170
-integer, parameter, public ::            NOAA_19_HIRS_RADIANCE =   171
-integer, parameter, public ::                 NOAA_19_AMSUA_TB =   172
-integer, parameter, public ::           NOAA_19_AVHRR_RADIANCE =   173
-integer, parameter, public ::                   NOAA_19_MHS_TB =   174
-integer, parameter, public ::                  NOAA_20_ATMS_TB =   175
-integer, parameter, public ::           NOAA_20_VIIRS_RADIANCE =   176
-integer, parameter, public ::                   DMSP_8_SSMI_TB =   177
-integer, parameter, public ::                   DMSP_9_SSMI_TB =   178
-integer, parameter, public ::                  DMSP_10_SSMI_TB =   179
-integer, parameter, public ::                  DMSP_11_SSMI_TB =   180
-integer, parameter, public ::                 DMSP_11_SSMT2_TB =   181
-integer, parameter, public ::                  DMSP_12_SSMI_TB =   182
-integer, parameter, public ::                 DMSP_12_SSMT2_TB =   183
-integer, parameter, public ::                  DMSP_13_SSMI_TB =   184
-integer, parameter, public ::                  DMSP_14_SSMI_TB =   185
-integer, parameter, public ::                 DMSP_14_SSMT2_TB =   186
-integer, parameter, public ::                  DMSP_15_SSMI_TB =   187
-integer, parameter, public ::                 DMSP_15_SSMT2_TB =   188
-integer, parameter, public ::                 DMSP_16_SSMIS_TB =   189
-integer, parameter, public ::                 DMSP_17_SSMIS_TB =   190
-integer, parameter, public ::                 DMSP_18_SSMIS_TB =   191
-integer, parameter, public ::                 DMSP_19_SSMIS_TB =   192
-integer, parameter, public ::        METEOSAT_1_MVIRI_RADIANCE =   193
-integer, parameter, public ::        METEOSAT_2_MVIRI_RADIANCE =   194
-integer, parameter, public ::        METEOSAT_3_MVIRI_RADIANCE =   195
-integer, parameter, public ::        METEOSAT_4_MVIRI_RADIANCE =   196
-integer, parameter, public ::        METEOSAT_5_MVIRI_RADIANCE =   197
-integer, parameter, public ::        METEOSAT_6_MVIRI_RADIANCE =   198
-integer, parameter, public ::        METEOSAT_7_MVIRI_RADIANCE =   199
-integer, parameter, public ::          GOES_4_SOUNDER_RADIANCE =   200
-integer, parameter, public ::          GOES_5_SOUNDER_RADIANCE =   201
-integer, parameter, public ::          GOES_6_SOUNDER_RADIANCE =   202
-integer, parameter, public ::          GOES_7_SOUNDER_RADIANCE =   203
-integer, parameter, public ::           GOES_8_IMAGER_RADIANCE =   204
-integer, parameter, public ::          GOES_8_SOUNDER_RADIANCE =   205
-integer, parameter, public ::           GOES_9_IMAGER_RADIANCE =   206
-integer, parameter, public ::          GOES_9_SOUNDER_RADIANCE =   207
-integer, parameter, public ::          GOES_10_IMAGER_RADIANCE =   208
-integer, parameter, public ::         GOES_10_SOUNDER_RADIANCE =   209
-integer, parameter, public ::          GOES_11_IMAGER_RADIANCE =   210
-integer, parameter, public ::         GOES_11_SOUNDER_RADIANCE =   211
-integer, parameter, public ::          GOES_12_IMAGER_RADIANCE =   212
-integer, parameter, public ::         GOES_12_SOUNDER_RADIANCE =   213
-integer, parameter, public ::          GOES_13_IMAGER_RADIANCE =   214
-integer, parameter, public ::         GOES_13_SOUNDER_RADIANCE =   215
-integer, parameter, public ::          GOES_14_IMAGER_RADIANCE =   216
-integer, parameter, public ::         GOES_14_SOUNDER_RADIANCE =   217
-integer, parameter, public ::          GOES_15_IMAGER_RADIANCE =   218
-integer, parameter, public ::         GOES_15_SOUNDER_RADIANCE =   219
-integer, parameter, public ::             GOES_16_ABI_RADIANCE =   220
-integer, parameter, public ::             GOES_17_ABI_RADIANCE =   221
-integer, parameter, public ::             GOES_18_ABI_RADIANCE =   222
-integer, parameter, public ::             GOES_19_ABI_RADIANCE =   223
-integer, parameter, public ::            GMS_1_IMAGER_RADIANCE =   224
-integer, parameter, public ::            GMS_2_IMAGER_RADIANCE =   225
-integer, parameter, public ::            GMS_3_IMAGER_RADIANCE =   226
-integer, parameter, public ::            GMS_4_IMAGER_RADIANCE =   227
-integer, parameter, public ::            GMS_5_IMAGER_RADIANCE =   228
-integer, parameter, public ::             FY2_2_VISSR_RADIANCE =   229
-integer, parameter, public ::             FY2_3_VISSR_RADIANCE =   230
-integer, parameter, public ::             FY2_4_VISSR_RADIANCE =   231
-integer, parameter, public ::             FY2_5_VISSR_RADIANCE =   232
-integer, parameter, public ::             FY2_7_VISSR_RADIANCE =   233
-integer, parameter, public ::                    TRMM_1_TMI_TB =   234
-integer, parameter, public ::              ERS_1_ATSR_RADIANCE =   235
-integer, parameter, public ::                     ERS_1_MWR_TB =   236
-integer, parameter, public ::              ERS_2_ATSR_RADIANCE =   237
-integer, parameter, public ::                     ERS_2_MWR_TB =   238
-integer, parameter, public ::             EOS_1_MODIS_RADIANCE =   239
-integer, parameter, public ::             EOS_1_ASTER_RADIANCE =   240
-integer, parameter, public ::                   EOS_2_AMSUA_TB =   241
-integer, parameter, public ::              EOS_2_AIRS_RADIANCE =   242
-integer, parameter, public ::                     EOS_2_HSB_TB =   243
-integer, parameter, public ::             EOS_2_MODIS_RADIANCE =   244
-integer, parameter, public ::                   EOS_2_AMSRE_TB =   245
-integer, parameter, public ::            METOP_1_HIRS_RADIANCE =   246
-integer, parameter, public ::                 METOP_1_AMSUA_TB =   247
-integer, parameter, public ::           METOP_1_AVHRR_RADIANCE =   248
-integer, parameter, public ::                   METOP_1_MHS_TB =   249
-integer, parameter, public ::            METOP_2_HIRS_RADIANCE =   250
-integer, parameter, public ::                 METOP_2_AMSUA_TB =   251
-integer, parameter, public ::           METOP_2_AVHRR_RADIANCE =   252
-integer, parameter, public ::                   METOP_2_MHS_TB =   253
-integer, parameter, public ::           METOP_3_AVHRR_RADIANCE =   254
-integer, parameter, public ::          ENVISAT_1_ATSR_RADIANCE =   255
-integer, parameter, public ::                 ENVISAT_1_MWR_TB =   256
-integer, parameter, public ::            MSG_1_SEVIRI_RADIANCE =   257
-integer, parameter, public ::            MSG_2_SEVIRI_RADIANCE =   258
-integer, parameter, public ::            MSG_3_SEVIRI_RADIANCE =   259
-integer, parameter, public ::            MSG_4_SEVIRI_RADIANCE =   260
-integer, parameter, public ::                  MSG_4_SEVIRI_TB =   261
-integer, parameter, public ::                MSG_4_SEVIRI_BDRF =   262
-integer, parameter, public ::             FY1_3_MVISR_RADIANCE =   263
-integer, parameter, public ::             FY1_4_MVISR_RADIANCE =   264
-integer, parameter, public ::          MTSAT_1_IMAGER_RADIANCE =   265
-integer, parameter, public ::          MTSAT_2_IMAGER_RADIANCE =   266
-integer, parameter, public ::            CORIOLIS_1_WINDSAT_TB =   267
-integer, parameter, public ::                   JPSS_0_ATMS_TB =   268
-integer, parameter, public ::            JPSS_0_VIIRS_RADIANCE =   269
-integer, parameter, public ::       SENTINEL3_1_SLSTR_RADIANCE =   270
-integer, parameter, public ::       SENTINEL3_2_SLSTR_RADIANCE =   271
-integer, parameter, public ::              MEGHATR_1_SAPHIR_TB =   272
-integer, parameter, public ::              MEGHATR_1_MADRAS_TB =   273
-integer, parameter, public ::                    FY3_1_MWTS_TB =   274
-integer, parameter, public ::                    FY3_1_MWHS_TB =   275
-integer, parameter, public ::              FY3_1_IRAS_RADIANCE =   276
-integer, parameter, public ::                    FY3_1_MWRI_TB =   277
-integer, parameter, public ::                    FY3_2_MWTS_TB =   278
-integer, parameter, public ::                    FY3_2_MWHS_TB =   279
-integer, parameter, public ::                    FY3_2_MWRI_TB =   280
-integer, parameter, public ::                    FY3_3_MWRI_TB =   281
-integer, parameter, public ::                   FY3_3_MWTS2_TB =   282
-integer, parameter, public ::                   FY3_3_MWHS2_TB =   283
-integer, parameter, public ::            FY3_3_MERSI1_RADIANCE =   284
-integer, parameter, public ::                    FY3_4_MWRI_TB =   285
-integer, parameter, public ::                   FY3_4_MWTS2_TB =   286
-integer, parameter, public ::                   FY3_4_MWHS2_TB =   287
-integer, parameter, public ::            FY3_4_MERSI2_RADIANCE =   288
-integer, parameter, public ::               COMS_1_MI_RADIANCE =   289
-integer, parameter, public ::        METEOR_M_1_MSUMR_RADIANCE =   290
-integer, parameter, public ::        METEOR_M_2_MSUMR_RADIANCE =   291
-integer, parameter, public ::            METEOR_M_2_MTVZAGY_TB =   292
-integer, parameter, public ::           CALIPSO_1_IIR_RADIANCE =   293
-integer, parameter, public ::                GCOM_W_1_AMSR2_TB =   294
-integer, parameter, public ::           NIMBUS_3_MRIR_RADIANCE =   295
-integer, parameter, public ::           NIMBUS_4_THIR_RADIANCE =   296
-integer, parameter, public ::           NIMBUS_5_THIR_RADIANCE =   297
-integer, parameter, public ::           NIMBUS_6_HIRS_RADIANCE =   298
-integer, parameter, public ::                NIMBUS_6_SCAMS_TB =   299
-integer, parameter, public ::           NIMBUS_6_THIR_RADIANCE =   300
-integer, parameter, public ::                 NIMBUS_7_SMMR_TB =   301
-integer, parameter, public ::           NIMBUS_7_THIR_RADIANCE =   302
-integer, parameter, public ::          HIMAWARI_8_AHI_RADIANCE =   303
-integer, parameter, public ::          HIMAWARI_9_AHI_RADIANCE =   304
-integer, parameter, public ::               MTG_1_FCI_RADIANCE =   305
-integer, parameter, public ::                SARAL_1_ALTIKA_TB =   306
-integer, parameter, public ::                 METOPSG_1_ICI_TB =   307
-integer, parameter, public ::      METOPSG_1_METIMAGE_RADIANCE =   308
-integer, parameter, public ::                 METOPSG_1_MWS_TB =   309
-integer, parameter, public ::                 METOPSG_1_MWI_TB =   310
-integer, parameter, public ::            LANDSAT_4_TM_RADIANCE =   311
-integer, parameter, public ::            LANDSAT_5_TM_RADIANCE =   312
-integer, parameter, public ::            LANDSAT_7_TM_RADIANCE =   313
-integer, parameter, public ::          LANDSAT_8_TIRS_RADIANCE =   314
-integer, parameter, public ::                   JASON_2_AMR_TB =   315
-integer, parameter, public ::                     GPM_1_GMI_TB =   316
-integer, parameter, public ::                     GPM_1_DPR_TB =   317
-integer, parameter, public ::         INSAT3_4_IMAGER_RADIANCE =   318
-integer, parameter, public ::        INSAT3_4_SOUNDER_RADIANCE =   319
-integer, parameter, public ::         INSAT3_5_IMAGER_RADIANCE =   320
-integer, parameter, public ::        INSAT3_5_SOUNDER_RADIANCE =   321
-integer, parameter, public ::        TICFIRE_1_MBFIRI_RADIANCE =   322
-integer, parameter, public ::          ISS_1_ECOSTRES_RADIANCE =   323
-integer, parameter, public ::             HJ1_2_IRMSS_RADIANCE =   324
-integer, parameter, public ::         GKOMPSAT2_1_AMI_RADIANCE =   325
-integer, parameter, public ::           GCOM_C_1_SGLI_RADIANCE =   326
-integer, parameter, public ::                  SMOS_1_MIRAS_TB =   327
-integer, parameter, public ::                   ORS_6_COWVR_TB =   328
-integer, parameter, public ::              FY4_1_AGRI_RADIANCE =   329
-integer, parameter, public ::             TROPICS_0_TROPICS_TB =   330
-integer, parameter, public ::              GF5_1_VIMS_RADIANCE =   331
-integer, parameter, public ::                    HY2_1_MWRI_TB =   332
-integer, parameter, public ::                CLOUDSAT_1_CPR_TB =   333
-                                                                              
-                                                                              
-integer, parameter, public :: MAX_DEFINED_TYPES_OF_OBS =   333
-                                                                              
-!---------------------------------------------------------------------------  
-
-!----------------------------------------------------------------------------
-
-character(len=*), parameter :: source = 'DEFAULT_obs_def_mod.F90'
-
-! integer, parameters: max_defined_types_of_obs, max_defined_quantities
-! generated and inserted by preprocess.
-
-logical, save :: module_initialized = .false.
-
-character(len=512) :: msg_string, msg_string1
-
-! @todo FIXME: what is the right len for a units and
-! other name/value pair strings?
-integer, parameter :: namelen  = 256
-integer, parameter :: valuelen = 256
-
-integer :: num_types_assimilate, num_types_evaluate
-integer :: num_types_use_precomputed_FOs
-
-! Map from values of type in a TOC (e.g. the start of an obs_seq file)
-!  to the type index in this module.
-! Initially, these are undefined and have values -1.
-! In each entry, the toc_type_index value is the index in the table of
-! contents (usually an input obs_sequence file), and the mod_type_index
-! is the current type value in this module.
-
-type toc_mod_type_map_type
-   integer :: toc_type_index(max_defined_types_of_obs) = -1
-   integer :: mod_type_index(max_defined_types_of_obs) = -1
-end type toc_mod_type_map_type
-
-type(toc_mod_type_map_type) :: toc_mod_type_map
-
-! old:
-!integer :: map(2, max_defined_types_of_obs) = -1
-
-! An observation type links together a unique integer index,
-! a character string which matches the integer parameter name,
-! what quantity this type is associated with,
-! and whether observations of this type should be assimilated,
-! evaluated, or neither.
-!
-! Name lengths are limited to 32 characters by compiler
-! restrictions on the length of parameter identifiers.
-type obs_type_type
-   integer              :: index = -1
-   character(len=obstypelength) :: name = ''
-   integer              :: quantity = -1
-   logical              :: assimilate = .false.
-   logical              :: evaluate = .false.
-   logical              :: use_precomputed_FO = .false.
-end type obs_type_type
-
-type(obs_type_type) :: obs_type_info(max_defined_types_of_obs)
-
-! An observation quantity type stores a unique integer index,
-! a character string which matches the integer parameter name,
-! and name/value pairs of metadata for this quantity.
-
-integer, parameter :: MAX_ITEMS = 50
-
-type obs_qty_type
-   integer                      :: index = -1
-   character(len=obstypelength) :: name = ''
-   integer                      :: nitems = 0
-   character(len=namelen)       :: itemname(MAX_ITEMS)  = ''
-   character(len=valuelen)      :: itemvalue(MAX_ITEMS) = ''
-end type obs_qty_type
-
-! the raw quantity uses index 0, so this needs to match.
-type(obs_qty_type) :: obs_qty_info(0:max_defined_quantities)
-
-
-! Namelist array to turn on any requested observation types
-character(len=obstypelength) :: assimilate_these_obs_types(max_defined_types_of_obs) = 'null'
-character(len=obstypelength) :: evaluate_these_obs_types(max_defined_types_of_obs) = 'null'
-character(len=obstypelength) :: use_precomputed_FOs_these_obs_types(max_defined_types_of_obs) = 'null'
-
-
-! namelist /obs_qty_nml/ ...
-namelist /obs_kind_nml/ assimilate_these_obs_types, &
-                        evaluate_these_obs_types, &
-                        use_precomputed_FOs_these_obs_types
-
-contains
-
-!----------------------------------------------------------------------------
-
-subroutine initialize_module()
-
-integer :: iunit, io, i, j
-character(len = 169) :: err_string
-character(len=*), parameter :: routine = 'initialize_module'
-
-module_initialized = .true.
-
-! Read the namelist entry
-call find_namelist_in_file("input.nml", "obs_kind_nml", iunit)
-read(iunit, nml = obs_kind_nml, iostat = io)
-call check_namelist_read(iunit, io, "obs_kind_nml")
-
-
-!----------------------------------------------------------------------------
-
-! These lists are autogenerated by the 'preprocess' program.
-!
-! To add quantities, edit the appropriate xxx_quantity_mod.f90 files
-! and then add them to the 'quantity_files' variable in the
-! &preprocess_nml namelist in the input.nml file in the current directory.
-!
-! To add types, edit the obs_def_xxx_mod.f90 files and then add them
-! to the 'obs_type_files' variable of the &preprocess_nml namelist
-! in the input.nml file in the current directory.
-!
-! Associate integer parameter names with a string of the same name.
-! Also associate types of obs with the quantity.
-
- obs_qty_info(           0 )%index =            0
- obs_qty_info(           0 )%name = "QTY_STATE_VARIABLE"
- obs_qty_info(           0 )%nitems =            1
- obs_qty_info(           0 )%itemname(           1 ) = "desc"
- obs_qty_info(           0 )%itemvalue(           1 ) = "basic item in a state"
-                                                                              
- obs_qty_info(           1 )%index =            1
- obs_qty_info(           1 )%name = "QTY_U_WIND_COMPONENT"
- obs_qty_info(           1 )%nitems =            0
-                                                                              
- obs_qty_info(           2 )%index =            2
- obs_qty_info(           2 )%name = "QTY_V_WIND_COMPONENT"
- obs_qty_info(           2 )%nitems =            0
-                                                                              
- obs_qty_info(           3 )%index =            3
- obs_qty_info(           3 )%name = "QTY_SURFACE_PRESSURE"
- obs_qty_info(           3 )%nitems =            0
-                                                                              
- obs_qty_info(           4 )%index =            4
- obs_qty_info(           4 )%name = "QTY_TEMPERATURE"
- obs_qty_info(           4 )%nitems =            0
-                                                                              
- obs_qty_info(           5 )%index =            5
- obs_qty_info(           5 )%name = "QTY_SPECIFIC_HUMIDITY"
- obs_qty_info(           5 )%nitems =            0
-                                                                              
- obs_qty_info(           6 )%index =            6
- obs_qty_info(           6 )%name = "QTY_PRESSURE"
- obs_qty_info(           6 )%nitems =            0
-                                                                              
- obs_qty_info(           7 )%index =            7
- obs_qty_info(           7 )%name = "QTY_VERTICAL_VELOCITY"
- obs_qty_info(           7 )%nitems =            0
-                                                                              
- obs_qty_info(           8 )%index =            8
- obs_qty_info(           8 )%name = "QTY_RAINWATER_MIXING_RATIO"
- obs_qty_info(           8 )%nitems =            0
-                                                                              
- obs_qty_info(           9 )%index =            9
- obs_qty_info(           9 )%name = "QTY_DEWPOINT"
- obs_qty_info(           9 )%nitems =            0
-                                                                              
- obs_qty_info(          10 )%index =           10
- obs_qty_info(          10 )%name = "QTY_DENSITY"
- obs_qty_info(          10 )%nitems =            0
-                                                                              
- obs_qty_info(          11 )%index =           11
- obs_qty_info(          11 )%name = "QTY_MEAN_SOURCE"
- obs_qty_info(          11 )%nitems =            0
-                                                                              
- obs_qty_info(          12 )%index =           12
- obs_qty_info(          12 )%name = "QTY_VELOCITY"
- obs_qty_info(          12 )%nitems =            0
-                                                                              
- obs_qty_info(          13 )%index =           13
- obs_qty_info(          13 )%name = "QTY_RADAR_REFLECTIVITY"
- obs_qty_info(          13 )%nitems =            0
-                                                                              
- obs_qty_info(          14 )%index =           14
- obs_qty_info(          14 )%name = "QTY_GRAUPEL_MIXING_RATIO"
- obs_qty_info(          14 )%nitems =            0
-                                                                              
- obs_qty_info(          15 )%index =           15
- obs_qty_info(          15 )%name = "QTY_SNOW_MIXING_RATIO"
- obs_qty_info(          15 )%nitems =            0
-                                                                              
- obs_qty_info(          16 )%index =           16
- obs_qty_info(          16 )%name = "QTY_GPSRO"
- obs_qty_info(          16 )%nitems =            0
-                                                                              
- obs_qty_info(          17 )%index =           17
- obs_qty_info(          17 )%name = "QTY_CLOUD_LIQUID_WATER"
- obs_qty_info(          17 )%nitems =            0
-                                                                              
- obs_qty_info(          18 )%index =           18
- obs_qty_info(          18 )%name = "QTY_CLOUD_ICE"
- obs_qty_info(          18 )%nitems =            0
-                                                                              
- obs_qty_info(          19 )%index =           19
- obs_qty_info(          19 )%name = "QTY_CONDENSATIONAL_HEATING"
- obs_qty_info(          19 )%nitems =            0
-                                                                              
- obs_qty_info(          20 )%index =           20
- obs_qty_info(          20 )%name = "QTY_VAPOR_MIXING_RATIO"
- obs_qty_info(          20 )%nitems =            0
-                                                                              
- obs_qty_info(          21 )%index =           21
- obs_qty_info(          21 )%name = "QTY_ICE_NUMBER_CONCENTRATION"
- obs_qty_info(          21 )%nitems =            0
-                                                                              
- obs_qty_info(          22 )%index =           22
- obs_qty_info(          22 )%name = "QTY_GEOPOTENTIAL_HEIGHT"
- obs_qty_info(          22 )%nitems =            0
-                                                                              
- obs_qty_info(          23 )%index =           23
- obs_qty_info(          23 )%name = "QTY_POTENTIAL_TEMPERATURE"
- obs_qty_info(          23 )%nitems =            0
-                                                                              
- obs_qty_info(          24 )%index =           24
- obs_qty_info(          24 )%name = "QTY_SOIL_MOISTURE"
- obs_qty_info(          24 )%nitems =            0
-                                                                              
- obs_qty_info(          25 )%index =           25
- obs_qty_info(          25 )%name = "QTY_SOURCE_PHASE"
- obs_qty_info(          25 )%nitems =            0
-                                                                              
- obs_qty_info(          26 )%index =           26
- obs_qty_info(          26 )%name = "QTY_SURFACE_ELEVATION"
- obs_qty_info(          26 )%nitems =            0
-                                                                              
- obs_qty_info(          27 )%index =           27
- obs_qty_info(          27 )%name = "QTY_GRAV_WAVE_DRAG_EFFIC"
- obs_qty_info(          27 )%nitems =            0
-                                                                              
- obs_qty_info(          28 )%index =           28
- obs_qty_info(          28 )%name = "QTY_GRAV_WAVE_STRESS_FRACTION"
- obs_qty_info(          28 )%nitems =            0
-                                                                              
- obs_qty_info(          29 )%index =           29
- obs_qty_info(          29 )%name = "QTY_POWER_WEIGHTED_FALL_SPEED"
- obs_qty_info(          29 )%nitems =            0
-                                                                              
- obs_qty_info(          30 )%index =           30
- obs_qty_info(          30 )%name = "QTY_CLOUDWATER_MIXING_RATIO"
- obs_qty_info(          30 )%nitems =            0
-                                                                              
- obs_qty_info(          31 )%index =           31
- obs_qty_info(          31 )%name = "QTY_ICE_MIXING_RATIO"
- obs_qty_info(          31 )%nitems =            0
-                                                                              
- obs_qty_info(          32 )%index =           32
- obs_qty_info(          32 )%name = "QTY_DROPLET_NUMBER_CONCENTR"
- obs_qty_info(          32 )%nitems =            0
-                                                                              
- obs_qty_info(          33 )%index =           33
- obs_qty_info(          33 )%name = "QTY_SNOW_NUMBER_CONCENTR"
- obs_qty_info(          33 )%nitems =            0
-                                                                              
- obs_qty_info(          34 )%index =           34
- obs_qty_info(          34 )%name = "QTY_RAIN_NUMBER_CONCENTR"
- obs_qty_info(          34 )%nitems =            0
-                                                                              
- obs_qty_info(          35 )%index =           35
- obs_qty_info(          35 )%name = "QTY_GRAUPEL_NUMBER_CONCENTR"
- obs_qty_info(          35 )%nitems =            0
-                                                                              
- obs_qty_info(          36 )%index =           36
- obs_qty_info(          36 )%name = "QTY_CLOUD_FRACTION"
- obs_qty_info(          36 )%nitems =            0
-                                                                              
- obs_qty_info(          37 )%index =           37
- obs_qty_info(          37 )%name = "QTY_ICE_FRACTION"
- obs_qty_info(          37 )%nitems =            0
-                                                                              
- obs_qty_info(          38 )%index =           38
- obs_qty_info(          38 )%name = "QTY_RELATIVE_HUMIDITY"
- obs_qty_info(          38 )%nitems =            0
-                                                                              
- obs_qty_info(          39 )%index =           39
- obs_qty_info(          39 )%name = "QTY_1D_PARAMETER"
- obs_qty_info(          39 )%nitems =            0
-                                                                              
- obs_qty_info(          40 )%index =           40
- obs_qty_info(          40 )%name = "QTY_2D_PARAMETER"
- obs_qty_info(          40 )%nitems =            0
-                                                                              
- obs_qty_info(          41 )%index =           41
- obs_qty_info(          41 )%name = "QTY_3D_PARAMETER"
- obs_qty_info(          41 )%nitems =            0
-                                                                              
- obs_qty_info(          42 )%index =           42
- obs_qty_info(          42 )%name = "QTY_ALTIMETER_TENDENCY"
- obs_qty_info(          42 )%nitems =            0
-                                                                              
- obs_qty_info(          43 )%index =           43
- obs_qty_info(          43 )%name = "QTY_PRECIPITABLE_WATER"
- obs_qty_info(          43 )%nitems =            0
-                                                                              
- obs_qty_info(          44 )%index =           44
- obs_qty_info(          44 )%name = "QTY_OCCULTATION_REFRACTIVITY"
- obs_qty_info(          44 )%nitems =            0
-                                                                              
- obs_qty_info(          45 )%index =           45
- obs_qty_info(          45 )%name = "QTY_OCCULTATION_EXCESSPHASE"
- obs_qty_info(          45 )%nitems =            0
-                                                                              
- obs_qty_info(          46 )%index =           46
- obs_qty_info(          46 )%name = "QTY_GEOMETRIC_HEIGHT"
- obs_qty_info(          46 )%nitems =            0
-                                                                              
- obs_qty_info(          47 )%index =           47
- obs_qty_info(          47 )%name = "QTY_INFRARED_RADIANCE"
- obs_qty_info(          47 )%nitems =            0
-                                                                              
- obs_qty_info(          48 )%index =           48
- obs_qty_info(          48 )%name = "QTY_INFRARED_BRIGHT_TEMP"
- obs_qty_info(          48 )%nitems =            0
-                                                                              
- obs_qty_info(          49 )%index =           49
- obs_qty_info(          49 )%name = "QTY_LANDMASK"
- obs_qty_info(          49 )%nitems =            0
-                                                                              
- obs_qty_info(          50 )%index =           50
- obs_qty_info(          50 )%name = "QTY_EDGE_NORMAL_SPEED"
- obs_qty_info(          50 )%nitems =            0
-                                                                              
- obs_qty_info(          51 )%index =           51
- obs_qty_info(          51 )%name = "QTY_CLW_PATH"
- obs_qty_info(          51 )%nitems =            0
-                                                                              
- obs_qty_info(          52 )%index =           52
- obs_qty_info(          52 )%name = "QTY_CWP_PATH"
- obs_qty_info(          52 )%nitems =            0
-                                                                              
- obs_qty_info(          53 )%index =           53
- obs_qty_info(          53 )%name = "QTY_CWP_PATH_ZERO"
- obs_qty_info(          53 )%nitems =            0
-                                                                              
- obs_qty_info(          54 )%index =           54
- obs_qty_info(          54 )%name = "QTY_WIND_TURBINE_POWER"
- obs_qty_info(          54 )%nitems =            0
-                                                                              
- obs_qty_info(          55 )%index =           55
- obs_qty_info(          55 )%name = "QTY_2M_SPECIFIC_HUMIDITY"
- obs_qty_info(          55 )%nitems =            0
-                                                                              
- obs_qty_info(          56 )%index =           56
- obs_qty_info(          56 )%name = "QTY_2M_TEMPERATURE"
- obs_qty_info(          56 )%nitems =            0
-                                                                              
- obs_qty_info(          57 )%index =           57
- obs_qty_info(          57 )%name = "QTY_10M_U_WIND_COMPONENT"
- obs_qty_info(          57 )%nitems =            0
-                                                                              
- obs_qty_info(          58 )%index =           58
- obs_qty_info(          58 )%name = "QTY_10M_V_WIND_COMPONENT"
- obs_qty_info(          58 )%nitems =            0
-                                                                              
- obs_qty_info(          59 )%index =           59
- obs_qty_info(          59 )%name = "QTY_SKIN_TEMPERATURE"
- obs_qty_info(          59 )%nitems =            0
-                                                                              
- obs_qty_info(          60 )%index =           60
- obs_qty_info(          60 )%name = "QTY_NADIR_RADIANCE"
- obs_qty_info(          60 )%nitems =            0
-                                                                              
- obs_qty_info(          61 )%index =           61
- obs_qty_info(          61 )%name = "QTY_TRACER_1_MIXING_RATIO"
- obs_qty_info(          61 )%nitems =            0
-                                                                              
- obs_qty_info(          62 )%index =           62
- obs_qty_info(          62 )%name = "QTY_TRACER_2_MIXING_RATIO"
- obs_qty_info(          62 )%nitems =            0
-                                                                              
- obs_qty_info(          63 )%index =           63
- obs_qty_info(          63 )%name = "QTY_TRACER_CONCENTRATION"
- obs_qty_info(          63 )%nitems =            0
-                                                                              
- obs_qty_info(          64 )%index =           64
- obs_qty_info(          64 )%name = "QTY_TRACER_SOURCE"
- obs_qty_info(          64 )%nitems =            0
-                                                                              
- obs_qty_info(          65 )%index =           65
- obs_qty_info(          65 )%name = "QTY_SOIL_TEMPERATURE"
- obs_qty_info(          65 )%nitems =            0
-                                                                              
- obs_qty_info(          66 )%index =           66
- obs_qty_info(          66 )%name = "QTY_SOIL_LIQUID_WATER"
- obs_qty_info(          66 )%nitems =            0
-                                                                              
- obs_qty_info(          67 )%index =           67
- obs_qty_info(          67 )%name = "QTY_VERTICAL_VORTICITY"
- obs_qty_info(          67 )%nitems =            0
-                                                                              
- obs_qty_info(          68 )%index =           68
- obs_qty_info(          68 )%name = "QTY_SURFACE_ALBEDO"
- obs_qty_info(          68 )%nitems =            0
-                                                                              
- obs_qty_info(          69 )%index =           69
- obs_qty_info(          69 )%name = "QTY_SURFACE_EMISSIVITY"
- obs_qty_info(          69 )%nitems =            0
-                                                                              
- obs_qty_info(          70 )%index =           70
- obs_qty_info(          70 )%name = "QTY_DUST_OPACITY_7MB"
- obs_qty_info(          70 )%nitems =            0
-                                                                              
- obs_qty_info(          71 )%index =           71
- obs_qty_info(          71 )%name = "QTY_THC"
- obs_qty_info(          71 )%nitems =            0
-                                                                              
- obs_qty_info(          72 )%index =           72
- obs_qty_info(          72 )%name = "QTY_VORTEX_LON"
- obs_qty_info(          72 )%nitems =            0
-                                                                              
- obs_qty_info(          73 )%index =           73
- obs_qty_info(          73 )%name = "QTY_VORTEX_LAT"
- obs_qty_info(          73 )%nitems =            0
-                                                                              
- obs_qty_info(          74 )%index =           74
- obs_qty_info(          74 )%name = "QTY_VORTEX_PMIN"
- obs_qty_info(          74 )%nitems =            0
-                                                                              
- obs_qty_info(          75 )%index =           75
- obs_qty_info(          75 )%name = "QTY_VORTEX_WMAX"
- obs_qty_info(          75 )%nitems =            0
-                                                                              
- obs_qty_info(          76 )%index =           76
- obs_qty_info(          76 )%name = "QTY_EXNER_FUNCTION"
- obs_qty_info(          76 )%nitems =            0
-                                                                              
- obs_qty_info(          77 )%index =           77
- obs_qty_info(          77 )%name = "QTY_TURBULENT_KINETIC_ENERGY"
- obs_qty_info(          77 )%nitems =            0
-                                                                              
- obs_qty_info(          78 )%index =           78
- obs_qty_info(          78 )%name = "QTY_TOTAL_PRECIPITABLE_WATER"
- obs_qty_info(          78 )%nitems =            0
-                                                                              
- obs_qty_info(          79 )%index =           79
- obs_qty_info(          79 )%name = "QTY_VERTLEVEL"
- obs_qty_info(          79 )%nitems =            0
-                                                                              
- obs_qty_info(          80 )%index =           80
- obs_qty_info(          80 )%name = "QTY_MICROWAVE_BRIGHT_TEMP"
- obs_qty_info(          80 )%nitems =            0
-                                                                              
- obs_qty_info(          81 )%index =           81
- obs_qty_info(          81 )%name = "QTY_INTEGRATED_SULFATE"
- obs_qty_info(          81 )%nitems =            0
-                                                                              
- obs_qty_info(          82 )%index =           82
- obs_qty_info(          82 )%name = "QTY_INTEGRATED_DUST"
- obs_qty_info(          82 )%nitems =            0
-                                                                              
- obs_qty_info(          83 )%index =           83
- obs_qty_info(          83 )%name = "QTY_INTEGRATED_SMOKE"
- obs_qty_info(          83 )%nitems =            0
-                                                                              
- obs_qty_info(          84 )%index =           84
- obs_qty_info(          84 )%name = "QTY_INTEGRATED_SEASALT"
- obs_qty_info(          84 )%nitems =            0
-                                                                              
- obs_qty_info(          85 )%index =           85
- obs_qty_info(          85 )%name = "QTY_INTEGRATED_AOD"
- obs_qty_info(          85 )%nitems =            0
-                                                                              
- obs_qty_info(          86 )%index =           86
- obs_qty_info(          86 )%name = "QTY_SO2"
- obs_qty_info(          86 )%nitems =            0
-                                                                              
- obs_qty_info(          87 )%index =           87
- obs_qty_info(          87 )%name = "QTY_SULFATE"
- obs_qty_info(          87 )%nitems =            0
-                                                                              
- obs_qty_info(          88 )%index =           88
- obs_qty_info(          88 )%name = "QTY_DUST"
- obs_qty_info(          88 )%nitems =            0
-                                                                              
- obs_qty_info(          89 )%index =           89
- obs_qty_info(          89 )%name = "QTY_SMOKE"
- obs_qty_info(          89 )%nitems =            0
-                                                                              
- obs_qty_info(          90 )%index =           90
- obs_qty_info(          90 )%name = "QTY_SEASALT"
- obs_qty_info(          90 )%nitems =            0
-                                                                              
- obs_qty_info(          91 )%index =           91
- obs_qty_info(          91 )%name = "QTY_HAIL_MIXING_RATIO"
- obs_qty_info(          91 )%nitems =            0
-                                                                              
- obs_qty_info(          92 )%index =           92
- obs_qty_info(          92 )%name = "QTY_HAIL_NUMBER_CONCENTR"
- obs_qty_info(          92 )%nitems =            0
-                                                                              
- obs_qty_info(          93 )%index =           93
- obs_qty_info(          93 )%name = "QTY_GRAUPEL_VOLUME"
- obs_qty_info(          93 )%nitems =            0
-                                                                              
- obs_qty_info(          94 )%index =           94
- obs_qty_info(          94 )%name = "QTY_HAIL_VOLUME"
- obs_qty_info(          94 )%nitems =            0
-                                                                              
- obs_qty_info(          95 )%index =           95
- obs_qty_info(          95 )%name = "QTY_DIFFERENTIAL_REFLECTIVITY"
- obs_qty_info(          95 )%nitems =            0
-                                                                              
- obs_qty_info(          96 )%index =           96
- obs_qty_info(          96 )%name = "QTY_SPECIFIC_DIFFERENTIAL_PHASE"
- obs_qty_info(          96 )%nitems =            0
-                                                                              
- obs_qty_info(          97 )%index =           97
- obs_qty_info(          97 )%name = "QTY_FLASH_RATE_2D"
- obs_qty_info(          97 )%nitems =            0
-                                                                              
- obs_qty_info(          98 )%index =           98
- obs_qty_info(          98 )%name = "QTY_RADIANCE"
- obs_qty_info(          98 )%nitems =            0
-                                                                              
- obs_qty_info(          99 )%index =           99
- obs_qty_info(          99 )%name = "QTY_BRIGHTNESS_TEMPERATURE"
- obs_qty_info(          99 )%nitems =            0
-                                                                              
- obs_qty_info(         100 )%index =          100
- obs_qty_info(         100 )%name = "QTY_BI_DIRECTIONAL_REFLECTANCE"
- obs_qty_info(         100 )%nitems =            0
-                                                                              
- obs_qty_info(         101 )%index =          101
- obs_qty_info(         101 )%name = "QTY_SURFACE_TYPE"
- obs_qty_info(         101 )%nitems =            0
-                                                                              
- obs_qty_info(         102 )%index =          102
- obs_qty_info(         102 )%name = "QTY_WIND_FETCH"
- obs_qty_info(         102 )%nitems =            0
-                                                                              
- obs_qty_info(         103 )%index =          103
- obs_qty_info(         103 )%name = "QTY_WATER_TYPE"
- obs_qty_info(         103 )%nitems =            0
-                                                                              
- obs_qty_info(         104 )%index =          104
- obs_qty_info(         104 )%name = "QTY_FOAM_FRAC"
- obs_qty_info(         104 )%nitems =            0
-                                                                              
- obs_qty_info(         105 )%index =          105
- obs_qty_info(         105 )%name = "QTY_INSOLUBLE_AER"
- obs_qty_info(         105 )%nitems =            0
-                                                                              
- obs_qty_info(         106 )%index =          106
- obs_qty_info(         106 )%name = "QTY_H2O_SOLUBLE_AER"
- obs_qty_info(         106 )%nitems =            0
-                                                                              
- obs_qty_info(         107 )%index =          107
- obs_qty_info(         107 )%name = "QTY_SOOT"
- obs_qty_info(         107 )%nitems =            0
-                                                                              
- obs_qty_info(         108 )%index =          108
- obs_qty_info(         108 )%name = "QTY_SEASALT_ACCUM"
- obs_qty_info(         108 )%nitems =            0
-                                                                              
- obs_qty_info(         109 )%index =          109
- obs_qty_info(         109 )%name = "QTY_SEASALT_COARSE"
- obs_qty_info(         109 )%nitems =            0
-                                                                              
- obs_qty_info(         110 )%index =          110
- obs_qty_info(         110 )%name = "QTY_MINERAL_NUCLEUS"
- obs_qty_info(         110 )%nitems =            0
-                                                                              
- obs_qty_info(         111 )%index =          111
- obs_qty_info(         111 )%name = "QTY_MINERAL_ACCUM"
- obs_qty_info(         111 )%nitems =            0
-                                                                              
- obs_qty_info(         112 )%index =          112
- obs_qty_info(         112 )%name = "QTY_MINERAL_COARSE"
- obs_qty_info(         112 )%nitems =            0
-                                                                              
- obs_qty_info(         113 )%index =          113
- obs_qty_info(         113 )%name = "QTY_MINERAL_TRANSPORTED"
- obs_qty_info(         113 )%nitems =            0
-                                                                              
- obs_qty_info(         114 )%index =          114
- obs_qty_info(         114 )%name = "QTY_SULPHATED_DROPS"
- obs_qty_info(         114 )%nitems =            0
-                                                                              
- obs_qty_info(         115 )%index =          115
- obs_qty_info(         115 )%name = "QTY_VOLCANIC_ASH"
- obs_qty_info(         115 )%nitems =            0
-                                                                              
- obs_qty_info(         116 )%index =          116
- obs_qty_info(         116 )%name = "QTY_NEW_VOLCANIC_ASH"
- obs_qty_info(         116 )%nitems =            0
-                                                                              
- obs_qty_info(         117 )%index =          117
- obs_qty_info(         117 )%name = "QTY_ASIAN_DUST"
- obs_qty_info(         117 )%nitems =            0
-                                                                              
- obs_qty_info(         118 )%index =          118
- obs_qty_info(         118 )%name = "QTY_BLACK_CARBON"
- obs_qty_info(         118 )%nitems =            0
-                                                                              
- obs_qty_info(         119 )%index =          119
- obs_qty_info(         119 )%name = "QTY_DUST_BIN1"
- obs_qty_info(         119 )%nitems =            0
-                                                                              
- obs_qty_info(         120 )%index =          120
- obs_qty_info(         120 )%name = "QTY_DUST_BIN2"
- obs_qty_info(         120 )%nitems =            0
-                                                                              
- obs_qty_info(         121 )%index =          121
- obs_qty_info(         121 )%name = "QTY_DUST_BIN3"
- obs_qty_info(         121 )%nitems =            0
-                                                                              
- obs_qty_info(         122 )%index =          122
- obs_qty_info(         122 )%name = "QTY_AMMONIUM_SULPHATE"
- obs_qty_info(         122 )%nitems =            0
-                                                                              
- obs_qty_info(         123 )%index =          123
- obs_qty_info(         123 )%name = "QTY_SEA_SALT_BIN1"
- obs_qty_info(         123 )%nitems =            0
-                                                                              
- obs_qty_info(         124 )%index =          124
- obs_qty_info(         124 )%name = "QTY_SEA_SALT_BIN2"
- obs_qty_info(         124 )%nitems =            0
-                                                                              
- obs_qty_info(         125 )%index =          125
- obs_qty_info(         125 )%name = "QTY_SEA_SALT_BIN3"
- obs_qty_info(         125 )%nitems =            0
-                                                                              
- obs_qty_info(         126 )%index =          126
- obs_qty_info(         126 )%name = "QTY_HYDROPHILIC_ORGANIC_MATTER"
- obs_qty_info(         126 )%nitems =            0
-                                                                              
- obs_qty_info(         127 )%index =          127
- obs_qty_info(         127 )%name = "QTY_CLOUDWATER_DE"
- obs_qty_info(         127 )%nitems =            0
-                                                                              
- obs_qty_info(         128 )%index =          128
- obs_qty_info(         128 )%name = "QTY_CLOUD_ICE_DE"
- obs_qty_info(         128 )%nitems =            0
-                                                                              
- obs_qty_info(         129 )%index =          129
- obs_qty_info(         129 )%name = "QTY_COLUMN_CLOUD_FRAC"
- obs_qty_info(         129 )%nitems =            0
-                                                                              
- obs_qty_info(         130 )%index =          130
- obs_qty_info(         130 )%name = "QTY_CLOUD_TOP_PRESSURE"
- obs_qty_info(         130 )%nitems =            0
-                                                                              
- obs_qty_info(         131 )%index =          131
- obs_qty_info(         131 )%name = "QTY_ABSOLUTE_HUMIDITY"
- obs_qty_info(         131 )%nitems =            0
-                                                                              
- obs_qty_info(         132 )%index =          132
- obs_qty_info(         132 )%name = "QTY_O3"
- obs_qty_info(         132 )%nitems =            0
-                                                                              
- obs_qty_info(         133 )%index =          133
- obs_qty_info(         133 )%name = "QTY_CO2"
- obs_qty_info(         133 )%nitems =            0
-                                                                              
- obs_qty_info(         134 )%index =          134
- obs_qty_info(         134 )%name = "QTY_N2O"
- obs_qty_info(         134 )%nitems =            0
-                                                                              
- obs_qty_info(         135 )%index =          135
- obs_qty_info(         135 )%name = "QTY_CH4"
- obs_qty_info(         135 )%nitems =            0
-                                                                              
- obs_qty_info(         136 )%index =          136
- obs_qty_info(         136 )%name = "QTY_CO"
- obs_qty_info(         136 )%nitems =            0
-                                                                              
- obs_qty_info(         137 )%index =          137
- obs_qty_info(         137 )%name = "QTY_SALINITY"
- obs_qty_info(         137 )%nitems =            0
-                                                                              
- obs_qty_info(         138 )%index =          138
- obs_qty_info(         138 )%name = "QTY_SNOWCOVER_FRAC"
- obs_qty_info(         138 )%nitems =            0
-                                                                              
-                                                                              
-obs_type_info(    1) = obs_type_type(RADIOSONDE_U_WIND_COMPONENT, &
-    'RADIOSONDE_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(    2) = obs_type_type(RADIOSONDE_V_WIND_COMPONENT, &
-    'RADIOSONDE_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(    3) = obs_type_type(RADIOSONDE_GEOPOTENTIAL_HGT, &
-    'RADIOSONDE_GEOPOTENTIAL_HGT', QTY_GEOPOTENTIAL_HEIGHT, .false., .false., .false.)
-obs_type_info(    4) = obs_type_type(RADIOSONDE_SURFACE_PRESSURE, &
-    'RADIOSONDE_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(    5) = obs_type_type(RADIOSONDE_TEMPERATURE, &
-    'RADIOSONDE_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(    6) = obs_type_type(RADIOSONDE_SPECIFIC_HUMIDITY, &
-    'RADIOSONDE_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(    7) = obs_type_type(DROPSONDE_U_WIND_COMPONENT, &
-    'DROPSONDE_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(    8) = obs_type_type(DROPSONDE_V_WIND_COMPONENT, &
-    'DROPSONDE_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(    9) = obs_type_type(DROPSONDE_SURFACE_PRESSURE, &
-    'DROPSONDE_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   10) = obs_type_type(DROPSONDE_TEMPERATURE, &
-    'DROPSONDE_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   11) = obs_type_type(DROPSONDE_SPECIFIC_HUMIDITY, &
-    'DROPSONDE_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(   12) = obs_type_type(AIRCRAFT_U_WIND_COMPONENT, &
-    'AIRCRAFT_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   13) = obs_type_type(AIRCRAFT_V_WIND_COMPONENT, &
-    'AIRCRAFT_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   14) = obs_type_type(AIRCRAFT_TEMPERATURE, &
-    'AIRCRAFT_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   15) = obs_type_type(AIRCRAFT_SPECIFIC_HUMIDITY, &
-    'AIRCRAFT_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(   16) = obs_type_type(ACARS_U_WIND_COMPONENT, &
-    'ACARS_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   17) = obs_type_type(ACARS_V_WIND_COMPONENT, &
-    'ACARS_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   18) = obs_type_type(ACARS_TEMPERATURE, &
-    'ACARS_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   19) = obs_type_type(ACARS_SPECIFIC_HUMIDITY, &
-    'ACARS_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(   20) = obs_type_type(MARINE_SFC_U_WIND_COMPONENT, &
-    'MARINE_SFC_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   21) = obs_type_type(MARINE_SFC_V_WIND_COMPONENT, &
-    'MARINE_SFC_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   22) = obs_type_type(MARINE_SFC_TEMPERATURE, &
-    'MARINE_SFC_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   23) = obs_type_type(MARINE_SFC_SPECIFIC_HUMIDITY, &
-    'MARINE_SFC_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(   24) = obs_type_type(MARINE_SFC_PRESSURE, &
-    'MARINE_SFC_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   25) = obs_type_type(LAND_SFC_U_WIND_COMPONENT, &
-    'LAND_SFC_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   26) = obs_type_type(LAND_SFC_V_WIND_COMPONENT, &
-    'LAND_SFC_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   27) = obs_type_type(LAND_SFC_TEMPERATURE, &
-    'LAND_SFC_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   28) = obs_type_type(LAND_SFC_SPECIFIC_HUMIDITY, &
-    'LAND_SFC_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(   29) = obs_type_type(LAND_SFC_PRESSURE, &
-    'LAND_SFC_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   30) = obs_type_type(SAT_U_WIND_COMPONENT, &
-    'SAT_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   31) = obs_type_type(SAT_V_WIND_COMPONENT, &
-    'SAT_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   32) = obs_type_type(ATOV_TEMPERATURE, &
-    'ATOV_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   33) = obs_type_type(AIRS_TEMPERATURE, &
-    'AIRS_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   34) = obs_type_type(AIRS_SPECIFIC_HUMIDITY, &
-    'AIRS_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(   35) = obs_type_type(GPS_PRECIPITABLE_WATER, &
-    'GPS_PRECIPITABLE_WATER', QTY_PRECIPITABLE_WATER, .false., .false., .false.)
-obs_type_info(   36) = obs_type_type(VADWND_U_WIND_COMPONENT, &
-    'VADWND_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   37) = obs_type_type(VADWND_V_WIND_COMPONENT, &
-    'VADWND_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   38) = obs_type_type(CIMMS_AMV_U_WIND_COMPONENT, &
-    'CIMMS_AMV_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   39) = obs_type_type(CIMMS_AMV_V_WIND_COMPONENT, &
-    'CIMMS_AMV_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   40) = obs_type_type(DOPPLER_RADIAL_VELOCITY, &
-    'DOPPLER_RADIAL_VELOCITY', QTY_VELOCITY, .false., .false., .false.)
-obs_type_info(   41) = obs_type_type(RADAR_REFLECTIVITY, &
-    'RADAR_REFLECTIVITY', QTY_RADAR_REFLECTIVITY, .false., .false., .false.)
-obs_type_info(   42) = obs_type_type(RADAR_CLEARAIR_REFLECTIVITY, &
-    'RADAR_CLEARAIR_REFLECTIVITY', QTY_RADAR_REFLECTIVITY, .false., .false., .false.)
-obs_type_info(   43) = obs_type_type(PRECIPITATION_FALL_SPEED, &
-    'PRECIPITATION_FALL_SPEED', QTY_POWER_WEIGHTED_FALL_SPEED, .false., .false., .false.)
-obs_type_info(   44) = obs_type_type(METAR_U_10_METER_WIND, &
-    'METAR_U_10_METER_WIND', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   45) = obs_type_type(METAR_V_10_METER_WIND, &
-    'METAR_V_10_METER_WIND', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   46) = obs_type_type(METAR_TEMPERATURE_2_METER, &
-    'METAR_TEMPERATURE_2_METER', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   47) = obs_type_type(METAR_SPECIFIC_HUMIDITY_2_METER, &
-    'METAR_SPECIFIC_HUMIDITY_2_METER', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(   48) = obs_type_type(METAR_SURFACE_PRESSURE, &
-    'METAR_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   49) = obs_type_type(METAR_POT_TEMP_2_METER, &
-    'METAR_POT_TEMP_2_METER', QTY_POTENTIAL_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   50) = obs_type_type(DEWPOINT, &
-    'DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   51) = obs_type_type(DEWPOINT_2_METER, &
-    'DEWPOINT_2_METER', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   52) = obs_type_type(BUOY_DEWPOINT, &
-    'BUOY_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   53) = obs_type_type(SHIP_DEWPOINT, &
-    'SHIP_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   54) = obs_type_type(SYNOP_DEWPOINT, &
-    'SYNOP_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   55) = obs_type_type(AIREP_DEWPOINT, &
-    'AIREP_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   56) = obs_type_type(AMDAR_DEWPOINT, &
-    'AMDAR_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   57) = obs_type_type(PILOT_DEWPOINT, &
-    'PILOT_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   58) = obs_type_type(BOGUS_DEWPOINT, &
-    'BOGUS_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   59) = obs_type_type(AIRS_DEWPOINT, &
-    'AIRS_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   60) = obs_type_type(METAR_DEWPOINT_2_METER, &
-    'METAR_DEWPOINT_2_METER', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   61) = obs_type_type(RADIOSONDE_DEWPOINT, &
-    'RADIOSONDE_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   62) = obs_type_type(DROPSONDE_DEWPOINT, &
-    'DROPSONDE_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   63) = obs_type_type(AIRCRAFT_DEWPOINT, &
-    'AIRCRAFT_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   64) = obs_type_type(ACARS_DEWPOINT, &
-    'ACARS_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   65) = obs_type_type(MARINE_SFC_DEWPOINT, &
-    'MARINE_SFC_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   66) = obs_type_type(LAND_SFC_DEWPOINT, &
-    'LAND_SFC_DEWPOINT', QTY_DEWPOINT, .false., .false., .false.)
-obs_type_info(   67) = obs_type_type(RADIOSONDE_RELATIVE_HUMIDITY, &
-    'RADIOSONDE_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
-obs_type_info(   68) = obs_type_type(DROPSONDE_RELATIVE_HUMIDITY, &
-    'DROPSONDE_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
-obs_type_info(   69) = obs_type_type(AIRCRAFT_RELATIVE_HUMIDITY, &
-    'AIRCRAFT_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
-obs_type_info(   70) = obs_type_type(ACARS_RELATIVE_HUMIDITY, &
-    'ACARS_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
-obs_type_info(   71) = obs_type_type(MARINE_SFC_RELATIVE_HUMIDITY, &
-    'MARINE_SFC_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
-obs_type_info(   72) = obs_type_type(LAND_SFC_RELATIVE_HUMIDITY, &
-    'LAND_SFC_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
-obs_type_info(   73) = obs_type_type(METAR_RELATIVE_HUMIDITY_2_METER, &
-    'METAR_RELATIVE_HUMIDITY_2_METER', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
-obs_type_info(   74) = obs_type_type(AIRS_RELATIVE_HUMIDITY, &
-    'AIRS_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
-obs_type_info(   75) = obs_type_type(MESONET_RELATIVE_HUMIDITY, &
-    'MESONET_RELATIVE_HUMIDITY', QTY_RELATIVE_HUMIDITY, .false., .false., .false.)
-obs_type_info(   76) = obs_type_type(RADIOSONDE_SURFACE_ALTIMETER, &
-    'RADIOSONDE_SURFACE_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   77) = obs_type_type(DROPSONDE_SURFACE_ALTIMETER, &
-    'DROPSONDE_SURFACE_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   78) = obs_type_type(MARINE_SFC_ALTIMETER, &
-    'MARINE_SFC_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   79) = obs_type_type(LAND_SFC_ALTIMETER, &
-    'LAND_SFC_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   80) = obs_type_type(METAR_ALTIMETER, &
-    'METAR_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   81) = obs_type_type(MESONET_SURFACE_ALTIMETER, &
-    'MESONET_SURFACE_ALTIMETER', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   82) = obs_type_type(TEMPERATURE, &
-    'TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   83) = obs_type_type(SPECIFIC_HUMIDITY, &
-    'SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(   84) = obs_type_type(PRESSURE, &
-    'PRESSURE', QTY_PRESSURE, .false., .false., .false.)
-obs_type_info(   85) = obs_type_type(GPSRO_REFRACTIVITY, &
-    'GPSRO_REFRACTIVITY', QTY_GPSRO, .false., .false., .false.)
-obs_type_info(   86) = obs_type_type(VORTEX_LAT, &
-    'VORTEX_LAT', QTY_VORTEX_LAT, .false., .false., .false.)
-obs_type_info(   87) = obs_type_type(VORTEX_LON, &
-    'VORTEX_LON', QTY_VORTEX_LON, .false., .false., .false.)
-obs_type_info(   88) = obs_type_type(VORTEX_PMIN, &
-    'VORTEX_PMIN', QTY_VORTEX_PMIN, .false., .false., .false.)
-obs_type_info(   89) = obs_type_type(VORTEX_WMAX, &
-    'VORTEX_WMAX', QTY_VORTEX_WMAX, .false., .false., .false.)
-obs_type_info(   90) = obs_type_type(BUOY_U_WIND_COMPONENT, &
-    'BUOY_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   91) = obs_type_type(BUOY_V_WIND_COMPONENT, &
-    'BUOY_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   92) = obs_type_type(BUOY_SURFACE_PRESSURE, &
-    'BUOY_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   93) = obs_type_type(BUOY_TEMPERATURE, &
-    'BUOY_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   94) = obs_type_type(SHIP_U_WIND_COMPONENT, &
-    'SHIP_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   95) = obs_type_type(SHIP_V_WIND_COMPONENT, &
-    'SHIP_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   96) = obs_type_type(SHIP_SURFACE_PRESSURE, &
-    'SHIP_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(   97) = obs_type_type(SHIP_TEMPERATURE, &
-    'SHIP_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(   98) = obs_type_type(SYNOP_U_WIND_COMPONENT, &
-    'SYNOP_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(   99) = obs_type_type(SYNOP_V_WIND_COMPONENT, &
-    'SYNOP_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  100) = obs_type_type(SYNOP_SURFACE_PRESSURE, &
-    'SYNOP_SURFACE_PRESSURE', QTY_SURFACE_PRESSURE, .false., .false., .false.)
-obs_type_info(  101) = obs_type_type(SYNOP_SPECIFIC_HUMIDITY, &
-    'SYNOP_SPECIFIC_HUMIDITY', QTY_SPECIFIC_HUMIDITY, .false., .false., .false.)
-obs_type_info(  102) = obs_type_type(SYNOP_TEMPERATURE, &
-    'SYNOP_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  103) = obs_type_type(AIREP_U_WIND_COMPONENT, &
-    'AIREP_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  104) = obs_type_type(AIREP_V_WIND_COMPONENT, &
-    'AIREP_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  105) = obs_type_type(AIREP_PRESSURE, &
-    'AIREP_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
-obs_type_info(  106) = obs_type_type(AIREP_TEMPERATURE, &
-    'AIREP_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  107) = obs_type_type(AMDAR_U_WIND_COMPONENT, &
-    'AMDAR_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  108) = obs_type_type(AMDAR_V_WIND_COMPONENT, &
-    'AMDAR_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  109) = obs_type_type(AMDAR_PRESSURE, &
-    'AMDAR_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
-obs_type_info(  110) = obs_type_type(AMDAR_TEMPERATURE, &
-    'AMDAR_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  111) = obs_type_type(PILOT_U_WIND_COMPONENT, &
-    'PILOT_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  112) = obs_type_type(PILOT_V_WIND_COMPONENT, &
-    'PILOT_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  113) = obs_type_type(PILOT_PRESSURE, &
-    'PILOT_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
-obs_type_info(  114) = obs_type_type(PILOT_TEMPERATURE, &
-    'PILOT_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  115) = obs_type_type(BOGUS_U_WIND_COMPONENT, &
-    'BOGUS_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  116) = obs_type_type(BOGUS_V_WIND_COMPONENT, &
-    'BOGUS_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  117) = obs_type_type(BOGUS_PRESSURE, &
-    'BOGUS_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
-obs_type_info(  118) = obs_type_type(BOGUS_TEMPERATURE, &
-    'BOGUS_TEMPERATURE', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  119) = obs_type_type(PROFILER_U_WIND_COMPONENT, &
-    'PROFILER_U_WIND_COMPONENT', QTY_U_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  120) = obs_type_type(PROFILER_V_WIND_COMPONENT, &
-    'PROFILER_V_WIND_COMPONENT', QTY_V_WIND_COMPONENT, .false., .false., .false.)
-obs_type_info(  121) = obs_type_type(PROFILER_PRESSURE, &
-    'PROFILER_PRESSURE', QTY_PRESSURE, .false., .false., .false.)
-obs_type_info(  122) = obs_type_type(SATEM_THICKNESS, &
-    'SATEM_THICKNESS', QTY_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  123) = obs_type_type(NOAA_1_VTPR1_RADIANCE, &
-    'NOAA_1_VTPR1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  124) = obs_type_type(NOAA_2_VTPR1_RADIANCE, &
-    'NOAA_2_VTPR1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  125) = obs_type_type(NOAA_3_VTPR1_RADIANCE, &
-    'NOAA_3_VTPR1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  126) = obs_type_type(NOAA_4_VTPR1_RADIANCE, &
-    'NOAA_4_VTPR1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  127) = obs_type_type(NOAA_5_HIRS_RADIANCE, &
-    'NOAA_5_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  128) = obs_type_type(NOAA_5_MSU_TB, &
-    'NOAA_5_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  129) = obs_type_type(NOAA_5_AVHRR_RADIANCE, &
-    'NOAA_5_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  130) = obs_type_type(NOAA_6_HIRS_RADIANCE, &
-    'NOAA_6_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  131) = obs_type_type(NOAA_6_MSU_TB, &
-    'NOAA_6_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  132) = obs_type_type(NOAA_6_AVHRR_RADIANCE, &
-    'NOAA_6_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  133) = obs_type_type(NOAA_7_HIRS_RADIANCE, &
-    'NOAA_7_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  134) = obs_type_type(NOAA_7_MSU_TB, &
-    'NOAA_7_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  135) = obs_type_type(NOAA_7_AVHRR_RADIANCE, &
-    'NOAA_7_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  136) = obs_type_type(NOAA_8_HIRS_RADIANCE, &
-    'NOAA_8_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  137) = obs_type_type(NOAA_8_MSU_TB, &
-    'NOAA_8_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  138) = obs_type_type(NOAA_8_AVHRR_RADIANCE, &
-    'NOAA_8_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  139) = obs_type_type(NOAA_9_HIRS_RADIANCE, &
-    'NOAA_9_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  140) = obs_type_type(NOAA_9_MSU_TB, &
-    'NOAA_9_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  141) = obs_type_type(NOAA_9_AVHRR_RADIANCE, &
-    'NOAA_9_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  142) = obs_type_type(NOAA_10_HIRS_RADIANCE, &
-    'NOAA_10_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  143) = obs_type_type(NOAA_10_MSU_TB, &
-    'NOAA_10_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  144) = obs_type_type(NOAA_10_AVHRR_RADIANCE, &
-    'NOAA_10_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  145) = obs_type_type(NOAA_11_HIRS_RADIANCE, &
-    'NOAA_11_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  146) = obs_type_type(NOAA_11_MSU_TB, &
-    'NOAA_11_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  147) = obs_type_type(NOAA_11_AVHRR_RADIANCE, &
-    'NOAA_11_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  148) = obs_type_type(NOAA_12_HIRS_RADIANCE, &
-    'NOAA_12_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  149) = obs_type_type(NOAA_12_MSU_TB, &
-    'NOAA_12_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  150) = obs_type_type(NOAA_12_AVHRR_RADIANCE, &
-    'NOAA_12_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  151) = obs_type_type(NOAA_13_AVHRR_RADIANCE, &
-    'NOAA_13_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  152) = obs_type_type(NOAA_14_HIRS_RADIANCE, &
-    'NOAA_14_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  153) = obs_type_type(NOAA_14_MSU_TB, &
-    'NOAA_14_MSU_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  154) = obs_type_type(NOAA_14_AVHRR_RADIANCE, &
-    'NOAA_14_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  155) = obs_type_type(NOAA_15_HIRS_RADIANCE, &
-    'NOAA_15_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  156) = obs_type_type(NOAA_15_AMSUA_TB, &
-    'NOAA_15_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  157) = obs_type_type(NOAA_15_AMSUB_TB, &
-    'NOAA_15_AMSUB_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  158) = obs_type_type(NOAA_15_AVHRR_RADIANCE, &
-    'NOAA_15_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  159) = obs_type_type(NOAA_16_HIRS_RADIANCE, &
-    'NOAA_16_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  160) = obs_type_type(NOAA_16_AMSUA_TB, &
-    'NOAA_16_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  161) = obs_type_type(NOAA_16_AMSUB_TB, &
-    'NOAA_16_AMSUB_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  162) = obs_type_type(NOAA_16_AVHRR_RADIANCE, &
-    'NOAA_16_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  163) = obs_type_type(NOAA_17_HIRS_RADIANCE, &
-    'NOAA_17_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  164) = obs_type_type(NOAA_17_AMSUA_TB, &
-    'NOAA_17_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  165) = obs_type_type(NOAA_17_AMSUB_TB, &
-    'NOAA_17_AMSUB_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  166) = obs_type_type(NOAA_17_AVHRR_RADIANCE, &
-    'NOAA_17_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  167) = obs_type_type(NOAA_18_HIRS_RADIANCE, &
-    'NOAA_18_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  168) = obs_type_type(NOAA_18_AMSUA_TB, &
-    'NOAA_18_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  169) = obs_type_type(NOAA_18_AVHRR_RADIANCE, &
-    'NOAA_18_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  170) = obs_type_type(NOAA_18_MHS_TB, &
-    'NOAA_18_MHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  171) = obs_type_type(NOAA_19_HIRS_RADIANCE, &
-    'NOAA_19_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  172) = obs_type_type(NOAA_19_AMSUA_TB, &
-    'NOAA_19_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  173) = obs_type_type(NOAA_19_AVHRR_RADIANCE, &
-    'NOAA_19_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  174) = obs_type_type(NOAA_19_MHS_TB, &
-    'NOAA_19_MHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  175) = obs_type_type(NOAA_20_ATMS_TB, &
-    'NOAA_20_ATMS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  176) = obs_type_type(NOAA_20_VIIRS_RADIANCE, &
-    'NOAA_20_VIIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  177) = obs_type_type(DMSP_8_SSMI_TB, &
-    'DMSP_8_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  178) = obs_type_type(DMSP_9_SSMI_TB, &
-    'DMSP_9_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  179) = obs_type_type(DMSP_10_SSMI_TB, &
-    'DMSP_10_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  180) = obs_type_type(DMSP_11_SSMI_TB, &
-    'DMSP_11_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  181) = obs_type_type(DMSP_11_SSMT2_TB, &
-    'DMSP_11_SSMT2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  182) = obs_type_type(DMSP_12_SSMI_TB, &
-    'DMSP_12_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  183) = obs_type_type(DMSP_12_SSMT2_TB, &
-    'DMSP_12_SSMT2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  184) = obs_type_type(DMSP_13_SSMI_TB, &
-    'DMSP_13_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  185) = obs_type_type(DMSP_14_SSMI_TB, &
-    'DMSP_14_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  186) = obs_type_type(DMSP_14_SSMT2_TB, &
-    'DMSP_14_SSMT2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  187) = obs_type_type(DMSP_15_SSMI_TB, &
-    'DMSP_15_SSMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  188) = obs_type_type(DMSP_15_SSMT2_TB, &
-    'DMSP_15_SSMT2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  189) = obs_type_type(DMSP_16_SSMIS_TB, &
-    'DMSP_16_SSMIS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  190) = obs_type_type(DMSP_17_SSMIS_TB, &
-    'DMSP_17_SSMIS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  191) = obs_type_type(DMSP_18_SSMIS_TB, &
-    'DMSP_18_SSMIS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  192) = obs_type_type(DMSP_19_SSMIS_TB, &
-    'DMSP_19_SSMIS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  193) = obs_type_type(METEOSAT_1_MVIRI_RADIANCE, &
-    'METEOSAT_1_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  194) = obs_type_type(METEOSAT_2_MVIRI_RADIANCE, &
-    'METEOSAT_2_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  195) = obs_type_type(METEOSAT_3_MVIRI_RADIANCE, &
-    'METEOSAT_3_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  196) = obs_type_type(METEOSAT_4_MVIRI_RADIANCE, &
-    'METEOSAT_4_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  197) = obs_type_type(METEOSAT_5_MVIRI_RADIANCE, &
-    'METEOSAT_5_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  198) = obs_type_type(METEOSAT_6_MVIRI_RADIANCE, &
-    'METEOSAT_6_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  199) = obs_type_type(METEOSAT_7_MVIRI_RADIANCE, &
-    'METEOSAT_7_MVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  200) = obs_type_type(GOES_4_SOUNDER_RADIANCE, &
-    'GOES_4_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  201) = obs_type_type(GOES_5_SOUNDER_RADIANCE, &
-    'GOES_5_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  202) = obs_type_type(GOES_6_SOUNDER_RADIANCE, &
-    'GOES_6_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  203) = obs_type_type(GOES_7_SOUNDER_RADIANCE, &
-    'GOES_7_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  204) = obs_type_type(GOES_8_IMAGER_RADIANCE, &
-    'GOES_8_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  205) = obs_type_type(GOES_8_SOUNDER_RADIANCE, &
-    'GOES_8_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  206) = obs_type_type(GOES_9_IMAGER_RADIANCE, &
-    'GOES_9_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  207) = obs_type_type(GOES_9_SOUNDER_RADIANCE, &
-    'GOES_9_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  208) = obs_type_type(GOES_10_IMAGER_RADIANCE, &
-    'GOES_10_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  209) = obs_type_type(GOES_10_SOUNDER_RADIANCE, &
-    'GOES_10_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  210) = obs_type_type(GOES_11_IMAGER_RADIANCE, &
-    'GOES_11_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  211) = obs_type_type(GOES_11_SOUNDER_RADIANCE, &
-    'GOES_11_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  212) = obs_type_type(GOES_12_IMAGER_RADIANCE, &
-    'GOES_12_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  213) = obs_type_type(GOES_12_SOUNDER_RADIANCE, &
-    'GOES_12_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  214) = obs_type_type(GOES_13_IMAGER_RADIANCE, &
-    'GOES_13_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  215) = obs_type_type(GOES_13_SOUNDER_RADIANCE, &
-    'GOES_13_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  216) = obs_type_type(GOES_14_IMAGER_RADIANCE, &
-    'GOES_14_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  217) = obs_type_type(GOES_14_SOUNDER_RADIANCE, &
-    'GOES_14_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  218) = obs_type_type(GOES_15_IMAGER_RADIANCE, &
-    'GOES_15_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  219) = obs_type_type(GOES_15_SOUNDER_RADIANCE, &
-    'GOES_15_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  220) = obs_type_type(GOES_16_ABI_RADIANCE, &
-    'GOES_16_ABI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  221) = obs_type_type(GOES_17_ABI_RADIANCE, &
-    'GOES_17_ABI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  222) = obs_type_type(GOES_18_ABI_RADIANCE, &
-    'GOES_18_ABI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  223) = obs_type_type(GOES_19_ABI_RADIANCE, &
-    'GOES_19_ABI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  224) = obs_type_type(GMS_1_IMAGER_RADIANCE, &
-    'GMS_1_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  225) = obs_type_type(GMS_2_IMAGER_RADIANCE, &
-    'GMS_2_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  226) = obs_type_type(GMS_3_IMAGER_RADIANCE, &
-    'GMS_3_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  227) = obs_type_type(GMS_4_IMAGER_RADIANCE, &
-    'GMS_4_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  228) = obs_type_type(GMS_5_IMAGER_RADIANCE, &
-    'GMS_5_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  229) = obs_type_type(FY2_2_VISSR_RADIANCE, &
-    'FY2_2_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  230) = obs_type_type(FY2_3_VISSR_RADIANCE, &
-    'FY2_3_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  231) = obs_type_type(FY2_4_VISSR_RADIANCE, &
-    'FY2_4_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  232) = obs_type_type(FY2_5_VISSR_RADIANCE, &
-    'FY2_5_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  233) = obs_type_type(FY2_7_VISSR_RADIANCE, &
-    'FY2_7_VISSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  234) = obs_type_type(TRMM_1_TMI_TB, &
-    'TRMM_1_TMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  235) = obs_type_type(ERS_1_ATSR_RADIANCE, &
-    'ERS_1_ATSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  236) = obs_type_type(ERS_1_MWR_TB, &
-    'ERS_1_MWR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  237) = obs_type_type(ERS_2_ATSR_RADIANCE, &
-    'ERS_2_ATSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  238) = obs_type_type(ERS_2_MWR_TB, &
-    'ERS_2_MWR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  239) = obs_type_type(EOS_1_MODIS_RADIANCE, &
-    'EOS_1_MODIS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  240) = obs_type_type(EOS_1_ASTER_RADIANCE, &
-    'EOS_1_ASTER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  241) = obs_type_type(EOS_2_AMSUA_TB, &
-    'EOS_2_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  242) = obs_type_type(EOS_2_AIRS_RADIANCE, &
-    'EOS_2_AIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  243) = obs_type_type(EOS_2_HSB_TB, &
-    'EOS_2_HSB_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  244) = obs_type_type(EOS_2_MODIS_RADIANCE, &
-    'EOS_2_MODIS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  245) = obs_type_type(EOS_2_AMSRE_TB, &
-    'EOS_2_AMSRE_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  246) = obs_type_type(METOP_1_HIRS_RADIANCE, &
-    'METOP_1_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  247) = obs_type_type(METOP_1_AMSUA_TB, &
-    'METOP_1_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  248) = obs_type_type(METOP_1_AVHRR_RADIANCE, &
-    'METOP_1_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  249) = obs_type_type(METOP_1_MHS_TB, &
-    'METOP_1_MHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  250) = obs_type_type(METOP_2_HIRS_RADIANCE, &
-    'METOP_2_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  251) = obs_type_type(METOP_2_AMSUA_TB, &
-    'METOP_2_AMSUA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  252) = obs_type_type(METOP_2_AVHRR_RADIANCE, &
-    'METOP_2_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  253) = obs_type_type(METOP_2_MHS_TB, &
-    'METOP_2_MHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  254) = obs_type_type(METOP_3_AVHRR_RADIANCE, &
-    'METOP_3_AVHRR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  255) = obs_type_type(ENVISAT_1_ATSR_RADIANCE, &
-    'ENVISAT_1_ATSR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  256) = obs_type_type(ENVISAT_1_MWR_TB, &
-    'ENVISAT_1_MWR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  257) = obs_type_type(MSG_1_SEVIRI_RADIANCE, &
-    'MSG_1_SEVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  258) = obs_type_type(MSG_2_SEVIRI_RADIANCE, &
-    'MSG_2_SEVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  259) = obs_type_type(MSG_3_SEVIRI_RADIANCE, &
-    'MSG_3_SEVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  260) = obs_type_type(MSG_4_SEVIRI_RADIANCE, &
-    'MSG_4_SEVIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  261) = obs_type_type(MSG_4_SEVIRI_TB, &
-    'MSG_4_SEVIRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  262) = obs_type_type(MSG_4_SEVIRI_BDRF, &
-    'MSG_4_SEVIRI_BDRF', QTY_BI_DIRECTIONAL_REFLECTANCE, .false., .false., .false.)
-obs_type_info(  263) = obs_type_type(FY1_3_MVISR_RADIANCE, &
-    'FY1_3_MVISR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  264) = obs_type_type(FY1_4_MVISR_RADIANCE, &
-    'FY1_4_MVISR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  265) = obs_type_type(MTSAT_1_IMAGER_RADIANCE, &
-    'MTSAT_1_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  266) = obs_type_type(MTSAT_2_IMAGER_RADIANCE, &
-    'MTSAT_2_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  267) = obs_type_type(CORIOLIS_1_WINDSAT_TB, &
-    'CORIOLIS_1_WINDSAT_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  268) = obs_type_type(JPSS_0_ATMS_TB, &
-    'JPSS_0_ATMS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  269) = obs_type_type(JPSS_0_VIIRS_RADIANCE, &
-    'JPSS_0_VIIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  270) = obs_type_type(SENTINEL3_1_SLSTR_RADIANCE, &
-    'SENTINEL3_1_SLSTR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  271) = obs_type_type(SENTINEL3_2_SLSTR_RADIANCE, &
-    'SENTINEL3_2_SLSTR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  272) = obs_type_type(MEGHATR_1_SAPHIR_TB, &
-    'MEGHATR_1_SAPHIR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  273) = obs_type_type(MEGHATR_1_MADRAS_TB, &
-    'MEGHATR_1_MADRAS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  274) = obs_type_type(FY3_1_MWTS_TB, &
-    'FY3_1_MWTS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  275) = obs_type_type(FY3_1_MWHS_TB, &
-    'FY3_1_MWHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  276) = obs_type_type(FY3_1_IRAS_RADIANCE, &
-    'FY3_1_IRAS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  277) = obs_type_type(FY3_1_MWRI_TB, &
-    'FY3_1_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  278) = obs_type_type(FY3_2_MWTS_TB, &
-    'FY3_2_MWTS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  279) = obs_type_type(FY3_2_MWHS_TB, &
-    'FY3_2_MWHS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  280) = obs_type_type(FY3_2_MWRI_TB, &
-    'FY3_2_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  281) = obs_type_type(FY3_3_MWRI_TB, &
-    'FY3_3_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  282) = obs_type_type(FY3_3_MWTS2_TB, &
-    'FY3_3_MWTS2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  283) = obs_type_type(FY3_3_MWHS2_TB, &
-    'FY3_3_MWHS2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  284) = obs_type_type(FY3_3_MERSI1_RADIANCE, &
-    'FY3_3_MERSI1_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  285) = obs_type_type(FY3_4_MWRI_TB, &
-    'FY3_4_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  286) = obs_type_type(FY3_4_MWTS2_TB, &
-    'FY3_4_MWTS2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  287) = obs_type_type(FY3_4_MWHS2_TB, &
-    'FY3_4_MWHS2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  288) = obs_type_type(FY3_4_MERSI2_RADIANCE, &
-    'FY3_4_MERSI2_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  289) = obs_type_type(COMS_1_MI_RADIANCE, &
-    'COMS_1_MI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  290) = obs_type_type(METEOR_M_1_MSUMR_RADIANCE, &
-    'METEOR_M_1_MSUMR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  291) = obs_type_type(METEOR_M_2_MSUMR_RADIANCE, &
-    'METEOR_M_2_MSUMR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  292) = obs_type_type(METEOR_M_2_MTVZAGY_TB, &
-    'METEOR_M_2_MTVZAGY_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  293) = obs_type_type(CALIPSO_1_IIR_RADIANCE, &
-    'CALIPSO_1_IIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  294) = obs_type_type(GCOM_W_1_AMSR2_TB, &
-    'GCOM_W_1_AMSR2_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  295) = obs_type_type(NIMBUS_3_MRIR_RADIANCE, &
-    'NIMBUS_3_MRIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  296) = obs_type_type(NIMBUS_4_THIR_RADIANCE, &
-    'NIMBUS_4_THIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  297) = obs_type_type(NIMBUS_5_THIR_RADIANCE, &
-    'NIMBUS_5_THIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  298) = obs_type_type(NIMBUS_6_HIRS_RADIANCE, &
-    'NIMBUS_6_HIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  299) = obs_type_type(NIMBUS_6_SCAMS_TB, &
-    'NIMBUS_6_SCAMS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  300) = obs_type_type(NIMBUS_6_THIR_RADIANCE, &
-    'NIMBUS_6_THIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  301) = obs_type_type(NIMBUS_7_SMMR_TB, &
-    'NIMBUS_7_SMMR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  302) = obs_type_type(NIMBUS_7_THIR_RADIANCE, &
-    'NIMBUS_7_THIR_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  303) = obs_type_type(HIMAWARI_8_AHI_RADIANCE, &
-    'HIMAWARI_8_AHI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  304) = obs_type_type(HIMAWARI_9_AHI_RADIANCE, &
-    'HIMAWARI_9_AHI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  305) = obs_type_type(MTG_1_FCI_RADIANCE, &
-    'MTG_1_FCI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  306) = obs_type_type(SARAL_1_ALTIKA_TB, &
-    'SARAL_1_ALTIKA_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  307) = obs_type_type(METOPSG_1_ICI_TB, &
-    'METOPSG_1_ICI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  308) = obs_type_type(METOPSG_1_METIMAGE_RADIANCE, &
-    'METOPSG_1_METIMAGE_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  309) = obs_type_type(METOPSG_1_MWS_TB, &
-    'METOPSG_1_MWS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  310) = obs_type_type(METOPSG_1_MWI_TB, &
-    'METOPSG_1_MWI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  311) = obs_type_type(LANDSAT_4_TM_RADIANCE, &
-    'LANDSAT_4_TM_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  312) = obs_type_type(LANDSAT_5_TM_RADIANCE, &
-    'LANDSAT_5_TM_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  313) = obs_type_type(LANDSAT_7_TM_RADIANCE, &
-    'LANDSAT_7_TM_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  314) = obs_type_type(LANDSAT_8_TIRS_RADIANCE, &
-    'LANDSAT_8_TIRS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  315) = obs_type_type(JASON_2_AMR_TB, &
-    'JASON_2_AMR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  316) = obs_type_type(GPM_1_GMI_TB, &
-    'GPM_1_GMI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  317) = obs_type_type(GPM_1_DPR_TB, &
-    'GPM_1_DPR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  318) = obs_type_type(INSAT3_4_IMAGER_RADIANCE, &
-    'INSAT3_4_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  319) = obs_type_type(INSAT3_4_SOUNDER_RADIANCE, &
-    'INSAT3_4_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  320) = obs_type_type(INSAT3_5_IMAGER_RADIANCE, &
-    'INSAT3_5_IMAGER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  321) = obs_type_type(INSAT3_5_SOUNDER_RADIANCE, &
-    'INSAT3_5_SOUNDER_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  322) = obs_type_type(TICFIRE_1_MBFIRI_RADIANCE, &
-    'TICFIRE_1_MBFIRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  323) = obs_type_type(ISS_1_ECOSTRES_RADIANCE, &
-    'ISS_1_ECOSTRES_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  324) = obs_type_type(HJ1_2_IRMSS_RADIANCE, &
-    'HJ1_2_IRMSS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  325) = obs_type_type(GKOMPSAT2_1_AMI_RADIANCE, &
-    'GKOMPSAT2_1_AMI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  326) = obs_type_type(GCOM_C_1_SGLI_RADIANCE, &
-    'GCOM_C_1_SGLI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  327) = obs_type_type(SMOS_1_MIRAS_TB, &
-    'SMOS_1_MIRAS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  328) = obs_type_type(ORS_6_COWVR_TB, &
-    'ORS_6_COWVR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  329) = obs_type_type(FY4_1_AGRI_RADIANCE, &
-    'FY4_1_AGRI_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  330) = obs_type_type(TROPICS_0_TROPICS_TB, &
-    'TROPICS_0_TROPICS_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  331) = obs_type_type(GF5_1_VIMS_RADIANCE, &
-    'GF5_1_VIMS_RADIANCE', QTY_RADIANCE, .false., .false., .false.)
-obs_type_info(  332) = obs_type_type(HY2_1_MWRI_TB, &
-    'HY2_1_MWRI_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-obs_type_info(  333) = obs_type_type(CLOUDSAT_1_CPR_TB, &
-    'CLOUDSAT_1_CPR_TB', QTY_BRIGHTNESS_TEMPERATURE, .false., .false., .false.)
-                                                                              
-
-! Default for all obs is to not assimilate or evaluate.
-! Count up number being assimilated and evaluated here.
-
-num_types_assimilate = 0
-do i = 1, max_defined_types_of_obs
-   if(assimilate_these_obs_types(i) == 'null' .or. len_trim(assimilate_these_obs_types(i)) == 0 ) exit
-   num_types_assimilate = i
-end do
-
-num_types_evaluate = 0
-do i = 1, max_defined_types_of_obs
-   if(evaluate_these_obs_types(i) == 'null' .or. len_trim(evaluate_these_obs_types(i)) == 0) exit
-   num_types_evaluate = i
-end do
-
-! Special case when all obs_types should use precomputed_FOs
-if( any(use_precomputed_FOs_these_obs_types .eq. 'all') ) then
-   num_types_use_precomputed_FOs = num_types_assimilate + num_types_evaluate
-   j = 1
-   if ( num_types_assimilate > 0 ) then
-      use_precomputed_FOs_these_obs_types(j:num_types_assimilate) = assimilate_these_obs_types(1:num_types_assimilate)
-      j = j + num_types_assimilate
-   endif
-   if ( num_types_evaluate > 0 ) use_precomputed_FOs_these_obs_types(j:num_types_use_precomputed_FOs) = evaluate_these_obs_types(1:num_types_evaluate)
-else
-   num_types_use_precomputed_FOs = 0
-   do i = 1, max_defined_types_of_obs
-      if(use_precomputed_FOs_these_obs_types(i) == 'null' .or.  len_trim(use_precomputed_FOs_these_obs_types(i)) == 0) exit
-      num_types_use_precomputed_FOs = i
-   end do
-endif
-
-if (do_output() .and. (num_types_assimilate > 0 .or. &
-                       num_types_evaluate > 0   .or. &
-                       num_types_use_precomputed_FOs > 0 )) then
-   call log_it('')
-   call log_it('Assimilate_these_obs_types:')
-   if (num_types_assimilate < 1) then
-         call log_it('   none')
-   else
-      do i = 1, num_types_assimilate
-         call log_it('   '//trim(assimilate_these_obs_types(i)))
-      enddo
-   endif
-
-   call log_it('Evaluate_these_obs_types:')
-   if (num_types_evaluate <1) then
-         call log_it('   none')
-   else
-      do i = 1, num_types_evaluate
-         call log_it('   '//trim(evaluate_these_obs_types(i)))
-      enddo
-   endif
-
-   call log_it('Use the precomputed Prior Forward Operators for these obs types:')
-   if (num_types_use_precomputed_FOs <1) then
-         call log_it('   none')
-   else
-      do i = 1, num_types_use_precomputed_FOs
-         call log_it('   '//trim(use_precomputed_FOs_these_obs_types(i)))
-      enddo
-   endif
-   call log_it('')
-endif
-
-
-! Figure out which types are being used, look for errors
-! Start by loading up types to assimilate
-if (num_types_assimilate > 0) then
-   do i = 1, num_types_assimilate
-      ! Search for the matching string
-      do j = 1, max_defined_types_of_obs
-         if(assimilate_these_obs_types(i) == obs_type_info(j)%name) then
-            obs_type_info(j)%assimilate = .true.
-            goto 44
-         endif
-      end do
-      ! Falling off the end is an error
-      write(err_string, *) '"',trim(assimilate_these_obs_types(i)), &
-         '" from obs_kind_nml::assimilate_these_obs_types is not a legal observation type'
-      call error_handler(E_ERR, routine, err_string, source)
-      44 continue
-   end do
-endif
-
-! Now look for types to evaluate
-if (num_types_evaluate > 0) then
-   do i = 1, num_types_evaluate
-      ! Search for the matching string
-      do j = 1, max_defined_types_of_obs
-         if(evaluate_these_obs_types(i) == obs_type_info(j)%name) then
-            obs_type_info(j)%evaluate = .true.
-            goto 55
-         endif
-      end do
-      ! Falling off the end is an error
-      write(err_string, *) '"',trim(evaluate_these_obs_types(i)), &
-         '" from obs_kind_nml::evaluate_these_obs_types is not a legal observation type'
-      call error_handler(E_ERR, routine, err_string, source)
-      55 continue
-   end do
-endif
-
-if (num_types_use_precomputed_FOs > 0) then
-   do i = 1, num_types_use_precomputed_FOs
-      ! Search for the matching string
-      do j = 1, max_defined_types_of_obs
-         if(use_precomputed_FOs_these_obs_types(i) == obs_type_info(j)%name) then
-            obs_type_info(j)%use_precomputed_FO = .true.
-            goto 66
-         endif
-      end do
-      ! Falling off the end is an error
-      write(err_string, *) '"',trim(use_precomputed_FOs_these_obs_types(i)), &
-         '" from obs_kind_nml::use_precomputed_FOs_these_obs_types is not a legal observation type'
-      call error_handler(E_ERR, routine, err_string, source)
-      66 continue
-   end do
-endif
-
-! Make it an error to ask to assimilate AND evaluate the same obs kind
-do i = 1, max_defined_types_of_obs
-   if(obs_type_info(i)%evaluate .and. obs_type_info(i)%assimilate) then
-      write(err_string, *) 'Illegal to both evaluate and assimilate same type ', &
-         trim(obs_type_info(i)%name)
-      call error_handler(E_ERR, routine, err_string, source)
-   endif
-end do
-
-end subroutine initialize_module
-
-!---------------------------------------------------------------------------
-
-function map_type_of_obs_table(obs_def_index)
-
-! Argument is the index from the obs_def; needs to be mapped to the appropriate
-! Integer storage index
-integer, intent(in) :: obs_def_index
-integer             :: map_type_of_obs_table
-
-character(len = 169) :: err_string
-integer :: i
-character(len=*), parameter :: routine = "map_type_of_obs_table"
-
-if ( .not. module_initialized ) call initialize_module
-
-! Need to search through the first map column to find this obs_def_index value
-! Then return the index into table in this module from corresponding row in
-! second column.
-do i = 1, max_defined_types_of_obs
-   if(toc_mod_type_map%toc_type_index(i) == obs_def_index) then
-      map_type_of_obs_table = toc_mod_type_map%mod_type_index(i)
-      return
-   endif
-end do
-
-! Error, didn't find this obs_def_index in the map
-write(err_string, *) 'Could not find obs type index ', obs_def_index, &
-   ' in current type list compiled in this program'
-call error_handler(E_ERR, routine, err_string, source)
-
-end function map_type_of_obs_table
-
-!----------------------------------------------------------------------------
-
-function get_name_for_type_of_obs(obs_type_ind)
-
-! Returns observation type name
-
-integer, intent(in) :: obs_type_ind
-character(len=obstypelength) :: get_name_for_type_of_obs
-character(len=*), parameter :: routine = 'get_name_for_type_of_obs'
-
-if ( .not. module_initialized ) call initialize_module
-
-call validate_obs_type_index(obs_type_ind, routine)
-
-get_name_for_type_of_obs = obs_type_info(obs_type_ind)%name
-
-end function get_name_for_type_of_obs
-
-!----------------------------------------------------------------------------
-! Added by TRW to handle matching RAW variable types to their strings
-! as well as the derived types - this will make the restart file
-! handling more readable.
-
-function get_name_for_quantity(obs_qty_ind)
-
-! Returns observation quantity name
-
-integer, intent(in) :: obs_qty_ind
-character(len=obstypelength) :: get_name_for_quantity
-
-character(len=*), parameter :: routine = 'get_name_for_quantity'
-
-if (.not. module_initialized) call initialize_module
-
-call validate_obs_qty_index(obs_qty_ind, routine)
-
-get_name_for_quantity = obs_qty_info(obs_qty_ind)%name
-
-end function get_name_for_quantity
-!----------------------------------------------------------------------------
-
-function get_index_for_type_of_obs(obs_type_name)
-
-! Returns the integer index corresponding to an observation type string name
-! Returns a -1 if this string is not in list
-
-character(len = *), intent(in)  :: obs_type_name
-integer                         :: get_index_for_type_of_obs
-
-integer :: i
-character(len=*), parameter :: routine = 'get_index_for_type_of_obs'
-
-if ( .not. module_initialized ) call initialize_module
-
-!>@todo FIXME binary search on a sorted list?
-
-do i = 1, max_defined_types_of_obs
-   if(obs_type_name == obs_type_info(i)%name) then
-      get_index_for_type_of_obs = i
-      return
-   endif
-end do
-
-get_index_for_type_of_obs = -1
-
-end function get_index_for_type_of_obs
-
-!----------------------------------------------------------------------------
-! Added by TRW to handle matching RAW variable types to their strings
-! as well as the derived types - this will make the restart file
-! handling more readable.
-
-function get_index_for_quantity(obs_qty_name)
-
-! Returns the integer index corresponding to an observation quantity string name
-! Returns a -1 if this string is not in list
-
-character(len=*), intent(in)  :: obs_qty_name
-integer                       :: get_index_for_quantity
-
-integer :: i
-character(len=*), parameter :: routine = 'get_index_for_quantity'
-
-if (.not. module_initialized) call initialize_module
-
-do i = 0, max_defined_quantities
-   if(obs_qty_name == obs_qty_info(i)%name) then
-      get_index_for_quantity = i
-      return
-   end if
-end do
-
-get_index_for_quantity = -1
-
-end function get_index_for_quantity
-
-!----------------------------------------------------------------------------
-! Add a name/value pair to this quantity.
-! Error if index out of range
-!
-! FIXME: find a better identifier than 'item' here? meta something?
-
-subroutine set_namevalue_for_quantity(obs_qty_ind, itemname, itemvalue)
-
-integer, intent(in) :: obs_qty_ind
-character(len=*), intent(in) :: itemname
-character(len=*), intent(in) :: itemvalue
-
-integer :: i
-character(len=*), parameter :: routine = 'set_namevalue_for_quantity'
-
-if (.not. module_initialized) call initialize_module
-
-call validate_obs_qty_index(obs_qty_ind, routine)
-
-call validate_metadata_strings(obs_qty_ind, itemname, itemvalue)
-
-! FIXME: are replicated names an error?
-! they could replace existing value for that name; or error out.
-
-do i=1, obs_qty_info(obs_qty_ind)%nitems
-   if (obs_qty_info(obs_qty_ind)%itemname(i) == itemname) then
-      ! item already found - do what? replace
-      obs_qty_info(obs_qty_ind)%itemvalue(i) = itemvalue
-      ! or error out?
-      ! call error_handler()
-      return
-   endif
-enddo
-
-! add new entry
-i = obs_qty_info(obs_qty_ind)%nitems + 1
-obs_qty_info(obs_qty_ind)%nitems = i
-obs_qty_info(obs_qty_ind)%itemname(i) = itemname
-obs_qty_info(obs_qty_ind)%itemvalue(i) = itemvalue
-
-end subroutine set_namevalue_for_quantity
-
-!----------------------------------------------------------------------------
-! Get number of name/value items for quantity
-! Error if qty index out of range
-
-! (FIXME: terminology: metadata vs item vs ??)
-
-function get_num_items_for_quantity(obs_qty_ind)
-
-integer, intent(in) :: obs_qty_ind
-integer :: get_num_items_for_quantity
-
-integer :: i
-character(len=*), parameter :: routine = 'get_num_items_for_quantity'
-
-if (.not. module_initialized) call initialize_module
-
-call validate_obs_qty_index(obs_qty_ind, routine)
-
-get_num_items_for_quantity = obs_qty_info(obs_qty_ind)%nitems
-
-end function get_num_items_for_quantity
-
-!----------------------------------------------------------------------------
-! Get string value for item name by index for quantity of name/value pair
-! Error if qty index out of range
-! Error if item index out of range
-
-! (FIXME: terminology: metadata vs item vs ??)
-
-function get_itemname_for_quantity(obs_qty_ind, item_index)
-
-integer, intent(in) :: obs_qty_ind
-integer, intent(in) :: item_index
-character(len=namelen) :: get_itemname_for_quantity
-
-integer :: i
-character(len=*), parameter :: routine = 'get_itemname_for_quantity'
-
-if (.not. module_initialized) call initialize_module
-
-! this validates the quantity index first, then the item index.
-! if it returns w/o error, both indices are safe to use.
-call validate_qty_item_index(obs_qty_ind, item_index, routine)
-
-get_itemname_for_quantity = obs_qty_info(obs_qty_ind)%itemname(item_index)
-
-end function get_itemname_for_quantity
-
-!----------------------------------------------------------------------------
-! Get string value for quantity by (qty index, item name) of name/value pair
-! Error if qty index out of range
-! Returns '' if no item name match  (or 'null'?)
-
-! (FIXME: terminology: metadata vs item vs ??)
-
-function get_itemvalue_for_quantity(obs_qty_ind, itemname)
-
-integer, intent(in) :: obs_qty_ind
-character(len=*), intent(in) :: itemname
-character(len=valuelen) :: get_itemvalue_for_quantity
-
-integer :: i
-character(len=*), parameter :: routine = 'get_itemvalue_for_quantity'
-
-if (.not. module_initialized) call initialize_module
-
-call validate_obs_qty_index(obs_qty_ind, routine)
-
-do i=1, obs_qty_info(obs_qty_ind)%nitems
-   if (obs_qty_info(obs_qty_ind)%itemname(i) == itemname) then
-      get_itemvalue_for_quantity = obs_qty_info(obs_qty_ind)%itemvalue(i)
-      return
-   endif
-enddo
-
-get_itemvalue_for_quantity = ''
-
-end function get_itemvalue_for_quantity
-
-!----------------------------------------------------------------------------
-! convenience routine, could also be queried using the generic name=value interface
-! Get bounds values for quantity by index
-! Returns .false. if both min and max are missing_r8
-! A potential code shortcut for calling code if no bounds are present
-
-function has_bounds_for_quantity(obs_qty_ind, minbound, maxbound)
-
-integer,  intent(in)  :: obs_qty_ind
-real(r8), intent(out) :: minbound
-real(r8), intent(out) :: maxbound
-logical :: has_bounds_for_quantity
-
-integer :: i
-character(len=valuelen) :: boundstring
-character(len=*), parameter :: routine = 'get_bounds_for_quantity'
-
-if (.not. module_initialized) call initialize_module
-
-call validate_obs_qty_index(obs_qty_ind, routine)
-
-minbound = MISSING_R8
-maxbound = MISSING_R8
-
-do i=1, obs_qty_info(obs_qty_ind)%nitems
-   if (obs_qty_info(obs_qty_ind)%itemname(i) == "minbound") then
-      boundstring = obs_qty_info(obs_qty_ind)%itemvalue(i)
-      minbound = string_to_real(boundstring)
-   endif
-   if (obs_qty_info(obs_qty_ind)%itemname(i) == "maxbound") then
-      boundstring = obs_qty_info(obs_qty_ind)%itemvalue(i)
-      maxbound = string_to_real(boundstring)
-   endif
-enddo
-
-has_bounds_for_quantity = .not. (minbound == MISSING_R8 .and. maxbound == MISSING_R8)
-
-end function has_bounds_for_quantity
-
-!----------------------------------------------------------------------------
-!> Accessor function to return observation type count
-
-function get_num_types_of_obs()
-
-integer :: get_num_types_of_obs
-
-if ( .not. module_initialized ) call initialize_module
-
-get_num_types_of_obs = max_defined_types_of_obs
-
-end function get_num_types_of_obs
-
-!----------------------------------------------------------------------------
-!> Accessor function to return observation quantity count
-
-function get_num_quantities()
-
-integer :: get_num_quantities
-
-if (.not. module_initialized) call initialize_module
-
-get_num_quantities = max_defined_quantities
-
-end function get_num_quantities
-
-!----------------------------------------------------------------------------
-!> Returns true if this obs_type is being assimilated
-
-function assimilate_this_type_of_obs(obs_type_ind)
-
-logical             :: assimilate_this_type_of_obs
-integer, intent(in) :: obs_type_ind
-
-character(len=*), parameter :: routine = 'assimilate_this_type_of_obs'
-
-if ( .not. module_initialized ) call initialize_module
-
-call validate_obs_type_index(obs_type_ind, routine)
-
-assimilate_this_type_of_obs = obs_type_info(obs_type_ind)%assimilate
-
-end function assimilate_this_type_of_obs
-
-!----------------------------------------------------------------------------
-!> Returns true if this obs_type is being evaluated
-
-function evaluate_this_type_of_obs(obs_type_ind)
-
-logical             :: evaluate_this_type_of_obs
-integer, intent(in) :: obs_type_ind
-
-character(len=*), parameter :: routine = 'evaluate_this_type_of_obs'
-
-if ( .not. module_initialized ) call initialize_module
-
-call validate_obs_type_index(obs_type_ind, routine)
-
-evaluate_this_type_of_obs = obs_type_info(obs_type_ind)%evaluate
-
-end function evaluate_this_type_of_obs
-
-!----------------------------------------------------------------------------
-!> Returns true if this obs_type should use externally computed priors
-
-function use_ext_prior_this_type_of_obs(obs_type_ind)
-
-logical             :: use_ext_prior_this_type_of_obs
-integer, intent(in) :: obs_type_ind
-
-character(len=*), parameter :: routine = 'use_ext_prior_this_type_of_obs'
-
-if ( .not. module_initialized ) call initialize_module
-
-call validate_obs_type_index(obs_type_ind, routine)
-
-use_ext_prior_this_type_of_obs = obs_type_info(obs_type_ind)%use_precomputed_FO
-
-end function use_ext_prior_this_type_of_obs
-
-!----------------------------------------------------------------------------
-!> Returns the associated generic quantity associated with the
-!> specific type of this observation
-
-function get_quantity_for_type_of_obs(obs_type_ind)
-
-integer, intent(in) :: obs_type_ind
-integer             :: get_quantity_for_type_of_obs
-
-character(len=*), parameter :: routine = 'get_quantity_for_type_of_obs'
-
-if ( .not. module_initialized ) call initialize_module
-
-call validate_obs_type_index(obs_type_ind, routine)
-
-get_quantity_for_type_of_obs = obs_type_info(obs_type_ind)%quantity
-
-end function get_quantity_for_type_of_obs
-
-!----------------------------------------------------------------------------
-!> Writes out the observation type strings and corresponding integer
-!> indices as a header for an obs_sequence file.
-
-subroutine write_type_of_obs_table(ifile, fform, use_list)
-
-integer, intent(in)                    :: ifile
-character(len=*), intent(in), optional :: fform
-integer,          intent(in), optional :: use_list(:)
-
-integer :: i, ntypes
-logical :: is_ascii, restrict
-character(len=*), parameter :: routine = 'write_type_of_obs_table'
-
-if ( .not. module_initialized ) call initialize_module
-
-is_ascii = ascii_file_format(fform)
-
-! Write the 20 character identifier to indicate the start of a type table.
-! To maintain complete backwards compatibility with the original read
-! code this string must start in column 1.
-! you cannot use: write(ifile, *) 'string'  because the output string
-! will start in col 2.  the string either has to be part of the format
-! argument to write(), or you have to use a separate format statement.
-! FIXME: this needs to be obs_type_definitions for write.  read has to
-! accept either kind (now quantity and was incorrect for this table in
-! any case) or type.
-if (is_ascii) then
-   write(ifile,  "('obs_type_definitions')")   ! see note above!
-else
-   write(ifile)    'obs_type_definitions'
-endif
-
-! If this routine is called with a list of which types are actually
-! being used, restrict the table of contents to only those.
-! Otherwise, write all known types.
-if (present(use_list)) then
-   ! make sure the list is the right length
-   if (size(use_list) /= max_defined_types_of_obs) then
-      call error_handler(E_ERR, routine, &
-              'use_list(:) must be the same length as number of types', source)
-   endif
-
-   ntypes = count(use_list(:) > 0)
-   restrict = .true.
-else
-   ntypes = max_defined_types_of_obs
-   restrict = .false.
-endif
-
-if (is_ascii) then
-   write(ifile, *) ntypes
-else
-   write(ifile)    ntypes
-endif
-
-do i = 1, max_defined_types_of_obs
-   if (restrict) then
-       if (use_list(i) == 0) cycle
-   endif
-
-   if (is_ascii) then
-      write(ifile, *) obs_type_info(i)%index, obs_type_info(i)%name
-   else
-      write(ifile)    obs_type_info(i)%index, obs_type_info(i)%name
-   endif
-end do
-
-end subroutine write_type_of_obs_table
-
-!----------------------------------------------------------------------------
-!> Reads the observation type strings and corresponding integer
-!> indices as a header for an obs_sequence file.
-
-subroutine read_type_of_obs_table(ifile, pre_I_format, fform)
-
-integer,                    intent(in) :: ifile
-logical,                    intent(in) :: pre_I_format
-character(len=*), intent(in), optional :: fform
-
-character(len=20)  :: header
-character(len=obstypelength) :: o_name
-integer            :: i, num_def_types, o_index, list_index, rc
-logical            :: is_ascii
-character(len=*), parameter :: routine = 'read_type_of_obs_table'
-
-if ( .not. module_initialized ) call initialize_module
-
-! pre_I_format has been deprecated.
-if(pre_I_format) then
-   call error_handler(E_ERR, routine, 'pre_I_format no longer supported', source)
-endif
-
-is_ascii = ascii_file_format(fform)
-
-! Read the 20 character identifier which identifies the start
-! of the obstype number/name table for this sequence file.
-if (is_ascii) then
-   read(ifile, *, iostat=rc) header
-else
-   read(ifile,    iostat=rc) header
-endif
-
-if(rc /= 0 .or. (header /= 'obs_type_definitions' .and. header /= 'obs_kind_definitions')) then
-   write(msg_string,  *) 'Did not find expected "obs_type_definitions" or "obs_kind_definitions" string at start of obs_seq file '
-   write(msg_string1, *) 'Possible causes include: not an obs_seq file format, corrupted file, or wrong-endian binary file'
-   call error_handler(E_ERR, routine, msg_string, source, text2=msg_string1)
-endif
-
-! Loop through the list to read the integer indices and strings
-! For all the defined observation types
-! Set up the map from types in the obs_sequence file to those
-! in the data structure in this module.
-if (is_ascii) then
-   read(ifile, *) num_def_types
-else
-   read(ifile)    num_def_types
-endif
-
-do i = 1, num_def_types
-   if (is_ascii) then
-      read(ifile, *) o_index, o_name
-   else
-      read(ifile)    o_index, o_name
-   endif
-
-   ! What is the integer associated with this o_name in this module?
-   list_index = get_index_for_type_of_obs(o_name)
-
-   ! Check for error
-   if(list_index == -1) then
-      write(msg_string, *) 'Did not find observation type "', o_name, &
-         '" in current type list compiled in this program'
-      call error_handler(E_ERR, routine, msg_string, source)
-   endif
-
-   toc_mod_type_map%toc_type_index(i) = o_index
-   toc_mod_type_map%mod_type_index(i) = list_index
-end do
-
-end subroutine read_type_of_obs_table
-
-!----------------------------------------------------------------------------
-!> Print a menu and read an obs type number
-!> (Used for example in an interactive program)
-
-function get_type_of_obs_from_menu()
-
-integer :: get_type_of_obs_from_menu
-
-integer :: i, ierr
-character(len=obstypelength) :: in
-character(len=*), parameter :: routine = 'get_type_of_obs_from_menu'
-
-if ( .not. module_initialized ) call initialize_module
-
-! Should only do types that have been selected by preprocessor
-! since those are being evaluated or assimilated.
-21 continue
-write(*, *) '     ', 'Input the name of the observation types from table below'
-write(*, *) '     ', 'OR input (-1 * state variable index) for identity observations:'
-do i = 1, max_defined_types_of_obs
-   if(assimilate_this_type_of_obs(i) .or. evaluate_this_type_of_obs(i)) &
-      write(*, *) '     ',  obs_type_info(i)%index, trim(obs_type_info(i)%name)
-end do
-
-! Read the input as a string, convert to integers as appropriate
-read(*, '(A)') in
-
-! If string is a positive or negative number, convert it to integer
-read(in, *, IOSTAT = ierr) get_type_of_obs_from_menu
-if(ierr /= 0) then
-   get_type_of_obs_from_menu = get_index_for_type_of_obs(in)
-   ! If string isn't found, need to reprompt
-   if(get_type_of_obs_from_menu == -1) then
-      write(*, *) trim(in) // ' is not a supported type: Please try again.'
-      goto 21
-   endif
-else
-   ! Make sure that number entered isn't 0 or too larg
-   if(get_type_of_obs_from_menu == 0 .or. get_type_of_obs_from_menu > max_defined_types_of_obs) then
-      write(*, *) get_type_of_obs_from_menu, 'is not a legal entry: Please try again.'
-      goto 21
-   endif
-endif
-
-! Make sure
-
-end function get_type_of_obs_from_menu
-
-!----------------------------------------------------------------------------
-!> call this routine only where if an index is expected to be valid.
-!> (it is a fatal error if not.)  don't call this routine from code where
-!> an out-of-range value is handled (e.g. it returns -1 instead).
-
-subroutine validate_obs_type_index(test_me, calling_routine)
-
-integer,          intent(in) :: test_me
-character(len=*), intent(in) :: calling_routine
-
-if (test_me < 1 .or. test_me > max_defined_types_of_obs) then
-   write(msg_string,'(A,I6,A,I6)') 'obs type number ', test_me, &
-                                   ' must be between 1 and ', max_defined_types_of_obs
-   call error_handler(E_ERR, calling_routine, msg_string, source)
-endif
-
-end subroutine validate_obs_type_index
-
-!----------------------------------------------------------------------------
-!> call this routine only where if an index is expected to be valid.
-!> (it is a fatal error if not.)  don't call this routine from code where
-!> an out-of-range value is handled (e.g. it returns -1 instead).
-
-subroutine validate_obs_qty_index(test_me, calling_routine)
-
-integer,          intent(in) :: test_me
-character(len=*), intent(in) :: calling_routine
-
-if (test_me < 0 .or. test_me > max_defined_quantities) then
-   write(msg_string,'(A,I6,A,I6)') 'obs quantity number ', test_me, &
-                                   ' must be between 0 and ', max_defined_quantities
-   call error_handler(E_ERR, calling_routine, msg_string, source)
-endif
-
-end subroutine validate_obs_qty_index
-
-!----------------------------------------------------------------------------
-!> call this routine only where if an index is expected to be valid.
-!> (it is a fatal error if not.)  don't call this routine from code where
-!> an out-of-range value is handled (e.g. it returns -1 instead).
-
-subroutine validate_qty_item_index(qty_index, test_me, calling_routine)
-integer,          intent(in) :: qty_index
-integer,          intent(in) :: test_me
-character(len=*), intent(in) :: calling_routine
-
-integer :: nitems
-
-! test before using index
-call validate_obs_qty_index(qty_index, calling_routine)
-
-nitems = obs_qty_info(qty_index)%nitems
-
-if (test_me < 1 .or. test_me > nitems) then
-   write(msg_string,'(3(A,I6))') 'item number ', test_me, ' for obs quantity number ', qty_index, &
-                                   ' ('//trim(obs_type_info(qty_index)%name)//') must be between 1 and ', nitems
-   call error_handler(E_ERR, calling_routine, msg_string, source)
-endif
-
-end subroutine validate_qty_item_index
-
-!----------------------------------------------------------------------------
-
-subroutine validate_metadata_strings(obs_qty_ind, itemname, itemvalue)
-
-integer, intent(in) :: obs_qty_ind
-character(len=*), intent(in) :: itemname
-character(len=*), intent(in) :: itemvalue
-
-character(len=*), parameter :: routine = 'validate_metadata_strings'
-
-if (len_trim(itemname) > namelen) then
-  write(msg_string, *) 'quantity ', obs_qty_ind, ' metadata name "'//trim(itemname)//'" must be shorter than', namelen
-  write(msg_string1, *) 'quantity ', obs_qty_ind, ' is ', get_name_for_quantity(obs_qty_ind)
-  call error_handler(E_ERR, routine, msg_string, source, text2=msg_string1)
-endif
-
-if (len_trim(itemvalue) > valuelen) then
-  write(msg_string, *) 'quantity ', obs_qty_ind, ' metadata value "'//trim(itemvalue)//'" must be shorter than', valuelen
-  write(msg_string1, *) 'quantity ', obs_qty_ind, ' is ', get_name_for_quantity(obs_qty_ind)
-  call error_handler(E_ERR, routine, msg_string, source, text2=msg_string1)
-endif
-
-end subroutine validate_metadata_strings
-
-!----------------------------------------------------------------------------
-
-end module obs_kind_mod
-!end module obs_qty_mod
diff --git a/config/obskind.py b/config/obskind.py
new file mode 100644
index 0000000..6571c74
--- /dev/null
+++ b/config/obskind.py
@@ -0,0 +1,335 @@
+# this file is autogenerated 
+ obs_kind_nrs = {"RADIOSONDE_U_WIND_COMPONENT": 1, 
+"RADIOSONDE_V_WIND_COMPONENT": 2, 
+"RADIOSONDE_GEOPOTENTIAL_HGT": 3, 
+"RADIOSONDE_SURFACE_PRESSURE": 4, 
+"RADIOSONDE_TEMPERATURE": 5, 
+"RADIOSONDE_SPECIFIC_HUMIDITY": 6, 
+"DROPSONDE_U_WIND_COMPONENT": 7, 
+"DROPSONDE_V_WIND_COMPONENT": 8, 
+"DROPSONDE_SURFACE_PRESSURE": 9, 
+"DROPSONDE_TEMPERATURE": 10, 
+"DROPSONDE_SPECIFIC_HUMIDITY": 11, 
+"AIRCRAFT_U_WIND_COMPONENT": 12, 
+"AIRCRAFT_V_WIND_COMPONENT": 13, 
+"AIRCRAFT_TEMPERATURE": 14, 
+"AIRCRAFT_SPECIFIC_HUMIDITY": 15, 
+"ACARS_U_WIND_COMPONENT": 16, 
+"ACARS_V_WIND_COMPONENT": 17, 
+"ACARS_TEMPERATURE": 18, 
+"ACARS_SPECIFIC_HUMIDITY": 19, 
+"MARINE_SFC_U_WIND_COMPONENT": 20, 
+"MARINE_SFC_V_WIND_COMPONENT": 21, 
+"MARINE_SFC_TEMPERATURE": 22, 
+"MARINE_SFC_SPECIFIC_HUMIDITY": 23, 
+"MARINE_SFC_PRESSURE": 24, 
+"LAND_SFC_U_WIND_COMPONENT": 25, 
+"LAND_SFC_V_WIND_COMPONENT": 26, 
+"LAND_SFC_TEMPERATURE": 27, 
+"LAND_SFC_SPECIFIC_HUMIDITY": 28, 
+"LAND_SFC_PRESSURE": 29, 
+"SAT_U_WIND_COMPONENT": 30, 
+"SAT_V_WIND_COMPONENT": 31, 
+"ATOV_TEMPERATURE": 32, 
+"AIRS_TEMPERATURE": 33, 
+"AIRS_SPECIFIC_HUMIDITY": 34, 
+"GPS_PRECIPITABLE_WATER": 35, 
+"VADWND_U_WIND_COMPONENT": 36, 
+"VADWND_V_WIND_COMPONENT": 37, 
+"CIMMS_AMV_U_WIND_COMPONENT": 38, 
+"CIMMS_AMV_V_WIND_COMPONENT": 39, 
+"DOPPLER_RADIAL_VELOCITY": 40, 
+"RADAR_REFLECTIVITY": 41, 
+"RADAR_CLEARAIR_REFLECTIVITY": 42, 
+"PRECIPITATION_FALL_SPEED": 43, 
+"METAR_U_10_METER_WIND": 44, 
+"METAR_V_10_METER_WIND": 45, 
+"METAR_TEMPERATURE_2_METER": 46, 
+"METAR_SPECIFIC_HUMIDITY_2_METER": 47, 
+"METAR_SURFACE_PRESSURE": 48, 
+"METAR_POT_TEMP_2_METER": 49, 
+"DEWPOINT": 50, 
+"DEWPOINT_2_METER": 51, 
+"BUOY_DEWPOINT": 52, 
+"SHIP_DEWPOINT": 53, 
+"SYNOP_DEWPOINT": 54, 
+"AIREP_DEWPOINT": 55, 
+"AMDAR_DEWPOINT": 56, 
+"PILOT_DEWPOINT": 57, 
+"BOGUS_DEWPOINT": 58, 
+"AIRS_DEWPOINT": 59, 
+"METAR_DEWPOINT_2_METER": 60, 
+"RADIOSONDE_DEWPOINT": 61, 
+"DROPSONDE_DEWPOINT": 62, 
+"AIRCRAFT_DEWPOINT": 63, 
+"ACARS_DEWPOINT": 64, 
+"MARINE_SFC_DEWPOINT": 65, 
+"LAND_SFC_DEWPOINT": 66, 
+"RADIOSONDE_RELATIVE_HUMIDITY": 67, 
+"DROPSONDE_RELATIVE_HUMIDITY": 68, 
+"AIRCRAFT_RELATIVE_HUMIDITY": 69, 
+"ACARS_RELATIVE_HUMIDITY": 70, 
+"MARINE_SFC_RELATIVE_HUMIDITY": 71, 
+"LAND_SFC_RELATIVE_HUMIDITY": 72, 
+"METAR_RELATIVE_HUMIDITY_2_METER": 73, 
+"AIRS_RELATIVE_HUMIDITY": 74, 
+"MESONET_RELATIVE_HUMIDITY": 75, 
+"RADIOSONDE_SURFACE_ALTIMETER": 76, 
+"DROPSONDE_SURFACE_ALTIMETER": 77, 
+"MARINE_SFC_ALTIMETER": 78, 
+"LAND_SFC_ALTIMETER": 79, 
+"METAR_ALTIMETER": 80, 
+"MESONET_SURFACE_ALTIMETER": 81, 
+"TEMPERATURE": 82, 
+"SPECIFIC_HUMIDITY": 83, 
+"PRESSURE": 84, 
+"GPSRO_REFRACTIVITY": 85, 
+"VORTEX_LAT": 86, 
+"VORTEX_LON": 87, 
+"VORTEX_PMIN": 88, 
+"VORTEX_WMAX": 89, 
+"BUOY_U_WIND_COMPONENT": 90, 
+"BUOY_V_WIND_COMPONENT": 91, 
+"BUOY_SURFACE_PRESSURE": 92, 
+"BUOY_TEMPERATURE": 93, 
+"SHIP_U_WIND_COMPONENT": 94, 
+"SHIP_V_WIND_COMPONENT": 95, 
+"SHIP_SURFACE_PRESSURE": 96, 
+"SHIP_TEMPERATURE": 97, 
+"SYNOP_U_WIND_COMPONENT": 98, 
+"SYNOP_V_WIND_COMPONENT": 99, 
+"SYNOP_SURFACE_PRESSURE": 100, 
+"SYNOP_SPECIFIC_HUMIDITY": 101, 
+"SYNOP_TEMPERATURE": 102, 
+"AIREP_U_WIND_COMPONENT": 103, 
+"AIREP_V_WIND_COMPONENT": 104, 
+"AIREP_PRESSURE": 105, 
+"AIREP_TEMPERATURE": 106, 
+"AMDAR_U_WIND_COMPONENT": 107, 
+"AMDAR_V_WIND_COMPONENT": 108, 
+"AMDAR_PRESSURE": 109, 
+"AMDAR_TEMPERATURE": 110, 
+"PILOT_U_WIND_COMPONENT": 111, 
+"PILOT_V_WIND_COMPONENT": 112, 
+"PILOT_PRESSURE": 113, 
+"PILOT_TEMPERATURE": 114, 
+"BOGUS_U_WIND_COMPONENT": 115, 
+"BOGUS_V_WIND_COMPONENT": 116, 
+"BOGUS_PRESSURE": 117, 
+"BOGUS_TEMPERATURE": 118, 
+"PROFILER_U_WIND_COMPONENT": 119, 
+"PROFILER_V_WIND_COMPONENT": 120, 
+"PROFILER_PRESSURE": 121, 
+"SATEM_THICKNESS": 122, 
+"NOAA_1_VTPR1_RADIANCE": 123, 
+"NOAA_2_VTPR1_RADIANCE": 124, 
+"NOAA_3_VTPR1_RADIANCE": 125, 
+"NOAA_4_VTPR1_RADIANCE": 126, 
+"NOAA_5_HIRS_RADIANCE": 127, 
+"NOAA_5_MSU_TB": 128, 
+"NOAA_5_AVHRR_RADIANCE": 129, 
+"NOAA_6_HIRS_RADIANCE": 130, 
+"NOAA_6_MSU_TB": 131, 
+"NOAA_6_AVHRR_RADIANCE": 132, 
+"NOAA_7_HIRS_RADIANCE": 133, 
+"NOAA_7_MSU_TB": 134, 
+"NOAA_7_AVHRR_RADIANCE": 135, 
+"NOAA_8_HIRS_RADIANCE": 136, 
+"NOAA_8_MSU_TB": 137, 
+"NOAA_8_AVHRR_RADIANCE": 138, 
+"NOAA_9_HIRS_RADIANCE": 139, 
+"NOAA_9_MSU_TB": 140, 
+"NOAA_9_AVHRR_RADIANCE": 141, 
+"NOAA_10_HIRS_RADIANCE": 142, 
+"NOAA_10_MSU_TB": 143, 
+"NOAA_10_AVHRR_RADIANCE": 144, 
+"NOAA_11_HIRS_RADIANCE": 145, 
+"NOAA_11_MSU_TB": 146, 
+"NOAA_11_AVHRR_RADIANCE": 147, 
+"NOAA_12_HIRS_RADIANCE": 148, 
+"NOAA_12_MSU_TB": 149, 
+"NOAA_12_AVHRR_RADIANCE": 150, 
+"NOAA_13_AVHRR_RADIANCE": 151, 
+"NOAA_14_HIRS_RADIANCE": 152, 
+"NOAA_14_MSU_TB": 153, 
+"NOAA_14_AVHRR_RADIANCE": 154, 
+"NOAA_15_HIRS_RADIANCE": 155, 
+"NOAA_15_AMSUA_TB": 156, 
+"NOAA_15_AMSUB_TB": 157, 
+"NOAA_15_AVHRR_RADIANCE": 158, 
+"NOAA_16_HIRS_RADIANCE": 159, 
+"NOAA_16_AMSUA_TB": 160, 
+"NOAA_16_AMSUB_TB": 161, 
+"NOAA_16_AVHRR_RADIANCE": 162, 
+"NOAA_17_HIRS_RADIANCE": 163, 
+"NOAA_17_AMSUA_TB": 164, 
+"NOAA_17_AMSUB_TB": 165, 
+"NOAA_17_AVHRR_RADIANCE": 166, 
+"NOAA_18_HIRS_RADIANCE": 167, 
+"NOAA_18_AMSUA_TB": 168, 
+"NOAA_18_AVHRR_RADIANCE": 169, 
+"NOAA_18_MHS_TB": 170, 
+"NOAA_19_HIRS_RADIANCE": 171, 
+"NOAA_19_AMSUA_TB": 172, 
+"NOAA_19_AVHRR_RADIANCE": 173, 
+"NOAA_19_MHS_TB": 174, 
+"NOAA_20_ATMS_TB": 175, 
+"NOAA_20_VIIRS_RADIANCE": 176, 
+"DMSP_8_SSMI_TB": 177, 
+"DMSP_9_SSMI_TB": 178, 
+"DMSP_10_SSMI_TB": 179, 
+"DMSP_11_SSMI_TB": 180, 
+"DMSP_11_SSMT2_TB": 181, 
+"DMSP_12_SSMI_TB": 182, 
+"DMSP_12_SSMT2_TB": 183, 
+"DMSP_13_SSMI_TB": 184, 
+"DMSP_14_SSMI_TB": 185, 
+"DMSP_14_SSMT2_TB": 186, 
+"DMSP_15_SSMI_TB": 187, 
+"DMSP_15_SSMT2_TB": 188, 
+"DMSP_16_SSMIS_TB": 189, 
+"DMSP_17_SSMIS_TB": 190, 
+"DMSP_18_SSMIS_TB": 191, 
+"DMSP_19_SSMIS_TB": 192, 
+"METEOSAT_1_MVIRI_RADIANCE": 193, 
+"METEOSAT_2_MVIRI_RADIANCE": 194, 
+"METEOSAT_3_MVIRI_RADIANCE": 195, 
+"METEOSAT_4_MVIRI_RADIANCE": 196, 
+"METEOSAT_5_MVIRI_RADIANCE": 197, 
+"METEOSAT_6_MVIRI_RADIANCE": 198, 
+"METEOSAT_7_MVIRI_RADIANCE": 199, 
+"GOES_4_SOUNDER_RADIANCE": 200, 
+"GOES_5_SOUNDER_RADIANCE": 201, 
+"GOES_6_SOUNDER_RADIANCE": 202, 
+"GOES_7_SOUNDER_RADIANCE": 203, 
+"GOES_8_IMAGER_RADIANCE": 204, 
+"GOES_8_SOUNDER_RADIANCE": 205, 
+"GOES_9_IMAGER_RADIANCE": 206, 
+"GOES_9_SOUNDER_RADIANCE": 207, 
+"GOES_10_IMAGER_RADIANCE": 208, 
+"GOES_10_SOUNDER_RADIANCE": 209, 
+"GOES_11_IMAGER_RADIANCE": 210, 
+"GOES_11_SOUNDER_RADIANCE": 211, 
+"GOES_12_IMAGER_RADIANCE": 212, 
+"GOES_12_SOUNDER_RADIANCE": 213, 
+"GOES_13_IMAGER_RADIANCE": 214, 
+"GOES_13_SOUNDER_RADIANCE": 215, 
+"GOES_14_IMAGER_RADIANCE": 216, 
+"GOES_14_SOUNDER_RADIANCE": 217, 
+"GOES_15_IMAGER_RADIANCE": 218, 
+"GOES_15_SOUNDER_RADIANCE": 219, 
+"GOES_16_ABI_RADIANCE": 220, 
+"GOES_17_ABI_RADIANCE": 221, 
+"GOES_18_ABI_RADIANCE": 222, 
+"GOES_19_ABI_RADIANCE": 223, 
+"GMS_1_IMAGER_RADIANCE": 224, 
+"GMS_2_IMAGER_RADIANCE": 225, 
+"GMS_3_IMAGER_RADIANCE": 226, 
+"GMS_4_IMAGER_RADIANCE": 227, 
+"GMS_5_IMAGER_RADIANCE": 228, 
+"FY2_2_VISSR_RADIANCE": 229, 
+"FY2_3_VISSR_RADIANCE": 230, 
+"FY2_4_VISSR_RADIANCE": 231, 
+"FY2_5_VISSR_RADIANCE": 232, 
+"FY2_7_VISSR_RADIANCE": 233, 
+"TRMM_1_TMI_TB": 234, 
+"ERS_1_ATSR_RADIANCE": 235, 
+"ERS_1_MWR_TB": 236, 
+"ERS_2_ATSR_RADIANCE": 237, 
+"ERS_2_MWR_TB": 238, 
+"EOS_1_MODIS_RADIANCE": 239, 
+"EOS_1_ASTER_RADIANCE": 240, 
+"EOS_2_AMSUA_TB": 241, 
+"EOS_2_AIRS_RADIANCE": 242, 
+"EOS_2_HSB_TB": 243, 
+"EOS_2_MODIS_RADIANCE": 244, 
+"EOS_2_AMSRE_TB": 245, 
+"METOP_1_HIRS_RADIANCE": 246, 
+"METOP_1_AMSUA_TB": 247, 
+"METOP_1_AVHRR_RADIANCE": 248, 
+"METOP_1_MHS_TB": 249, 
+"METOP_2_HIRS_RADIANCE": 250, 
+"METOP_2_AMSUA_TB": 251, 
+"METOP_2_AVHRR_RADIANCE": 252, 
+"METOP_2_MHS_TB": 253, 
+"METOP_3_AVHRR_RADIANCE": 254, 
+"ENVISAT_1_ATSR_RADIANCE": 255, 
+"ENVISAT_1_MWR_TB": 256, 
+"MSG_1_SEVIRI_RADIANCE": 257, 
+"MSG_2_SEVIRI_RADIANCE": 258, 
+"MSG_3_SEVIRI_RADIANCE": 259, 
+"MSG_4_SEVIRI_RADIANCE": 260, 
+"MSG_4_SEVIRI_TB": 261, 
+"MSG_4_SEVIRI_BDRF": 262, 
+"FY1_3_MVISR_RADIANCE": 263, 
+"FY1_4_MVISR_RADIANCE": 264, 
+"MTSAT_1_IMAGER_RADIANCE": 265, 
+"MTSAT_2_IMAGER_RADIANCE": 266, 
+"CORIOLIS_1_WINDSAT_TB": 267, 
+"JPSS_0_ATMS_TB": 268, 
+"JPSS_0_VIIRS_RADIANCE": 269, 
+"SENTINEL3_1_SLSTR_RADIANCE": 270, 
+"SENTINEL3_2_SLSTR_RADIANCE": 271, 
+"MEGHATR_1_SAPHIR_TB": 272, 
+"MEGHATR_1_MADRAS_TB": 273, 
+"FY3_1_MWTS_TB": 274, 
+"FY3_1_MWHS_TB": 275, 
+"FY3_1_IRAS_RADIANCE": 276, 
+"FY3_1_MWRI_TB": 277, 
+"FY3_2_MWTS_TB": 278, 
+"FY3_2_MWHS_TB": 279, 
+"FY3_2_MWRI_TB": 280, 
+"FY3_3_MWRI_TB": 281, 
+"FY3_3_MWTS2_TB": 282, 
+"FY3_3_MWHS2_TB": 283, 
+"FY3_3_MERSI1_RADIANCE": 284, 
+"FY3_4_MWRI_TB": 285, 
+"FY3_4_MWTS2_TB": 286, 
+"FY3_4_MWHS2_TB": 287, 
+"FY3_4_MERSI2_RADIANCE": 288, 
+"COMS_1_MI_RADIANCE": 289, 
+"METEOR_M_1_MSUMR_RADIANCE": 290, 
+"METEOR_M_2_MSUMR_RADIANCE": 291, 
+"METEOR_M_2_MTVZAGY_TB": 292, 
+"CALIPSO_1_IIR_RADIANCE": 293, 
+"GCOM_W_1_AMSR2_TB": 294, 
+"NIMBUS_3_MRIR_RADIANCE": 295, 
+"NIMBUS_4_THIR_RADIANCE": 296, 
+"NIMBUS_5_THIR_RADIANCE": 297, 
+"NIMBUS_6_HIRS_RADIANCE": 298, 
+"NIMBUS_6_SCAMS_TB": 299, 
+"NIMBUS_6_THIR_RADIANCE": 300, 
+"NIMBUS_7_SMMR_TB": 301, 
+"NIMBUS_7_THIR_RADIANCE": 302, 
+"HIMAWARI_8_AHI_RADIANCE": 303, 
+"HIMAWARI_9_AHI_RADIANCE": 304, 
+"MTG_1_FCI_RADIANCE": 305, 
+"SARAL_1_ALTIKA_TB": 306, 
+"METOPSG_1_ICI_TB": 307, 
+"METOPSG_1_METIMAGE_RADIANCE": 308, 
+"METOPSG_1_MWS_TB": 309, 
+"METOPSG_1_MWI_TB": 310, 
+"LANDSAT_4_TM_RADIANCE": 311, 
+"LANDSAT_5_TM_RADIANCE": 312, 
+"LANDSAT_7_TM_RADIANCE": 313, 
+"LANDSAT_8_TIRS_RADIANCE": 314, 
+"JASON_2_AMR_TB": 315, 
+"GPM_1_GMI_TB": 316, 
+"GPM_1_DPR_TB": 317, 
+"INSAT3_4_IMAGER_RADIANCE": 318, 
+"INSAT3_4_SOUNDER_RADIANCE": 319, 
+"INSAT3_5_IMAGER_RADIANCE": 320, 
+"INSAT3_5_SOUNDER_RADIANCE": 321, 
+"TICFIRE_1_MBFIRI_RADIANCE": 322, 
+"ISS_1_ECOSTRES_RADIANCE": 323, 
+"HJ1_2_IRMSS_RADIANCE": 324, 
+"GKOMPSAT2_1_AMI_RADIANCE": 325, 
+"GCOM_C_1_SGLI_RADIANCE": 326, 
+"SMOS_1_MIRAS_TB": 327, 
+"ORS_6_COWVR_TB": 328, 
+"FY4_1_AGRI_RADIANCE": 329, 
+"TROPICS_0_TROPICS_TB": 330, 
+"GF5_1_VIMS_RADIANCE": 331, 
+"HY2_1_MWRI_TB": 332, 
+"CLOUDSAT_1_CPR_TB": 333, 
+}
\ No newline at end of file
diff --git a/dartwrf/create_obsseq.py b/dartwrf/create_obsseq.py
index 92c3252..df2a847 100755
--- a/dartwrf/create_obsseq.py
+++ b/dartwrf/create_obsseq.py
@@ -15,7 +15,7 @@ from dartwrf.obs import calculate_obs_locations as col
 
 #####################
 # Global variables
-obs_kind_nrs = csv.DictReader(open("config/obskind.csv"))  # DART internal indices
+from config.obskind import obs_kind_nrs  # DART internal indices
 
 # position on earth for RTTOV ray geometry
 lat0 = 45.
diff --git a/dartwrf/workflows.py b/dartwrf/workflows.py
index 43d9504..cfb3673 100644
--- a/dartwrf/workflows.py
+++ b/dartwrf/workflows.py
@@ -15,10 +15,13 @@ from config.cfg import exp
 
 
 
-def dict_to_csv(d, outfile):
+def dict_to_py(d, outfile):
     with open(outfile, 'w') as f:
-        for key in d.keys():
-            f.write("%s,%s\n"%(key,d[key]))
+        txt = '# this file is autogenerated \n obs_kind_nrs = {'
+        for k,v in d.items():
+            txt += '"'+k+'": '+str(v)+', \n'
+        txt += '}'
+        f.write(txt)
 
 class WorkFlows(object):
     def __init__(self, exp_config='cfg.py', server_config='server.py'):
@@ -69,7 +72,7 @@ class WorkFlows(object):
                     obskind_nrs[kind_str] = kind_nr
             return obskind_nrs
         
-        dict_to_csv(obskind_read(), self.cluster.scriptsdir+'/../config/obskind.csv')
+        dict_to_py(obskind_read(), self.cluster.scriptsdir+'/../config/obskind.py')
             
         # Copy scripts to self.cluster.archivedir folder
         os.makedirs(self.cluster.archivedir, exist_ok=True)
-- 
GitLab