Recent Releases of SounderPy
SounderPy - v3.0.9
SounderPy v.3.0.9 | New features, plot improvements, minor bug fixes
The Scoop:
Additions
- Ability to plot single-site WSR-88D radar reflectivity on map inset and toggle between the single-site and CONUS mosaic reflectivity.
- Ability to plot a "boundary axis" on the hodograph (using
build_sounding()&build_hodograph()) as a simple straight, dashed line. Do so withhodo_boundarywhich must be set to a dict of two lists:{"angle":[45], "color":['blue']}-- this will plot a blue dashed line at an angle of 45 degrees from north on the hodograph. This is useful for visualizing flow relative to front or boundary. - Ability to merge two profiles together using a weighted average technique along a normalized height axis. To do so, use
.merge_profiles(profile_a, profile_b, weight_a) - Ability to smooth a single profile at a time (via simple SciPy gaussian smoother). To do so, use:
.smooth_profile(clean_data, sigma)
Changed
- Changed the
show_radarkwarg toradarin plotting functions (build_sounding(),build_hodograph()). Now, to remove the radar plot, setradar=None. Otherwise use"mosaic"or"single"to use CONUS mosaic reflectivity or single-site WSR-88D reflectivity, respectively.
Bug Fixes
- Updated colors and alphas of various aspects of the
full_sounding()for better readability when using dark mode - Created a new function to handle converting storm motion u & v to cardinal direction strings to replace existing MetPy function that sometimes results in "UND".
- Cleaned up documentation and overall repo structure
- Updated LICENSE to include SHARPpy reference
Removed
- None
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett 4 months ago
SounderPy - v3.0.8
SounderPy v.3.0.8 | Minor bug fixes
The Scoop:
Additions
- None
Changed
- None
Bug Fixes
- Corrected a bug when performing downdraft CAPE/CIN/profile calculations on ACARS profiles as discussed in #36. The calculations fail when there is insufficient data (700hPa-500hPa) on shorter ACARS profiles. As such, the calculations are now simply bypassed if the data is insufficient.
- Adjusted the warnings associated with the DCAPE/DCIN calculations to communicate the issue described above.
Removed
- None
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett 12 months ago
SounderPy - v3.0.7
SounderPy v.3.0.7 | Stepwise CAPE & CIN plot, CM1 height logic corrections, fixed PWAT formatting bug
Example of new plot:
The Scoop:
Additions
- Added stepwise CAPE and CIN plot presented by @rvanasa in #33, #34, & #35
Changed
- None
Bug Fixes
- Corrected height logic for CM1 processes in
.to_file()and.make_cm1_profile(), addedconvert_to_AGLparam to.to_file()(defaults toTrue) - Corrected stupid PWAT text formatting issue on full sounding plots when plotting CM1 data -- why that was a thing, I have no idea
Removed
- none
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett 12 months ago
SounderPy - v3.0.6
SounderPy v.3.0.6 | CM1 and WRF data processing, minor bug fixes, SounderPy Cookbook
The Scoop:
Additions
- Added
wrf_utils.pymodule &make_wrf_profile()function to process WRF output into SounderPy format - Added
cm1_utils.pymodule &make_cm1_profile()function to process CM1input_soundingfiles into SounderPy format - Updated docs to include the Beginner's SounderPy Cookbook
Changed
- Removed beta Barnes-style interpolation function for
modify_sfc(). Will rework this in future releases. - Cleaned up a few components of the docs
Bug Fixes
- Introduced pressure units check for RAP/RUC data
- Made a correction to the
to_file()function to properly output sfc values and above hgt-above-sfc values into CM1 format
Removed
- none
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett about 1 year ago
SounderPy - v3.0.5
SounderPy v.3.0.5 | CDSAPI Beta Transition; Plot Improvements; Minor bug fixes.
The Scoop:
Additions
- New text box encompassing 0-3km and 0-6km SRH & BWD, STP, SCP, 0-1 & 0-3km EHI
- Omega (vertical velocity) plots for model data
- New DCAPE (& DCIN) calculation
clean_datadictionaries now include atitlessub-dictionary that contains pre-made dynamic plot titles based on the data. This allows users to edit the titles if they wish, and it makes implementing custom data sources easier.- Surface wind speed and direction modification via
modify_sfc - Created the kwarg
clean_itfor all "get_ _data()" functions. IfFalse, the function returns the raw data file that SounderPy loads without any cleaning.
Changed
- The
modify_sfckwarg must now be of typedictinstead oflist. This allows users to modify surface temperature, dewpoint, wind speed, wind direction or any combination of the four. Ex:modify_sfc={'T':30, 'ws':15} - Changed (corrected)
to_file()CM1 output to include surface pressure, potential temperature and mixing ratio. Corrected mixing ratio units. - Refactored 'sounderpy/src/sounderpy'. Now, code for each data type retrieval is stored in separate modules (
acars_data.py, etc.). Introduced autils.pymodule for 'helper' functions - Increased required version number of the
cdsapipackage
Bug Fixes
- Introduced a function to check for, and correct, erroneous height data in University of Wyoming observed profiles
- Updated/corrected ERA5 access for new CDS API Beta
Removed
simple_sounding() has been deprecated
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett about 1 year ago
SounderPy - v3.0.4
SounderPy v3.0.4 | Plot improvements and minor bug fixes to v3.0.3
The Scoop:
Additions
- Wetbulb-0C hgt annotation and value readout
- Map inset with sounding location and MRMS mosaic radar data (when available)
- Effective Inflow Layer Kinematic values readout
- Most Unstable Max Parcel Level annotation
- Published the radar hodograph plot function
- Added a 'user modified surface' tool, allowing users to modify the surface temperature and dewpoint of a profile -- ex: kwarg
modify_sfc=[24.3, 20.1]when usingbuild_sounding()
Changed
- Improved readability of hodograph hgt markers
- Slightly adjusted some colors of readout values for improved readability
- Relaxed matplotlib upper version bound
Bug Fixes
- Implemented a fix for BUFKIT stations with names such as 'p#3' so URLs to the data won't fail
- Corrected BUFKIT forecast hour mismatch for NAM and GFS data
- Corrected the name mismatch for BUFKIT NAM3km and NAMNEST
- Corrected some calculation errors / improved calculations in the 'radar profile calc' class.
Removed
None, but simple_sounding() will be deprecated in a future release
Full Changelog: https://github.com/kylejgillett/sounderpy/compare/v3.0.3...v3.0.4
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett over 1 year ago
SounderPy - SounderPy v3.0.3
SounderPy v3.0.3 | Minor bug fixes to v3.0.2
The Scoop:
Additions
- Add gitignore, remove binary stuff from repo by @akrherz in https://github.com/kylejgillett/sounderpy/pull/21
Changed
- None.
Bug Fixes
- Plot failure when plotting custom storm motions with ACARS profiles without enough data to calculate Bunkers Storm motions. Fixed, changed a parameter to
sm_uinstead ofrm_u. - Hodograph plot mixed-layer variable set to most-unstable variables. Fixed, switched MU variables to ML variables.
Removed
None
New Contributors
- @akrherz made their first contribution in https://github.com/kylejgillett/sounderpy/pull/21
Full Changelog: https://github.com/kylejgillett/sounderpy/compare/v3.0.2...v3.0.3
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett almost 2 years ago
SounderPy - SounderPy v3.0.2
SounderPy v3.0.2 | "The Parcel Update"
The Scoop:
Additions
ecape-parcel-pyspecialized parcel calculation and plotting logic- Relative humidity w/ height annotations on 'full' sounding plot
- 6-9km kinematic parameters added to the 'kinematics' parameter print-out box on 'full' sounding and hodograph plots
- User-defined and custom storm motion support using the kwarg
storm_motion - Accept Matplotlib colormaps for composite-sounding plots using the
cmapkwarg - VAD hodograph plot function and data retrieval function added, but dependency issues exist -- full release of these features will be delayed.
Changed
- Composite-sounding plots now default to matplotlib colormap 'viridis' instead of a hard-coded list of colors. Users can still use the
color_to_usekwarg or the newcmapkwarg to override the colors used. - The thermodynamics section of the 'full' sounding plot was rearranged. 'SR-ECAPE' (SB, MU & ML) replaced the 'NCAPE' section.
- Storm motion logic was reworked in the
.calcmodule to use 'smu'/'smv' instead of 'rmu'/'rmv' so that all calculations and plotting responds to user-defined storm motion. - Some aspects of the skew-t plot layout were adjusted for improved readability. DGZ, HGZ, Max-lapse rate, and EIL annotations are now located on the left of the plot.
Bug Fixes
- Band-aid-ed missing BUFKIT dewpoints so parcel calculations stop failing on BUFKIT forecast model data
- Fixed ERA5 data parsing issue
Removed
None
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett almost 2 years ago
SounderPy - SounderPy 3.0.1
Introducing SounderPy v3.0.1
A primarily bug-fix release for v3.0.0 with a few additions for improved functionality of existing tools.
The Scoop:
Additions
- First implementation of VAD Hodograph plot function that plots NEXRAD VWP VAD data on a hodograph:
build_vad_hodograph(). Currently still in development. This tool will not yet be fully included in v3.0.1, but likely will be in the next release. - Ability to target specific RAP-RUC datasets when using
get_model_data()using thedatasetkwarg. - Ability to determine a 'box average' size when using
get_model_data()using thebox_avg_sizekwarg. See the Changed section for more info.
Changed
- Model reanalysis data now uses an 'area-average' or 'box-sounding' approach to build a vertical profile of reanalysis data. I.e., by default, a user must pass a lat/lon point to
get_model_data(), SounderPy will extract data for a 0.1x0.1 degree box and average the data together to build an averaged-point profile. Users may declare a desired box size using thebox_avg_sizekwarg.
Bug Fixes
- Corrected EIL-SRH plot on hodographs
- Corrected 0-1km Streamwise Vorticity value on sounding and hodograph plots
- Improved Freezing-Point calculation using interpolation scheme.
- Corrected last-forecast-hour BUFKIT data retrieval issue and created an error message for when an invalid forecast hour is requested.
- Corrected RAOB site ID issue -- users can now request data using a WMO ID or ICAO ID.
Removed
None
Looking ahead to the future
- IN THE WORKS: New ECAPE operations, allowing for the plotting of different ECAPE parcel traces and user-specified parcel-types
- VAD VWP Hodograph plots.
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett almost 2 years ago
SounderPy - SounderPy v3.0.0
Introducing SounderPy v3.0.0 (Pre-Release)
Summary
Version 3.0.0 of SounderPy brings exciting to features and improvements to existing functionality. This release will provide users with enhanced plotting capabilities, improved user-interface, and cleaner code overall.
Some major upgrades include... a number of new and improved plotting tools that create one-of-a-kind sounding and hodograph plots, new parameter calculations utilizing Sharrpy functionality and a new documentation site.
The Scoop:
Additions
- New plot creation abilities using the new
build_sounding()andbuild_hodograph()functions. - Composite sounding plots using the new
build_composite()function. This will allow users to analyze several profiles at once. - A 'Dark Mode' setting for sounding, hodograph, and composite plots.
- A color-blind friendly setting for sounding plots that turns the green dewpoint trace to blue.
- Redesigned package structure, including the base sounderpy.py module, a calc.py module, and a plot.py module.
- A new stand-alone documentation site that offers clear, easy-to-find documentation for SounderPy's funtionality. Available, under construction, here.
- A print out of general thermodynamic and kinematic parameters of a given profile to the console when data is retrieved by SounderPy.
Changed
- Functions
build_sounding()andbuild_hodograph()replacemetpy_sounding()andmetpy_hodograph() get_model_data()keyword argumentmethodchanged tomodel- Some warnings were changed to exceptions and other warnings were made more concise to address specific issues and improve the code's user-interface.
- Computed thermodynamic and kinematic properties of a profile were changed to the widely accepted Sharppy calculation methods. This allows for increased reliability in functioning calculations and for more parameters that can be included in plots. SounderPy now directly uses the Sharrpy package for calculations of profile properties.
Bug Fixes
- Minor bugs were addressed throughout the code. Some of these include...
+ The NWS-hosted METAR site list was removed from its online location a couple months ago. SounderPy now has its only METAR site list for finding METAR lat/lon sites.
+ Some data retrieval functions would only like station ID's in upper-case ('APX'), this bug was fixed so lines like the following will be accepted:
spy.get_obs_data('apx', '2022', '05', '20', '18')
Examples of new plots available with SounderPy functionality:
New Full Sounding Plot:
New Composite Sounding Plot using 'Dark Mode'
New Hodograph Plot in 'Dark Mode'
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett almost 2 years ago
SounderPy - SounderPy 2.0.6
SounderPy v2.0.6 will feature a few bug fixes to the plotting functions from v2.0.5.
Fixed
- Erroneous dewpoint data from the NCEP-FNL and BUFKIT archived forecasts have been removed. I.e., bad data (considered less than -130C in this case) are set to nans to improve calculations. This is considered a 'test' and may be slightly modified in later updates.
- MetPy CAPE/CIN calculations were changed from MetPy's
surface_based_cape_cin()to MetPy'scape_cin()which seems to both perform better and handle possibly erroneous data better. This was done for SB, ML & MU CAPE/CIN. - An improved way to set the temperature axis bounds was created to ensure that the profile plots somewhat in the 'middle' of the skew-t for the best possible readability.
An example of the dewpoint corrections with correct MetPy CAPE/CIN calculations:
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett about 2 years ago
SounderPy - SounderPy 2.0.6
SounderPy v2.0.6 will feature a few bug fixes to the plotting functions from v2.0.5.
Fixed
- Erroneous dewpoint data from the NCEP-FNL and BUFKIT archived forecasts have been removed. I.e., bad data (considered less than -130C in this case) are set to nans to improve calculations.
- MetPy CAPE/CIN calculations were changed from MetPy's
surface_based_cape_cin()to MetPy'scape_cin()which seems to both perform better and handle possibly erroneous data better. This was done for SB, ML & MU CAPE/CIN. - An improved way to set the temperature axis bounds was created to ensure that the profile plots somewhat in the 'middle' of the skew-t for the best possible readability.
An example of the dewpoint corrections with correct MetPy CAPE/CIN calculations:
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett about 2 years ago
SounderPy - SounderPy 2.0.5
CHANGELOG:
New Features
- Access to Aircraft Communications, Addressing and Reporting System (ACARS) vertical profile data with
acars_data()- Listing recent profiles for a given date and time:
acars_data(year, month, day, hour).list_profiles() - Getting a profile after using
.list_profiles:acars_data(year, month, day, hour).get_profile(profile)
- Listing recent profiles for a given date and time:
- NCEP FNL 0.25deg Gridded Reanalysis Dataset using the
get_model_data()function by setting themethodkwarg to 'ncep'. - Ability to output SounderPy data to a SHARPPY input file.
Changed
- Finding station lat-lon data is now condensed into a single function:
get_latlon(station_type, station_id)wherestation_typecan bebuoy,raob,igra,metar, orbufkit.- This change depreciates the following functions:
buoy_latlon(),metar_latlon(),raob_latlon(),igra_latlon(),metar_latlon()andbufkit_latlon().
- This change depreciates the following functions:
- Outputting data to a file is now condensed into a single function:
to_file(file_type, filename), wherefile_typecan becsv,cm1, orsharppy.- This change depreciates the following functions:
to_csv()andto_cm1.
- This change depreciates the following functions:
- MetPy sounding and hodograph plots are now more advanced.
Fixed
- Improved Docs
- Corrected Bufkit data output lat-lon data
EXAMPLE PLOTS:
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett over 2 years ago
SounderPy - SounderPy 2.0.4
Release number 2 of SounderPy!
- NOTE: this version of SounderPy is 2.0.4
New Features
- IGRAv2 Archive Access via
get_obs_data()-- just specify an IRGA station ID for the kwargstation! - Most-recent RAP analysis data access via
get_model_data()-- specify themethodkwarg as'rap-now' - Most-recent & archive BUFKIT data access via
get_bufkit_data()-- GFS, NAM, NAMNEST, RAP, HRRR, SREF, & HIRESW data - Ability to find a lat/lon pair of a US buoy/CMAN site --
buoy_latlon('site-id') - Ability to find a lot/lon pair for a IGRA site --
igra_latlon('site-id') - Ability to save plots to a file --
metpy_sounding(clean_data, 'save') - Ability to save parsed data as a csv --
to_csv(clean_data) - Ability to save parsed data to CM1 input file --
to_cm1(clean_data) - Ability to plot profile data on a MetPy Hodograph!
metpy_hodograph(clean_data, 'show') - GitHub Wiki Documentation
Changed
metpy_sounding()function now offers two rendering options, a user can specify kwargmethodas'show'to display the plot inline, or as'save'to save the plot as a .png image. If'save'is chosen, the kwargfilenamecan be set to a user-specified file location and name.- Example:
metpy_sounding(clean_data, 'save', '/your-file-path/your-file-name')
- Example:
- all
clean_datadicts now include the keysite-infowhich include site information, model/data information and time information.
Fixed
- Improved Docs
- Made minor corrections to
get_docs()function - Added
CHANGLOG.md - fixed
requirements.txt, thus allowing dependencies to automatically load upon installing SounderPy
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett over 2 years ago
SounderPy - SounderPy 1.0.0
SounderPy is finally here!
Start using this package by using pip install sounderpy.
Check out the documentation at: https://github.com/kylejgillett/sounderpy/blob/main/DOCUMENTATION.md
Full Changelog: https://github.com/kylejgillett/sounderpy/commits/v1.0.0
Scientific Software - Peer-reviewed
- Jupyter Notebook
Published by kylejgillett over 2 years ago