Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

pycama / src / PyCAMA_DDS2B_AAI_cfg.py @ 845:2fa418692f06

History | View | Annotate | Download (174 KB)

1
#!/usr/bin/env python3
2
# -*- coding: utf-8 -*-
3

    
4
import datetime
5
import plistlib
6
import sys
7

    
8
# Copy of the operational configuration script (PyCAMA_config_generator.py)
9
# This script modifies the standard configuration to select a range over the 
10
# Pacific with a in specific solar zenith angle ranges to provide a constant 
11
# background signal to identify radiance effects.
12

    
13
# Constants to more easily change the selection area
14

    
15
# when True use sza_max and a selection on the solar zenith angle
16
# otherwise use a symmetric latitude band
17
use_sza = True
18
use_abs_lat_max = True
19
use_pacific = False
20
use_center = True
21

    
22
sza_max = 85.0
23
abs_lat_max = 60.0
24
center_count = 240
25

    
26

    
27
# longitude selection over the pacific is always fun because of the dateline.
28
# This is the selection Jos uses, and this circumvents the issue.
29
# Only active if use_pacific is True
30
western_longitude = -180.0
31
eastern_longitude = -135.0
32

    
33
# Removed the 'world' L3 maps for the subset. Saves time.
34

    
35

    
36

    
37
# Unicode characters: http://www.fileformat.info/info/unicode/char/search.htm
38
from pycama import __version__
39

    
40
if __name__ == "__main__":
41
    d = {
42
        'general_settings': {
43
            # 'actions' are the keys to extract certain information. These can be processing mode dependent.
44
            # currently defined actions are 'world', 'histogram', 'along_track', 'scatter', 'outline', 'events' and 'irradiance'
45
            'actions': {'NRTI': ['zonal', 'histogram', 'along_track',            'outline', 'events', 'irradiance'],
46
                        'OFFL': ['zonal', 'histogram', 'along_track', 'scatter', 'outline', 'events', 'irradiance'],
47
                        'RPRO': ['zonal', 'histogram', 'along_track', 'scatter', 'outline', 'events', 'irradiance'],
48
                        'TEST': ['zonal', 'histogram', 'along_track', 'scatter', 'outline', 'events', 'irradiance'],
49
                        'OPER': ['zonal', 'histogram', 'along_track', 'scatter', 'outline', 'events', 'irradiance']
50
                       },
51
            'histogram_bincount': 100,
52
            'include_data': False,
53
            'interval_duration': 'P1D', # default aggregation period is 1 day.
54
            'reference_time': 'ref', # 'start' (begin of granule), 'stop', 'end' (both end of granule), 'ref' (reference time), 'mid' (middle of granule)
55
            'spatial_resolution': 0.25,
56
            'zonal_resolution': 1.0,
57
            'synchronize': True,
58
            'full_synchronize': False,
59
            'max_sza': 80.0,
60
            'pycama_version': __version__,
61
            'scanline_dimension': 'scanline',
62
            'warnings_limit': 5000, # when exceeding this limit an error is generated.
63
            # Optional: map configuration names to actual product mnemonics.
64
            # product_mapping': {'internal_name':'real_name'}
65
            'variables':
66
                [
67
                    {
68
                        'color_scale': 'nipy_spectral',
69
                        'data_range': [-90.0, 90.0],
70
                        'field_name': 'latitude',
71
                        'flag': False,
72
                        'log_range': False,
73
                        'primary_variable': 'latitude',
74
                        'histogram_bincount': 90,
75
                        'show': False,
76
                        'title': 'Latitude',
77
                        'units': "\u00B0N"
78
                    },
79
                    {
80
                        'color_scale': 'nipy_spectral',
81
                        'data_range': [0.0, 90.0],
82
                        'field_name': 'solar_zenith_angle',
83
                        'flag': False,
84
                        'log_range': False,
85
                        'primary_variable': 'solar_zenith_angle',
86
                        'histogram_bincount': 45,
87
                        'show': False,
88
                        'title': 'Solar zenith angle',
89
                        'units': "\u00B0"
90
                    },
91
                    {
92
                        'color_scale': 'nipy_spectral',
93
                        'data_range': [0.0, 90.0],
94
                        'field_name': 'viewing_zenith_angle',
95
                        'flag': False,
96
                        'log_range': False,
97
                        'primary_variable': 'viewing_zenith_angle',
98
                        'histogram_bincount': 45,
99
                        'show': False,
100
                        'title': 'Viewing zenith angle',
101
                        'units': "\u00B0"
102
                    },
103
                    {
104
                        'color_scale': 'nipy_spectral',
105
                        'data_range': [-180.0, 180.0],
106
                        'field_name': 'longitude',
107
                        'flag': False,
108
                        'log_range': False,
109
                        'primary_variable': 'longitude',
110
                        'show': False,
111
                        'internal_only': True,
112
                        'title': 'Longitude',
113
                        'units': "\u00B0E"
114
                    },
115
                    {
116
                        'color_scale': 'nipy_spectral',
117
                        'data_range': [0,2**32-1],
118
                        'field_name': 'processing_quality_flags',
119
                        'flag': True,
120
                        'log_range': False,
121
                        'primary_variable': 'processing_quality_flags',
122
                        'show': False,
123
                        'internal_only': True,
124
                        'title': 'Processing quality flags',
125
                        'units': ""
126
                    },
127
                    {
128
                        'color_scale': 'nipy_spectral',
129
                        'data_range': [0,256],
130
                        'field_name': 'geolocation_flags',
131
                        'flag': True,
132
                        'log_range': False,
133
                        'primary_variable': 'geolocation_flags',
134
                        'show': False,
135
                        'internal_only': True,
136
                        'title': 'Geolocation flags',
137
                        'units': ""
138
                    },
139
                    {
140
                        'color_scale': 'nipy_spectral',
141
                        'data_range': [0,256],
142
                        'field_name': 'surface_classification',
143
                        'flag': True,
144
                        'log_range': False,
145
                        'primary_variable': 'surface_classification',
146
                        'show': False,
147
                        'internal_only': True,
148
                        'title': 'Surface classification',
149
                        'units': ""
150
                    },
151
                    {
152
                        'color_scale': 'nipy_spectral',
153
                        'data_range': [0,360],
154
                        'field_name': 'solar_azimuth_angle',
155
                        'flag': True,
156
                        'log_range': False,
157
                        'primary_variable': 'solar_azimuth_angle',
158
                        'show': False,
159
                        'internal_only': True,
160
                        'title': 'Solar azimuth angle',
161
                        'units': "\u00B0"
162
                    },
163
                    {
164
                        'color_scale': 'nipy_spectral',
165
                        'data_range': [0,360],
166
                        'field_name': 'viewing_azimuth_angle',
167
                        'flag': True,
168
                        'log_range': False,
169
                        'primary_variable': 'viewing_azimuth_angle',
170
                        'show': False,
171
                        'internal_only': True,
172
                        'title': 'Viewing azimuth angle',
173
                        'units': "\u00B0"
174
                    },
175
                    {
176
                        'color_scale': 'nipy_spectral',
177
                        'data_range': [0.0,1.0],
178
                        'field_name': 'qa_value',
179
                        'flag': False,
180
                        'level3': False,
181
                        'include_scatter': False,
182
                        'log_range': False,
183
                        'primary_variable': 'qa_value',
184
                        'show': True,
185
                        'internal_only': False,
186
                        'title': 'QA value',
187
                        'units': "1",
188
                        'transformers':
189
                            [
190
                                {
191
                                    'class':'transform.Multiplier',
192
                                    'arguments': {'operator': '/', 'scalefactor': 100.0}
193
                                },
194
                            ]
195
                    }
196
                ]
197
            },
198
        'FRESCO': {
199
            'contact': 'Maarten Sneep',
200
            'contact_email': 'maarten.sneep@knmi.nl',
201
            'developer': 'KNMI',
202
            'developer_contact': 'tropomi_l2_dev@knmi.nl',
203
            'variables':
204
                [
205
                    {
206
                        'color_scale': 'viridis',
207
                        'data_range': [100.0, 1100.0],
208
                        'field_name': 'cloud_pressure_crb',
209
                        'flag': False,
210
                        'log_range': False,
211
                        'primary_variable': 'cloud_pressure_crb',
212
                        'secondary_variable': 'cloud_fraction_crb',
213
                        'show': True,
214
                        'title': 'Cloud pressure',
215
                        'transformers':
216
                            [
217
                                {
218
                                    'class':'transform.Multiplier',
219
                                    'arguments': {'operator': '/', 'scalefactor': 100.0}
220
                                },
221
                            ],
222
                        'units': 'hPa'
223
                    },
224
                    {
225
                        'color_scale': 'nipy_spectral',
226
                        'data_range': [0.0, 150.0],
227
                        'field_name': 'cloud_pressure_crb_precision',
228
                        'flag': False,
229
                        'log_range': False,
230
                        'level3': False,
231
                        'include_scatter': False,
232
                        'primary_variable': 'cloud_pressure_crb_precision',
233
                        'secondary_variable': 'cloud_fraction_crb',
234
                        'show': True,
235
                        'title': 'Cloud pressure precision',
236
                        'transformers':
237
                            [
238
                                {
239
                                    'class':'transform.Multiplier',
240
                                    'arguments': {'operator': '/', 'scalefactor': 100.0}
241
                                },
242
                            ],
243
                        'units': 'hPa'
244
                    },
245
                    {
246
                        'color_scale': 'Blues_r',
247
                        'data_range': [0.0,1.1],
248
                        'map_range': [0.0,1.0],
249
                        'field_name': 'cloud_fraction_crb',
250
                        'flag': False,
251
                        'log_range': False,
252
                        'primary_variable': 'cloud_fraction_crb',
253
                        'show': True,
254
                        'title': 'Cloud fraction',
255
                        'units': '',
256
                        'transformers':
257
                            [
258
                                {
259
                                    'class': 'transform.ProcessingQualityFlagsFilter',
260
                                    'arguments': {'mask':0xff}
261
                                }
262
                            ],
263
                    },
264
                    {
265
                        'color_scale': 'nipy_spectral',
266
                        'data_range': [0.0,0.05],
267
                        'field_name': 'cloud_fraction_crb_precision',
268
                        'flag': False,
269
                        'log_range': False,
270
                        'primary_variable': 'cloud_fraction_crb_precision',
271
                        'level3': False,
272
                        'include_scatter': False,
273
                        'show': True,
274
                        'title': 'Cloud fraction precision',
275
                        'units': ''
276
                    },
277
                    {
278
                        'color_scale': 'viridis',
279
                        'data_range': [0.0,1.0],
280
                        'field_name': 'scene_albedo',
281
                        'flag': False,
282
                        'log_range': False,
283
                        'primary_variable': 'scene_albedo',
284
                        'show': True,
285
                        'title': 'Scene albedo',
286
                        'units': ''
287
                    },
288
                    {
289
                        'color_scale': 'nipy_spectral',
290
                        'data_range': [0.0,0.05],
291
                        'field_name': 'scene_albedo_precision',
292
                        'flag': False,
293
                        'log_range': False,
294
                        'primary_variable': 'scene_albedo_precision',
295
                        'level3': False,
296
                        'include_scatter': False,
297
                        'show': True,
298
                        'title': 'Scene albedo precision',
299
                        'units': ''
300
                    },
301
                    {
302
                        'color_scale': 'viridis',
303
                        'data_range': [300.0, 1100.0],
304
                        'field_name': 'apparent_scene_pressure',
305
                        'flag': False,
306
                        'log_range': False,
307
                        'primary_variable': 'apparent_scene_pressure',
308
                        'show': True,
309
                        'title': 'Apparent scene pressure',
310
                        'transformers':
311
                            [
312
                                {
313
                                    'class': 'transform.Multiplier',
314
                                    'arguments': {'operator': '/', 'scalefactor': 100.0}
315
                                }
316
                            ],
317
                        'units': 'hPa'
318
                    },
319
                    {
320
                        'color_scale': 'nipy_spectral',
321
                        'data_range': [0.0, 100.0],
322
                        'field_name': 'apparent_scene_pressure_precision',
323
                        'flag': False,
324
                        'log_range': False,
325
                        'primary_variable': 'apparent_scene_pressure_precision',
326
                        'level3': False,
327
                        'include_scatter': False,
328
                        'show': True,
329
                        'title': 'Apparent scene pressure precision',
330
                        'transformers':
331
                            [
332
                                {
333
                                    'class': 'transform.Multiplier',
334
                                    'arguments': {'operator': '/', 'scalefactor': 100.0}
335
                                }
336
                            ],
337
                        'units': 'hPa'
338
                    },
339
                    {
340
                        'color_scale': 'nipy_spectral',
341
                        'data_range': [0.0, 30.0],
342
                        'field_name': 'chi_square',
343
                        'flag': False,
344
                        'log_range': False,
345
                        'primary_variable': 'chi_square',
346
                        'level3': False,
347
                        'show': True,
348
                        'title': '\u03C7\u00B2',
349
                        'units': ''
350
                    },
351
                    {
352
                        'color_scale': 'nipy_spectral',
353
                        'data_range': [0, 12],
354
                        'field_name': 'number_of_iterations',
355
                        'flag': False,
356
                        'log_range': False,
357
                        'histogram_bincount': 13,
358
                        'primary_variable': 'number_of_iterations',
359
                        'level3': False,
360
                        'show': True,
361
                        'title': 'Number of iterations',
362
                        'units': ''
363
                    },
364
                    {
365
                        'color_scale': 'nipy_spectral',
366
                        'data_range': [0.0, 5e-8],
367
                        'field_name': 'fluorescence',
368
                        'flag': False,
369
                        'log_range': False,
370
                        'primary_variable': 'fluorescence',
371
                        'show': True,
372
                        'title': 'Fluorescence',
373
                        'transformers':
374
                            [
375
                                {
376
                                    'class': 'transform.Select',
377
                                    'arguments': {'dimension': -1, 'index':2, 'collapse':False}
378
                                }
379
                            ],
380
                        'units': 'mol s\u207B\u00B9 m\u207B\u00B2 nm\u207B\u00B9 sr\u207B\u00B9'
381
                    },
382
                    {
383
                        'color_scale': 'nipy_spectral',
384
                        'data_range': [0.0, 1e-8],
385
                        'field_name': 'fluorescence_precision',
386
                        'flag': False,
387
                        'log_range': False,
388
                        'primary_variable': 'fluorescence_precision',
389
                        'level3': False,
390
                        'include_scatter': False,
391
                        'show': True,
392
                        'title': 'Fluorescence precision',
393
                        'transformers':
394
                            [
395
                                {
396
                                    'class': 'transform.Select',
397
                                    'arguments': {'dimension': -1, 'index':2, 'collapse':False}
398
                                }
399
                            ],
400
                        'units': 'mol s\u207B\u00B9 m\u207B\u00B2 nm\u207B\u00B9 sr\u207B\u00B9'
401
                    },
402
                    {
403
                        'color_scale': 'nipy_spectral',
404
                        'data_range': [0.0, 5.0e4],
405
                        'field_name': 'chi_square_fluorescence',
406
                        'flag': False,
407
                        'log_range': False,
408
                        'primary_variable': 'chi_square_fluorescence',
409
                        'level3': False,
410
                        'show': True,
411
                        'title': '\u03C7\u00B2 of fluorescence retrieval',
412
                        'units': ''
413
                    },
414
                    {
415
                        'color_scale': 'nipy_spectral',
416
                        'data_range': [0.0, 10.0],
417
                        'field_name': 'degrees_of_freedom_fluorescence',
418
                        'flag': False,
419
                        'log_range': False,
420
                        'histogram_bincount': 21,
421
                        'primary_variable': 'degrees_of_freedom_fluorescence',
422
                        'show': True,
423
                        'level3': False,
424
                        'title': 'Degrees of freedom for signal of fluorescence retrieval',
425
                        'units': ''
426
                    },
427
                    {
428
                        'color_scale': 'nipy_spectral',
429
                        'data_range': [0, 60],
430
                        'field_name': 'number_of_spectral_points_in_retrieval',
431
                        'flag': False,
432
                        'log_range': False,
433
                        'histogram_bincount': 61,
434
                        'primary_variable': 'number_of_spectral_points_in_retrieval',
435
                        'level3': False,
436
                        'show': True,
437
                        'title': 'Number of points in the spectrum',
438
                        'units': ''
439
                    },
440
                    {
441
                        'color_scale': 'seismic',
442
                        'data_range': [-0.04,0.04],
443
                        'field_name': 'wavelength_calibration_offset',
444
                        'flag': False,
445
                        'log_range': False,
446
                        'primary_variable': 'wavelength_calibration_offset',
447
                        'level3': False,
448
                        'show': True,
449
                        'title': 'Spectral offset (\u03BB(true) \u2212 \u03BB(nominal))',
450
                        'units': 'nm'
451
                    },
452
                    {
453
                        'color_scale': 'seismic',
454
                        'data_range': [-0.1,0.1],
455
                        'field_name': 'wavelength_calibration_irradiance_offset',
456
                        'flag': False,
457
                        'log_range': False,
458
                        'primary_variable': 'wavelength_calibration_irradiance_offset',
459
                        'show': True,
460
                        'title': 'Spectral offset irradiance (\u03BB(true) \u2212 \u03BB(nominal))',
461
                        'units': 'nm'
462
                    }
463
                ]
464
            },
465
        'OMICLD': {
466
            'equivalent_product': 'FRESCO'
467
            },
468
        'O22CLD': {
469
            'equivalent_product': 'FRESCO'
470
            },
471
        'FRESCB': {
472
                'equivalent_product': 'FRESCO'
473
            },
474
        'AER_AI': {
475
            'contact': 'Deborah Stein-Zweers',
476
            'contact_email': 'deborah.zweers-stein@knmi.nl',
477
            'developer': 'KNMI',
478
            'developer_contact': 'tropomi_l2_dev@knmi.nl',
479
            'variables':
480
                [
481
                    {
482
                        'color_scale': 'nipy_spectral',
483
                        'data_range': [-5,7],
484
                        'map_range': [-3,5],
485
                        'field_name': 'aerosol_index_354_388',
486
                        'flag': False,
487
                        'log_range': False,
488
                        'primary_variable': 'aerosol_index_354_388',
489
                        'show': True,
490
                        'title': 'UV aerosol index (354/388 nm)',
491
                        'units': ''
492
                    },
493
                    {
494
                        'color_scale': 'nipy_spectral',
495
                        'data_range': [-5,7],
496
                        'map_range': [-3,5],
497
                        'field_name': 'aerosol_index_340_380',
498
                        'flag': False,
499
                        'log_range': False,
500
                        'primary_variable': 'aerosol_index_340_380',
501
                        'show': True,
502
                        'title': 'UV aerosol index (340/380 nm)',
503
                        'units': ''
504
                    },
505
                    {
506
                        'color_scale': 'seismic',
507
                        'data_range': [-3,3],
508
                        'map_range': [-2,2],
509
                        'field_name': 'aerosol_index_delta',
510
                        'flag': False,
511
                        'log_range': False,
512
                        'primary_variable': 'aerosol_index_340_380-aerosol_index_354_388',
513
                        'show': True,
514
                        'title': 'UV aerosol index difference (340/380 - 354/388)',
515
                        'units': ''
516
                    },
517
                    {
518
                        'color_scale': 'nipy_spectral',
519
                        'data_range': [0,4],
520
                        'field_name': 'aerosol_index_354_388_precision',
521
                        'flag': False,
522
                        'log_range': False,
523
                        'level3': False,
524
                        'include_scatter': False,
525
                        'primary_variable': 'aerosol_index_354_388_precision',
526
                        'show': True,
527
                        'title': 'Precision of the UV aerosol index (354/388 nm)',
528
                        'units': ''
529
                    },
530
                    {
531
                        'color_scale': 'nipy_spectral',
532
                        'data_range': [0,4],
533
                        'field_name': 'aerosol_index_340_380_precision',
534
                        'flag': False,
535
                        'log_range': False,
536
                        'primary_variable': 'aerosol_index_340_380_precision',
537
                        'level3': False,
538
                        'include_scatter': False,
539
                        'show': True,
540
                        'title': 'Precision of the UV aerosol index (340/380 nm)',
541
                        'units': ''
542
                    },
543
                    {
544
                        'color_scale': 'nipy_spectral',
545
                        'data_range': [0, 50],
546
                        'field_name': 'number_of_spectral_points_in_retrieval',
547
                        'flag': False,
548
                        'log_range': False,
549
                        'level3': False,
550
                        'include_scatter': False,
551
                        'histogram_bincount': 51,
552
                        'primary_variable': 'number_of_spectral_points_in_retrieval',
553
                        'show': True,
554
                        'title': 'Number of points in the spectrum',
555
                        'units': ''
556
                    },
557
                    {
558
                        'color_scale': 'seismic',
559
                        'data_range': [-0.04,0.04],
560
                        'field_name': 'wavelength_calibration_offset',
561
                        'flag': False,
562
                        'log_range': False,
563
                        'primary_variable': 'wavelength_calibration_offset',
564
                        'level3': False,
565
                        'show': True,
566
                        'title': 'Spectral offset (\u03BB(true) \u2212 \u03BB(nominal))',
567
                        'units': 'nm'
568
                    },
569
                    {
570
                        'color_scale': 'seismic',
571
                        'data_range': [-0.1,0.1],
572
                        'field_name': 'wavelength_calibration_irradiance_offset',
573
                        'flag': False,
574
                        'log_range': False,
575
                        'primary_variable': 'wavelength_calibration_irradiance_offset',
576
                        'show': True,
577
                        'title': 'Spectral offset irradiance (\u03BB(true) \u2212 \u03BB(nominal))',
578
                        'units': 'nm'
579
                    },
580
                    {
581
                        'color_scale': 'Blues_r',
582
                        'data_range': [0.0, 1.0],
583
                        'map_range': [0.0, 1.0],
584
                        'field_name': 'scene_albedo_380',
585
                        'flag': False,
586
                        'log_range': False,
587
                        'primary_variable': 'scene_albedo_380',
588
                        'show': True,
589
                        'units': '',
590
                        'title': 'Scene albedo at 380 nm'
591
                    },
592
                    {
593
                        'color_scale': 'Blues_r',
594
                        'data_range': [0.0, 1.0],
595
                        'map_range': [0.0, 1.0],
596
                        'field_name': 'scene_albedo_388',
597
                        'flag': False,
598
                        'log_range': False,
599
                        'primary_variable': 'scene_albedo_388',
600
                        'show': True,
601
                        'units': '',
602
                        'title': 'Scene albedo at 388 nm'
603
                    }
604
                ]
605
            },
606
        'AER_LH': {
607
            'contact': 'Martin de Graaf',
608
            'contact_email': 'martin.de.graaf@knmi.nl',
609
            'developer': 'KNMI',
610
            'developer_contact': 'tropomi_l2_dev@knmi.nl',
611
            'full_synchronize': True,
612
            'variables':
613
                [
614
                    {
615
                        'color_scale': 'nipy_spectral',
616
                        'data_range': [100.0, 1100.0],
617
                        'field_name': 'aerosol_mid_pressure',
618
                        'flag': False,
619
                        'log_range': False,
620
                        'primary_variable': 'aerosol_mid_pressure',
621
                        'show': True,
622
                        'title': 'Aerosol mid pressure',
623
                        'transformers':
624
                            [
625
                                {
626
                                    'class': 'transform.Multiplier',
627
                                    'arguments': {'operator': '/', 'scalefactor': 100.0}
628
                                }
629
                            ],
630
                        'units': 'hPa'
631
                    },
632
                    {
633
                        'color_scale': 'nipy_spectral',
634
                        'data_range': [0.0, 100.0],
635
                        'field_name': 'aerosol_mid_pressure_precision',
636
                        'flag': False,
637
                        'log_range': False,
638
                        'level3': False,
639
                        'include_scatter': False,
640
                        'primary_variable': 'aerosol_mid_pressure_precision',
641
                        'show': True,
642
                        'title': 'Aerosol mid pressure precision',
643
                        'transformers':
644
                            [
645
                                {
646
                                    'class': 'transform.Multiplier',
647
                                    'arguments': {'operator': '/', 'scalefactor': 100.0}
648
                                }
649
                            ],
650
                        'units': 'hPa'
651
                    },
652
                    {
653
                        'color_scale': 'nipy_spectral',
654
                        'data_range': [0.01, 20.0],
655
                        'map_range': [0.01, 10.0],
656
                        'field_name': 'aerosol_optical_thickness',
657
                        'flag': False,
658
                        'log_range': True,
659
                        'primary_variable': 'aerosol_optical_thickness',
660
                        'show': True,
661
                        'title': 'Aerosol optical thickness',
662
                        'units': ''
663
                    },
664
                    {
665
                        'color_scale': 'nipy_spectral',
666
                        'data_range': [0.0, 1.0],
667
                        'field_name': 'aerosol_optical_thickness_precision',
668
                        'flag': False,
669
                        'log_range': False,
670
                        'level3': False,
671
                        'include_scatter': False,
672
                        'primary_variable': 'aerosol_optical_thickness_precision',
673
                        'show': True,
674
                        'title': 'Aerosol optical thickness precision',
675
                        'units': ''
676
                    },
677
                    {
678
                        'color_scale': 'nipy_spectral',
679
                        'data_range': [0, 100],
680
                        'field_name': 'number_of_spectral_points_in_retrieval',
681
                        'flag': False,
682
                        'log_range': False,
683
                        'histogram_bincount': 101,
684
                        'level3': False,
685
                        'primary_variable': 'number_of_spectral_points_in_retrieval',
686
                        'show': True,
687
                        'title': 'Number of points in the spectrum',
688
                        'units': ''
689
                    },
690
                    {
691
                        'color_scale': 'nipy_spectral',
692
                        'data_range': [0, 20],
693
                        'field_name': 'number_of_iterations',
694
                        'flag': False,
695
                        'log_range': False,
696
                        'histogram_bincount': 21,
697
                        'level3': False,
698
                        'include_scatter': False,
699
                        'primary_variable': 'number_of_iterations',
700
                        'show': True,
701
                        'title': 'Number of iterations',
702
                        'units': ''
703
                    },
704
                    {
705
                        'color_scale': 'nipy_spectral',
706
                        'data_range': [0.0, 4.0],
707
                        'field_name': 'degrees_of_freedom',
708
                        'flag': False,
709
                        'log_range': False,
710
                        'primary_variable': 'degrees_of_freedom',
711
                        'level3': False,
712
                        'include_scatter': False,
713
                        'show': True,
714
                        'title': 'Degrees of freedom for signal',
715
                        'units': ''
716
                    },
717
                    {
718
                        'color_scale': 'nipy_spectral',
719
                        'data_range': [0.0, 100.0],
720
                        'field_name': 'chi_square',
721
                        'flag': False,
722
                        'log_range': False,
723
                        'primary_variable': 'chi_square',
724
                        'level3': False,
725
                        'show': True,
726
                        'title': '\u03C7\u00B2',
727
                        'units': ''
728
                    }
729
                ]
730
            },
731
        'CH4___': {
732
            'contact': 'Jochen Landgraf',
733
            'contact_email': 'J.Landgraf@sron.nl',
734
            'developer': 'KNMI',
735
            'developer_contact': 'tropomi_l2_dev@knmi.nl',
736
            'variables':
737
                [
738
                    {
739
                        'color_scale': 'nipy_spectral',
740
                        'data_range': [1500.0, 2000.0],
741
                        'field_name': 'methane_mixing_ratio',
742
                        'flag': False,
743
                        'log_range': False,
744
                        'primary_variable': 'methane_mixing_ratio',
745
                        'show': True,
746
                        'title': 'Mole fraction of CH\u2084',
747
                        'units': 'parts per 10\u2079'
748
                    },
749
                    {
750
                        'color_scale': 'nipy_spectral',
751
                        'data_range': [0.0, 20.0],
752
                        'field_name': 'methane_mixing_ratio_precision',
753
                        'flag': False,
754
                        'log_range': False,
755
                        'primary_variable': 'methane_mixing_ratio_precision',
756
                        'show': True,
757
                        'title': 'Precision of mole fraction of CH\u2084',
758
                        'units': 'parts per 10\u2079'
759
                    },
760
                    {
761
                        'color_scale': 'nipy_spectral',
762
                        'data_range': [1500.0, 2000.0],
763
                        'field_name': 'methane_mixing_ratio_bias_corrected',
764
                        'flag': False,
765
                        'log_range': False,
766
                        'primary_variable': 'methane_mixing_ratio_bias_corrected',
767
                        'show': True,
768
                        'title': 'Bias corrected mole fraction of CH\u2084',
769
                        'units': 'parts per 10\u2079'
770
                    },
771
                    {
772
                        'color_scale': 'nipy_spectral',
773
                        'data_range': [500, 1000],
774
                        'field_name': 'number_of_spectral_points_in_retrieval',
775
                        'flag': False,
776
                        'log_range': False,
777
                        'primary_variable': 'number_of_spectral_points_in_retrieval',
778
                        'show': True,
779
                        'level3': False,
780
                        'title': 'Number of points in the spectrum',
781
                        'units': ''
782
                    },
783
                    {
784
                        'color_scale': 'seismic',
785
                        'data_range': [-0.1,0.1],
786
                        'field_name': 'wavelength_calibration_offset_SWIR',
787
                        'flag': False,
788
                        'log_range': False,
789
                        'primary_variable': 'wavelength_calibration_offset_SWIR',
790
                        'level3': False,
791
                        'show': True,
792
                        'title': 'Spectral offset SWIR (\u03BB(true) \u2212 \u03BB(nominal))',
793
                        'units': 'nm'
794
                    },
795
                    {
796
                        'color_scale': 'nipy_spectral',
797
                        'data_range': [0.0, 10000.0],
798
                        'field_name': 'chi_square_SWIR',
799
                        'flag': False,
800
                        'log_range': False,
801
                        'primary_variable': 'chi_square_SWIR',
802
                        'show': True,
803
                        'level3': False,
804
                        'title': '\u03C7\u00B2 (SWIR)',
805
                        'units': ''
806
                    },
807
                    {
808
                        'color_scale': 'nipy_spectral',
809
                        'data_range': [0.0, 10000.0],
810
                        'field_name': 'chi_square_NIR',
811
                        'flag': False,
812
                        'log_range': False,
813
                        'primary_variable': 'chi_square_NIR',
814
                        'show': True,
815
                        'level3': False,
816
                        'title': '\u03C7\u00B2 (NIR)',
817
                        'units': ''
818
                    },
819
                    {
820
                        'color_scale': 'nipy_spectral',
821
                        'data_range': [5.0, 20.0],
822
                        'field_name': 'degrees_of_freedom',
823
                        'flag': False,
824
                        'log_range': False,
825
                        'primary_variable': 'degrees_of_freedom',
826
                        'show': True,
827
                        'level3': False,
828
                        'title': 'Degrees of freedom',
829
                        'units': ''
830
                    },
831
                    {
832
                        'color_scale': 'nipy_spectral',
833
                        'data_range': [0, 30],
834
                        'field_name': 'number_of_iterations',
835
                        'flag': False,
836
                        'log_range': False,
837
                        'primary_variable': 'number_of_iterations',
838
                        'histogram_bincount': 31,
839
                        'level3': False,
840
                        'show': True,
841
                        'title': 'Number of iterations',
842
                        'units': ''
843
                    },
844
                    {
845
                        'color_scale': 'nipy_spectral',
846
                        'data_range': [-1.0e-8, 1e-8],
847
                        'field_name': 'fluorescence',
848
                        'flag': False,
849
                        'log_range': False,
850
                        'primary_variable': 'fluorescence',
851
                        'show': True,
852
                        'title': 'Fluorescence',
853
                        'units': 'mol s\u207B\u00B9 m\u207B\u00B2 nm\u207B\u00B9 sr\u207B\u00B9'
854
                    }
855
                ]
856
            },
857
        'CLOUD_': {
858
            'contact': 'Ronny Lutz',
859
            'contact_email': 'ronny.lutz@dlr.de',
860
            'developer': 'DLR',
861
            'developer_contact': 'mattia.pedergnana@dlr.de',
862
            'variables':
863
                [
864
                    {
865
                        'color_scale': 'Blues_r',
866
                        'data_range': [0.0, 1.0],
867
                        'field_name': 'cloud_fraction',
868
                        'flag': False,
869
                        'log_range': False,
870
                        'primary_variable': 'cloud_fraction',
871
                        'show': True,
872
                        'title': 'Radiometric cloud fraction',
873
                        'units': ''
874
                    },
875
                    # {
876
                    #     'color_scale': 'Reds',
877
                    #     'data_range': [0.0,1E-3],
878
                    #     'field_name': 'cloud_fraction_precision',
879
                    #     'flag': False,
880
                    #     'log_range': False,
881
                    #     'primary_variable': 'cloud_fraction_precision',
882
                    #     'show': True,
883
                    #     'title': 'Precision of the radiometric cloud fraction',
884
                    #     'units': ''
885
                    # },
886
                    # {
887
                    #     'color_scale': 'jet_r',
888
                    #     'data_range': [100.0, 1100.0],
889
                    #     'field_name': 'cloud_top_pressure',
890
                    #     'flag': False,
891
                    #     'log_range': True,
892
                    #     'primary_variable': 'cloud_top_pressure',
893
                    #     'show': True,
894
                    #     'title': 'Cloud top pressure',
895
                    #     'units': 'hPa',
896
                    #     'transformers':
897
                    #     [
898
                    #         {
899
                    #             'class':'transform.Multiplier',
900
                    #             'arguments': {'operator': '/', 'scalefactor': 100.0}
901
                    #         }
902
                    #     ],
903
                    # },
904
                    # {
905
                    #     'color_scale': 'Reds',
906
                    #     'data_range': [0.0, 75.0],
907
                    #     'field_name': 'cloud_top_pressure_precision',
908
                    #     'flag': False,
909
                    #     'log_range': False,
910
                    #     'primary_variable': 'cloud_top_pressure_precision',
911
                    #     'show': True,
912
                    #     'title': 'Cloud top pressure precision',
913
                    #     'units': 'hPa',
914
                    #     'transformers':
915
                    #     [
916
                    #         {
917
                    #             'class':'transform.Multiplier',
918
                    #             'arguments': {'operator': '/', 'scalefactor': 100.0}
919
                    #         }
920
                    #     ],
921
                    # },
922
                    {
923
                        'color_scale': 'jet',
924
                        'data_range': [0.0, 1.5E4],
925
                        'field_name': 'cloud_top_height',
926
                        'flag': False,
927
                        'log_range': False,
928
                        'primary_variable': 'cloud_top_height',
929
                        'show': True,
930
                        'title': 'Cloud top height',
931
                        'units': 'm',
932
                    },
933
                    # {
934
                    #     'color_scale': 'Reds',
935
                    #     'data_range': [0.0, 1000.],
936
                    #     'field_name': 'cloud_top_height_precision',
937
                    #     'flag': False,
938
                    #     'log_range': False,
939
                    #     'primary_variable': 'cloud_top_height_precision',
940
                    #     'show': True,
941
                    #     'title': 'Cloud top height precision',
942
                    #     'units': 'm',
943
                    # },
944
                    {
945
                        'color_scale': 'jet',
946
                        'data_range': [1.0, 100.0],
947
                        'field_name': 'cloud_optical_thickness',
948
                        'flag': False,
949
                        'log_range': True,
950
                        'primary_variable': 'cloud_optical_thickness',
951
                        'show': True,
952
                        'title': 'Cloud optical thickness',
953
                        'units': ''
954
                    },
955
                    # {
956
                    #     'color_scale': 'Reds',
957
                    #     'data_range': [1.0, 2.0],
958
                    #     'field_name': 'cloud_optical_thickness_precision',
959
                    #     'flag': False,
960
                    #     'log_range': False,
961
                    #     'primary_variable': 'cloud_optical_thickness_precision',
962
                    #     'show': True,
963
                    #     'title': 'Cloud optical thickness precision',
964
                    #     'units': ''
965
                    # },
966
                    {
967
                        'color_scale': 'Blues_r',
968
                        'data_range': [0.0, 1.0],
969
                        'field_name': 'cloud_fraction_crb',
970
                        'flag': False,
971
                        'log_range': False,
972
                        'primary_variable': 'cloud_fraction_crb',
973
                        'show': True,
974
                        'title': 'Cloud fraction (CRB)',
975
                        'units': ''
976
                    },
977
                    # {
978
                    #     'color_scale': 'Reds',
979
                    #     'data_range': [0.0, 1E-3],
980
                    #     'field_name': 'cloud_fraction_crb_precision',
981
                    #     'flag': False,
982
                    #     'log_range': False,
983
                    #     'primary_variable': 'cloud_fraction_crb_precision',
984
                    #     'show': True,
985
                    #     'title': 'Precision of the cloud fraction (CRB)',
986
                    #     'units': ''
987
                    # },
988
                    # {
989
                    #     'color_scale': 'jet_r',
990
                    #     'data_range': [100.0, 1100.0],
991
                    #     'field_name': 'cloud_pressure_crb',
992
                    #     'flag': False,
993
                    #     'log_range': True,
994
                    #     'primary_variable': 'cloud_pressure_crb',
995
                    #     'show': True,
996
                    #     'title': 'Cloud pressure (CRB)',
997
                    #     'units': 'hPa',
998
                    #     'transformers':
999
                    #     [
1000
                    #         {
1001
                    #             'class':'transform.Multiplier',
1002
                    #             'arguments': {'operator': '/', 'scalefactor': 100.0}
1003
                    #         }
1004
                    #     ],
1005
                    # },
1006
                    # {
1007
                    #     'color_scale': 'Reds',
1008
                    #     'data_range': [0.0,75.0],
1009
                    #     'field_name': 'cloud_pressure_crb_precision',
1010
                    #     'flag': False,
1011
                    #     'log_range': False,
1012
                    #     'primary_variable': 'cloud_pressure_crb_precision',
1013
                    #     'show': True,
1014
                    #     'title': 'Cloud pressure precision (CRB)',
1015
                    #     'units': 'hPa',
1016
                    #     'transformers':
1017
                    #     [
1018
                    #         {
1019
                    #             'class':'transform.Multiplier',
1020
                    #             'arguments': {'operator': '/', 'scalefactor': 100.0}
1021
                    #         }
1022
                    #     ],
1023
                    # },
1024
                    {
1025
                        'color_scale': 'jet',
1026
                        'data_range': [0.0, 1.5E4],
1027
                        'field_name': 'cloud_height_crb',
1028
                        'flag': False,
1029
                        'log_range': False,
1030
                        'primary_variable': 'cloud_height_crb',
1031
                        'show': True,
1032
                        'title': 'Cloud height (CRB)',
1033
                        'units': 'm',
1034
                    },
1035
                    # {
1036
                    #     'color_scale': 'Reds',
1037
                    #     'data_range': [0.0, 1000.],
1038
                    #     'field_name': 'cloud_height_precision',
1039
                    #     'flag': False,
1040
                    #     'log_range': False,
1041
                    #     'primary_variable': 'cloud_height_crb_precision',
1042
                    #     'show': True,
1043
                    #     'title': 'Cloud height precision (CRB)',
1044
                    #     'units': 'm',
1045
                    # },
1046
                    {
1047
                        'color_scale': 'Blues',
1048
                        'data_range': [0.0, 1.0],
1049
                        'field_name': 'cloud_albedo_crb',
1050
                        'flag': False,
1051
                        'log_range': False,
1052
                        'primary_variable': 'cloud_albedo_crb',
1053
                        'show': True,
1054
                        'title': 'Cloud albedo (CRB)',
1055
                        'units': ''
1056
                    },
1057
                    # {
1058
                    #     'color_scale': 'Reds',
1059
                    #     'data_range': [0.0, 0.007],
1060
                    #     'field_name': 'cloud_albedo_crb_precision',
1061
                    #     'flag': False,
1062
                    #     'log_range': False,
1063
                    #     'primary_variable': 'cloud_albedo_crb_precision',
1064
                    #     'show': True,
1065
                    #     'title': 'Precision of the cloud albedo (CRB)',
1066
                    #     'units': ''
1067
                    # },
1068
                    {
1069
                        'color_scale': 'Blues',
1070
                        'data_range': [0.0, 1.0],
1071
                        'field_name': 'surface_albedo_fitted',
1072
                        'flag': False,
1073
                        'log_range': False,
1074
                        'primary_variable': 'surface_albedo_fitted',
1075
                        'show': True,
1076
                        'include_scatter': False,
1077
                        'Level3': False,
1078
                        'title': 'Fitted surface albedo',
1079
                        'units': ''
1080
                    },
1081
                    # {
1082
                    #     'color_scale': 'Reds',
1083
                    #     'data_range': [0.0, 0.005],
1084
                    #     'field_name': 'surface_albedo_fitted_precision',
1085
                    #     'flag': False,
1086
                    #     'log_range': False,
1087
                    #     'primary_variable': 'surface_albedo_fitted_precision',
1088
                    #     'show': True,
1089
                    #     'include_scatter': False,
1090
                    #     'Level3': False,
1091
                    #     'title': 'Precision of the fitted surface albedo',
1092
                    #     'units': ''
1093
                    # },
1094
                    {
1095
                        'color_scale': 'Blues',
1096
                        'data_range': [0.0, 1.0],
1097
                        'field_name': 'surface_albedo_fitted_crb',
1098
                        'flag': False,
1099
                        'log_range': False,
1100
                        'primary_variable': 'surface_albedo_fitted_crb',
1101
                        'show': True,
1102
                        'include_scatter': False,
1103
                        'Level3': False,
1104
                        'title': 'Fitted surface albedo (CRB)',
1105
                        'units': ''
1106
                    },
1107
                    # {
1108
                    #     'color_scale': 'Reds',
1109
                    #     'data_range': [0.0, 0.005],
1110
                    #     'field_name': 'surface_albedo_fitted_crb_precision',
1111
                    #     'flag': False,
1112
                    #     'log_range': False,
1113
                    #     'primary_variable': 'surface_albedo_fitted_crb_precision',
1114
                    #     'show': True,
1115
                    #     'include_scatter': False,
1116
                    #     'Level3': False,
1117
                    #     'title': 'Precision of the fitted surface albedo (CRB)',
1118
                    #     'units': ''
1119
                    # },
1120
                    # {
1121
                    #     'color_scale': 'nipy_spectral',
1122
                    #     'data_range': [0, 100],
1123
                    #     'field_name': 'number_of_iterations',
1124
                    #     'flag': False,
1125
                    #     'log_range': False,
1126
                    #     'histogram_bincount': 71,
1127
                    #     'primary_variable': 'number_of_iterations',
1128
                    #     'show': True,
1129
                    #     'include_scatter': False,
1130
                    #     'Level3': False,
1131
                    #     'title': 'Number of iterations for the wavelength calibration',
1132
                    #     'units': ''
1133
                    # },
1134
                    # {
1135
                    #     'color_scale': 'nipy_spectral',
1136
                    #     'data_range': [0, 1000],
1137
                    #     'field_name': 'calibration_subwindows_shift',
1138
                    #     'flag': False,
1139
                    #     'log_range': False,
1140
                    #     'primary_variable': 'calibration_subwindows_shift',
1141
                    #     'show': True,
1142
                    #     'title': 'Wavelength calibration subwindow shift',
1143
                    #     'units': 'nm'
1144
                    # },
1145
                    # {
1146
                    #     'color_scale': 'nipy_spectral',
1147
                    #     'data_range': [0, 1000],
1148
                    #     'field_name': 'calibration_subwindows_squeeze',
1149
                    #     'flag': False,
1150
                    #     'log_range': False,
1151
                    #     'primary_variable': 'calibration_subwindows_squeeze',
1152
                    #     'show': True,
1153
                    #     'title': 'Wavelength calibration subwindow squeeze',
1154
                    #     'units': ''
1155
                    # },
1156
                    # {
1157
                    #     'color_scale': 'nipy_spectral',
1158
                    #     'data_range': [0, 1000],
1159
                    #     'field_name': 'calibration_polynomial_coefficients',
1160
                    #     'flag': False,
1161
                    #     'log_range': False,
1162
                    #     'primary_variable': 'calibration_polynomial_coefficients',
1163
                    #     'show': True,
1164
                    #     'title': 'Wavelength calibration polynomian coefficients',
1165
                    #     'units': ''
1166
                    # },
1167
                    # {
1168
                    #     'color_scale': 'nipy_spectral',
1169
                    #     'data_range': [0, 1000],
1170
                    #     'field_name': 'calibration_subwindows_root_mean_square',
1171
                    #     'flag': False,
1172
                    #     'log_range': False,
1173
                    #     'primary_variable': 'calibration_subwindows_root_mean_square',
1174
                    #     'show': True,
1175
                    #     'title': 'Wavelength calibration subwindows RMS',
1176
                    #     'units': ''
1177
                    # },
1178
                    {
1179
                        'color_scale': 'Reds',
1180
                        'data_range': [0., .1], # TODO  range to be confirmed
1181
                        'field_name': 'fitted_root_mean_square',
1182
                        'flag': False,
1183
                        'log_range': False,
1184
                        'primary_variable': 'fitted_root_mean_square',
1185
                        'show': True,
1186
                        'include_scatter': False,
1187
                        'title': 'RMS',
1188
                        'Level3': False,
1189
                        'units': ''
1190
                    },
1191
                    {
1192
                        'color_scale': 'Reds',
1193
                        'data_range': [0., .1], # TODO  range to be confirmed
1194
                        'field_name': 'fitted_root_mean_square_crb',
1195
                        'flag': False,
1196
                        'log_range': False,
1197
                        'primary_variable': 'fitted_root_mean_square_crb',
1198
                        'show': True,
1199
                        'include_scatter': False,
1200
                        'title': 'RMS (CRB)',
1201
                        'Level3': False,
1202
                        'units': ''
1203
                    },
1204
                    # {
1205
                    #     'color_scale': 'Reds_r',
1206
                    #     'data_range': [0, 5],
1207
                    #     'field_name': 'degrees_of_freedom',
1208
                    #     'flag': False,
1209
                    #     'log_range': False,
1210
                    #     'primary_variable': 'degrees_of_freedom',
1211
                    #     'show': True,
1212
                    #     'include_scatter': False,
1213
                    #     'title': 'Degrees of freedom',
1214
                    #     'units': ''
1215
                    # },
1216
                    # {
1217
                    #     'color_scale': 'Reds_r',
1218
                    #     'data_range': [2,12],
1219
                    #     'field_name': 'shannon_information_content',
1220
                    #     'flag': False,
1221
                    #     'log_range': False,
1222
                    #     'primary_variable': 'shannon_information_content',
1223
                    #     'show': True,
1224
                    #     'include_scatter': False,
1225
                    #     'title': 'Shannon information content',
1226
                    #     'units': ''
1227
                    # },
1228
                    # {
1229
                    #     'color_scale': 'Reds',
1230
                    #     'data_range': [0,3000],
1231
                    #     'field_name': 'condition_number',
1232
                    #     'flag': False,
1233
                    #     'log_range': False,
1234
                    #     'primary_variable': 'condition_number',
1235
                    #     'show': True,
1236
                    #     'include_scatter': False,
1237
                    #     'Level3': False,
1238
                    #     'title': 'Condition number',
1239
                    #     'units': ''
1240
                    # },
1241
                    # {
1242
                    #     'color_scale': 'Reds',
1243
                    #     'data_range': [5.0e-6, 4.0e-5],
1244
                    #     'field_name': 'regularization_parameter',
1245
                    #     'flag': False,
1246
                    #     'log_range': True,
1247
                    #     'primary_variable': 'regularization_parameter',
1248
                    #     'show': True,
1249
                    #     'include_scatter': False,
1250
                    #     'Level3': False,
1251
                    #     'title': 'Regularization parameter',
1252
                    #     'units': ''
1253
                    # },
1254
                    {
1255
                        'color_scale': 'RdBu',
1256
                        'data_range': [-0.03, 0.03],
1257
                        'field_name': 'wavelength_shift',
1258
                        'flag': False,
1259
                        'log_range': False,
1260
                        'primary_variable': 'wavelength_shift',
1261
                        'show': True,
1262
                        'include_scatter': False,
1263
                        'Level3': False,
1264
                        'title': 'Fitting wavelength shift',
1265
                        'units': 'nm'
1266
                    },
1267
                    {
1268
                        'field_name': 'cloud_fraction_apriori',
1269
                        'primary_variable': 'cloud_fraction_apriori',
1270
                        'data_range': [0, 1],
1271
                        'color_scale': 'Blues_r',
1272
                        'flag': False,
1273
                        'log_range': False,
1274
                        'show': True,
1275
                        'include_scatter': True,
1276
                        'Level3': False,
1277
                        'title': 'OCRA cloud fraction',
1278
                        'units': '1'
1279
                    },
1280
                    {
1281
                        'field_name': 'reflectance_blue_ocra',
1282
                        'primary_variable': 'reflectances_ocra',
1283
                        'data_range': [0, 1],
1284
                        'color_scale': 'viridis',
1285
                        'flag': False,
1286
                        'log_range': False,
1287
                        'show': True,
1288
                        'include_scatter': False,
1289
                        'Level3': False,
1290
                        'title': 'OCRA “blue” reflectance',
1291
                        'units': '1',
1292
                        'transformers':
1293
                            [
1294
                                {
1295
                                    'class': 'transform.Select',
1296
                                    'arguments': {'index': 0, 'dimension': -1}
1297
                                }
1298
                            ],
1299
                    },
1300
                    {
1301
                        'field_name': 'reflectance_green_ocra',
1302
                        'primary_variable': 'reflectances_ocra',
1303
                        'data_range': [0, 1],
1304
                        'color_scale': 'viridis',
1305
                        'flag': False,
1306
                        'log_range': False,
1307
                        'show': True,
1308
                        'include_scatter': False,
1309
                        'Level3': False,
1310
                        'title': 'OCRA “green” reflectance',
1311
                        'units': '1',
1312
                        'transformers':
1313
                            [
1314
                                {
1315
                                    'class': 'transform.Select',
1316
                                    'arguments': {'index': 1, 'dimension': -1}
1317
                                }
1318
                            ],
1319
                    },
1320
#                     {
1321
#                         'field_name': 'reflectance_red_ocra',
1322
#                         'primary_variable': 'reflectances_ocra',
1323
#                         'data_range': [0, 1],
1324
#                         'color_scale': 'viridis',
1325
#                         'flag': False,
1326
#                         'log_range': False,
1327
#                         'show': True,
1328
#                         'include_scatter': False,
1329
#                         'Level3': False,
1330
#                         'title': 'OCRA “red” reflectance',
1331
#                         'units': '1',
1332
#                         'transformers':
1333
#                             [
1334
#                                 {
1335
#                                     'class': 'transform.Select',
1336
#                                     'arguments': {'index': 2, 'dimension': -1}
1337
#                                 }
1338
#                             ],
1339
#                     }                    
1340
                ]
1341
            },
1342
        'CO____': {
1343
            'contact': 'Jochen Landgraf',
1344
            'contact_email': 'J.Landgraf@sron.nl',
1345
            'developer': 'KNMI',
1346
            'developer_contact': 'tropomi_l2_dev@knmi.nl',
1347
            'variables':
1348
                [
1349
                    {
1350
                        'color_scale': 'nipy_spectral',
1351
                        'data_range': [0.01, 0.07],
1352
                        'field_name': 'carbonmonoxide_total_column',
1353
                        'flag': False,
1354
                        'log_range': False,
1355
                        'primary_variable': 'carbonmonoxide_total_column',
1356
                        'show': True,
1357
                        'title': 'CO total vertical column',
1358
                        'units': 'mol m\u207B\u00B2'
1359
                    },
1360
                    {
1361
                        'color_scale': 'nipy_spectral',
1362
                        'data_range': [0.01, 0.07],
1363
                        'field_name': 'carbonmonoxide_total_column_corrected',
1364
                        'flag': False,
1365
                        'log_range': False,
1366
                        'primary_variable': 'carbonmonoxide_total_column_corrected',
1367
                        'show': True,
1368
                        'title': 'CO total vertical column (stripe-corrected)',
1369
                        'units': 'mol m\u207B\u00B2',
1370
                        'modes': ['OFFL', 'RPRO']
1371
                    },
1372
                    {
1373
                        'color_scale': 'nipy_spectral',
1374
                        'data_range': [0.0, 0.007],
1375
                        'field_name': 'carbonmonoxide_total_column_precision',
1376
                        'flag': False,
1377
                        'log_range': False,
1378
                        'primary_variable': 'carbonmonoxide_total_column_precision',
1379
                        'show': True,
1380
                        'level3': False,
1381
                        'title': 'CO total vertical column precision',
1382
                        'units': 'mol m\u207B\u00B2'
1383
                    },
1384
                    {
1385
                        'color_scale': 'nipy_spectral',
1386
                        'data_range': [0,200],
1387
                        'field_name': 'number_of_spectral_points_in_retrieval',
1388
                        'flag': False,
1389
                        'log_range': False,
1390
                        'primary_variable': 'number_of_spectral_points_in_retrieval',
1391
                        'show': True,
1392
                        'level3': False,
1393
                        'title': 'Number of spectral points in retrieval',
1394
                        'units': ''
1395
                    },
1396
                    {
1397
                        'color_scale': 'nipy_spectral',
1398
                        'data_range': [0,4500],
1399
                        'field_name': 'chi_square',
1400
                        'flag': False,
1401
                        'log_range': False,
1402
                        'primary_variable': 'chi_square',
1403
                        'show': True,
1404
                        'level3': False,
1405
                        'title': '\u03C7\u00B2',
1406
                        'units': ''
1407
                    },
1408
                    {
1409
                        'color_scale': 'nipy_spectral',
1410
                        'data_range': [0,10],
1411
                        'field_name': 'degrees_of_freedom',
1412
                        'flag': False,
1413
                        'log_range': False,
1414
                        'primary_variable': 'degrees_of_freedom',
1415
                        'level3': False,
1416
                        'show': True,
1417
                        'title': 'Degrees of freedom for signal',
1418
                        'units': ''
1419
                    },
1420
                    {
1421
                        'color_scale': 'nipy_spectral',
1422
                        'data_range': [0,25],
1423
                        'field_name': 'number_of_iterations',
1424
                        'flag': False,
1425
                        'log_range': False,
1426
                        'primary_variable': 'number_of_iterations',
1427
                        'show': True,
1428
                        'level3': False,
1429
                        'title': 'Number of iterations',
1430
                        'histogram_bincount': 26,
1431
                        'units': ''
1432
                    },
1433
                    {
1434
                        'color_scale': 'nipy_spectral',
1435
                        'data_range': [-0.001, 0.001],
1436
                        'field_name': 'carbonmonoxide_total_column_stripe_offset',
1437
                        'flag': False,
1438
                        'log_range': False,
1439
                        'primary_variable': 'carbonmonoxide_total_column_stripe_offset',
1440
                        'show': False,
1441
                        'title': 'CO total vertical column stripe offset',
1442
                        'units': 'mol m\u207B\u00B2',
1443
                        'modes': ['OFFL', 'RPRO']
1444
                    }
1445
                ]
1446
            },
1447
        'HCHO__': {
1448
            'contact': 'Isabelle De Smedt',
1449
            'contact_email': 'isabelle.desmedt@aeronomie.be',
1450
            'developer': 'DLR',
1451
            'developer_contact': 'mattia.pedergnana@dlr.de',
1452
            'variables':
1453
                [
1454
                    {
1455
                        'color_scale': 'nipy_spectral',
1456
                        'data_range': [0.,5E-4],
1457
                        'field_name': 'formaldehyde_tropospheric_vertical_column',
1458
                        'flag': False,
1459
                        'log_range': False,
1460
                        'primary_variable': 'formaldehyde_tropospheric_vertical_column',
1461
                        'show': True,
1462
                        'title': 'HCHO vertical column',
1463
                        'units': 'mol m\u207B\u00B2'
1464
                    },
1465
                    {
1466
                        'color_scale': 'nipy_spectral',
1467
                        'data_range': [0.,5E-4],
1468
                        'field_name': 'formaldehyde_tropospheric_vertical_column_precision',
1469
                        'flag': False,
1470
                        'log_range': False,
1471
                        'primary_variable': 'formaldehyde_tropospheric_vertical_column_precision',
1472
                        'show': True,
1473
                        'title': 'HCHO vertical column precision',
1474
                        'units': 'mol m\u207B\u00B2'
1475
                    },
1476
                    {
1477
                        'color_scale': 'nipy_spectral',
1478
                        'data_range': [0.,1.5E-4],
1479
                        'field_name': 'formaldehyde_tropospheric_vertical_column_correction',
1480
                        'flag': False,
1481
                        'log_range': False,
1482
                        'primary_variable': 'formaldehyde_tropospheric_vertical_column_correction',
1483
                        'show': True,
1484
                        'title': 'HCHO vertical column correction',
1485
                        'units': 'mol m\u207B\u00B2'
1486
                    },
1487
                    # {
1488
                    #     'color_scale': 'nipy_spectral',
1489
                    #     'data_range': [-5E-4,5E-4],
1490
                    #     'field_name': 'formaldehyde_slant_column_density',
1491
                    #     'flag': False,
1492
                    #     'log_range': False,
1493
                    #     'primary_variable': 'fitted_slant_columns',
1494
                    #     'show': True,
1495
                    #     'title': 'HCHO slant column',
1496
                    #     'units': 'mol m\u207B\u00B2',
1497
                    #     'transformers':
1498
                    #         [
1499
                    #             {
1500
                    #                 'class': 'transform.Select',
1501
                    #                 'arguments': {'dimension': -1, 'index': 0}
1502
                    #             }
1503
                    #         ]
1504
                    # },
1505
                    # {
1506
                    #     'color_scale': 'nipy_spectral',
1507
                    #     'data_range': [0.0,5E-4],
1508
                    #     'field_name': 'formaldehyde_slant_column_density_precision',
1509
                    #     'flag': False,
1510
                    #     'log_range': False,
1511
                    #     'primary_variable': 'fitted_slant_columns_precision',
1512
                    #     'show': True,
1513
                    #     'title': 'HCHO slant column precision',
1514
                    #     'units': 'mol m\u207B\u00B2',
1515
                    #     'transformers':
1516
                    #         [
1517
                    #             {
1518
                    #                 'class': 'transform.Select',
1519
                    #                 'arguments': {'dimension': -1, 'index': 0}
1520
                    #             }
1521
                    #         ]
1522
                    # },
1523
                    {
1524
                        'color_scale': 'nipy_spectral',
1525
                        'data_range': [-5E-4,5E-4],
1526
                        'field_name': 'formaldehyde_slant_column_density_window1',
1527
                        'flag': False,
1528
                        'log_range': False,
1529
                        'primary_variable': 'fitted_slant_columns_win1',
1530
                        'show': True,
1531
                        'title': 'HCHO slant column (window1)',
1532
                        'units': 'mol m\u207B\u00B2',
1533
                        'transformers':
1534
                            [
1535
                                {
1536
                                    'class': 'transform.Select',
1537
                                    'arguments': {'dimension': -1, 'index': 6}
1538
                                }
1539
                            ]
1540
                    },
1541
                    {
1542
                        'color_scale': 'nipy_spectral',
1543
                        'data_range': [0.0,5E-4],
1544
                        'field_name': 'formaldehyde_slant_column_density_window1_precision',
1545
                        'flag': False,
1546
                        'log_range': False,
1547
                        'primary_variable': 'fitted_slant_columns_win1_precision',
1548
                        'show': True,
1549
                        'title': 'HCHO slant column precision (window1)',
1550
                        'units': 'mol m\u207B\u00B2',
1551
                        'transformers':
1552
                            [
1553
                                {
1554
                                    'class': 'transform.Select',
1555
                                    'arguments': {'dimension': -1, 'index': 6}
1556
                                }
1557
                            ]
1558
                    },
1559
                    {
1560
                        'color_scale': 'nipy_spectral',
1561
                        'data_range': [0.0,5.0],
1562
                        'field_name': 'formaldehyde_tropospheric_air_mass_factor',
1563
                        'flag': False,
1564
                        'log_range': False,
1565
                        'primary_variable': 'formaldehyde_tropospheric_air_mass_factor',
1566
                        'show': True,
1567
                        'title': 'Airmass factor total',
1568
                        'units': ''
1569
                    },
1570
                    {
1571
                        'color_scale': 'nipy_spectral',
1572
                        'data_range': [0.0,5.0],
1573
                        'field_name': 'formaldehyde_tropospheric_air_mass_factor_precision',
1574
                        'flag': False,
1575
                        'log_range': False,
1576
                        'primary_variable': 'formaldehyde_tropospheric_air_mass_factor_precision',
1577
                        'show': True,
1578
                        'title': 'Airmass factor total precision',
1579
                        'units': ''
1580
                    },
1581
                    {
1582
                        'color_scale': 'nipy_spectral',
1583
                        'data_range': [0.0,5.0],
1584
                        'field_name': 'formaldehyde_clear_air_mass_factor',
1585
                        'flag': False,
1586
                        'log_range': False,
1587
                        'primary_variable': 'formaldehyde_clear_air_mass_factor',
1588
                        'show': True,
1589
                        'title': 'Airmass factor clear',
1590
                        'units': ''
1591
                    },
1592
                    # {
1593
                    #     'color_scale': 'nipy_spectral',
1594
                    #     'data_range': [0.0,5.0],
1595
                    #     'field_name': 'formaldehyde_cloudy_air_mass_factor',
1596
                    #     'flag': False,
1597
                    #     'log_range': False,
1598
                    #     'primary_variable': 'formaldehyde_cloudy_air_mass_factor',
1599
                    #     'show': True,
1600
                    #     'title': 'Airmass factor cloud',
1601
                    #     'units': ''
1602
                    # },
1603
                    {
1604
                        'color_scale': 'nipy_spectral',
1605
                        'data_range': [0,5E-4],
1606
                        'field_name': 'integrated_formaldehyde_profile_apriori',
1607
                        'flag': False,
1608
                        'log_range': False,
1609
                        'primary_variable': 'formaldehyde_profile_apriori',
1610
                        'secondary_variable': 'surface_pressure',
1611
                        'show': True,
1612
                        'title': 'Integrated a priori HCHO profile',
1613
                        'transformers':
1614
                            [
1615
                                {
1616
                                    'class': 'transform.IntegratedColumn',
1617
                                    'arguments': {'dimension':-1,
1618
                                                  'coefficients_a':'read_from_file("tm5_constant_a")',
1619
                                                  'coefficients_b':'read_from_file("tm5_constant_b")'}
1620
                                }
1621
                            ],
1622
                        'units': 'mol m\u207B\u00B2'
1623
                    },
1624
                    {
1625
                        'color_scale': 'nipy_spectral',
1626
                        'data_range': [-0.02,0.02],
1627
                        'field_name': 'fitted_wavelength_radiance_shift',
1628
                        'flag': False,
1629
                        'log_range': False,
1630
                        'primary_variable': 'fitted_radiance_shift',
1631
                        'show': True,
1632
                        'title': 'DOAS fit wavelength shift',
1633
                        'units': 'nm'
1634
                    },
1635
                    {
1636
                        'color_scale': 'nipy_spectral',
1637
                        'data_range': [-5E-4,5E-4],
1638
                        'field_name': 'fitted_wavelength_radiance_squeeze',
1639
                        'flag': False,
1640
                        'log_range': False,
1641
                        'primary_variable': 'fitted_radiance_squeeze',
1642
                        'show': True,
1643
                        'title': 'DOAS fit wavelength squeeze',
1644
                        'units': ''
1645
                    },
1646
                    # {
1647
                    #     'color_scale': 'nipy_spectral',
1648
                    #     'data_range': [0.0,5E-3],
1649
                    #     'field_name': 'fitted_root_mean_square',
1650
                    #     'flag': False,
1651
                    #     'log_range': False,
1652
                    #     'primary_variable': 'fitted_root_mean_square',
1653
                    #     'show': True,
1654
                    #     'title': 'DOAS fit RMS',
1655
                    #     'units': ''
1656
                    # },
1657
                    {
1658
                        'color_scale': 'nipy_spectral',
1659
                        'data_range': [0.0,0.01],
1660
                        'field_name': 'fitted_root_mean_square_win1',
1661
                        'flag': False,
1662
                        'log_range': False,
1663
                        'primary_variable': 'fitted_root_mean_square_win1',
1664
                        'show': True,
1665
                        'title': 'DOAS fit RMS (first interval)',
1666
                        'units': ''
1667
                    },
1668
                   # {
1669
                   #     'color_scale': 'nipy_spectral',
1670
                   #     'data_range': [140,160],
1671
                   #     'histogram_bincount': 21,
1672
                   #     'field_name': 'number_of_spectral_points_in_retrieval',
1673
                   #     'flag': False,
1674
                   #     'log_range': False,
1675
                   #     'primary_variable': 'number_of_spectral_points_in_retrieval',
1676
                   #     'show': True,
1677
                   #     'include_scatter': False,
1678
                   #     'title': 'Number of spectral points',
1679
                   #     'units': ''
1680
                   # },
1681
                    {
1682
                        'color_scale': 'nipy_spectral',
1683
                        'data_range': [-0.1,0.1],
1684
                        'field_name': 'calibration_subwindows_shift',
1685
                        'flag': False,
1686
                        'log_range': False,
1687
                        'primary_variable': 'calibration_subwindows_shift',
1688
                        'show': True,
1689
                        'title': 'Wavelength calibration subwindows shift',
1690
                        'units': 'nm'
1691
                    },
1692
                    {
1693
                        'color_scale': 'nipy_spectral',
1694
                        'data_range': [-0.1,0.1],
1695
                        'field_name': 'calibration_subwindows_squeeze',
1696
                        'flag': False,
1697
                        'log_range': False,
1698
                        'primary_variable': 'calibration_subwindows_squeeze',
1699
                        'show': True,
1700
                        'title': 'Wavelength calibration subwindows squeeze',
1701
                        'units': ''
1702
                    },
1703
                    # {
1704
                    #     'color_scale': 'nipy_spectral',
1705
                    #     'data_range': [-0.1,0.1],
1706
                    #     'field_name': 'calibration_polynomial_coefficients',
1707
                    #     'flag': False,
1708
                    #     'log_range': False,
1709
                    #     'primary_variable': 'calibration_polynomial_coefficients',
1710
                    #     'show': True,
1711
                    #     'title': 'Wavelength calibration polynomial coefficients',
1712
                    #     'units': ''
1713
                    # },
1714
                    {
1715
                        'color_scale': 'nipy_spectral',
1716
                        'data_range': [-0.1,0.1],
1717
                        'field_name': 'calibration_subwindows_root_mean_square',
1718
                        'flag': False,
1719
                        'log_range': False,
1720
                        'primary_variable': 'calibration_subwindows_root_mean_square',
1721
                        'show': True,
1722
                        'title': 'Wavelength calibration subwindows RMS',
1723
                        'units': ''
1724
                    },
1725
                    {
1726
                        'color_scale': 'nipy_spectral',
1727
                        'data_range': [-0.1,0.1],
1728
                        'field_name': 'calibration_subwindows_shift',
1729
                        'flag': False,
1730
                        'log_range': False,
1731
                        'primary_variable': 'calibration_subwindows_shift',
1732
                        'show': True,
1733
                        'title': 'Wavelength calibration shift',
1734
                        'units': 'nm'
1735
                    },
1736
                    {
1737
                        'color_scale': 'nipy_spectral',
1738
                        'data_range': [-0.1,0.1],
1739
                        'field_name': 'calibration_subwindows_squeeze',
1740
                        'flag': False,
1741
                        'log_range': False,
1742
                        'primary_variable': 'calibration_subwindows_squeeze',
1743
                        'show': True,
1744
                        'title': 'Wavelength calibration squeeze',
1745
                        'units': ''
1746
                    },
1747
                    {
1748
                        'color_scale': 'nipy_spectral',
1749
                        'data_range': [-0.1,0.1],
1750
                        'field_name': 'calibration_polynomial_coefficients',
1751
                        'flag': False,
1752
                        'log_range': False,
1753
                        'primary_variable': 'calibration_polynomial_coefficients',
1754
                        'show': True,
1755
                        'title': 'Wavelength calibration polynomial',
1756
                        'units': ''
1757
                    },
1758
                    {
1759
                        'color_scale': 'nipy_spectral',
1760
                        'data_range': [-0.1,0.1],
1761
                        'field_name': 'calibration_subwindows_rms',
1762
                        'flag': False,
1763
                        'log_range': False,
1764
                        'primary_variable': 'calibration_subwindows_rms',
1765
                        'show': True,
1766
                        'title': 'Wavelength calibration RMS',
1767
                        'units': ''
1768
                    },
1769
                    #{
1770
                    #    'color_scale': 'nipy_spectral',
1771
                    #    'data_range': [200,300],
1772
                    #    'field_name': 'number_of_spectral_points_in_retrieval_win1',
1773
                    #    'flag': False,
1774
                    #    'log_range': False,
1775
                    #    'primary_variable': 'number_of_spectral_points_in_retrieval_win1',
1776
                    #    'show': True,
1777
                    #    'include_scatter': False,
1778
                    #    'title': 'Number of spectral points in first interval',
1779
                    #    'units': ''
1780
                    #},
1781
                    {
1782
                        'color_scale': 'nipy_spectral',
1783
                        'data_range': [-2E-3,2E-3],
1784
                        'field_name': 'formaldehyde_slant_column_corrected',
1785
                        'flag': False,
1786
                        'log_range': False,
1787
                        'primary_variable': 'formaldehyde_slant_column_corrected',
1788
                        'show': False,
1789
                        'title': 'HCHO slant column corrected',
1790
                        'units': ''
1791
                    },
1792
                    {
1793
                        'color_scale': 'nipy_spectral',
1794
                        'data_range': [0,5E-4],
1795
                        'field_name': 'formaldehyde_slant_column_correction',
1796
                        'flag': False,
1797
                        'log_range': False,
1798
                        'primary_variable': 'formaldehyde_slant_column_corrected - formaldehyde_slant_column_density_window1',
1799
                        'show': True,
1800
                        'title': 'HCHO slant column correction',
1801
                        'units': 'mol m\u207B\u00B2'
1802
                    }
1803
                ]
1804
            },
1805
        'NO2___': {
1806
            'contact': 'Henk Eskes',
1807
            'contact_email': 'henk.eskes@knmi.nl',
1808
            'alternate_contact': 'Jos van Geffen',
1809
            'alternate_contact_email': 'jos.van.geffen@knmi.nl',
1810
            'developer': 'KNMI',
1811
            'developer_contact': 'tropomi_l2_dev@knmi.nl',
1812
            'variables':
1813
                [
1814
                    {
1815
                        'color_scale': 'nipy_spectral',
1816
                        'data_range': [2.0e-07, 2.0e-4],
1817
                        'field_name': 'nitrogendioxide_tropospheric_column',
1818
                        'flag': False,
1819
                        'log_range': True,
1820
                        'primary_variable': 'nitrogendioxide_tropospheric_column',
1821
                        'show': True,
1822
                        'title': 'NO\u2082 tropospheric vertical column',
1823
                        'units': 'mol m\u207B\u00B2'
1824
                    },
1825
                    {
1826
                        'color_scale': 'nipy_spectral',
1827
                        'data_range': [1.0e-06,1e-4],
1828
                        'field_name': 'nitrogendioxide_tropospheric_column_precision',
1829
                        'flag': False,
1830
                        'log_range': True,
1831
                        'level3': False,
1832
                        'primary_variable': 'nitrogendioxide_tropospheric_column_precision',
1833
                        'show': True,
1834
                        'title': 'NO\u2082 tropospheric vertical column precision',
1835
                        'units': 'mol m\u207B\u00B2'
1836
                    },
1837
                    {
1838
                        'color_scale': 'nipy_spectral',
1839
                        'data_range': [0.0, 12.0],
1840
                        'field_name': 'air_mass_factor_troposphere',
1841
                        'flag': False,
1842
                        'log_range': False,
1843
                        'level3': False,
1844
                        'primary_variable': 'air_mass_factor_troposphere',
1845
                        'show': True,
1846
                        'title': 'Tropospheric airmass factor',
1847
                        'units': ''
1848
                    },
1849
                    {
1850
                        'color_scale': 'nipy_spectral',
1851
                        'data_range': [0.0, 12.0],
1852
                        'field_name': 'air_mass_factor_total',
1853
                        'flag': False,
1854
                        'log_range': False,
1855
                        'level3': False,
1856
                        'primary_variable': 'air_mass_factor_total',
1857
                        'show': True,
1858
                        'title': 'Total airmass factor',
1859
                        'units': ''
1860
                    },
1861
                    {
1862
                        'color_scale': 'nipy_spectral',
1863
                        'data_range': [270, 310],
1864
                        'histogram_bincount': 41,
1865
                        'level3': False,
1866
                        'field_name': 'number_of_spectral_points_in_retrieval',
1867
                        'flag': False,
1868
                        'log_range': False,
1869
                        'primary_variable': 'number_of_spectral_points_in_retrieval',
1870
                        'show': True,
1871
                        'include_scatter': False,
1872
                        'title': 'Number of spectral points in retrieval',
1873
                        'units': ''
1874
                    },
1875
                    {
1876
                        'color_scale': 'nipy_spectral',
1877
                        'data_range': [0,15],
1878
                        'field_name': 'number_of_iterations',
1879
                        'flag': False,
1880
                        'log_range': False,
1881
                        'primary_variable': 'number_of_iterations',
1882
                        'histogram_bincount': 16,
1883
                        'show': True,
1884
                        'include_scatter': False,
1885
                        'title': 'Number of iterations',
1886
                        'units': '1',
1887
                        'level3': False,
1888
                    },
1889
                    {
1890
                        'color_scale': 'seismic',
1891
                        'data_range': [-0.08,0.08],
1892
                        'field_name': 'wavelength_calibration_offset',
1893
                        'flag': False,
1894
                        'log_range': False,
1895
                        'level3': False,
1896
                        'primary_variable': 'wavelength_calibration_offset',
1897
                        'show': True,
1898
                        'title': 'Wavelength calibration offset',
1899
                        'units': 'nm'
1900
                    },
1901
                    # {
1902
                    #     'color_scale': 'nipy_spectral',
1903
                    #     'data_range': [0.0, 0.001],
1904
                    #     'field_name': 'wavelength_calibration_offset_precision',
1905
                    #     'flag': False,
1906
                    #     'log_range': False,
1907
                    #     'level3': False,
1908
                    #     'primary_variable': 'wavelength_calibration_offset_precision',
1909
                    #     'show': True,
1910
                    #     'title': 'Wavelength calibration offset precision',
1911
                    #     'units': 'nm'
1912
                    # },
1913
                    # {
1914
                    #     'color_scale': 'nipy_spectral',
1915
                    #     'data_range': [2.0e2, 1.0e5],
1916
                    #     'field_name': 'wavelength_calibration_chi_square',
1917
                    #     'flag': False,
1918
                    #     'log_range': True,
1919
                    #     'primary_variable': 'wavelength_calibration_chi_square',
1920
                    #     'show': True,
1921
                    #     'level3': False,
1922
                    #     'title': 'Wavelength calibration \u03C7\u00B2',
1923
                    #     'units': ''
1924
                    # },
1925
                    {
1926
                        'color_scale': 'nipy_spectral',
1927
                        'data_range': [0, 0.0001],
1928
                        'field_name': 'nitrogendioxide_stratospheric_column',
1929
                        'flag': False,
1930
                        'log_range': False,
1931
                        'primary_variable': 'nitrogendioxide_stratospheric_column',
1932
                        'show': True,
1933
                        'title': 'Stratospheric vertical NO\u2082 column',
1934
                        'units': 'mol/m\u00B2'
1935
                    },
1936
                    {
1937
                        'color_scale': 'nipy_spectral',
1938
                        'data_range': [0, 1e-5],
1939
                        'field_name': 'nitrogendioxide_stratospheric_column_precision',
1940
                        'flag': False,
1941
                        'level3': False,
1942
                        'log_range': False,
1943
                        'primary_variable': 'nitrogendioxide_stratospheric_column_precision',
1944
                        'show': True,
1945
                        'title': 'Stratospheric vertical NO\u2082 column precision',
1946
                        'units': 'mol/m\u00B2'
1947
                    },
1948
                    {
1949
                        'color_scale': 'nipy_spectral',
1950
                        'data_range': [5.0e-06, 5.0e-4],
1951
                        'field_name': 'nitrogendioxide_total_column',
1952
                        'flag': False,
1953
                        'log_range': True,
1954
                        'primary_variable': 'nitrogendioxide_total_column',
1955
                        'show': True,
1956
                        'title': 'Total vertical NO\u2082 column',
1957
                        'units': 'mol/m\u00B2'
1958
                    },
1959
                    {
1960
                        'color_scale': 'nipy_spectral',
1961
                        'data_range': [1e-6, 1e-4],
1962
                        'field_name': 'nitrogendioxide_total_column_precision',
1963
                        'level3': False,
1964
                        'flag': False,
1965
                        'log_range': True,
1966
                        'primary_variable': 'nitrogendioxide_total_column_precision',
1967
                        'show': True,
1968
                        'title': 'Total vertical NO\u2082 column precision',
1969
                        'units': 'mol/m\u00B2'
1970
                    },
1971
                    {
1972
                        'color_scale': 'nipy_spectral',
1973
                        'data_range': [5.0e-6, 5.0e-4],
1974
                        'field_name': 'nitrogendioxide_summed_total_column',
1975
                        'flag': False,
1976
                        'log_range': True,
1977
                        'primary_variable': 'nitrogendioxide_summed_total_column',
1978
                        'show': True,
1979
                        'title': 'Summed vertical NO\u2082 column',
1980
                        'units': 'mol/m\u00B2'
1981
                    },
1982
                    {
1983
                        'color_scale': 'nipy_spectral',
1984
                        'data_range': [1e-6, 1e-4],
1985
                        'level3': False,
1986
                        'field_name': 'nitrogendioxide_summed_total_column_precision',
1987
                        'flag': False,
1988
                        'log_range': True,
1989
                        'primary_variable': 'nitrogendioxide_summed_total_column_precision',
1990
                        'show': True,
1991
                        'title': 'Summed vertical NO\u2082 column precision',
1992
                        'units': 'mol/m\u00B2'
1993
                    },
1994
                    {
1995
                        'color_scale': 'nipy_spectral',
1996
                        'data_range': [0.0,2500],
1997
                        'field_name': 'chi_square',
1998
                        'flag': False,
1999
                        'log_range': False,
2000
                        'primary_variable': 'chi_square',
2001
                        'show': True,
2002
                        'title': '\u03C7\u00B2',
2003
                        'level3': False,
2004
                        'units': ''
2005
                    },
2006
                    {
2007
                        'color_scale': 'nipy_spectral',
2008
                        'data_range': [1.0e-5,1e-3],
2009
                        'field_name': 'root_mean_square_error_of_fit',
2010
                        'flag': False,
2011
                        'log_range': True,
2012
                        'primary_variable': 'root_mean_square_error_of_fit',
2013
                        'show': True,
2014
                        'title': 'RMS',
2015
                        'level3': False,
2016
                        'units': ''
2017
                    },
2018
                    {
2019
                        'color_scale': 'nipy_spectral',
2020
                        'data_range': [0,12],
2021
                        'field_name': 'air_mass_factor_stratosphere',
2022
                        'flag': False,
2023
                        'log_range': False,
2024
                        'primary_variable': 'air_mass_factor_stratosphere',
2025
                        'show': True,
2026
                        'level3': False,
2027
                        'title': 'Stratospheric airmass factor',
2028
                        'units': ''
2029
                    },
2030
                    {
2031
                        'color_scale': 'seismic',
2032
                        'data_range': [-0.1,0.1],
2033
                        'field_name': 'wavelength_calibration_irradiance_offset',
2034
                        'flag': False,
2035
                        'log_range': False,
2036
                        'primary_variable': 'wavelength_calibration_irradiance_offset',
2037
                        'show': True,
2038
                        'title': 'Spectral offset irradiance (\u03BB(true) \u2212 \u03BB(nominal))',
2039
                        'units': 'nm'
2040
                    },
2041
                    {
2042
                        'color_scale': 'seismic',
2043
                        'data_range': [-20.0e-6, 20.0e-6],
2044
                        'field_name': 'nitrogendioxide_slant_column_density_stripe_amplitude',
2045
                        'flag': False,
2046
                        'log_range': False,
2047
                        'primary_variable': 'nitrogendioxide_slant_column_density_stripe_amplitude',
2048
                        'show': True,
2049
                        'title': 'NO\u2082 stripe amplitude',
2050
                        'units': 'mol/m\u00B2'
2051
                    }
2052
                    #,
2053
                    # {
2054
                    #     'color_scale': 'nipy_spectral',
2055
                    #     'data_range': [0.0,0.1],
2056
                    #     'field_name': 'wavelength_calibration_irradiance_offset_precision',
2057
                    #     'flag': False,
2058
                    #     'log_range': False,
2059
                    #     'primary_variable': 'wavelength_calibration_irradiance_offset_precision',
2060
                    #     'show': True,
2061
                    #     'title': 'Precision of spectral offset irradiance (\u03BB(true) \u2212 \u03BB(nominal))',
2062
                    #     'units': 'nm'
2063
                    # },
2064
                    # {
2065
                    #     'color_scale': 'nipy_spectral',
2066
                    #     'data_range': [0.0,100.0],
2067
                    #     'field_name': 'wavelength_calibration_irradiance_chi_square',
2068
                    #     'flag': False,
2069
                    #     'log_range': False,
2070
                    #     'primary_variable': 'wavelength_calibration_irradiance_chi_square',
2071
                    #     'show': True,
2072
                    #     'title': '\u03C7\u00B2 of irradiance wavelength calibration',
2073
                    #     'units': ''
2074
                    # }
2075
                ]
2076
            },
2077
        'NO2O22': {
2078
                'equivalent_product': 'NO2___'
2079
            },
2080
        'NO2__B': {
2081
                'equivalent_product': 'NO2___'
2082
            },
2083
        'NO2DLR': {
2084
                'equivalent_product': 'NO2___'
2085
            },
2086
        'NP_BD6': {
2087
            'contact': 'Richard Siddans',
2088
            'contact_email': 'richard.siddans@stfc.ac.uk',
2089
            'developer': 'RAL',
2090
            'developer_contact': 'richard.siddans@stfc.ac.uk',
2091
            'variables':
2092
                [
2093
                    {
2094
                        'color_scale': 'viridis',
2095
                        'data_range': [-350,-150],
2096
                        'field_name': 'viirs_delta_time',
2097
                        'flag': False,
2098
                        'log_range': False,
2099
                        'primary_variable': 'viirs_delta_time',
2100
                        'show': True,
2101
                        'title': '$\Delta$ time',
2102
                        'units': 's'
2103
                    },
2104
                    {
2105
                        'color_scale': 'nipy_spectral',
2106
                        'data_range': [0,80],
2107
                        'field_name': 'viirs_viewing_zenith_angle',
2108
                        'flag': False,
2109
                        'log_range': False,
2110
                        'primary_variable': 'viirs_viewing_zenith_angle',
2111
                        'show': True,
2112
                        'title': 'VIIRS viewing zenith angle',
2113
                        'units': '\u00B0'
2114
                    },
2115
                    {
2116
                        'color_scale': 'nipy_spectral',
2117
                        'data_range': [0,600],
2118
                        'field_name': 'vcm_confidently_cloudy',
2119
                        'flag': False,
2120
                        'log_range': False,
2121
                        'primary_variable': 'vcm_confidently_cloudy',
2122
                        'show': False,
2123
                        'internal_only': True,
2124
                        'title': 'VIIRS cloud mask confidently cloud',
2125
                        'transformers':
2126
                            [
2127
                                {
2128
                                    'class': 'transform.Select',
2129
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2130
                                }
2131
                            ],
2132
                        'units': ''
2133
                    },
2134
                    {
2135
                        'color_scale': 'viridis',
2136
                        'data_range': [0,600],
2137
                        'field_name': 'vcm_probably_cloudy',
2138
                        'flag': False,
2139
                        'log_range': False,
2140
                        'primary_variable': 'vcm_probably_cloudy',
2141
                        'show': False,
2142
                        'internal_only': True,
2143
                        'title': 'VIIRS cloud mask probably cloudy',
2144
                        'transformers':
2145
                            [
2146
                                {
2147
                                    'class': 'transform.Select',
2148
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2149
                                }
2150
                            ],
2151
                        'units': ''
2152
                    },
2153
                    {
2154
                        'color_scale': 'viridis',
2155
                        'data_range': [0,600],
2156
                        'field_name': 'vcm_probably_clear',
2157
                        'flag': False,
2158
                        'log_range': False,
2159
                        'primary_variable': 'vcm_probably_clear',
2160
                        'show': False,
2161
                        'internal_only': True,
2162
                        'title': 'VIIRS cloud mask probably clear',
2163
                        'transformers':
2164
                            [
2165
                                {
2166
                                    'class':'transform.Select',
2167
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2168
                                }
2169
                            ],
2170
                        'units': ''
2171
                    },
2172
                    {
2173
                        'color_scale': 'viridis',
2174
                        'data_range': [0,600],
2175
                        'field_name': 'vcm_confidently_clear',
2176
                        'flag': False,
2177
                        'log_range': False,
2178
                        'primary_variable': 'vcm_confidently_clear',
2179
                        'show': False,
2180
                        'internal_only': True,
2181
                        'title': 'VIIRS cloud mask confidently clear',
2182
                        'transformers':
2183
                            [
2184
                                {
2185
                                    'class':'transform.Select',
2186
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2187
                                }
2188
                            ],
2189
                        'units': ''
2190
                    },
2191
                    {
2192
                        'color_scale': 'viridis',
2193
                        'data_range': [0,600],
2194
                        'field_name': 'vcm_nvalid',
2195
                        'flag': False,
2196
                        'log_range': False,
2197
                        'primary_variable': 'vcm_confidently_cloudy+vcm_probably_cloudy+vcm_probably_clear+vcm_confidently_clear',
2198
                        'show': True,
2199
                        'title': 'VIIRS cloud mask valid input',
2200
                        'units': ''
2201
                    },
2202
                    {
2203
                        'color_scale': 'viridis',
2204
                        'data_range': [0.0,1.0],
2205
                        'field_name': 'vcm_confidently_cloudy_fraction',
2206
                        'flag': False,
2207
                        'log_range': False,
2208
                        'primary_variable': 'vcm_confidently_cloudy/vcm_nvalid',
2209
                        'show': True,
2210
                        'title': 'VIIRS cloud mask confidently cloud',
2211
                        'units': ''
2212
                    },
2213
                    {
2214
                        'color_scale': 'viridis',
2215
                        'data_range': [0.0,1.0],
2216
                        'field_name': 'vcm_probably_cloudy_fraction',
2217
                        'flag': False,
2218
                        'log_range': False,
2219
                        'primary_variable': 'vcm_probably_cloudy/vcm_nvalid',
2220
                        'show': True,
2221
                        'title': 'VIIRS cloud mask probably cloudy',
2222
                        'units': ''
2223
                    },
2224
                    {
2225
                        'color_scale': 'viridis',
2226
                        'data_range': [0.0,1.0],
2227
                        'field_name': 'vcm_probably_clear_fraction',
2228
                        'flag': False,
2229
                        'log_range': False,
2230
                        'primary_variable': 'vcm_probably_clear/vcm_nvalid',
2231
                        'show': True,
2232
                        'title': 'VIIRS cloud mask probably clear',
2233
                        'units': ''
2234
                    },
2235
                    {
2236
                        'color_scale': 'viridis',
2237
                        'data_range': [0.0,1.0],
2238
                        'field_name': 'vcm_confidently_clear_fraction',
2239
                        'flag': False,
2240
                        'log_range': False,
2241
                        'primary_variable': 'vcm_confidently_clear/vcm_nvalid',
2242
                        'show': True,
2243
                        'title': 'VIIRS cloud mask confidently clear',
2244
                        'units': ''
2245
                    },
2246
                    {
2247
                        'color_scale': 'viridis',
2248
                        'data_range': [0.0,1.0],
2249
                        'field_name': 'band07_srf_mean',
2250
                        'flag': False,
2251
                        'log_range': False,
2252
                        'primary_variable': 'band07_srf_mean',
2253
                        'show': True,
2254
                        'title': 'Mean of valid VIIRS band M07 reflectance',
2255
                        'transformers':
2256
                            [
2257
                                {
2258
                                    'class': 'transform.SunNormalizedRadiance',
2259
                                    'arguments': {}
2260
                                }
2261
                            ],
2262
                        'units': ''
2263
                    },
2264
                    {
2265
                        'color_scale': 'viridis',
2266
                        'data_range': [0.0,1.0],
2267
                        'field_name': 'band09_srf_mean',
2268
                        'flag': False,
2269
                        'log_range': False,
2270
                        'primary_variable': 'band09_srf_mean',
2271
                        'show': True,
2272
                        'title': 'Mean of valid VIIRS band M09 reflectance',
2273
                        'transformers':
2274
                            [
2275
                                {
2276
                                    'class': 'transform.SunNormalizedRadiance',
2277
                                    'arguments': {}
2278
                                }
2279
                            ],
2280
                        'units': ''
2281
                    },
2282
                    {
2283
                        'color_scale': 'viridis',
2284
                        'data_range': [0.0,1.0],
2285
                        'field_name': 'band11_srf_mean',
2286
                        'flag': False,
2287
                        'log_range': False,
2288
                        'primary_variable': 'band11_srf_mean',
2289
                        'show': True,
2290
                        'title': 'Mean of valid VIIRS band M11 reflectance',
2291
                        'transformers':
2292
                            [
2293
                                {
2294
                                    'class': 'transform.SunNormalizedRadiance',
2295
                                    'arguments': {}
2296
                                }
2297
                            ],
2298
                        'units': ''
2299
                    },
2300
                    {
2301
                        'color_scale': 'viridis',
2302
                        'data_range': [0.0,1.0],
2303
                        'field_name': 'band07_fov_mean',
2304
                        'flag': False,
2305
                        'log_range': False,
2306
                        'primary_variable': 'band07_fov_mean',
2307
                        'show': True,
2308
                        'title': 'Mean of valid VIIRS band M07 reflectance in FOV',
2309
                        'transformers':
2310
                            [
2311
                                {
2312
                                    'class': 'transform.Select',
2313
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2314
                                },
2315
                                {
2316
                                    'class': 'transform.SunNormalizedRadiance',
2317
                                    'arguments': {}
2318
                                }
2319
                            ],
2320
                        'units': ''
2321
                    },
2322
                    {
2323
                        'color_scale': 'viridis',
2324
                        'data_range': [0.0,0.75],
2325
                        'field_name': 'band09_fov_mean',
2326
                        'flag': False,
2327
                        'log_range': False,
2328
                        'primary_variable': 'band09_fov_mean',
2329
                        'show': True,
2330
                        'title': 'Mean of valid VIIRS band M09 reflectance in FOV',
2331
                        'transformers':
2332
                            [
2333
                                {
2334
                                    'class': 'transform.Select',
2335
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2336
                                },
2337
                                {
2338
                                    'class': 'transform.SunNormalizedRadiance',
2339
                                    'arguments': {}
2340
                                }
2341
                            ],
2342
                        'units': ''
2343
                    },
2344
                    {
2345
                        'color_scale': 'viridis',
2346
                        'data_range': [0.0,0.5],
2347
                        'field_name': 'band11_fov_mean',
2348
                        'flag': False,
2349
                        'log_range': False,
2350
                        'primary_variable': 'band11_fov_mean',
2351
                        'show': True,
2352
                        'title': 'Mean of valid VIIRS band M11 reflectance in FOV',
2353
                        'transformers':
2354
                            [
2355
                                {
2356
                                    'class': 'transform.Select',
2357
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2358
                                },
2359
                                {
2360
                                    'class': 'transform.SunNormalizedRadiance',
2361
                                    'arguments': {}
2362
                                }
2363
                            ],
2364
                        'units': ''
2365
                    },
2366
                    {
2367
                        'color_scale': 'viridis',
2368
                        'data_range': [0.0,0.4],
2369
                        'field_name': 'band07_fov_stdev',
2370
                        'flag': False,
2371
                        'log_range': False,
2372
                        'primary_variable': 'band07_fov_stdev',
2373
                        'show': True,
2374
                        'title': 'Standard deviation of valid VIIRS band M07 reflectance in FOV',
2375
                        'transformers':
2376
                            [
2377
                                {
2378
                                    'class': 'transform.Select',
2379
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2380
                                },
2381
                                {
2382
                                    'class': 'transform.SunNormalizedRadiance',
2383
                                    'arguments': {}
2384
                                }
2385
                            ],
2386
                        'units': ''
2387
                    },
2388
                    {
2389
                        'color_scale': 'viridis',
2390
                        'data_range': [0.0,0.25],
2391
                        'field_name': 'band09_fov_stdev',
2392
                        'flag': False,
2393
                        'log_range': False,
2394
                        'primary_variable': 'band09_fov_stdev',
2395
                        'show': True,
2396
                        'title': 'Standard deviation of valid VIIRS band M09 reflectance in FOV',
2397
                        'transformers':
2398
                            [
2399
                                {
2400
                                    'class': 'transform.Select',
2401
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2402
                                },
2403
                                {
2404
                                    'class': 'transform.SunNormalizedRadiance',
2405
                                    'arguments': {}
2406
                                }
2407
                            ],
2408
                        'units': ''
2409
                    },
2410
                    {
2411
                        'color_scale': 'viridis',
2412
                        'data_range': [0.0,0.25],
2413
                        'field_name': 'band11_fov_stdev',
2414
                        'flag': False,
2415
                        'log_range': False,
2416
                        'primary_variable': 'band11_fov_stdev',
2417
                        'show': True,
2418
                        'title': 'Standard deviation of valid VIIRS band M11 reflectance in FOV',
2419
                        'transformers':
2420
                            [
2421
                                {
2422
                                    'class': 'transform.Select',
2423
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2424
                                },
2425
                                {
2426
                                    'class': 'transform.SunNormalizedRadiance',
2427
                                    'arguments': {}
2428
                                }
2429
                            ],
2430
                        'units': ''
2431
                    },
2432
                    {
2433
                        'color_scale': 'viridis',
2434
                        'data_range': [0,600],
2435
                        'field_name': 'band07_fov_nvalid',
2436
                        'flag': False,
2437
                        'log_range': False,
2438
                        'primary_variable': 'band07_fov_nvalid',
2439
                        'show': True,
2440
                        'title': 'Number of valid VIIRS band M07 pixels in FOV',
2441
                        'transformers':
2442
                            [
2443
                                {
2444
                                    'class': 'transform.Select',
2445
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2446
                                }
2447
                            ],
2448
                        'units': ''
2449
                    },
2450
                    {
2451
                        'color_scale': 'viridis',
2452
                        'data_range': [0,600],
2453
                        'field_name': 'band09_fov_nvalid',
2454
                        'flag': False,
2455
                        'log_range': False,
2456
                        'primary_variable': 'band09_fov_nvalid',
2457
                        'show': True,
2458
                        'title': 'Number of valid VIIRS band M09 pixels in FOV',
2459
                        'transformers':
2460
                            [
2461
                                {
2462
                                    'class': 'transform.Select',
2463
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2464
                                }
2465
                            ],
2466
                        'units': ''
2467
                    },
2468
                    {
2469
                        'color_scale': 'viridis',
2470
                        'data_range': [0,600],
2471
                        'field_name': 'band11_fov_nvalid',
2472
                        'flag': False,
2473
                        'log_range': False,
2474
                        'primary_variable': 'band11_fov_nvalid',
2475
                        'show': True,
2476
                        'title': 'Number of valid VIIRS band M11 pixels in FOV',
2477
                        'transformers':
2478
                            [
2479
                                {
2480
                                    'class': 'transform.Select',
2481
                                    'arguments': {'dimension': -1, 'index':0, 'collapse':False}
2482
                                }
2483
                            ],
2484
                        'units': ''
2485
                    },
2486
                    {
2487
                        'color_scale': 'viridis',
2488
                        'data_range': [0.95,1.0],
2489
                        'field_name': 'band07_srf_coverage',
2490
                        'flag': False,
2491
                        'log_range': False,
2492
                        'primary_variable': 'band07_srf_coverage',
2493
                        'show': True,
2494
                        'title': 'Fractional energy of SRF covered by valid VIIRS band M07 radiances',
2495
                        'units': ''
2496
                    },
2497
                    {
2498
                        'color_scale': 'viridis',
2499
                        'data_range': [0.95,1.0],
2500
                        'field_name': 'band09_srf_coverage',
2501
                        'flag': False,
2502
                        'log_range': False,
2503
                        'primary_variable': 'band09_srf_coverage',
2504
                        'show': True,
2505
                        'title': 'Fractional energy of SRF covered by valid VIIRS band M09 radiances',
2506
                        'units': ''
2507
                    },
2508
                    {
2509
                        'color_scale': 'viridis',
2510
                        'data_range': [0.95,1.0],
2511
                        'field_name': 'band11_srf_coverage',
2512
                        'flag': False,
2513
                        'log_range': False,
2514
                        'primary_variable': 'band11_srf_coverage',
2515
                        'show': True,
2516
                        'title': 'Fractional energy of SRF covered by valid VIIRS band M11 radiances',
2517
                        'units': ''
2518
                    }
2519
                ]
2520
            },
2521
        'NP_BD7': {
2522
            'equivalent_product': 'NP_BD6'
2523
            },
2524
        'NP_BD3': {
2525
            'equivalent_product': 'NP_BD6'
2526
            },
2527
        'O3_TCL': {
2528
            'contact': 'Klaus-Peter Heue',
2529
            'contact_email': 'Klaus-peter.heue@dlr.de',
2530
            'developer': 'DLR',
2531
            'developer_contact': 'mattia.pedergnana@dlr.de',
2532
            'do_not_process': True,
2533
            'actions': [],
2534
            'variables': []
2535
            },
2536
        'O3_TPR': {
2537
            'contact': 'Johan de Haan',
2538
            'contact_email': 'johan.de.haan@knmi.nl',
2539
            'developer': 'KNMI',
2540
            'developer_contact': 'tropomi_l2_dev@knmi.nl',
2541
            'variables':
2542
                [
2543
                    {
2544
                        'color_scale': 'nipy_spectral',
2545
                        'data_range': [0,10],
2546
                        'field_name': 'number_of_iterations',
2547
                        'flag': False,
2548
                        'log_range': False,
2549
                        'primary_variable': 'number_of_iterations',
2550
                        'histogram_bincount':11,
2551
                        'show': True,
2552
                        'level3': False,
2553
                        'title': 'Number of iterations',
2554
                        'units': ''
2555
                    },
2556
                    {
2557
                        'color_scale': 'nipy_spectral',
2558
                        'data_range': [21,120],
2559
                        'field_name': 'number_of_spectral_points_in_retrieval',
2560
                        'histogram_bincount':100,
2561
                        'flag': False,
2562
                        'log_range': False,
2563
                        'level3': False,
2564
                        'primary_variable': 'number_of_spectral_points_in_retrieval',
2565
                        'show': True,
2566
                        'title': 'Number of spectral points in retrieval',
2567
                        'units': ''
2568
                    },
2569
                    {
2570
                        'color_scale': 'nipy_spectral',
2571
                        'data_range': [0,2],
2572
                        'field_name': 'ozone_tropospheric_column',
2573
                        'flag': False,
2574
                        'log_range': False,
2575
                        'primary_variable': 'ozone_tropospheric_column',
2576
                        'show': True,
2577
                        'title': 'O\u2083 tropospheric column',
2578
                        'units': 'mol m\u207B\u00B2'
2579
                    },
2580
                    {
2581
                        'color_scale': 'nipy_spectral',
2582
                        'data_range': [0,1],
2583
                        'field_name': 'ozone_tropospheric_column_precision',
2584
                        'flag': False,
2585
                        'log_range': False,
2586
                        'level3': False,
2587
                        'primary_variable': 'ozone_tropospheric_column_precision',
2588
                        'show': True,
2589
                        'title': 'Precision of the O\u2083 tropospheric column',
2590
                        'units': 'mol m\u207B\u00B2'
2591
                    },
2592
                    {
2593
                        'color_scale': 'nipy_spectral',
2594
                        'data_range': [0,100],
2595
                        'field_name': 'root_mean_square_error_of_fit',
2596
                        'flag': False,
2597
                        'log_range': False,
2598
                        'primary_variable': 'root_mean_square_error_of_fit',
2599
                        'show': True,
2600
                        'level3': False,
2601
                        'title': 'RMS',
2602
                        'units': ''
2603
                    },
2604
                    # {
2605
                    #     'color_scale': 'nipy_spectral',
2606
                    #     'data_range': [0,10],
2607
                    #     'field_name': 'degrees_of_freedom',
2608
                    #     'flag': False,
2609
                    #     'log_range': False,
2610
                    #     'primary_variable': 'degrees_of_freedom',
2611
                    #     'level3': False,
2612
                    #     'show': True,
2613
                    #     'title': 'Total degrees of freedom',
2614
                    #     'units': ''
2615
                    # },
2616
                    {
2617
                        'color_scale': 'nipy_spectral',
2618
                        'data_range': [0,3],
2619
                        'field_name': 'degrees_of_freedom_ozone',
2620
                        'flag': False,
2621
                        'log_range': False,
2622
                        'primary_variable': 'degrees_of_freedom_ozone',
2623
                        'show': True,
2624
                        'title': 'Degrees of freedom for O\u2083',
2625
                        'units': ''
2626
                    },
2627
                    {
2628
                        'color_scale': 'nipy_spectral',
2629
                        'data_range': [0,3],
2630
                        'level3': False,
2631
                        'field_name': 'cost_function',
2632
                        'flag': False,
2633
                        'log_range': False,
2634
                        'primary_variable': 'cost_function',
2635
                        'show': True,
2636
                        'title': 'Cost function',
2637
                        'units': ''
2638
                    }
2639
                ]
2640
            },
2641
        'O3__PR': {
2642
                        'contact': 'Johan de Haan',
2643
            'contact_email': 'johan.de.haan@knmi.nl',
2644
            'developer': 'KNMI',
2645
            'developer_contact': 'tropomi_l2_dev@knmi.nl',
2646
            'variables':
2647
                [
2648
                    {
2649
                        'color_scale': 'nipy_spectral',
2650
                        'data_range': [0,10],
2651
                        'field_name': 'number_of_iterations',
2652
                        'flag': False,
2653
                        'log_range': False,
2654
                        'primary_variable': 'number_of_iterations',
2655
                        'histogram_bincount':11,
2656
                        'level3': False,
2657
                        'show': True,
2658
                        'title': 'Number of iterations',
2659
                        'units': ''
2660
                    },
2661
                    {
2662
                        'color_scale': 'nipy_spectral',
2663
                        'data_range': [91,190],
2664
                        'level3': False,
2665
                        'field_name': 'number_of_spectral_points_in_retrieval',
2666
                        'histogram_bincount': 100,
2667
                        'flag': False,
2668
                        'log_range': False,
2669
                        'primary_variable': 'number_of_spectral_points_in_retrieval',
2670
                        'show': True,
2671
                        'title': 'Number of spectral points in retrieval',
2672
                        'units': ''
2673
                    },
2674
                    {
2675
                        'color_scale': 'nipy_spectral',
2676
                        'data_range': [0,2],
2677
                        'field_name': 'ozone_total_column',
2678
                        'flag': False,
2679
                        'log_range': False,
2680
                        'primary_variable': 'ozone_total_column',
2681
                        'show': True,
2682
                        'title': 'O\u2083 total column',
2683
                        'units': 'mol m\u207B\u00B2'
2684
                    },
2685
                    {
2686
                        'color_scale': 'nipy_spectral',
2687
                        'data_range': [0,1],
2688
                        'level3': False,
2689
                        'field_name': 'ozone_total_column_precision',
2690
                        'flag': False,
2691
                        'log_range': False,
2692
                        'primary_variable': 'ozone_total_column_precision',
2693
                        'show': True,
2694
                        'title': 'Precision of the O\u2083 total column',
2695
                        'units': 'mol m\u207B\u00B2'
2696
                    },
2697
                    {
2698
                        'color_scale': 'nipy_spectral',
2699
                        'data_range': [0,2],
2700
                        'field_name': 'ozone_tropospheric_column',
2701
                        'flag': False,
2702
                        'log_range': False,
2703
                        'primary_variable': 'ozone_tropospheric_column',
2704
                        'show': True,
2705
                        'title': 'O\u2083 tropospheric column',
2706
                        'units': 'mol m\u207B\u00B2'
2707
                    },
2708
                    {
2709
                        'color_scale': 'nipy_spectral',
2710
                        'data_range': [0,1],
2711
                        'field_name': 'ozone_tropospheric_column_precision',
2712
                        'level3': False,
2713
                        'flag': False,
2714
                        'log_range': False,
2715
                        'primary_variable': 'ozone_tropospheric_column_precision',
2716
                        'show': True,
2717
                        'title': 'Precision of the O\u2083 tropospheric column',
2718
                        'units': 'mol m\u207B\u00B2'
2719
                    },
2720
                    {
2721
                        'color_scale': 'nipy_spectral',
2722
                        'data_range': [0,100],
2723
                        'field_name': 'root_mean_square_error_of_fit',
2724
                        'flag': False,
2725
                        'level3': False,
2726
                        'log_range': False,
2727
                        'primary_variable': 'root_mean_square_error_of_fit',
2728
                        'show': True,
2729
                        'title': 'RMS',
2730
                        'units': ''
2731
                    },
2732
                    # {
2733
                    #     'color_scale': 'nipy_spectral',
2734
                    #     'data_range': [0,10],
2735
                    #     'field_name': 'degrees_of_freedom',
2736
                    #     'flag': False,
2737
                    #     'log_range': False,
2738
                    #     'primary_variable': 'degrees_of_freedom',
2739
                    #     'level3': False,
2740
                    #     'show': True,
2741
                    #     'title': 'Total degrees of freedom',
2742
                    #     'units': ''
2743
                    # },
2744
                    {
2745
                        'color_scale': 'nipy_spectral',
2746
                        'data_range': [0,3],
2747
                        'field_name': 'degrees_of_freedom_ozone',
2748
                        'flag': False,
2749
                        'log_range': False,
2750
                        'primary_variable': 'degrees_of_freedom_ozone',
2751
                        'show': True,
2752
                        'title': 'Degrees of freedom for O\u2083',
2753
                        'units': ''
2754
                    },
2755
                    {
2756
                        'color_scale': 'nipy_spectral',
2757
                        'data_range': [0,3],
2758
                        'field_name': 'cost_function',
2759
                        'level3': False,
2760
                        'flag': False,
2761
                        'log_range': False,
2762
                        'primary_variable': 'cost_function',
2763
                        'show': True,
2764
                        'title': 'Cost function',
2765
                        'units': ''
2766
                    }
2767
                ]
2768
            },
2769
        'O3____': {
2770
            'contact': 'Klaus-Peter Heue',
2771
            'contact_email': 'klaus-peter.heue@dlr.de',
2772
            'developer': 'DLR',
2773
            'developer_contact': 'mattia.pedergnana@dlr.de',
2774
            'variables': [
2775
                    {
2776
                        'color_scale': 'nipy_spectral',
2777
                        'data_range': [0,0.3],
2778
                        'field_name': 'ozone_total_vertical_column',
2779
                        'flag': False,
2780
                        'log_range': False,
2781
                        'primary_variable': 'ozone_total_vertical_column',
2782
                        'show': True,
2783
                        'title': 'O\u2083 vertical column',
2784
                        'units': 'mol m\u207B\u00B2',
2785
                        'transformers':
2786
                            [
2787
                                {
2788
                                    'class': 'transform.ThresholdFilter',
2789
                                    'arguments': {'threshold': 10, 'comparison':">"}
2790
                                }
2791
                            ]
2792
                    },
2793
                    {
2794
                        'color_scale': 'nipy_spectral',
2795
                        'data_range': [0,0.015],
2796
                        'field_name': 'ozone_total_vertical_column_precision',
2797
                        'flag': False,
2798
                        'log_range': False,
2799
                        'primary_variable': 'ozone_total_vertical_column_precision',
2800
                        'show': True,
2801
                        'title': 'O\u2083 vertical column precision',
2802
                        'units': 'mol m\u207B\u00B2',
2803
                        'transformers':
2804
                            [
2805
                                {
2806
                                    'class': 'transform.ThresholdFilter',
2807
                                    'arguments': {'threshold': 10, 'comparison':">"}
2808
                                }
2809
                            ],
2810
                        'modes': ['NRTI']
2811
                    },
2812
                    {
2813
                        'color_scale': 'nipy_spectral',
2814
                        'data_range': [0,0.010],
2815
                        'field_name': 'ozone_total_vertical_column_precision',
2816
                        'flag': False,
2817
                        'log_range': False,
2818
                        'primary_variable': 'ozone_total_vertical_column_precision',
2819
                        'show': True,
2820
                        'title': 'O\u2083 vertical column precision',
2821
                        'units': 'mol m\u207B\u00B2',
2822
                        'transformers':
2823
                            [
2824
                                {
2825
                                    'class': 'transform.ThresholdFilter',
2826
                                    'arguments': {'threshold': 10, 'comparison':">"}
2827
                                }
2828
                            ],
2829
                        'modes': ['OFFL', 'RPRO']
2830
                    },
2831
                    {
2832
                        'color_scale': 'nipy_spectral',
2833
                        'data_range': [0,1],
2834
                        'field_name': 'ozone_slant_column_density',
2835
                        'flag': False,
2836
                        'log_range': False,
2837
                        'primary_variable': 'fitted_slant_columns',
2838
                        'show': True,
2839
                        'title': 'O\u2083 slant column',
2840
                        'units': 'mol m\u207B\u00B2',
2841
                        'transformers':
2842
                            [
2843
                                {
2844
                                    'class': 'transform.Select',
2845
                                    'arguments': {'dimension': -1, 'index': 0}
2846
                                },
2847
                                {
2848
                                    'class': 'transform.ThresholdFilter',
2849
                                    'arguments': {'threshold': 20, 'comparison':">"}
2850
                                }
2851
                            ],
2852
                        'modes': ['NRTI']
2853
                    },
2854
                    {
2855
                        'color_scale': 'nipy_spectral',
2856
                        'data_range': [0,7E-3],
2857
                        'field_name': 'ozone_slant_column_precision',
2858
                        'flag': False,
2859
                        'log_range': False,
2860
                        'primary_variable': 'fitted_slant_columns_precision',
2861
                        'show': True,
2862
                        'title': 'O\u2083 slant column precision',
2863
                        'units': 'mol m\u207B\u00B2',
2864
                        'transformers':
2865
                            [
2866
                                {
2867
                                    'class': 'transform.Select',
2868
                                    'arguments': {'dimension': -1, 'index': 0}
2869
                                },
2870
                                {
2871
                                    'class': 'transform.ThresholdFilter',
2872
                                    'arguments': {'threshold': 20, 'comparison':">"}
2873
                                }
2874
                            ],
2875
                        'modes': ['NRTI']
2876
                    },
2877
                    {
2878
                        'color_scale': 'nipy_spectral',
2879
                        'data_range': [0,6],
2880
                        'field_name': 'number_of_iterations_slant_column',
2881
                        'flag': False,
2882
                        'log_range': False,
2883
                        'primary_variable': 'number_of_iterations_slant_column',
2884
                        'histogram_bincount': 21,
2885
                        'show': True,
2886
                        'include_scatter': False,
2887
                        'Level3': False,
2888
                        'title': 'Number of iterations for slant column retrieval',
2889
                        'units': '',
2890
                        'modes': ['NRTI']
2891
                    },
2892
                    {
2893
                        'color_scale': 'nipy_spectral',
2894
                        'data_range': [0, 0.006],
2895
                        'field_name': 'root_mean_square_slant_column_fit',
2896
                        'flag': False,
2897
                        'log_range': False,
2898
                        'primary_variable': 'fitted_root_mean_square',
2899
                        'show': True,
2900
                        'include_scatter': False,
2901
                        'title': 'Fitting RMS',
2902
                        'units': ''
2903
                    },
2904
                    {
2905
                        'color_scale': 'nipy_spectral',
2906
                        'data_range': [-0.03,0.03],
2907
                        'field_name': 'fitted_radiance_shift',
2908
                        'flag': False,
2909
                        'log_range': False,
2910
                        'primary_variable': 'fitted_radiance_shift',
2911
                        'show': True,
2912
                        'title': 'DOAS fit wavelength shift',
2913
                        'units': 'nm',
2914
                        'modes': ['NRTI']
2915
                    },
2916
                    {
2917
                        'color_scale': 'nipy_spectral',
2918
                        'data_range': [-0.01,0.01],
2919
                        'field_name': 'fitted_radiance_squeeze',
2920
                        'flag': False,
2921
                        'log_range': False,
2922
                        'primary_variable': 'fitted_radiance_squeeze',
2923
                        'show': True,
2924
                        'title': 'DOAS fit wavelength squeeze',
2925
                        'units': '',
2926
                        'modes': ['NRTI']
2927
                    },
2928
                    {
2929
                        'color_scale': 'nipy_spectral',
2930
                        'data_range': [0,10],
2931
                        'field_name': 'ozone_total_air_mass_factor',
2932
                        'flag': False,
2933
                        'log_range': False,
2934
                        'primary_variable': 'ozone_total_air_mass_factor',
2935
                        'show': True,
2936
                        'title': 'Airmass factor',
2937
                        'units': '',
2938
                        'modes': ['NRTI']
2939
                    },
2940
                    {
2941
                        'color_scale': 'nipy_spectral',
2942
                        'data_range': [200, 280],
2943
                        'field_name': 'ozone_effective_temperature',
2944
                        'flag': False,
2945
                        'log_range': False,
2946
                        'primary_variable': 'ozone_effective_temperature',
2947
                        'show': True,
2948
                        'title': 'Effective temperature',
2949
                        'units': 'K',
2950
                        'modes': ['NRTI']
2951
                    },
2952
                    {
2953
                        'color_scale': 'nipy_spectral',
2954
                        'data_range': [200, 250],
2955
                        'field_name': 'ozone_effective_temperature',
2956
                        'flag': False,
2957
                        'log_range': False,
2958
                        'primary_variable': 'ozone_effective_temperature',
2959
                        'show': True,
2960
                        'title': 'Effective temperature',
2961
                        'units': 'K',
2962
                        'modes': ['OFFL', 'RPRO']
2963
                    },
2964
                    {
2965
                        'color_scale': 'nipy_spectral',
2966
                        'data_range': [0, 0.01],
2967
                        'field_name': 'ozone_ghost_column',
2968
                        'flag': False,
2969
                        'log_range': False,
2970
                        'primary_variable': 'ozone_ghost_column',
2971
                        'show': True,
2972
                        'title': 'O\u2083 ghost column',
2973
                        'units': 'mol m\u207B\u00B2',
2974
                        'modes': ['OFFL', 'RPRO']
2975
                    },
2976
                    {
2977
                        'color_scale': 'nipy_spectral',
2978
                        'data_range': [0,3],
2979
                        'field_name': 'intra_cloud_correction_factor',
2980
                        'flag': False,
2981
                        'log_range': False,
2982
                        'primary_variable': 'intra_cloud_correction_factor',
2983
                        'show': True,
2984
                        'title': 'intra-cloud correction factor',
2985
                        'units': '',
2986
                        'modes': ['OFFL', 'RPRO']
2987
                    },
2988
                    {
2989
                        'color_scale': 'nipy_spectral',
2990
                        'data_range': [0,10],
2991
                        'field_name': 'number_of_iterations_vertical_column',
2992
                        'flag': False,
2993
                        'log_range': False,
2994
                        'primary_variable': 'number_of_iterations_vertical_column',
2995
                        'histogram_bincount': 21,
2996
                        'show': True,
2997
                        'include_scatter': False,
2998
                        'Level3': False,
2999
                        'title': 'Number of iterations for vertical column retrieval',
3000
                        'units': ''
3001
                    },
3002
                    # {
3003
                    #     'color_scale': 'nipy_spectral',
3004
                    #     'data_range': [70,90],
3005
                    #     'histogram_bincount': 21,
3006
                   #      'field_name': 'number_of_spectral_points_in_retrieval',
3007
                   #      'flag': False,
3008
                   #      'log_range': False,
3009
                   #      'primary_variable': 'number_of_spectral_points_in_retrieval',
3010
                   #      'show': True,
3011
                   #      'title': 'Number of spectral points in retrieval',
3012
                   #      'units': ''
3013
                   #  },
3014
                    # {
3015
                        # 'color_scale': 'nipy_spectral',
3016
                        # 'data_range': [0,400],
3017
                        # 'field_name': 'vcd_root_mean_square',
3018
                        # 'flag': False,
3019
                        # 'log_range': False,
3020
                        # 'primary_variable': 'vcd_root_mean_square',
3021
                        # 'show': True,
3022
                        # 'title': 'Vertical column RMS',
3023
                        # 'units': ''
3024
                    # },
3025
                    # # {
3026
                        # # 'color_scale': 'nipy_spectral',
3027
                        # # 'data_range': [21,120],
3028
                        # # 'field_name': 'vcd_chi_square',
3029
                        # # 'flag': False,
3030
                        # # 'log_range': False,
3031
                        # # 'primary_variable': 'vcd_chi_square',
3032
                        # # 'show': True,
3033
                        # # 'title': 'Vertical column \u03C7\u00B2',
3034
                        # # 'units': ''
3035
                    # # },
3036
                    # {
3037
                        # 'color_scale': 'nipy_spectral',
3038
                        # 'data_range': [0,10],
3039
                        # 'field_name': 'degrees_of_freedom',
3040
                        # 'flag': False,
3041
                        # 'log_range': False,
3042
                        # 'primary_variable': 'degrees_of_freedom',
3043
                        # 'show': True,
3044
                        # 'title': 'Degrees of freedom',
3045
                        # 'units': ''
3046
                    # },
3047
                    {
3048
                        'color_scale': 'nipy_spectral',
3049
                        'data_range': [-0.05,0.05],
3050
                        'field_name': 'calibration_subwindows_shift',
3051
                        'flag': False,
3052
                        'log_range': False,
3053
                        'primary_variable': 'calibration_subwindows_shift',
3054
                        'show': True,
3055
                        'title': 'Wavelength calibration subwindows shift',
3056
                        'units': 'nm'
3057
                    },
3058
                    {
3059
                        'color_scale': 'nipy_spectral',
3060
                        'data_range': [-0.05,0.05],
3061
                        'field_name': 'calibration_subwindows_squeeze',
3062
                        'flag': False,
3063
                        'log_range': False,
3064
                        'primary_variable': 'calibration_subwindows_squeeze',
3065
                        'show': True,
3066
                        'title': 'Wavelength calibration subwindows squeeze',
3067
                        'units': ''
3068
                    },
3069
                    {
3070
                        'color_scale': 'nipy_spectral',
3071
                        'data_range': [-0.05,0.05],
3072
                        'field_name': 'calibration_polynomial_coefficients',
3073
                        'flag': False,
3074
                        'log_range': False,
3075
                        'primary_variable': 'calibration_polynomial_coefficients',
3076
                        'show': True,
3077
                        'title': 'Wavelength calibration polynomial coefficients',
3078
                        'units': ''
3079
                    },
3080
                    {
3081
                        'color_scale': 'nipy_spectral',
3082
                        'data_range': [0,400],
3083
                        'field_name': 'calibration_subwindows_root_mean_square',
3084
                        'flag': False,
3085
                        'log_range': False,
3086
                        'primary_variable': 'calibration_subwindows_root_mean_square',
3087
                        'show': True,
3088
                        'title': 'Wavelength calibration subwindows RMS',
3089
                        'units': ''
3090
                    }
3091
                ]
3092
            },
3093
        'SO2___': {
3094
            'contact': 'Nicolas Theys',
3095
            'contact_email': 'nicolas.theys@aeronomie.be',
3096
            'developer': 'DLR',
3097
            'developer_contact': 'mattia.pedergnana@dlr.de',
3098
            'variables': [
3099
                    {
3100
                        'color_scale': 'jet',
3101
                        'data_range': [0.1,25],
3102
                        #'data_range': [1E-4,1e-2],
3103
                        'field_name': 'sulfurdioxide_total_vertical_column',
3104
                        'flag': False,
3105
                        'log_range': True,
3106
                        'primary_variable': 'sulfurdioxide_total_vertical_column',
3107
                        'show': True,
3108
                        'title': 'SO\u2082 vertical column',
3109
                        'transformers':
3110
                            [
3111
                                {
3112
                                    'class':'transform.Multiplier',
3113
                                    'arguments': {'operator': '*', 'scalefactor': 2241.15}
3114
                                },
3115
                            ],
3116
                        'units': 'DU'
3117
                    },
3118
                    # {
3119
                    #     'color_scale': 'jet',
3120
                    #     'data_range': [0.1,25],
3121