Skip to content

Added seaice and sea surface salinity database#57

Merged
guillaumevernieres merged 32 commits into
mainfrom
feature/all-databse
Apr 30, 2025
Merged

Added seaice and sea surface salinity database#57
guillaumevernieres merged 32 commits into
mainfrom
feature/all-databse

Conversation

@apchoiCMD
Copy link
Copy Markdown
Contributor

@apchoiCMD apchoiCMD commented Apr 23, 2025

This PR adds an additional database to obsForge for seaice, sss of smap and smos.

Resolves #55
Partially #56

@guillaumevernieres
Copy link
Copy Markdown
Contributor

Code norms are failing @apchoiCMD

Copy link
Copy Markdown
Contributor

@guillaumevernieres guillaumevernieres left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm pretty sure you don't need to modify the base class to make the new databases work.

Comment thread ush/python/pyobsforge/obsdb/amsr2_db.py Outdated
Comment thread ush/python/pyobsforge/obsdb/amsr2_db.py
Comment thread ush/python/pyobsforge/obsdb/obsdb.py Outdated
@apchoiCMD apchoiCMD marked this pull request as ready for review April 23, 2025 18:40
Copy link
Copy Markdown
Contributor

@guillaumevernieres guillaumevernieres left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few minor issues. Check the comments.
For the provider's name, RADS and GHRSST were quite straight forward to pick, I understand that may not be the case for sss and ice, but we need something better than the satellite's name.

Comment thread ush/python/pyobsforge/obsdb/obsdb.py Outdated
Comment thread ush/python/pyobsforge/task/marine_prepobs.py Outdated
@apchoiCMD apchoiCMD changed the title Added seaice and salinity database Added seaice and sea surface salinity database Apr 24, 2025
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a new database and related tests for sea ice and sea surface salinity observations from SMAP, SMOS, and NESDIS AMSR2 and integrates them into the obsForge workflow.

  • Introduces new test modules for SMOS, SMAP, and NESDIS AMSR2 databases.
  • Adds a new database class for NESDIS AMSR2 and updates provider configuration and task processing to include it.
  • Updates configuration files to reflect new provider settings and environment changes.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/test_smos_database.py New tests for SMOS database ingestion and filename parsing.
tests/test_smap_database.py New tests for SMAP database ingestion and filename parsing.
tests/test_nesdis_amsr2_database.py New tests for NESDIS AMSR2 database ingestion and filename parsing.
task/providers.py Adds provider support for nesdis_amsr2 with a new debug log statement.
task/marine_prepobs.py Initializes and ingests files for nesdis_amsr2 and updates obs-space processing.
obsdb/smos_db.py, obsdb/smap_db.py Database classes for SMOS and SMAP with filename parsing and ingestion.
obsdb/nesdis_amsr2_db.py New database class for NESDIS AMSR2 with its own filename parsing logic.
parm/config.yaml, parm/config.orion.yaml Updates to configuration reflecting new paths and provider settings.
parm/config.hera.yaml New configuration file with updated provider entries.

Comment thread ush/python/pyobsforge/task/providers.py Outdated
Comment thread ush/python/pyobsforge/obsdb/nesdis_amsr2_db.py Outdated
Copy link
Copy Markdown
Contributor

@guillaumevernieres guillaumevernieres left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comments

Comment thread parm/config.orion.yaml Outdated
Comment thread ush/python/pyobsforge/obsdb/nesdis_amsr2_db.py Outdated
Comment thread ush/python/pyobsforge/obsdb/smap_db.py Outdated
Comment thread ush/python/pyobsforge/obsdb/smos_db.py Outdated
Comment thread ush/python/pyobsforge/task/marine_prepobs.py Outdated
Comment thread ush/python/pyobsforge/task/marine_prepobs.py Outdated
Copy link
Copy Markdown
Contributor

@guillaumevernieres guillaumevernieres left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see copilot's review comment

@guillaumevernieres guillaumevernieres merged commit 5f8206e into main Apr 30, 2025
2 checks passed
@guillaumevernieres guillaumevernieres deleted the feature/all-databse branch April 30, 2025 15:49
CoryMartin-NOAA added a commit that referenced this pull request Oct 21, 2025
…sts (#12)

1. Simplified ctest structure.
My initial version is very stupid and inefficient!
e.g. initial ctest list for test_obsforge_satobs_satwnd_amv_seviri looks
like the following:
```
  Test  #38: test_obsforge_satobs_satwnd_amv_seviri_m8_bufr2netcdf
  Test  #39: test_obsforge_satobs_satwnd_amv_seviri_m8_bufr2netcdf_mpi4
  Test  #40: test_obsforge_satobs_satwnd_amv_seviri_m8_script2netcdf
  Test  #41: test_obsforge_satobs_satwnd_amv_seviri_m8_script2netcdf_mpi4
  Test  #42: test_obsforge_satobs_satwnd_amv_seviri_m8_bufr4backend
  Test  #43: test_obsforge_satobs_satwnd_amv_seviri_m8_bufr4backend_mpi4
  Test  #44: test_obsforge_satobs_satwnd_amv_seviri_m8_script4backend
  Test  #45: test_obsforge_satobs_satwnd_amv_seviri_m8_script4backend_mpi4
  Test  #46: test_obsforge_satobs_satwnd_amv_seviri_m9_bufr2netcdf
  Test  #47: test_obsforge_satobs_satwnd_amv_seviri_m9_bufr2netcdf_mpi4
  Test  #48: test_obsforge_satobs_satwnd_amv_seviri_m9_script2netcdf
  Test  #49: test_obsforge_satobs_satwnd_amv_seviri_m9_script2netcdf_mpi4
  Test  #50: test_obsforge_satobs_satwnd_amv_seviri_m9_bufr4backend
  Test  #51: test_obsforge_satobs_satwnd_amv_seviri_m9_bufr4backend_mpi4
  Test  #52: test_obsforge_satobs_satwnd_amv_seviri_m9_script4backend
  Test  #53: test_obsforge_satobs_satwnd_amv_seviri_m9_script4backend_mpi4
  Test  #54: test_obsforge_satobs_satwnd_amv_seviri_m10_bufr2netcdf
  Test  #55: test_obsforge_satobs_satwnd_amv_seviri_m10_bufr2netcdf_mpi4
  Test  #56: test_obsforge_satobs_satwnd_amv_seviri_m10_script2netcdf
  Test  #57: test_obsforge_satobs_satwnd_amv_seviri_m10_script2netcdf_mpi4
  Test  #58: test_obsforge_satobs_satwnd_amv_seviri_m10_bufr4backend
  Test  #59: test_obsforge_satobs_satwnd_amv_seviri_m10_bufr4backend_mpi4
  Test  #60: test_obsforge_satobs_satwnd_amv_seviri_m10_script4backend
  Test  #61: test_obsforge_satobs_satwnd_amv_seviri_m10_script4backend_mpi4
  Test  #62: test_obsforge_satobs_satwnd_amv_seviri_m11_bufr2netcdf
  Test  #63: test_obsforge_satobs_satwnd_amv_seviri_m11_bufr2netcdf_mpi4
  Test  #64: test_obsforge_satobs_satwnd_amv_seviri_m11_script2netcdf
  Test  #65: test_obsforge_satobs_satwnd_amv_seviri_m11_script2netcdf_mpi4
  Test  #66: test_obsforge_satobs_satwnd_amv_seviri_m11_bufr4backend
  Test  #67: test_obsforge_satobs_satwnd_amv_seviri_m11_bufr4backend_mpi4
  Test  #68: test_obsforge_satobs_satwnd_amv_seviri_m11_script4backend
  Test  #69: test_obsforge_satobs_satwnd_amv_seviri_m11_script4backend_mpi4
```

The simplified one looks like the following for satwnd_amv_seviri:
``` 
      Start 22: test_obsforge_satobs_satwnd_amv_seviri_bufr2netcdf
 7/38 Test #22: test_obsforge_satobs_satwnd_amv_seviri_bufr2netcdf ...........   Passed   16.69 sec
      Start 23: test_obsforge_satobs_satwnd_amv_seviri_bufr2netcdf_mpi4
 8/38 Test #23: test_obsforge_satobs_satwnd_amv_seviri_bufr2netcdf_mpi4 ......   Passed    9.47 sec
      Start 24: test_obsforge_satobs_satwnd_amv_seviri_script2netcdf
 9/38 Test #24: test_obsforge_satobs_satwnd_amv_seviri_script2netcdf .........   Passed   18.98 sec
      Start 25: test_obsforge_satobs_satwnd_amv_seviri_script2netcdf_mpi4
10/38 Test #25: test_obsforge_satobs_satwnd_amv_seviri_script2netcdf_mpi4 ....   Passed   13.31 sec
      Start 26: test_obsforge_satobs_satwnd_amv_seviri_bufr4backend
11/38 Test #26: test_obsforge_satobs_satwnd_amv_seviri_bufr4backend ..........   Passed   18.95 sec
      Start 27: test_obsforge_satobs_satwnd_amv_seviri_bufr4backend_mpi4
12/38 Test #27: test_obsforge_satobs_satwnd_amv_seviri_bufr4backend_mpi4 .....   Passed   11.18 sec
      Start 28: test_obsforge_satobs_satwnd_amv_seviri_script4backend
13/38 Test #28: test_obsforge_satobs_satwnd_amv_seviri_script4backend ........   Passed   22.38 sec
      Start 29: test_obsforge_satobs_satwnd_amv_seviri_script4backend_mpi4
14/38 Test #29: test_obsforge_satobs_satwnd_amv_seviri_script4backend_mpi4 ...   Passed   16.85 sec
```
The test structure is simplified in that the test for each data type,
and each configuration only needs to be tested once because the
`bufr_comp.sh` has been modified to handle comparisons of output files
from various satellite platforms for the same sensor type. (See
[bufr-query PR #53](NOAA-EMC/bufr-query#53))

2. Enable IASI tests
    - add tests in CMakeList.txt
    - add test references (testoutput) in obsForge-0.0.0.tgz on EMCRZDM
    - add test configuration YAMLs (testinput)
- mapping file and python configuration YAMLs are added in [SPOC
PR#25](NOAA-EMC/spoc#25)

---------

Co-authored-by: Cory Martin <cory.r.martin@noaa.gov>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add the remaining marine obs spaces to the workflow

3 participants