alexschimel / CoFFee

Matlab toolbox for multibeam sonar data processing
MIT License
22 stars 6 forks source link
matlab matlab-code matlab-toolbox multibeam multibeam-bathymetry multibeam-sonar sonar

CoFFee

Matlab toolbox for multibeam sonar data processing.

Description

CoFFee is a free and open-source MATLAB toolbox (i.e., a libary of functions) for reading multibeam sonar raw data files, visualizing their contents, and applying various processsing algorithms. It serves as the engine for several apps/GUIs designed for specific applications.

Disclaimer

CoFFee is the (messy) repository of functions written and edited over the authors' career, which started before they used git. As a result, many functions are obsolete, or don't work with newer functions, or even work at all. This is why this toolbox is noted as in pre-release and will remain so until the authors can clean it all up. Expect headaches if you try to use the less commonly-used functions!

Getting Started

Dependencies

Installing and using

coffeeFolder = 'C:\my\path\to\CoFFee';
addpath(genpath(coffeeFolder));

Help

Head over to the wiki for documentation (in progress).

For more information, contact the authors.

Past versions and updates

See the releases page for past released versions.

If you want to receive notifications of future releases (recommended), you may create a github account, and on this repository click on 'Watch', then 'Custom', and choose 'Releases'. Verify in your GitHub settings that you are set to receive 'Watching' notifications.

License

Authors

Copyright

2007-2024

License

CoFFee is distributed under the MIT License. See LICENSE file for details.

CoFFee uses several pieces of third-party code, each being distributed under its own license. Each piece of code is contained in a separate sub-folder of the 'toolboxes' folder and includes the corresponding license file.

See Also

Apps based on CoFFee

References

Articles using or about CoFFee, or apps based on CoFFee:

For developers

Please maintain the CoFFee coding philosophy, which is that any core functionality (raw file reading, conversion, data processing, etc.) is coded as CoFFee functions, so that only user-interaction functionalities (display, user interface, callbacks, etc.) are coded in apps. This allows reusing core functionalities across apps. Therefore, the development of an app requires the joint development of CoFFee, and since there are multiple apps built on CoFFee, careful version-controlling and dependency-management is necessary to avoid breaking compatibility.

We use Semantic Versioning to attribute version numbers:

A careful sequence to develop an app is the following:

  1. Checkout the latest commits on the main branches of both CoFFee and the app you wish to develop.
  2. Check if that latest version of the app uses the latest version of CoFFee (in the code, or warning at start-up).
  3. If the app is running on an older version of CoFFee, fix that first:
    • Start with updating the app to use that latest version of CoFFee.
    • Before committing those changes, increase the app's version number and update which CoFFee version it runs on.
    • After committing, remember to add the new tag on git.
  4. Develop the app as you wish. Remember that all processing goes ideally in CoFFee and all display and user interface on the app.
  5. When done, increase the app's version number (app property Version)
  6. If CoFFee was modified, increase CoFFee's version number (CFF_coffee_version.m), and update in the app which CoFFee version it was built on (app property CoffeeVersion).
  7. Verify that everything works:
    • In MATLAB, run restoredefaultpath to ensure you get a clean path.
    • Delete the user folder to start from a clean slate.
    • Start the app, check on the start messages that all versions are correct
    • Test all features of the app.
  8. Push the app up on git. Add a version tag.
  9. If CoFFee was modified, push it up on git. Add a version tag.
  10. If you wish to compile/release this new version of the app:
    • Compile:
      • Double-click on the app's *.prj file to start the Application Compiler with existing settings.
      • Reset dependencies:
      • Remove the app's "main file" (the *.mlapp file if using the app designer) to remove all the files required. This might take a few seconds.
      • Remove any remaining files and folders in the list of files required.
      • Add the "main file" again and wait for the application compiler to find all required files. This might take a few seconds.
      • Add any other files and folders in the list of files required.
      • Update the version number:
      • In the setup file name ("Packaging Options" panel, "Runtime downloaded from web" field)
      • In the "application information" panel
      • In the "Default installation folder" field.
      • Details:
      • All paths in "Settings" should be in the "Espresso\bin" folder.
      • Click on "Save".
      • Click on "Package".
    • Test that the compiled version works correctly.
      • Uninstall any previous version of the app, and delete the user folder.
      • Install the new executable with the setup file.
      • Test that the installed software runs correctly.
    • Create a new release on github
      • Go to the new tag and create a new release
      • Add binaries to the new release:
      • The binary setup (iskaffe_v***_setup.exe)
      • A zipped file of the "for_redistribution_files_only" folder
      • Fill in the release notes by copy-pasting the release notes of the previous release (Sections Download, New features, Bug fixes) and edit them
      • In the Download section, make sure to edit the links to the new release's binaries
      • Publish the new release
      • Test that the download links are correct
    • Update the link of the "Download Latest release installer" button on the app's README.md
      • Tese that the new download link works