All notable changes to this project will be documented in this file.
- ADDED Top-level function exports to avoid submodule imports
pymsis.calculate()
is the primrary entrypoint to running the MSIS model and calculating the atmosphere at the requested data points.pymsis.msis.run()
was not very descriptive and caused issues with IDL bridging into Python and wanting that name reserved. To avoid this, the function has been renamedcalculate
and is available aspymsis.calculate()
now. Thepymsis.msis.run()
is still available as an alias for now, but may be removed in the future.
- ADDED Variable enumeration for easier indexing into output arrays.
- This can be used as
pymsis.Variable.O2
for getting theO2
species index. For example,output_array[..., pymsis.Variable.O2]
.
- This can be used as
- ADDED Python 3.13 and 3.13t support
- ADDED Multithreaded support.
- The underlying MSIS libraries are not threadsafe due to the use of many global/save variables. There is a lock around the extension modules so that only one thread will be calling the routines at a time, so the Python library is safe to use in a multi-threaded context.
- MAINTENANCE Default
-O1
optimization level for all builds.- Previously, this
was only done on Windows machines. Users can change this by updating
environment variables before building with
FFLAGS=-Ofast pip install .
, but note that some machines produce invalid results when higher optimizations are used.
- Previously, this
was only done on Windows machines. Users can change this by updating
environment variables before building with
- PERFORMANCE Cache options state between subsequent runs.
- Avoid calling initialization switches unless they have changed between runs
- PERFORMANCE Speed up numpy function calls.
- Change some numpy broadcasting and comparisons to speed up the creation of input and output values.
- MAINTENANCE Add dynamic versioning to the project based on git tags and commits.
- This removes the need to manually bump the version numbers and metadata before releasing the project which led to some errors previously.
- DEPRECATED Calling
msis00f.pytselec()
andmsis00f.pygtd7d
functions.- Use
msis00f.pyinitswitch
andmsis00f.pymsiscalc
instead. - This helps with standardization across the extension modules. These extension
should rarely be used by external people and
pymsis.calculate()
is a better entry to using the package.
- Use
- MAINTENANCE Add MacOS arm64 wheels (Apple Silicon).
- FIX Obvious solar radio burst F10.7 data is automatically removed.
- This applies to the default data and a warning is issued when running over these time periods.
- MAINTENANCE Python 3.10+ required.
- MAINTENANCE CelesTrak is now used as the data provider for the Ap and F10.7 values.
- This avoids data gaps and interpolation issues that were present in the source data.
- MAINTENANCE Cleanup type hints throughout the codebase.
- MAINTENANCE Updated the wrappers argument order to be the same throughout.
- This helps when called with positional vs keyword arguments.
-
ADDED Automatic download of F10.7 and ap data for users.
- This means that F10.7 and ap are optional inputs to the
pymsis.calculate()
function during historical periods and the routines will automatically fetch the proper input data.
- This means that F10.7 and ap are optional inputs to the
-
MAINTENANCE We now use meson as the build system to compile the extension modules.
- ADDED MSIS2.1, a new version of MSIS.
- This is the first version that contains NO.
- This is the new default used in
pymsis.calculate()
.
- MAINTENANCE Added more wheels to the release and CI systems for testing.
- ADDED Created a DOI for the project: https://doi.org/10.5281/zenodo.5348502.
- ADDED Handle flattened input arrays directly (satellite flythroughs).
- ADDED First release with wheels for all platforms.