Quality Control tooling associated with the CIM

Brief description of the CIM quality control information architecture

Schematic Overview

Key UML classes

to be added

text to be added

Tooling for CIM based Q.C.

There are two main sets of code associated with managing quality control descriptions and reports: there is
  • a QC portal (qcapp), which provides
    • a human GUI for managing and editing CIM quality control documents (and in particular, describing measures).
    • a service interface for code to post reports against CIM measures.
    • an atom feed to expose QC documents in CIM XML.
  • a QC library (qclib), which provides python methods and a command line interface, to allow a python script (in the first instance) or a script in another language (in the second) to post to a running QC portal instance the content needed to create CIM reports against measures which are already defined therein.

Setting up and testing a QC portal

Why? In the context of CMIP5, no one else should need to set up an operational portal - one will be enough.
However, there are two cases where setting your own up will be useful:
  • For testing and understanding how to use the qclib application. You can stand up your own qc portal, and play with it, learning what the python library does.
  • Where the number of users, and/or what they are doing, might make it difficult for one to use the official CMIP5 qc portal.


This section describes how to set up a test portal running on the local system. It is assumed you would have all the prerequisite python software, if not, you may need to setup a virtual environment and easy install some software ...

  • Checkout a copy of QualityControlTool from the metafor subversion.
  • Change directory to trunk/qcproj.
  • Issue the "python runserver" command
  • You should now be able to point a browser at http://localhost:8000/ and see a qcportal.

Setting up and using qclib

to be added.

Deployed Systems

A QC portal will be deployed by the IS-ENES team, probably at BADC. A prototype is already running.

Typical Workflow

  1. Define a measure (e.g. provide a description of what QC level 2 actually means and perhaps of what tests are done. In the context of CMIP5, this only needs to be done once!)
  2. For a given publication unit or experiment, run the DKRZ qc tooling, and produce some material which needs analysis.
  3. Make a decision about pass or fail, and then publish a report using a piece of python which exploits qclib to create a qcreport. In doing that, one might create a bunch of online resources which can then be linked to the report.
    1. More details of this tbd