TECA 4.0.0
Documentation
- A major overhaul of the command line application section of the user guide including the addition of examples.
- Publish batch scripts illustrating running TECA at scale in the new TECA_examples repo.
- Giving tutorials and publishing the materials in the new TECA_tutorials repo
- Updates to the installation section of the TECA User's Guide](https://teca.readthedocs.io/en/latest/installation.html)
Data Model Improvements
- Added support for Arakawa C Grids in
teca_arakawa_c_grid
- Added support for logically Cartesian so called curvilinear grids in
teca_curvilinear_mesh
- Refactored mesh related class hierarchy so that common codes such as array accessing and I/O live in
teca_mesh
- Added support for face and edge centered mesh based data.
I/O Capabilities
- Added reader for WRF simulation
teca_wrf_reader
- Add support for writing logically Cartesian curvilinear meshes in
teca_cartesian_mesh_writer
. - Added a new NetCDF based output format for tabular data to the
teca_table_writer
. - Added support for reading tabular CSV files to the
teca_table_reader
. This enables the tabular outputs such as TC tracks etc saved from TECA apps to be stored in a format ingestible by other tools such as Python and Excel without the need to convert from TECA's internal binary format. - Added versioning and error checking to TECA's internal binary serialization format across all datasets. This enables us to catch version differences and handle bad or corrupted files gracefully.
- use of NetCDF parallel 4 (i.e. MPI collective I/O) for writing results. this enables the use of any number of files with any number of ranks.
Execution Patterns
- Implement a new streaming mode reduction where data is incrementally reduced as it becomes available. This parallelizes the reduction step and reduces the memory overhead.
- Introducing a new MPI parallel approach to scan the time axis. This has substantial benefit when there are a large number of files.
- expose MPI aware thread load balancing to Python. This was used in the
teca_pytorch_algorithm
to automatically load balance the OpenMP backend of PyTorch. - implement GPU load balancing strategy in the
teca_pytorch_algorithm
. - Enable process groups to be excluded from execution. This lets a pipeline run on a subset of MPI_COMM_WORLD.
Algorithmic Capabilities
- Added
teca_pytorch_algorithm
a base class that handle tasks common to interfacing to PyTroch when developing Machine Learning based detectors. - Added
teca_deeplab_ar_detect
a new PyTorch based Machine Learning based AR detector. - Added
teca_valid_value_mask
an algorithm that generates a mask identifying the presence of NetCDF _FillValue values in arrays. Down stream algorithms use the mask to handle _FillValue's in an algorithm appropriate manner. - Added
teca_temporal_reduction
an algorithm that implements transformations from one time resolution to another. The implementation includes min, max, and average operators and supports daily, monthly, and seasonal intervals. - Added
teca_vertical_reduction
an algorithm that converts 3D data to 2D by applying a reduction in the vertical spatial dimension. This is a base class that contains code common to vertical reductions. - Added
teca_integrated_vapor_transport
a vertical reduction that computes IVT from horizontal wind vector and specific humidity. - An improved floating point differencing algorithm was developed and a number of codes were updated to use it.
Command Line Applications
- Added
teca_integrated_vapor_transport
command line application for computing IVT. - Added
teca_restripe
command line application for re-organizing NetCDF datasets. - Added
teca_deeplab_ar_detector
command line application detecting AR's using machine learning. - Integrated IVT calculations into the
teca_nayesian_ar_detector
. - Normalized names and meaning of command line options across command line applications
Python Capabilities
- A polymorphic redesigned the
teca_python_algorithm
makes it easier to use. - Handle numpy scalar types
- Expose more features such as MPI aware thread load balancing, calendaring, profiling, and file manipulation utilities.
Testing
- Added testing infrastructure and tests for command line applications
- Deployed testing on Ubuntu 18.04, Fedora 31, Fedora 32, and Mac OS with xcode 12.2.
Bug fixes
More than 50 bug fixes were reported.