Releases: TCCON/py-ginput
ginput v1.3.1 release
This release improves the ergonomics of including the time-varying O2 mole fraction by providing an option to the O2MeanMoleFractionRecord
and a command line flag for the vmr
and rlvmr
subcommands to automatically download the necessary data and create/update the O2 mole fraction data file when creating .vmr
files.
ginput v1.3.0 release
This release primarily adds two new features:
- the ability to calculate a time-varying O2 mole fraction, which gets added to the
.vmr
file header. - better tracking of input met model data in the
.mod
file header.
To support the time-varying O2 mole fraction, it includes a new program that downloads Scripps O2/N2 data and NOAA global average CO2 data and calculates the yearly O2 mole fraction from them. This file is not included with ginput
, but can be obtained by running the update_fo2
subcommand of run_ginput.py
.
Other changes:
- Some type hints in
get_NOAA_flask_data
updated to be backwards compatible to at least
Python 3.7. - Small update to
mod_maker
to handle taking chemistry variables from a different version
of the GEOS files than the met variables. This will support possible TCCON reprocessing
with GEOS FP-IT met and GEOS IT CO.
ginput v1.2.0 release
This release fully handles generating priors from GEOS IT met and chemistry data. Specific changes:
- Tropospheric scaling for CO set to 1 (i.e. no scaling) when using GEOS IT chemistry files
- A new module,
ginput.priors.automation
, and the corresponding subcommand (auto
) constructed as an interface for a system that automatically runsginput
. - Functions to get information about the most recent commit for logging/file metadata have been updated to work with Git and Mercurial.
- More flexibility to print download URLs for met files to stdout instead of to a file
- New subprogram,
getnoaa
, to update the NOAA data used as input (pull request #6 by rocheseb). - Additional catch to handle missing
udunits2
system dependency when importing thewriters
module (pull request #8 by chris-msat).
ginput v1.1.5e release
During testing with GEOS IT files, we found that cases in which 3 EqL interpolators needed passed
between threads crashed due to a limit on the maximum size of data which can be passed between
threads in Python 3.6. Because upgrading to Python 3.10 will fix that issue but definitely introduce
numerical differences, this version implements a workaround in which the EqL interpolators are
saved to disk as pickle files and read in from the threads, bypassing the inter-thread object
size limit.
v1.1.8
Another minor update to address issues arising from running with GEOS IT.
- Download URLs for GEOS IT updated to latest product.
- Solves an issue running the satellite interface (
oco
,gosat
, orgeocarb
subcommands)
with 3 GEOS IT input. The interpolators created for the GEOS IT files are large enough that
three cannot be passed between threads in Python 3.6 due to a limit on the number of bytes
that the Python 3.6 multiprocessing module can pickle. This is fixed by Python 3.10 at the
latest, but getting Python 3.10 and required numerical dependencies to reproduce the Python
3.6 results to numerical precision was not possible. Therefore, as a workaround, if the
satellite interface detects that it is running on Python 3.9 or earlier, it will pickle the
interpolators as separate files and load them back in from the threads when--nprocs
is not
0.
There are two other aspects to this release:
- This is the first release that can be run on Python 3.10 and has the changes needed to run
the satellite interface with GEOS IT files. v1.1.7 didn't have those GEOS IT changes and
v1.1.5d was not compatible with Python 3.6. - The unit testing code now ignores the GINPUT_VERSION value in the
.vmr
file headers; this
saves us from needing to update the test input files with each version if there should not
be changes in the output.
ginput v1.1.5d release
mlo_smo_prep
version 1.1.0
Minor, backwards compatible, update to allow the update_hourly
subcommand to accept hourly files from alternate NOAA sites.
This change also stems from the lack of NOAA hourly data from MLO after the Mauna Loa eruption
at the end of Nov 2022. NOAA set up temporary measurements on Mauna Kea until the Mauna Loa
observatory can be reopened. This data comes with the site ID "MKO". Previously, the update_hourly
command would not allow either the hourly or monthly input files to contain site IDs other than
"MLO" or "SMO" as a protection against accidentally passing the wrong file for the wrong site.
To support MKO data, plus any potential future site shifts, this version adds two new command line
options to the update_hourly
subcommand:
--allow-alt-noaa-site
: when this flag is passed, the hourly file is allowed to have a site ID
that does not match the expected "MLO" or "SMO". That site ID will be recorded as the site ID
for the new months in the output monthly file. An error will still be raised if the input hourly
file contains multiple site IDs.--site-id-override
: allows the caller to pass a site ID to use in the output monthly file
instead of the site ID(s) found in the input hourly file. When given, the hourly file may
have multiple site IDs; they will be ignored and the site ID passed to this option will be
used instead.
The site IDs in the input monthly file are still checked, but will no longer raise an error in
any case. Instead either a warning or informational message will be logged if the site ID(s) in
the input file are do not match "MLO"/"SMO" or the override site ID. Whether a warning or
informational message is printed depends on whether --allow-alt-noaa-site
is absent or present.
Make this check a warning rather than a hard error was done because once a monthly file uses an
alternate site once, it will always have multiple site IDs going forward, which would require
passing --allow-alt-noaa-site
every time, even after the hourly file reverts back to the
expected site (MLO or SMO).
Like v1.1.5b and v1.1.5c, this version number is outside the standard semantic versioning pattern,
as it was a fix that needed to be applied to the version of ginput
used for OCO-2/3 B11 processing.
ginput v1.1.5c release
This is an out-of-sequence patch to the version of ginput used for OCO-2/3 v11 processing to fix a bug encountered when generating monthly averaged NOAA data from hourly data and all of the hourly data is flagged or otherwise unusable.
ginput v1.1.5b release
This is an out-of-sequence patch to the version of ginput used for OCO-2/3 v11 processing to support GEOS-IT files.
ginput v1.1.7 release
Installing with pip install
or python setup.py install
will now correctly copy the files in ginput/data
to the installation directory. Installing in develop mode through make install
is still the recommended way of setting up ginput
for normal use; however, if this is part of a larger project and you want the code to live alongside your other dependencies, that works now.
Two notes:
ginput
does cache look up tables in thedata
directory within the package. If you install it into your environment (rather than using develop mode), you will need to ensure that the install directory is writable by the process that will runginput
(or you disable the caching).- If installing with
python setup.py install
orpip install
, it is still recommended that you use theenvironment-py36.yml
orenvironment-py310.yml
file to install the necessary dependencies withconda
. Thesetup.py
requirements are deliberately permissive so that it can work with either the Python 3.6 or 3.10 requirements. If you rely onpip
to install the dependencies and get errors, please try to reproduce the errors in a conda environment based on theenvironment-py36.yml
orenvironment-py310.yml
file before opening an issue.
What's Changed
Full Changelog: v1.1.6...v1.1.7
ginput v1.1.6 release
This release includes (1) a license change and (2) fixes to allow ginput to run with Python 3.10.
License change The license associated with ginput has changed from LGPL to Apache 2.0. If you download this software after 8 Sept 2022, the Apache 2.0 license is in effect.
Python update The code has been updated to work with Python 3.10. If you install with make install
or ./install.sh
, a Python 3.10 conda environment is created instead of a Python 3.6 one. If you need to work with Python 3.6, the environment-py36.yml
file contains the previous 3.6 environment configuration, and can be use with conda env create -f
to manually create a Python 3.6 environment.