Difference between revisions of "CF checker"
P.petrelli (talk | contribs) |
P.petrelli (talk | contribs) |
||
Line 12: | Line 12: | ||
Using it is very simple, just load the module | Using it is very simple, just load the module | ||
− | + | '''$ module use /g/data3/hh5/public/modules''' | |
− | ''' | + | '''$ module load conda/analysis3''' |
You can now call the checker on a netcdf file: | You can now call the checker on a netcdf file: | ||
− | ''' | + | '''$ cchecker.py test_file.nc ''' |
− | '''Output:''' | + | '''Output:''' |
+ | |||
+ | Running Compliance Checker on the datasets from: ['test_file.nc']<br/> --------------------------------------------------------------------------------<br/> IOOS Compliance Checker Report <br/> acdd:1.3 <br/> [http://wiki.esipfed.org/index.php?title=Category:Attribute_Conventions_Dataset_Discovery http://wiki.esipfed.org/index.php?title=Category:Attribute_Conventions_Dataset_Discovery]<br/> --------------------------------------------------------------------------------<br/> Corrective Actions <br/> test_file.nc has 4 potential issues | ||
<br/> Highly Recommended <br/> --------------------------------------------------------------------------------<br/> Global Attributes<br/> * Conventions does not contain 'ACDD-1.3'<br/> * summary not present<br/> ......... | <br/> Highly Recommended <br/> --------------------------------------------------------------------------------<br/> Global Attributes<br/> * Conventions does not contain 'ACDD-1.3'<br/> * summary not present<br/> ......... | ||
Line 26: | Line 28: | ||
As you can see from the example, without passing any option the tool checks for ACDD 1.3 (the latest version) compliance. The report is printed out to screen. | As you can see from the example, without passing any option the tool checks for ACDD 1.3 (the latest version) compliance. The report is printed out to screen. | ||
− | ''' | + | '''$ cchecker --help''' |
will list all the available options, the main ones are: | will list all the available options, the main ones are: | ||
Line 44: | Line 46: | ||
'''-o/--output''' optional file/s to redirect output to. | '''-o/--output''' optional file/s to redirect output to. | ||
− | + | === '''Checking multiple files''' === | |
− | '''cchecker.py -t=cf -c strict -o cf_test.txt test_data/test*.nc ''' | + | You can also run the checker on several files at one time. For example : |
+ | |||
+ | '''$ cchecker.py -t=cf -c strict -o cf_test.txt test_data/test*.nc ''' | ||
In this case I tested all the files matching <test_data/test*.nc> against the CF standards, I applied the standard at a <strict> level and the report will is written to the file cf_test.txt. | In this case I tested all the files matching <test_data/test*.nc> against the CF standards, I applied the standard at a <strict> level and the report will is written to the file cf_test.txt. | ||
− | When I test mutiple files the tools report for each | + | When I test mutiple files the tools print a report for each file, if you have a lot of files you will end up with a long and repetitive report. |
We created a simple python script you can run to summarise the report so you get each error or warning reported only once. | We created a simple python script you can run to summarise the report so you get each error or warning reported only once. | ||
Line 62: | Line 66: | ||
First run the checker generating a json output, for example: | First run the checker generating a json output, for example: | ||
− | + | '''$ cchecker.py -t=cf -c strict -f json_new -o cf_test.json test_data/test*.nc ''' | |
Then pass the json file as input to this script | Then pass the json file as input to this script | ||
− | + | '''$ python parse_checker.py test.json''' | |
+ | |||
+ | '''Output:''' | ||
− | + | Results for cf checks<br/> 3 files were checked | |
High priority results | High priority results | ||
Line 80: | Line 86: | ||
If you want to save the summary in a file just redirect the output | If you want to save the summary in a file just redirect the output | ||
− | + | '''$ python parse_checker.py test.json > checks_summary.txt''' |
Revision as of 17:54, 11 November 2019
There are a few options when it comes to check if your files are CF compliant. You can use online checkers as these:
https://compliance.ioos.us/index.html http://cfconventions.org/compliance-checker.html
You upload your netcdf file on the web and you get back a report.
This is fine if you have one small file but if you want to check a lot of files you have to use a checker on yuor computer. We installed the ioos checker in our conda environments. The ioos checker is python based, as well as checking for CF conventions it works also with the ACDD conventions. NCI uses this checker and in fact they require both conventions to be applied to the data they publish.
Running ioos on raijin
Using it is very simple, just load the module
$ module use /g/data3/hh5/public/modules
$ module load conda/analysis3
You can now call the checker on a netcdf file:
$ cchecker.py test_file.nc
Output:
Running Compliance Checker on the datasets from: ['test_file.nc']
--------------------------------------------------------------------------------
IOOS Compliance Checker Report
acdd:1.3
http://wiki.esipfed.org/index.php?title=Category:Attribute_Conventions_Dataset_Discovery
--------------------------------------------------------------------------------
Corrective Actions
test_file.nc has 4 potential issues
Highly Recommended
--------------------------------------------------------------------------------
Global Attributes
* Conventions does not contain 'ACDD-1.3'
* summary not present
.........
As you can see from the example, without passing any option the tool checks for ACDD 1.3 (the latest version) compliance. The report is printed out to screen.
$ cchecker --help
will list all the available options, the main ones are:
-t/--test to choose the test;
ie.e -t=cf will test the file against the latest available verison of the CF conventions.
-c /-- criteria set the level to which run the test;
possible options are < lenient, normal, strict >, default to <normal>
-f/--format the output format;
possible options are < text, html, json, json_new >
-o/--output optional file/s to redirect output to.
Checking multiple files
You can also run the checker on several files at one time. For example :
$ cchecker.py -t=cf -c strict -o cf_test.txt test_data/test*.nc
In this case I tested all the files matching <test_data/test*.nc> against the CF standards, I applied the standard at a <strict> level and the report will is written to the file cf_test.txt.
When I test mutiple files the tools print a report for each file, if you have a lot of files you will end up with a long and repetitive report.
We created a simple python script you can run to summarise the report so you get each error or warning reported only once.
You can acces the script here:
https://gist.github.com/paolap/e37447c9c00e8894437b13a76021c857
This script create a summary of CF/ACDD tests run by the ioos checker on multiple files
First run the checker generating a json output, for example:
$ cchecker.py -t=cf -c strict -f json_new -o cf_test.json test_data/test*.nc
Then pass the json file as input to this script
$ python parse_checker.py test.json
Output:
Results for cf checks
3 files were checked
High priority results
3 files failed:
�2.2 Data Types: The variable time failed because the datatype is int64
3 files failed:
�3.3 Standard Name: Attribute long_name or/and standard_name is highly recommended for variable time
...
If you want to save the summary in a file just redirect the output
$ python parse_checker.py test.json > checks_summary.txt