Skip to content

Releases: BIVectors/BRAVEHEART

BRAVEHEART v1.7.1

22 Feb 05:39

Choose a tag to compare

Changelog for BRAVEHEART v1.7.1

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

Updates/Bug Fixes:

  1. Fixed a bug in the user guide chapter 23 describing the lead order in 'Unformatted .txt' files. The lead order in the text transposed the order of leads aVL and aVF. The correct order of columns in the Unformatted .txt files is I, II, III, aVR, aVF, aVL, V1, V2, V3, V4, V5, and V6. The files/leads load correctly when used within BRAVEHEART, but if used outside of BRAVEHEART (or generated outside of BRAVEHEART), please be aware of this error in the user guide description prior to version 1.7.1.
  2. Minor changes to how maximum level of wavelet decomposition was calculated for high pass filtering to help prevent errors.
  3. When assessing signal noise, if the wavelet level that corresponds to 0.5 Hz is above the maximum wavelet level (usually an issue for very short ECGs), an estimate of low frequency noise (noise_lf) is not calculated and is left blank in export files.

New Additions:

  1. Added new variable gpu_setting in Annoparams.m to force CPU or GPU processing when batch processing ECG with parallel processing active. This may be useful when parallel batch processing on a GPU is throwing errors. See user guide chapters 6.2 and 12.7 for further information.
  2. Added new sub-section to the GUI Utilities section (GUI item 6.6.3) to change the value of gpu_setting.
  3. Added new function reconstruct_limb_leads.m which allows calculation of any missing limb leads from any 2+ provided limb leads. This functionality was added to some ECG load functions where 12 leads were not required by the format (ECGs recorded on EP recording systems). Note that there may by very small differences between limb leads obtained from an ECG file and limb leads calculated from electrode relationships due to filtering of the signals at the level of the ECG hardware during acquisition. For this reason, you should always use the limb leads provided in the ECG file if they are available.

ECG Formats:

  1. Renamed load_physionet_dat.m to load_wfdb_dat.m and changed the corresponding format string for WFDB format ECGs from physionet_dat to wfdb_dat to better reflect the file format. This has no effect on running BRAVEHEART via the GUI. If running via command line, you will have to use the new format string. In the GUI the dropdown option for format now uses 'WFBD . dat' instead of 'Physionet.dat'.
  2. Improvements to loading Physionet/WFDB format ECGs in load_wfdb_dat.m (formerly load_physionet_dat.m).
  3. Improvements to loading Claris format ECGs in load_claris.m.
  4. Added ability to read Mortara ELI XML ECG files. See user guide chapter 23 for further details.
  5. Generic .csv format ECGs which load via format string generic_csv and parameters from generic_csv_params.csv will also work with other delimiters, including comma, space, semicolon, and tab. This behavior is not new, but the ability to use delimiters other than comma was not mentioned previously. Specifying the delimiter is not required. See user guide chapter 23 for further details.
  6. Improved handling of missing limb leads in Generic .csv format ECGs. See user guide chapter 23 for further details.
  7. Changed text related to HL7 XML files to clarify that these are HL7 annotated ECG (aecg) XML files.

BRAVEHEART v1.7.0

05 Feb 17:37

Choose a tag to compare

Changelog for BRAVEHEART v1.7.0

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

New Additions/Updates:

  1. The GUI title bar now displays if it is being run via a compiled executable.
  2. HRV parameters now will only be calculated if there is more than 1 RR interval detected. This prevents errors in the very rare cases where short ECGs with only a few beats are being imported/processed. Values that are not calculated are left empty.

ECG Formats:

  1. Improved load_hl7xml.m to allow variable offsets and different scaling for each lead.
  2. Improved loading of GE Prucka format ECGs. Created a new file load_prucka.m to handle Prucka format files (was previously part of load_ecg.m). The Prucka file loading module will now search for an .inf header file in the same directory with the same name to obtain information on lead order and sampling frequency. If an .inf header file is not found, it defaults to standard values. See user guide chapter 23 for further details.
  3. Added ability to read ECGs exported from the EP Tracer (Schwarzer Cardiotek) recording system. See user guide chapter 23 for further details.
  4. Added ability to read ECGs exported from the Labsystem Pro (Boston Scientific, formerly Bard) recording system. See user guide chapter 23 for further details.
  5. Renamed the Prucka ECG format string from prucka_format to prucka_txt.
  6. Renamed the BIDMC ECG format string from bidmc_format to bidmc_txt.
  7. Fixed inconsistencies in the naming of unformatted/generic .txt and .csv file formats. Unformatted .csv files are now called Generic .csv files for consistency with other naming conventions throughout BRAVEHEART (such as generic_csv_params.csv and format string generic_csv).

Bug Fixes:

  1. Fixed a bug where generic .csv files (format string generic_csv') could not be batch processed with parallel processing active when running via compiled executable.
  2. Fixed a bug in the GUI filtering figure where lead II was being shown instead of lead III.
    2 Fixed a bug where Prucka format ECG sampling frequency was set to 997 Hz instead of 977 Hz.
  3. Fixed a bug in the function noise_test.m, which estimates high-frequency and low-frequency (wander) noise in the raw ECG. Estimates for low-frequency noise (noise_lf) were previously often overestimated and may now have changed slightly compared to prior versions.
  4. Revised high-frequency noise estimation in noise_test.m so that it is now independent of the user's chosen lowpass filtering settings. Results of the variable noise_hf may therefore have changed slightly compared to prior versions.

BRAVEHEART v1.6.2

08 Dec 05:21

Choose a tag to compare

Changelog for BRAVEHEART v1.6.2

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

New Additions/Updates:

  1. Added the location of the R peak ([lead]_r_peak_loc) and S peak ([lead]_s_peak_loc) for each lead to Lead_Morphology.m results. See user guide section 24.1 for further details.
  2. Added the J point voltage ([lead]_jpt) and J point +60 ms voltage ([lead]_jpt60) for each lead to Lead_Morphology.m results. See user guide section 24.1 for further details.
  3. Renamed VM_max_rpk_loc to VM_r_peak_loc to be consistent with variable naming in other leads.
  4. Added a table of lead morphology values that appears when click on the Lead Morphology button in the GUI. See user guide section 12.7 for further details.
  5. Added additional data to the .mat data export files in the misc field. Renamed fieldgeh to vcg_calc for consistency. See user guide section 25 for further details.
  6. Added quality test cases to test_braveheart.m reflecting additions to Lead_Morphology.m (see user guide section 30).

ECG Formats:

  1. Added ability to read Zoncare ZQECG XML ECG files. See user guide section 23 further details.
  2. Improved load_dicom.m to be more efficient and more robust to slight variations in DICOM files.

Bug Fixes:

  1. Fixed a bug involving ambiguous date formatting when adding new data to existing output files (this had no impact on the exported data, but this fix removes the ambiguity in date format that was causing a warning).
  2. Fixed a bug where dark mode was being triggered without user input.

BRAVEHEART v1.6.1

23 Sep 03:50

Choose a tag to compare

Changelog for BRAVEHEART v1.6.1

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

Bug Fixes:

  1. Fixed a bug where pacing_detected in output files was incorrectly being set to 1 when no pacing had been detected. When using the CWT spike filter these incorrect values of pacing_detected = 1 would have a blank value fornum_paced_leads.

New Additions/Updates:

  1. Added new function, xyz2azel.m which converts Cartesian coordinates into spherical coordinates with BRAVEHEART specific angle conventions (+X towards left, +Y down, +Z posterior).

  2. Updated user guide with additional information on conventions for azimuth and elevation and transformation between spherical and Cartesian coordinates (see user guide Figure 71).

  3. Enforced orientation of the new basis vectors (right singular vectors, $\mathbf{V}$) that are used to describe the best fit QRS or T planes (qrs_loop_normal and t_loop_normal, see user guide Chapters 24.2 and 27) so that the Z-component of the 3rd right singular vector (normal to the best fit plane) is always negative (anterior), the X-component of the 1st right singular vector is always positive (leftward), and the Y-component of the 2nd right singular vector follows a right-handed convention. This has no effect on any measurements other than the signs of the components of the normal vectors to the best fit plane. (qrs_loop_normal and t_loop_normal) for which the only change may be in the sign of one or more vector components. This was done to allow consistency between different versions of MATLAB as the signs of the singular vectors are not uniquely defined after singular value decomposition.

  4. Added new variables qrs_loop_plane_az, qrs_loop_plane_el, t_loop_plane_az, and t_loop_plane_az which report the orientation of the normal vector to the best fit QRS or T plane as azimuth and elevation. Since the normal vectors are unit vectors with magnitude 1, the magnitude of the normal vector is not reported.

  5. Added new variables xy_qrs_loop_dir, xy_qrs_signed_area, xz_qrs_loop_dir, xz_qrs_signed_area, zy_qrs_loop_dir, zy_qrs_signed_area, best_qrs_loop\_dir, and best_qrs_signed\_area which report the direction of QRS loop rotation (clockwise [CW], counterclockwise [CCW], or Indeterminate) in the XY (frontal), XZ (transverse looking up from feet with back posterior), ZY (left sagital), and the best fit QRS plane viewed from the direction of the normal vector obtained with singular value decomposition, based on signed area and specific viewing angle and axes orientation. See user guide Chapters 24.2 and 27 for further details.

GUI:

  1. Fixed issues with text scaling in various figures when using R2025 on a Mac.

  2. Updated the VCG Loops figure in the GUI to show the direction of QRS loop propagation (red to blue). This can be toggled off if desired.

BRAVEHEART v1.6.0

23 Aug 17:01

Choose a tag to compare

Changelog for BRAVEHEART v1.6.0

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

Note: This version fixes display issues that are present when using the GUI in R2025a.

ECG Formats:

  1. Added ability to read MFER (.mwf) ECG files. See user guide section 23 for further details.

Additions:

  1. Added the ability to convert an entire directory of ECGs into the unformated_txt format. Changed the format specifier from %f to %.15g when writing ECG files to remove trailing zeros to save disk space. See user guide section 23 for details.

GUI:

  1. Adjusted GUI so that it displays correctly in MATLAB R2025a and future MATLAB releases. The graphics engine for MATLAB has been redone in R2025a, and as a result of this and phasing out of the GUIDE GUI editor, the BRAVEHEART GUI was not displaying as expected when using R2025a. When loading the BRAVEHEART GUI in R2025a it will look somewhat different than when loading in versions prior to R2025a, but the functionality is the same.

Other:

  1. Minor code changes to deal with how version numbers are handled.

BRAVEHEART v1.5.1

18 Jul 18:34

Choose a tag to compare

Changelog for BRAVEHEART v1.5.1

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

Bug Fixes:

  1. Fixed a bug where ECGs without pacing would sometimes be erroneously labeled as paced (pacing_detected = 1 in output files) using the median filter method of pacemaker spike detection.

Note that in the original upload for v 1.5.1 there was a bug which resulted in version 1.5.0 being displayed instead of version 1.5.1 in the GUI and output files. This has been corrected in the current executables and source code.

BRAVEHEART v1.5.0

03 Jul 00:48

Choose a tag to compare

Changelog for BRAVEHEART v1.5.0

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

New Additions:

  1. Added new method utilizing continuous wavelet transform (CWT) for pacemaker spike detection and removal. See user guide Chapter 15.2 for further details.
  2. Updated GUI to allow editing of parameters that control CWT method of pacemaker spike detection and removal.
  3. Added new data to exported .mat files related to pacemaker spike detection and removal. See user guide Chapter 25 for further details.

BRAVEHEART v1.4.0

06 Mar 01:54

Choose a tag to compare

Changelog for BRAVEHEART v1.4.0

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

New Additions:

  1. Added customizable dark mode to GUI. Dark mode and light mode can be toggled in the Utilities section of the GUI. See user guide section 28 for further details.

  2. The Lead Morphology figure in the GUI now allows rescaling of Y-axes. See user guide section 20 for further details.

  3. Added save buttons to figures. This replaces the save checkbox in the GUI. See user guide section 12.8 for further details.

Changes:

  1. Reordered lead avR, avL, and avF when displaying the 12-lead ECG figure to be consistent with the typical display order.

  2. Increased the default value of the low frequency noise detection threshold lf_noise in Qualparams.m or Qualparams.csv from 20 uV to 30 uV

  3. Improved error handling for the Lead Morphology results class so that unexpected errors do not result in values of NaN for all measurements.

  4. Reorganized GUI buttons to shift fiducial points. See user guide section 12.9 for further details.

ECG Formats:

  1. Added ability to read .mat files exported from BRAVEHEART. See user guide section 23 for further details.

  2. Added ability to read binary .dat files from Edan SE 601C ECG machines. See user guide section 23 for further details.

Bug Fixes:

  1. Fixed a bug where the parameter pkfilter was missing from Annoparams.csv and therefore could not be set when running BRAVEHEART via a compiled executable. In practice, this would set pkthresh = 0, but only affected running the compiled command line version of BRAVEHEART, as the value for pkthresh could be set via checkbox in the GUI.

  2. Fixed a bug where displaying VCG acceleration in the VCG Speed tab of the GUI would cause a crash.

  3. Fixed a bug and rewrote code for T wave maximum detection. Previously, if a T wave amplitude was so small that BRAVEHEART could not find a true T wave max, it would assign the T wave maximum location as the location of the T wave maximum in the VM lead. Now, T wave maximum detection is more robust and uses the MATLAB function findpeaks instead of looking for raw maximum values. If a T wave maximum is not found that is at least 0.01 mV, BRAVEHEART now reports the T wave maximum and location as NaN. NOTE that as a result of this change, some very low T wave maximum amplitudes and their corresponding locations will now report as NaN or may change from prior versions. In general, this change should have no effect on normal sized T wave deflections.

  4. Fixed a bug where very large pacing spikes that were greater in amplitude than QRS amplitude were incorrectly measured as the R and/or S wave magnitude.

  5. Fixed a bug where the location of VM T max did not change if fiducial point locations were manually edited.

  6. Fixed other minor visual bugs in the GUI.

BRAVEHEART v1.3.1

07 Jan 03:31

Choose a tag to compare

Changelog for BRAVEHEART v1.3.1

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

ECG Formats:

  1. Added ability to read Megacare XML ECG files. See user guide section 23 for further details.

  2. Added ability to read Norav 1200M raw data type (.rdt) ECG files (thanks to GitHub user SolarBarn). See user guide section 23 for further details.

  3. Added parameters to generic_csv_params.csv that allow the user to control the starting row/column to account for headers or other offsets, and the ability to specify the lead order. This will allow users to use a wider variety of .csv files without having to adjust formatting within the files. See user guide section 23 for additional details.

Other Changes:

Updated Copyright in file headers to include the year 2025.

BRAVEHEART v1.3.0

21 Oct 02:36

Choose a tag to compare

Changelog for BRAVEHEART v1.3.0

Contact us at braveheart.ecg@gmail.com with any questions or concerns.

New Additions:

  1. Added ability to filter out P and T waves when detecting R peaks. Filtered R peak detection can be enabled/disabled in Section 1.8 of the GUI (see user guide Section 12.2 and Section 15.1) or by setting pkthresh = 1 in Annoparams.m (see user guide Section 6). Note: this new R peak detection algorithm is NOT enabled by default.

  2. Updated the Threshold figure (see user guide Section 15.1 and Figures 23 and 24) to show the R peaks which will be detected using the VM signal/threshold and the filtered VM signal/threshold.

Bug Fixes:

  1. Fixed a bug in the Threshold figure (see Figures 23 and 24) that resulted in pacemaker spikes not being removed when present.

  2. Fixed a bug that would prevent some .scp format ECGs from loading if there were errors in the encoding of non-ECG data such as patient name and other demographic information.