A Sparse Matched Filter Algorithm for Atmospheric Trace Gas Concentration Estimation
Project description
MAG1C: Matched filter with Albedo correction and reweiGhted L1 sparsity Code
Fast concentration estimation and detection of trace gas absorption from imaging spectrometer data.
Citation
If you use this tool in a program or publication, please acknowledge our paper about this method:
Foote, M. D., et al. "Fast and Accurate Retrieval of Methane Concentration from Imaging Spectrometer Data Using Sparsity Prior" IEEE Transactions on Geoscience and Remote Sensing. 2020.
- bibTeX:
@ARTICLE{9034492, author={M. D. {Foote} and P. E. {Dennison} and A. K. {Thorpe} and D. R. {Thompson} and S. {Jongaramrungruang} and C. {Frankenberg} and S. C. {Joshi}}, journal={IEEE Transactions on Geoscience and Remote Sensing}, title={Fast and Accurate Retrieval of Methane Concentration From Imaging Spectrometer Data Using Sparsity Prior}, year={2020}, volume={}, number={}, pages={1-13}, keywords={Airborne Visible InfraRed Imaging Spectrometer-Next Generation (AVIRIS-NG);greenhouse gas emissions;methane mapping;plume detection.}, doi={10.1109/TGRS.2020.2976888}, ISSN={1558-0644}, month={},}
Get the article from:
- IEEE DOI: 10.1109/TGRS.2020.2976888
- arXiv: 2003.02978
Installation
pip install mag1c
Requirements
mag1c depends on these software packages for math routines and data I/O.
Python 3.6 (or newer) and the following python packages and versions:
numpyspectraltorch1.3+scikit-image
GPU Processing
If available, this code uses a compatible GPU for accelerated computation. See https://pytorch.org/get-started/locally/ for details on how to install pytorch with gpu support for your system. You will then need to install the other dependencies.
The --gpu flag must be used to enable GPU acceleration.
CPU-Only
If you know that you will not use a GPU, you can install the CPU-only version of pytorch. See https://pytorch.org/get-started/locally/#no-cuda-1 for how to install the CPU-only version. At time of writing, the install command for cpu-only torch and mag1c together through pip is:
pip3 install mag1c torch==1.3.1+cpu -f https://download.pytorch.org/whl/torch_stable.html
Advanced Installation
The simplest way to obtain this program is through pip. To get the latest release:
pip install mag1c
or, to install a specific released version:
pip install magic==x.y.z
or, to get a specific point in history directly from github:
pip install git+https://github.com/markusfoote/mag1c@tag#egg=mag1c
where tag is any tag (e.g. v1.2.0), branch name (e.g. master) or commit hash. PyPA has more detailed instructions.
This will install required dependencies (most notably, pytorch) on linux systems. For Windows, or specific installation flavors of pytorch (like CPU-only), follow your choice of instructions on PyTorch's website, then install mag1c. Mag1c is compatible with PyTorch installed through conda, just make sure you are using the environment's pip to install mag1c, and activate the conda environment whenever you wish to run mag1c.
Usage
Entrypoints
This program can be invoked in multiple ways:
python /path/to/mag1c.pyworks whenever you have a copy of themag1c.pyscript. The versioning metadata may not work well with a standalone script.python -m mag1cworks when you install the python package (i.e. viapip).mag1cis a direct entry point to the program when you install viapip.sparsemfis exactly the same asmag1c, just with a debatably-more-readable name.
Runtime Options
There are numerous options/flags that can be provided to modify processing behavior. Run mag1c --help for a full description of the available arguments.
Examples
Process a single file with defaults:
python mag1c.py /my/radiance --spec /my/target --out /some/output
Process a single file with bash variables and some custom options, including GPU:
export CUDA_VISIBLE_DEVICES=0 # Restrict processing to the first GPU in the system
RDNFILE="/path/to/my/radiance data with spaces in filename"
TEMPLATE=/path/to/my/templatespectrum
OUTPUT=/path/to/outputfile_date_time_iteration25_grouping5
GLT=/path/to/my/gltfile
python mag1c.py "$RDNFILE" --spec $TEMPLATE --out $OUTPUT --outputgeo $GLT --iter 25 --group 5 --gpu -t 2 -b16
Process all files in a folder:
TEMPLATE=/path/to/template.txt
for f in /path/to/folder/ang*_rdn_*_clip; do \
python mag1c.py "${f}" "${TEMPLATE}" "/output/folder/$(basename "${f/rdn/mag1c}")" --iter 20
done;
Process a file with detector saturation detection/masking:
For a geocorrected file:
sparsemf ${RDN_FILE} \
--out $OUTPUTFOLDER$(basename ${b/_rdn_/_ch4_cmfr_}) \
--geo ${RDN_FILE/img/glt} \
--group 1 \
--saturation \
--saturationthreshold 6.0 \
--maskgrowradius 150m \
--mingrowarea 5 \
--hfdi \
--threads 8 \
--gpu \
--no-albedo-output \
--visible-mask-growing-threshold 9.0
or for a non-geocorrected file:
sparsemf ${RDN_FILE} \
--out $OUTPUTFOLDER$(basename ${b/_rdn_/_ch4_cmfr_}) \
--outputgeo ${RDN_FILE/img/glt} \
--group 1 \
--saturation \
--saturationthreshold 6.0 \
--maskgrowradius 12px \
--mingrowarea 5 \
--hfdi \
--threads 8 \
--gpu \
--no-albedo-output \
--visible-mask-growing-threshold 9.0
Notice that the non-geocorrected file requires a maskgrowradius in pixels, as the file has no spatial metadata.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mag1c-1.2.0.tar.gz.
File metadata
- Download URL: mag1c-1.2.0.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccf56ac450418bee9624e21c3c4ae750b660513f8e9b01b03c49949d70ae6de0
|
|
| MD5 |
a1be6e7c2d8a734d6872beaf1c1b07b6
|
|
| BLAKE2b-256 |
afaec172dd46afe31576e731074a13af2999550281238bf51c752ae2fc27aa46
|
File details
Details for the file mag1c-1.2.0-py3-none-any.whl.
File metadata
- Download URL: mag1c-1.2.0-py3-none-any.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52efb85d9f7391a451337a38ce7834fa5d3685c632eeaf85ce85797628f21bdf
|
|
| MD5 |
6e401773c873f436ee0af972dc42020d
|
|
| BLAKE2b-256 |
26cac93f35423879df96518b539d0d97163ed85c45bf46ce3e232af11766cc5d
|