Recent Releases of brightwind
brightwind - 2.7.0
Below is an extract from the CHANGELOG file showing all the updates for this release.
[2.7.0]
14-May-2026
New Features and Enhancements
- Updated
apply_cleaning_rules()to support nested boolean conditions (and/or/not) inside theconditionsblock and a new optionaltime_range_conditionsblock on cleaning rules, in line with the updated BrightHub/measurement-locations/{uuid}/cleaning-rulesAPI response. Existing flat-condition cleaning rule files continue to work unchanged. The newmeasurement_point_uuidandstatistic_type_idfields onconditionsandclean_outitems are accepted but currently ignored — column resolution still relies onassembled_column_name. Thecleaning_rule.schema.jsonwas extended with atime_conditiondefinition. (#609) - Rewrote
README.mdandcontributing.mdto align with the docs site, with clearer install options (venv / conda), a quick-start example, and an expanded contributing guide covering the fork workflow, editable dev install and running the test suite. (#602) test_load_brighthubis now skipped automatically when no BrightHub credentials are available — eitherBRIGHTHUB_CLIENT_IDandBRIGHTHUB_CLIENT_SECRET, or the deprecatedBRIGHTHUB_EMAILandBRIGHTHUB_PASSWORD— so the test suite runs cleanly without BrightHub credentials. (#602)- Added support for reading Parquet files from BrightHub in
LoadBrightHub.get_data()via a newfile_extensionargument (one of'.csv'or'.parquet'). Default remains'.csv'for backwards compatibility; Parquet is expected to become the default in the next major release. Reading Parquet requires a parquet engine — install withpip install brightwind[parquet](pyarrow) orpip install brightwind[parquet-fastparquet](fastparquet). (#601)
Bug Fixes
Deprecated
- The implicit default of
file_extension='.csv'inLoadBrightHub.get_data()is deprecated and will change to'.parquet'in the next major release. Calls that do not passfile_extensionexplicitly will emit aDeprecationWarning. Passfile_extension='.csv'to keep the current behaviour, orfile_extension='.parquet'to opt in early. (#601)
Renewable Energy - Wind Energy
- Python
Published by stephenholleran about 1 month ago
brightwind - 2.6.0
Below is an extract from the CHANGELOG file showing all the updates for this release.
[2.6.0]
02-Apr-2026
New Features and Enhancements
- Updated
apply_wspd_slope_offset_adj()in order to also apply slope and offset adjustments to related columns (for 'avg', 'min', 'max', 'gust', 'median', 'mode', 'range' and 'sd' statistic types) in addition to the main variable itself. It should be noted given lack of required information available no correction is applied to 'ti' 'ti30sec' or 'sum'. (#575) - Updated
MeasurementStationfunction_mast_section_geometry()to extract mast section geometry properties. This is called by a user withMeasurementStation.mast_section_geometry. (#362) - Added
export_tws_file()to allow export of a WindSim .tws formated timeseries climatology file. (#305) - Updated
plot_scatter(),plot_scatter_wdir(),plot_scatter_wspd(),CorrelBase.plot()andSpeedSort.plot_wind_directions(), to accept anaxparameter to support use in subplots. (#596) - Updated
scale_air_pressure_to_height()to accept air temperature and air pressure time series at different heights, the user can now specify a separate height for the reference temperature time series. This is then used to scale the time series to the target height before scaled air pressure is calculated. (#562)
Bug Fixes
- Fixed two bugs on
SpeedSort.synthesize()accounting for NaNs and when direction is 360. (#406)
Renewable Energy - Wind Energy
- Python
Published by stephenholleran 2 months ago
brightwind - 2.5.0
Below is an extract from the CHANGELOG file showing all the updates for this release.
[2.5.0]
New Features and Enhancements
- Updated
calc_air_density()to incorporate additional methods. The methods differ in their approach to deriving water vapour pressure using_calc_water_vapour_pressure_Pa()and include the pre-existing 'IEC' method (default). The two new methods are based on the Herman Wobus approximation (_calc_water_saturation_vapour_pressure_Pa()) and require either relative humidity or dew point temperature as inputs. (#539). - Added
calc_rel_humidity_from_dew_point()to calculate relative humidity from air temperature and dew point temperature. (#581). - Updated
MeasurementStationfunction__get_properties()in order to raise child properties when flattening the dictionary to include sub-lists and sub-dictionaries when raising the following parts of the data model 'mast_properties', 'logger_measurement_config', 'sensor' and 'mounting_arrangement'. This is called by a user withMeasurementStation.propertiesorMeasurementStation.measurements.properties(#576) - Updated
apply_wind_vane_deadband_offset()to use same core function thanapply_device_orientation_offset()for the adjustment. (#498) - Updated
apply_device_orientation_offset()andapply_wind_vane_deadband_offset()in order to also apply directional adjustment to related columns (for 'avg', 'min', 'max' and 'gust' statistic types) in addition to the main variable itself. (#574).
Bug Fixes
- Fixed two bugs on
apply_device_orientation_offset()reported table and prints. (#571) - Fixed bug on
apply_wind_vane_deadband_offset()reported table and prints. (#569)
Renewable Energy - Wind Energy
- Python
Published by stephenholleran 4 months ago
brightwind - 2.4.0
Below is an extract from the CHANGELOG file showing all the updates for this release.
[2.4.0]
New Features and Enhancements
- Added
scale_air_pressure_to_height()to output an air pressure value for any height based on reference air temperature and air pressure values at a different measurement height. (#531) - Added
scale_air_density_to_height()to output an air density value for any height by applying a constant lapse rate to a known reference air density value at a reference measurement height. (#534) - Added
scale_air_temperature_to_height()to output an air temperature value for any height by applying a constant lapse rate to a known reference air temperature value at a reference measurement height. (#530) - Updated
calc_air_density()to include relative humidity as suggested in IEC 61400-12-1. (#535)- Added deprecation warning the
specific_gas_constantargument ofcalc_air_density()will be removed in v3.0. - Added deprecation warning the scaling of air density to height within
calc_air_density()will be removed in v3.0. Users should usescale_air_density_to_height()separately instead.
- Added deprecation warning the
- Added
apply_scale_factor()to scale data by the scale_factor. (#541) - Added optional output to
apply_wind_vane_deadband_offset()which provides a results table showing the applied offset. (#520) - Added optional output to
apply_device_orientation_offset()which provides a results table showing the applied offset. (#521). - Updated
LoadBrightHub()to use BrightHub API Keys. (#550)- Added deprecation warning the username and password method of authenticating in BrightHub will be removed in a future version.
- Updated
time_continuity_gaps()in order to take an argumentminimum_gap_lengthwhich allows the user to filter the time gaps returned. (Issue #545) - Updated
offset_timestamps()to include last timestamp when date_to is unspecified, so that offset is applied to the entire record if date_to not specified. (#504)
Deprecated
LoadBrightdata()is deprecated and will be removed in version 3.0. Please useLoadBrightHub()instead to continue accessing reanalysis data.LoadBrightHub()authentication using email and password is deprecated and will be removed in v3.0. Please migrate to API key authentication. Create and manage API keys at: https://brighthub.io/account-settings/settings.specific_gas_constantargument ofcalc_air_density()is deprecated and will be removed in v3.0 because the updated method depends on the gas constants for dry air and water vapour, making this argument redundant.- The scaling of air density to height within
calc_air_density()is deprecated and will be removed in v3.0. Users should usescale_air_density_to_height()separately instead. - Support for Python ≤ 3.10 is deprecated and will be dropped in v3.0.0. Users should upgrade to Python 3.11 or newer.
- Support for Pandas ≤ 2.2 is deprecated and will be dropped in v3.0.0. Users should upgrade to Pandas 2.3 or newer.
Bug Fixes
- Fixed pandas<3.0.0 and numpy<2.3.1 dependencies, (#458)
- Fixed pandas deprecating warnings that were linked to frequency strings, .groupby() and .map(). (#407, #415 and #445)
Renewable Energy - Wind Energy
- Python
Published by stephenholleran 6 months ago
brightwind - 2.3.0
Below is an extract form the CHANGELOG file showing all the updates for this release.
This update brings a comprehensive set of bug fixes and enhancements across the Brightwind library.
Key improvements include more reliable wind and solar data handling, expanded plotting capabilities (including
colormap support and better legends), and the introduction of new functions for downloading and applying cleaning rules
and device orientation offsets.
Enhanced error messages and schema validation strengthen data integrity and user feedback.
Bug Fixes
- Fixed legend display in
plot_scatter_wspdandplot_scatter_wdir, ensuring correct labeling in plots. (#443) - Corrected
is_fileusage, resolving an error when checking file existence. (#447) - Fixed bug in
_Measurements_get_table, which affected how measurement tables were retrieved. (#421) - Made
_Measurements_get_namespublic and fixed an issue with how names were retrieved. (#450) - Improved sensor calibration logic in
_Measurements__get_propertiesfor multi-type sensors by correctly selecting the appropriate calibration. (#449) - Fixed error for solar sites in
_Measurements__get_properties, improving compatibility. (#453) - Improved support for solar and sodar sites in
_LoggerMainConfigs__get_properties. (#454) - Resolved calculation issues in
dist()function when constant values are sent as well as improved error messages. (#459) - Fixed issues in
monthly_means(), correcting plot output and handling of missing months. (#452, #413) - Corrected
Shear.TimeOfDay()logic when months are missing along with improving error message and fixing plot labels. (#441)
New Features and Enhancements
- Updated
monthly_means()andplot_monthly_means()to improve output and visual clarity. (#452, #413) - Enhanced
plot_timeseries()to support more than 12 lines and introduced colormap-based coloring. (#457, #492) - Added error feedback in
Shear: More informative messages returned when no valid data is available. (#205) Shear.TimeSeriesandTimeOfDaynow returnnp.nanfor timestamps with no valid data. (#205)- Enhanced
LoadBrightHub.get_measurement_stations()to support device type filtering and optional dictionary return format. (#287, #378) - Added
LoadBrightHub.get_cleaning_rules(), allowing programmatic retrieval of cleaning rules for a station. (#461) - Added
load.apply_cleaning_rules(), enabling automated column cleaning based on BrightHub rules. (#462) - New function:
apply_device_orientation_offset()adjusts wind direction data based on remote sensing device orientation as stated in it's data model. (#451) - Schema validation added to
MeasurementStation(), ensuring input data matches the expected data model version. (#489)
Renewable Energy - Wind Energy
- Python
Published by stephenholleran about 1 year ago
brightwind - 2.2.1
Below is an extract form the CHANGELOG file showing all the updates for this release.
[2.2.1]
- Bug fix some users encounter with
plot.plot_shear_time_of_day()(Issue #429).
Renewable Energy - Wind Energy
- Python
Published by stephenholleran about 2 years ago
brightwind - 2.2.0
Below is an extract form the CHANGELOG file showing all the updates for this release.
[2.2.0]
- Modify
Correl.OrdinaryLeastSquares()to force the intercept to pass through the origin (Issue #412). - Update
LoadBrightHub.get_data()to use a new API (Issue #419). - Added new function
LoadBrightHub.get_cleaning_log()to pull the cleaning log for a particular measurement station on BrightHub (Issue #405). - Added new function
LoadBrightHub.get_reanalysis()to pull reanalysis datasets from BrightHub (Issue #431). - Modify
load.apply_cleaning()andapply_cleaning_windographer()to clean columns specified in cleaning file by
matching the sensor name from the beginning of the string. (Issue #249).
Renewable Energy - Wind Energy
- Python
Published by stephenholleran about 2 years ago
brightwind - 2.1.0
Below is an extract form the CHANGELOG file showing all the updates for this release.
[2.1.0]
- Update behaviour of
time_continuity_gapsto find any gap that
is not equal to the derived temporal resolution. - Added
data_resolutionargument toaverage_data_by_period,monthly_means,coverageand
merge_datasets_by_periodfunctions (Issue #297) - Update to work with Pandas 1.3.2. This mostly includes depreciating pd.Timedelta and using pd.DateOffset instead. (Pull request #312).
- Update to work with Pandas 2.0.1, due to
date_formatinput update forpandas.to_datetime. (Pull request #387). - Update to work with matplotlib 3.5.2 and bug fix for plot_freq_distribution and dist functions (Issue #315).
- Update to work with numpy>=1.20.0 when pandas=0.25.3. (Issue #344).
- Addressed all Future and Deprecation warnings for matplotlib<=3.6.3, numpy<=1.24.1, pandas<=1.5.3. (Issue #356).
- In
Correlfix issue when duplicate column names are sent toSpeedSort(Issue #304) - Added subplotting functionality to
sector_ratioand improved user control of plotting (Issue #309) - Allow
dist()function to take a pd.DataFrame so user can plot multiple distributions on the same plot. (Issue #264)- As part of this added subplotting functionality for bar plots
- Allow
freq_table()function to derive a seasonal adjusted frequency distribution if user sets 'seasonal_adjustment'
to true. (Issue #334)- As part of this, added 'monthly_coverage_threshold' option for the user to ensure good coverage months.
- In
freq_tableadded option to give as input target wind speed we want the mean frequency distribution to have
(Issue #269). - Allow
freq_tablefunction to apply acoverage_thresholdfor both seasonal adjusted and base methods. (Issue #386) - Updated
plot_timeseriesto use a subplot function (_timeseries_subplot) and added arguments x_label, y_label, x_tick_label_angle,
line_colors, legend and figure_size. (Issue #349). - In
average_data_by_period()fixed issue when wind direction average is derived for a period equal to the data resolution period
(Issue #319). - In
average_data_by_period()fixed issue when wind direction average is derived for a period equal to the data resolution period (Issue #319). - Fixed bugs for
TI.by_speedandTI.by_sectorand added tests. Solved versions issue that were raised from Pandas 1.3.3. (Issue #317). - Address errors and warnings generated for
Shear.TimeOfDayandShearwhen pandas >=1.0.0 (Issue #347). - In
_calc_mean_speed_of_freq_tabforexport_tab_filefix issue around using wind speed bins less than 1 m/s (Issue #359). - Update to work with versions 1.0 to 1.2 of IEA WIND Task 43 WRA Data Model (Issue #306).
- Updated
LoadBrightHubURL and generalised functions used for connecting to BrightHub platform without usingboto3(Issue #355). - Removed hardcoded colours for
Shear.TimeOfDayplots whenplot_typeis 'step' or 'line' and added a colour map. (Issue #376). - Fixed bug for
SpeedSortwhere thesector_predictfunction was not interpolating data using two fit lines. (Issue #377). - Updated
_ColorPaletteto automatically update color_list, color_map, color_map_cyclical and adjusted lightness color variables when main colors (primary, secondary etc.) are changed. (Issue #381). - Allow
mommfunction to derive a seasonal adjusted mean of monthly mean, if user setsseasonal_adjustmentto true, and allow to apply acoverage_threshold(Issue #298) - Updated
slice_data,offset_timestamps,_LoadBWPlatform.get_datafunctions to use 'less than' data_to if provided as input. (Issue #385)
Renewable Energy - Wind Energy
- Python
Published by stephenholleran about 3 years ago
brightwind - 2.0.0
[2.0.0]
- Major changes, notably
- Incorporating the IEA WIND Task 43 WRA Data Model
- Adding APIs to pull data from the BrightHub platform www.brightwindhub.com
- Change license to MIT
- Correl - add linear regression by direction sector
- Correl - add different aggregation methods to both ref and target
- better function to average wind directions
- Bug fixes
Renewable Energy - Wind Energy
- Python
Published by stephenholleran over 5 years ago
brightwind - First release
- add version
Renewable Energy - Wind Energy
- Python
Published by stephenholleran almost 7 years ago
brightwind - Beta of first release
- delete unwanted datasets
Renewable Energy - Wind Energy
- Python
Published by stephenholleran almost 7 years ago
brightwind - Beta of first release
- bug fix in plot_scatter()
- apply color map to freq_table()
- LoadBrightdata added monthly_means and momm
- add option to not show correlation parameters
- change Shear.TimeOfDay default plot
- refactor colors to allow users to easily set their own
Renewable Energy - Wind Energy
- Python
Published by stephenholleran almost 7 years ago
brightwind - Beta of first release
- complete refactor of distribution functions
Renewable Energy - Wind Energy
- Python
Published by stephenholleran almost 7 years ago
brightwind - Beta of first release
- incorrect dateutil package name
Renewable Energy - Wind Energy
- Python
Published by stephenholleran almost 7 years ago
brightwind - Beta of first release
-
complete refactor of shear (not backward compatible)
-
some bug fixes
Renewable Energy - Wind Energy
- Python
Published by stephenholleran almost 7 years ago
brightwind - Beta of first release
Update with package data files and package requirements.
Renewable Energy - Wind Energy
- Python
Published by stephenholleran almost 7 years ago
brightwind - Beta of first release
Update with package data files and package requirements.
Renewable Energy - Wind Energy
- Python
Published by stephenholleran almost 7 years ago
brightwind - Beta of first release
Renewable Energy - Wind Energy
- Python
Published by stephenholleran almost 7 years ago
brightwind - initial beta open source version
This is an initial beta release of the library. Anything may change at any time. The public API must not be considered stable.
Renewable Energy - Wind Energy
- Python
Published by stephenholleran over 7 years ago