Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

pycama / src / PyCAMA_config_generator.py @ 844:916e817cf769

History | View | Annotate | Download (173 KB)

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

    
4
import datetime
5
import plistlib
6
import sys
7

    
8
# Unicode characters: http://www.fileformat.info/info/unicode/char/search.htm
9
from pycama import __version__
10

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