Skip to main content

License: AGPL v3 Tests linting - Ruff format - Black types - mypy

GasFlux

pip install gasflux
gasflux --help

GasFlux is a tool for processing atmospheric gas concentration data and windspeeds into mass emissions fluxes, with principle applications to greenhouse gas measurement and vulcanology. Currently it works with in situ ("sniffing") data from UAVs and other aircraft, using mass balance as a paradigm and kriging as an interpolation strategy, but the intention is to expand this to other kinds of sampling and processing strategies, such as open-path and tracer methods.

It is released under the AGPLv3 license as a free and open-source project - comments, pull requests, issues and co-development are warmly welcomed. Currently development is co-ordinated by Jamie McQuilkin (@pipari) at the UAV Greenhouse Gas group at the University of Manchester.

User Installation

The package is available on PyPi and can be installed using pip install gasflux.

Usage

The package interface is in active development. Currently it ingests a data csv file (or folder containing only data csv files) and a config file that dictates the parameters of the analysis.

This is done through the syntax gasflux process <input_file> --config <config_file>.

The config file

The default gasflux_config.yaml is located in the package source. It can be generated in a supplied directory using gasflux generate-config <path>. If a directory is supplied to gasflux process and a config is not also explicitly supplied, the package will look for one config file in that directory or its subdirectories and attempt to process all csv files in that directory and subdirectories. If multiple or no config is found, it will raise an error. If supplying a single csv file for processing (rather than a directory), only the parent directory will be searched for config files (not its subdirectories).

Through it, variables can be passed to the scikit-gstat package used for kriging and the pybaselines package used for background correction.

The data file

Input data files must be csv-type (i.e. readable by pandas) and have the following columns (all lower case):

  • timestamp (datetime)
  • latitude (float)
  • longitude (float)
  • height_ato (float) - height above takeoff
  • windspeed (float) - in m/s, as measured or inferred at each measurement point
  • winddir (float) - in standard 0-360 degree format, relative to the earth
  • temperature (float) in degrees celsius
  • pressure (float) - in hPa/mBar

At least one gas concentration in ppm is also required. The column name should be the gas name, e.g. co2, ch4, n2o, etc.

The gas should be entered in the gasflux_config.yaml file along with a range of concentrations in ppmv, e.g.:

gases:
  ch4: [1.5, 500]
  co2: [300, 5000]
  c2h6: [-0.5, 10]

Ensuring input data are sufficient and correctly formatted is non-trivial and important, but is left to the user. Data sources vary enormously so it is difficult to generalise this part of the analysis - in many cases these will be a mix of flight logs, GPS, one or more anemometers, one or more gas sensors, a thermometer, hygrometer, barometer.

Synchronisation and fusion of these data sources is important and should be given great attention - there are several ways to do this, including GPS logging on each sensor, recording everything on a single device, or NTP server synchronisation. Care should also be taken to avoid loss of data through resampling or interpolation.

One way to convert encoded DJI logs is to use djiparsetext, a C++ library available on github here and documented here.

Development

Installation

To install, clone the repository using e.g. git clone and use pip install -e . to install it as an editable python package.

It's highly recommended to use a virtual environment to manage dependencies. If you're not currently using one, virtualenvwrapper is a good option.

Then run pip install -r requirements.txt and pip install -r dev-requirements.txt to install the required dependencies.

User requirements.txt is generated using pigar generate rather than pip freeze.

Metadata

Release files for gasflux 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gasflux 0.2.2
File Size Uploaded
gasflux-0.2.2.tar.gz 290.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gasflux 0.2.2
File Interpreter ABI Platform
gasflux-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 575.2 kB

Release files / gasflux-0.2.2.tar.gz

Download URL gasflux-0.2.2.tar.gz
Size 290.9 kB
Tags Source
SHA-256 checksum
How to use checksums
bbcb4260c95220a154c1c75def986af75cd1cbb19ab7d51fc554e08907687b64
BLAKE2b-256 checksum
How to use checksums
f5469db5c4cd7756a291191e6aefbeee1061a9f60557c40e77cc946fbf6ead3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 23, 2025.

Transparency log

Release files / gasflux-0.2.2-py3-none-any.whl

Download URL gasflux-0.2.2-py3-none-any.whl
Size 284.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
af3ee7b96a2a7706f78e7f97fe7828ecbae67538e8302f2bd60cf6bbe3919e75
BLAKE2b-256 checksum
How to use checksums
0fb58c169ed0d6e07c6d749dddce4a6e4853f463b80360001f8e2e432bd5210d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 23, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page