<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>User-Guides | CoMet Toolkit</title><link>https://comet-toolkit.github.io/comet_website/user-guide/</link><atom:link href="https://comet-toolkit.github.io/comet_website/user-guide/index.xml" rel="self" type="application/rss+xml"/><description>User-Guides</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><image><url>https://comet-toolkit.github.io/comet_website/media/logo_hu8565871317096902300.png</url><title>User-Guides</title><link>https://comet-toolkit.github.io/comet_website/user-guide/</link></image><item><title>Getting started with CoMet</title><link>https://comet-toolkit.github.io/comet_website/user-guide/getting-started/</link><pubDate>Thu, 21 Mar 2024 00:00:00 +0000</pubDate><guid>https://comet-toolkit.github.io/comet_website/user-guide/getting-started/</guid><description>&lt;p>Welcome 👋&lt;/p>
&lt;p>In this brief guide we will walk you through the basic steps and prerequisites to get started with CoMet.&lt;/p>
&lt;h2 id="1-get-familiar-with-the-toolkit-and-its-capabilities">1.💡 Get familiar with the toolkit and its capabilities.&lt;/h2>
&lt;p>All the relevant information regarding the aims and functionality of CoMet Toolkit is outlined in the &lt;a href="https://comet-toolkit.github.io/comet_website/comet_website/about/">&lt;strong>About Section&lt;/strong>&lt;/a>.&lt;/p>
&lt;p>But, in a nutshell,&lt;/p>
&lt;blockquote>
&lt;p>CoMet stands for &lt;strong>Community Metrology Toolkit&lt;/strong> and it a set of software tools that handle, process, and store measurement data uncertainties and error-correlation information.&lt;/p>
&lt;/blockquote>
&lt;p>It accounts for case- and source-specific characteristics of the measurements, and can be used to quantify uncertainties and the uncertainty budget, create digital effects tables, and overall validate measurements.&lt;/p>
&lt;p>At this time, there are three individual tools:&lt;/p>
&lt;pre>&lt;code>1. obsarray
2. punpy
3. comet_maths
&lt;/code>&lt;/pre>
&lt;p>but more modules are planned to be developed and included in the future. For more detail, refer to the &lt;a href="https://comet-toolkit.github.io/comet_website/comet_website/#tools">&lt;strong>Tools Section&lt;/strong>&lt;/a>.&lt;/p>
&lt;h2 id="2--characterise-the-datameasurements-that-require-the-uncertainty-propagation">2. 🗃️ Characterise the data/measurements that require the uncertainty propagation.&lt;/h2>
&lt;p>The main purpose of these tools, is to propagate uncertainties. To do that, you must have an overall understanding of the type of data/measurements you are working with.&lt;/p>
&lt;p>For a general approach on determining an uncertainty budget, we refer to the 5-step QA4EO approach. See &lt;a href="https://comet-toolkit.github.io/comet_website/user-guide/theory/QA4EO">this page&lt;/a> in our theory section, or the &lt;a href="https://qa4eo.org/docs/3_Process_Document.pdf" target="_blank" rel="noopener">QA4EO process document&lt;/a>.&lt;/p>
&lt;p>To help you identify all the relevant information from your dataset, we have compiled a list of relevant questions and tips.&lt;/p>
&lt;h3 id="-general">🗸 General&lt;/h3>
&lt;ul>
&lt;li>❔ What kind of data do you have?&lt;/li>
&lt;li>❔ Does it require any pre-processing or filtering?&lt;/li>
&lt;li>❔ How many datapoints do you have? Is the data memory-heavy?&lt;/li>
&lt;/ul>
&lt;h3 id="-quantifying-uncertainties-on-input-quantities">🗸 Quantifying uncertainties on input quantities&lt;/h3>
&lt;ul>
&lt;li>❔ Can you list all the input quantities of your measurements?&lt;/li>
&lt;li>❔ Can you identify all the error sources?&lt;/li>
&lt;li>There are three types of errors, each with their own characteristics:
&lt;ol>
&lt;li>Random&lt;/li>
&lt;li>Systematic&lt;/li>
&lt;li>Structured&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>❕ Typically, each of the input quantities will be affected by &lt;strong>one or more&lt;/strong> error effect!&lt;/p>
&lt;h3 id="-defining-measurement-function">🗸 Defining measurement function&lt;/h3>
&lt;ul>
&lt;li>❔ What is the analytic expression (i.e. measurement function) of your data?&lt;/li>
&lt;li>❔ Do you have a more complex processing chain using external software?&lt;/li>
&lt;li>❔ Can your measurement function be written as a Python function that has the input quantities as arguments, and returns the measurand?&lt;/li>
&lt;/ul>
&lt;p>Read more about the importance and functionality of &lt;strong>measurement functions&lt;/strong> in our page on &lt;a href="https://comet-toolkit.github.io/comet_website/user-guide/theory/processing-chains/">&lt;strong>propagating uncertainties through a measurement function&lt;/strong>&lt;/a>.&lt;/p>
&lt;h3 id="-determining-error-correlation">🗸 Determining error correlation&lt;/h3>
&lt;p>Once you have identified the various errors and their types, that are present in your measurements, it&amp;rsquo;s important to consider how these values and errors correlate with one another.&lt;/p>
&lt;p>As defined by this FIDUCEO article on &lt;a href="https://research.reading.ac.uk/fiduceo/archive/tutorials/the-origin-of-error-correlation/" target="_blank" rel="noopener">&amp;ldquo;The origin of error correlation&amp;rdquo;&lt;/a>,&lt;/p>
&lt;blockquote>
&lt;p>Correlation is a statistical measure of how two, or more, variables vary together.&lt;/p>
&lt;/blockquote>
&lt;p>To learn more about error correlation structures and examples in the context of Earth Observations, refer our page on &lt;a href="https://comet-toolkit.github.io/comet_website/user-guide/theory/error_correlation">error correlation and how to store it&lt;/a>.&lt;/p>
&lt;h2 id="3--identify-similarities-between-your-specific-requirements-and-the-available-examples">3. 🧾 Identify similarities between your specific requirements and the available examples.&lt;/h2>
&lt;ul>
&lt;li>Look through the available &lt;a href="https://comet-toolkit.github.io/comet_website/comet_website/user-guide/examples/">examples&lt;/a> and documentation.&lt;/li>
&lt;li>Plan out how the toolkit can be applied to your specific case study.&lt;/li>
&lt;li>❔ Which tools and in what order will you use?&lt;/li>
&lt;/ul>
&lt;h2 id="4--install-the-tools">4. 🖥️ Install the tools&lt;/h2>
&lt;p>All the available tools are available on &lt;a href="https://github.com/comet-toolkit" target="_blank" rel="noopener">GitHub&lt;/a> and installable via pip:&lt;/p>
&lt;pre>&lt;code>- pip install comet_maths
- pip install punpy
- pip install obsarray
&lt;/code>&lt;/pre>
&lt;p>&lt;em>Installing &lt;strong>punpy&lt;/strong> will automatically install comet-maths and obsarray.&lt;/em>&lt;/p>
&lt;h2 id="5--perform-the-uncertainty-estimation-and-interpret-the-results">5. ✔️ Perform the uncertainty estimation and interpret the results.&lt;/h2>
&lt;p>After defining a measurement function, installing and importing all the relevant packages and data, it&amp;rsquo;s time to benefit from the power of CoMet!&lt;/p>
&lt;h3 id="-method-breakdown">🗸 Method breakdown&lt;/h3>
&lt;p>A general overview of the various capabilities and methods are compiled bellow.&lt;/p>
&lt;ul>
&lt;li>store uncertainty and error correlation information
&lt;ol>
&lt;li>machine readable digital effects tables&lt;/li>
&lt;li>UNC specification&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Propagate uncertainties
&lt;ol>
&lt;li>🎲 Monte Carlo (MC)&lt;/li>
&lt;li>⚖️ Law of Propagation of Uncertainty (LPU)&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Interpolate data &amp;amp; uncertainties
&lt;ol>
&lt;li>Linear&lt;/li>
&lt;li>Quadratic&lt;/li>
&lt;li>Cubic&lt;/li>
&lt;li>Gaussian Process Regression (GPR)&lt;/li>
&lt;li>Extrapolate data&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;p>&lt;em>Several of the methods listed above apply to more than one of the applications. For more information refer to &lt;a href="https://comet-toolkit.github.io/comet_website/comet_website/user-guide/examples/">examples&lt;/a>.&lt;/em>&lt;/p>
&lt;h2 id="6--advanced-use">6. 📈 Advanced use.&lt;/h2>
&lt;p>In this section, we have highlighted certain tips for advanced use of the toolkit.&lt;/p>
&lt;h3 id="-managing-memory-and-runtime">🗸 Managing memory and runtime&lt;/h3>
&lt;p>Certain products may have large RAM requirements, and the MC approach that is often used in CoMet can increase the RAM and runtime requirements by one or more orders of magnitude.&lt;/p>
&lt;p>There are ways to manage memory and runtime, as described in the &lt;a href="https://punpy.readthedocs.io/en/latest/content/punpy_memory_and_speed.html" target="_blank" rel="noopener">punpy documentation&lt;/a>.&lt;/p>
&lt;p>For example, often storing the error correlation between all the measurements along all dimensions in a dataset is often prohibitively memory intensive.
Instead, it is usually possible to store the error correlation separately between different dimensions.&lt;/p>
&lt;p>E.g. the &lt;strong>HYPERNETS L2A&lt;/strong> surface reflectance data, has a wavelength and series dimension for which the error correlation are stored separately.&lt;br>
When propagating this information, using error correlation dictionaries can be useful, (see e.g. the end of &lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/main/hypernets_surface_reflectance.ipynb" target="_blank" rel="noopener">this jupyter notebook example&lt;/a>).&lt;/p></description></item><item><title>Examples</title><link>https://comet-toolkit.github.io/comet_website/user-guide/examples/</link><pubDate>Tue, 19 Mar 2024 00:00:00 +0000</pubDate><guid>https://comet-toolkit.github.io/comet_website/user-guide/examples/</guid><description>&lt;p>Below, we have compiled a list of relevant examples and linked their corresponding jupyter notebooks with detailed commentary. All the available tools can be used on their own or in conjunction with other modules. For additional information regarding individual packages, refer to the signposted sources throughout the website.&lt;/p>
&lt;h2 id="-punpy-as-a-standalone-package">📦 Punpy as a Standalone Package&lt;/h2>
&lt;h3 id="-general-use-cases">🗸 General use cases&lt;/h3>
&lt;p>An example showcasing the capabilitites of the &lt;a href="https://comet-toolkit.github.io/comet_website/tools/punpy">punpy&lt;/a> package can be found &lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/main/punpy_standalone_example_overview.ipynb" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>This jupyter notebook covers the following concepts:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Calibration&lt;/strong> of L0 data to L1&lt;/li>
&lt;li>Propagation of various types of uncertainties:
- &lt;strong>uncorrelated&lt;/strong> (random) uncertainties
- &lt;strong>fully correlated&lt;/strong> (systematic) uncertainties
- uncertainties associated with &lt;strong>structured errors&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Correlation&lt;/strong> along one, two, or more dimensions of a variable&lt;/li>
&lt;li>&lt;strong>Multidimensional&lt;/strong> input quantities, where a certain correlation structure is known along one dimension, while the other dimensions are random or systematic.&lt;/li>
&lt;/ol>
&lt;h3 id="-punpy-vs-nist">🗸 Punpy vs. NIST&lt;/h3>
&lt;p>We also have compiled some validation examples &lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/main/NIST_example.ipynb" target="_blank" rel="noopener">here&lt;/a>, where the &lt;a href="https://comet-toolkit.github.io/comet_website/comet_website/tools/punpy/">punpy&lt;/a> results are compared against the NIST uncertainty machine.&lt;/p>
&lt;p>Here, we have replicated the following &lt;strong>examples&lt;/strong> available on the NIST uncertainty machine &lt;a href="https://uncertainty.nist.gov/NISTUncertaintyMachine-UserManual.pdf" target="_blank" rel="noopener">user manual&lt;/a>.&lt;/p>
&lt;ol>
&lt;li>End-gauge calibration&lt;/li>
&lt;li>Dynamic viscosity&lt;/li>
&lt;li>Resistance&lt;/li>
&lt;li>Stefan-Boltzmann constant&lt;/li>
&lt;li>Voltage reflection coefficient&lt;/li>
&lt;/ol>
&lt;p>❕ All the obtained results are fully consistent with the results of the NIST uncertainty machine.&lt;/p>
&lt;h2 id="-digital-effects-tables-det">📋 Digital Effects Tables (DET)&lt;/h2>
&lt;h3 id="-defining-det">🗸 Defining DET&lt;/h3>
&lt;p>A notebook containing examples that define &lt;strong>digital effects tables&lt;/strong> is available &lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/main/defining_digital_effects_table.ipynb" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>It covers the following concepts:&lt;/p>
&lt;ul>
&lt;li>How &lt;a href="https://comet-toolkit.github.io/comet_website/tools/obsarray">obsarray&lt;/a> can be used as a templater for efficiently making &lt;strong>xarray datasets&lt;/strong> (both with and without uncertainties)?&lt;/li>
&lt;li>How, using &lt;a href="https://comet-toolkit.github.io/comet_website/tools/obsarray">obsarray&amp;rsquo;s&lt;/a> &lt;strong>special variable types&lt;/strong> (uncertainties and flags), datasets including detailed uncertainty and covariance information as well as quality flags can be created?&lt;/li>
&lt;li>An example for a digital effects table quantifying the uncertainties and error-correlation of the gas temperature, pressure, and the number of moles. Here, the uncertainties can be efficiently and easily propagated through a &lt;strong>measurement function&lt;/strong> using &lt;a href="https://comet-toolkit.github.io/comet_website/tools/punpy">punpy&lt;/a> (&lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/master/training/punpy_digital_effects_table_example.ipynb" target="_blank" rel="noopener">learn more&lt;/a>).&lt;/li>
&lt;/ul>
&lt;h3 id="-utilising-obsarray--punpy">🗸 Utilising obsarray &amp;amp; punpy&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>An example showcasing the application of &lt;a href="https://comet-toolkit.github.io/comet_website/tools/obsarray">obsarray&lt;/a> can be found &lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/main/obsarray_example.ipynb" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>An example of using &lt;a href="https://comet-toolkit.github.io/comet_website/tools/punpy">punpy&lt;/a> with digital effects tables created with &lt;a href="https://comet-toolkit.github.io/comet_website/tools/obsarray">obsarray&lt;/a> is explained &lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/main/defining_digital_effects_table.ipynb" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>This notebook outlines how digital effects tables that are created with &lt;a href="https://comet-toolkit.github.io/comet_website/tools/obsarray">obsarray&lt;/a>, can be propagated through a measurement function using &lt;a href="https://comet-toolkit.github.io/comet_website/tools/punpy">punpy&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>At first, we &lt;strong>calculate the uncertainties&lt;/strong> in a volume of gas, using the ideal gas law and a digital effects table.&lt;/li>
&lt;li>Then we &lt;strong>quantify the uncertainties&lt;/strong> and &lt;strong>error-correlation&lt;/strong> of the gas temperature, pressure and amount of substance.&lt;/li>
&lt;/ul>
&lt;h2 id="-comet_maths-interpolation">☄️ Comet_maths interpolation&lt;/h2>
&lt;h3 id="-how-to-interpolate-data-with-uncertainties">🗸 How to interpolate data with uncertainties?&lt;/h3>
&lt;p>A jupyter notebook for &lt;strong>interpolation&lt;/strong> with uncertainties can be found &lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/main/interpolation_example.ipynb" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>This example covers the following concepts:&lt;/p>
&lt;ul>
&lt;li>Interpolation
&lt;ol>
&lt;li>Linear&lt;/li>
&lt;li>Quadratic&lt;/li>
&lt;li>Cubic&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>&lt;strong>Unknown&lt;/strong> input uncertainties (e.g. model uncertainties)&lt;/li>
&lt;li>&lt;strong>Known&lt;/strong> measurment uncertainties&lt;/li>
&lt;li>Monte Carlo uncertainty propagation&lt;/li>
&lt;li>Extrapolation&lt;/li>
&lt;li>1D interpolation along high-resolution example&lt;/li>
&lt;/ul>
&lt;h2 id="-curepy-retrieval">☄️ Curepy retrieval&lt;/h2>
&lt;h3 id="-how-to-obtain-uncertainties-for-inverse-problems">🗸 How to obtain uncertainties for inverse problems?&lt;/h3>
&lt;p>A jupyter notebook for &lt;strong>retrievals&lt;/strong> with uncertainties can be found &lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/main/curepy_example.ipynb" target="_blank" rel="noopener">here&lt;/a>.&lt;/p>
&lt;p>This example allows you to get familiar with the &lt;a href="https://comet-toolkit.github.io/comet_website/tools/curepy">&lt;strong>curepy&lt;/strong>&lt;/a> tool, and covers the following concepts:&lt;/p>
&lt;ul>
&lt;li>Propagate uncertainties through a basic inverse problem (harmonisation of two sensors).&lt;/li>
&lt;li>Pass all relevant inputs to curepy
&lt;ol>
&lt;li>Measurements&lt;/li>
&lt;li>Measurement function&lt;/li>
&lt;li>Prior&lt;/li>
&lt;li>Ancillary params&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>Run curepy retrieval to obtain state vector with uncertainties and error correlation
&lt;ol>
&lt;li>MCMC&lt;/li>
&lt;li>Optimal Estimation&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ul>
&lt;h2 id="-project-specific-examples">🗂️ Project specific examples&lt;/h2>
&lt;p>In this section, we have compiled a list of external projects and examples that have utilised the CoMet Toolkit.&lt;/p>
&lt;h3 id="-hypernets-example">🗸 &lt;strong>HYPERNETS example&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>🛰️ LANDHYPERNET flags and uncertainty propagation (through band integration over S2 SRF) is available &lt;a href="https://colab.research.google.com/github/comet-toolkit/comet_training/blob/main/hypernets_surface_reflectance.ipynb" target="_blank" rel="noopener">here&lt;/a>.&lt;/li>
&lt;/ul></description></item></channel></rss>