Commit 3825939c authored by Jonathan  Minz's avatar Jonathan Minz
Browse files

Edit CF-Compliance-Checker.md

parent c6af9557
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -15,6 +15,40 @@ It uses the [CF-Checker](https://github.com/cedadev/cf-checker) utility (`cfchec
- Optionally exports the summary to **CSV** or **Excel**, with timestamped filenames for reproducibility.  
- The summary table includes a **Folder** column to show the subdirectory of each file.  

---

## A note on the use of the CF Checker

The **CF-Checker** tool validates NetCDF datasets against **CF Conformance Requirements v1.8**.  
The latest available version of the requirements is **v1.12** ([CF Conformance Requirements and Recommendations v1.12](https://cfconventions.org/Data/cf-conventions/cf-conformance-requirements-and-recommendations-1.12.pdf)).  

The differences between v1.8 and v1.12 are relatively small, but important to be aware of.  
Below is a comparison of the **minimum requirements**:

| Topic                  | CF-1.8 Requirements | CF-1.12 Requirements | Change |
|-------------------------|----------------------|-----------------------|--------|
| **File suffix**        | File must have `.nc`. | Same as v1.8. | No change |
| **Dimensions**         | All dimensions of a variable must have different names. | Same as v1.8. | No change |
| **Variable naming**    | No explicit restriction. | A 1-D string variable must not have the same name as its dimension (to avoid ambiguity with coordinate vars). | **New in 1.12** |
| **String attributes**  | CF attributes that take string values must be stored as 1-D char arrays. | Same as v1.8. | No change |
| **Fill / Missing**     | `_FillValue` and `missing_value` must match variable type. | Same as v1.8. | No change |
| **Valid range**        | `valid_range` must not coexist with `valid_min` / `valid_max`. | Same as v1.8. | No change |
| **actual_range**       | Must match type of variable. Must be consistent with valid_range/min/max. | Must match type (or scaled type if `scale_factor`/`add_offset`). Must have exactly 2 elements (min, max of valid data). Must not exist if all values are missing. If present with valid_range/min/max, they must be consistent. | **Stricter in 1.12** |
| **Conventions attr.**  | Global `Conventions` attribute must be a string containing `"CF-1.8"`. | Same, but must contain `"CF-1.12"`. Can list multiple convention names separated by space or commas. | Updated version |
| **File content attrs.** | `title`, `history`, `institution`, `source`, `references`, `comment` must be strings. | Same requirement, clarified scope. | Minor clarification |
| **External variables** | Not defined. | New global attribute `external_variables` lists variables not present in the file. | **New in 1.12** |
| **Groups (NetCDF4)**   | Not covered. | `Conventions` and `external_variables` must not appear in non-root groups. | **New in 1.12** |

---

📌 **Summary:**  
While the CF-Checker ensures compliance with **CF-1.8**, users aiming for **CF-1.12** compliance should pay special attention to:  
- `actual_range` (stricter definition),  
- variable naming rules,  
- use of `external_variables`, and  
- restrictions in NetCDF4 groups.  


---

## Requirements