satpy icon indicating copy to clipboard operation
satpy copied to clipboard

RGB Workshop 2025 Discussion: "Fog RGB" is an alternate name for "Night Microphysics"

Open djhoese opened this issue 5 months ago • 3 comments

The document says that an alternate name for "Night Microphysics RGB" is "Fog RGB", but the fog product in Satpy uses a completely different band in the green channel difference:

 night_microphysics:
    compositor: !!python/name:satpy.composites.core.GenericCompositor
    prerequisites:
    - compositor: !!python/name:satpy.composites.arithmetic.DifferenceCompositor
      prerequisites:
      - 12.0
      - 10.8
    - compositor: !!python/name:satpy.composites.arithmetic.DifferenceCompositor
      prerequisites:
      - 10.8
      - 3.9
    - 10.8
    standard_name: night_microphysics

  fog:
    compositor: !!python/name:satpy.composites.core.GenericCompositor
    prerequisites:
    - compositor: !!python/name:satpy.composites.arithmetic.DifferenceCompositor
      prerequisites:
      - 12.0
      - 10.8
    - compositor: !!python/name:satpy.composites.arithmetic.DifferenceCompositor
      prerequisites:
      - 10.8
      - 8.7
    - 10.8
    standard_name: fog

So, are 3.9um and 8.7um both good at showing the same thing so these are considered "equivalent"?

djhoese avatar Aug 19 '25 18:08 djhoese

Both can show fog fairly well I would say, but at night it's generally better to use the IR3.9 channel, which however becomes useless for fog and low clouds at daytime and twilight when there is solar contribution. Hence, it's used in night_microphysics.

The satpy fog RGBs is rather a variant of the 24h_microphysics with slightly different stretching and gamma in order to better highlight fog specifically (I guess).

24h-Microphysics Recipe:

  24h_microphysics:
    references:
      EUMETRAIN Quick Guide: https://eumetrain.org/sites/default/files/2021-05/24MicroRGB.pdf
      Recipe: https://resources.eumetrain.org/RGBguide/recipes/RGB_recipes.pdf
    compositor: !!python/name:satpy.composites.core.GenericCompositor
    prerequisites:
    - compositor: !!python/name:satpy.composites.arithmetic.DifferenceCompositor
      prerequisites:
      - 12.0
      - 10.8
    - compositor: !!python/name:satpy.composites.arithmetic.DifferenceCompositor
      prerequisites:
      - 10.8
      - 8.7
    - 10.8
    standard_name: 24h_microphysics

24h-Microphysics and fog enhancements:

  24h_microphysics_default:
    standard_name: 24h_microphysics
    operations:
    - name: stretch
      method: !!python/name:satpy.enhancements.contrast.stretch
      kwargs:
        stretch: crude
        min_stretch: [-4, 0, 248]
        max_stretch: [2, 6, 303]
    - name: gamma
      method: !!python/name:satpy.enhancements.contrast.gamma
      kwargs:
        gamma: [ 1, 1.2, 1 ]

  fog_default:
    standard_name: fog
    operations:
    - name: stretch
      method: !!python/name:satpy.enhancements.contrast.stretch
      kwargs:
        stretch: crude
        min_stretch: [-4, 0, 243]
        max_stretch: [2, 6, 283]

There is also night_fog in satpy, which has the same channel combinations as night_microphysics, but again with different enhancement.

As far as I remember these fog specific variants of the 24h/night_microphysics RGBs, were not really discussed at the workshop. I think the default recipes were considered good enough for this purpose.

strandgren avatar Aug 20 '25 07:08 strandgren

Maybe to offer a historical perspective, many composites in satpy originate from recipes we had at SMHI, but might not have been accurate fully accurate. Same thing with names.

So Fog is the old SMHI variant for 24h Microphysics, and Night Fog is the old variant for Night Microphysics I think. I.e., I think we should just keep *microphysics.

mraspaud avatar Aug 20 '25 09:08 mraspaud

So maybe we just keep "fog" as some legacy composite with no deprecation but maybe add some of this historical context and we make sure that the various *_microphysics* composites are "properly" named.

djhoese avatar Aug 22 '25 14:08 djhoese