Skip to content
Snippets Groups Projects

IN-NOVA

This repository holds the open-access codebase used within the IN-NOVA project. The codebase is divided into various sections, each relevant to a different topic/problem. The sections will be updated and more sections will be added on an as-needed basis, since the purpose of the project is not to create a software library to tackle the scientific problems.

The codebase under each section may or may not include code implementations in different languages but no plan exists to port each implementation in all available programming languages. More information about the codebase, the available implementations and topics/fields can be found in the Documentation of the project and its Wiki.

Current structure

The current structure of the codebase is shown below. More information can be found in the Wiki with separate pages for each category, and implementation.

Dependencies

Effort has been put towards minimising dependencies external to this repository. Even "inter-repository" dependencies (ex. a function under some field uses a general utility function) will be clearly stated in the relevant code documentation.

Support

If you find any bugs, other issues and/or inconsistencies you can e-mail Achilles Kappis at axilleaz@protonmail.com or A.Kappis@soton.ac.uk. More contacts will be added if/when new contributors join the project.

Roadmap

The repository will be updated on an as-needed basis.

Although the repository is not considered to be under construction anymore, there are significant gaps in its structure. At the moment, the main focus is placed on updating code with new features and bug fixes and documenting ideas and useful features for the future (mainly as issues).

As a parallel slow-moving project, porting the codebase to Julia has also started, aiming to provide full functionality in the future. Although Julia and MATLAB were designed to tackle similar (if not the same) problems, they are quite different. The facilities and intricacies of Julia dictate the need to dig deeper into the language in order to provide an efficient, maintainable and intuitive codebase that will parallel the current MATLAB implementation in functionality. More time must be spent in the design phase for the Julia implementations, which will, most probably, keep the progress to a slow pace. Although it is a long shot, the target is for the Julia codebase to reach the MATLAB implementation's state and then move forward in tandem.

Contributing

If you would like to contribute to the project you could do that in various ways, as listed below:

  • Create issues for bugs, improvements and/or features.
  • Fix a bug or develop an improvement and/or feature yourself. Clone the repository, create a new branch when done create a merge request.
  • Report typos and/or inconsistencies in the documentation.
  • Contribute to the documentation and/or the Wiki of the project.
  • Create a CI configuration for automated testing, or develop unit tests.
  • Port the codebase to other programming languages and/or environments.

Remarks

Since there is no CI set at the moment to perform automated testing, you are highly encouraged to test your contributions as much as possible and even contribute some unit tests if this aligns with your contributed content.

To try and maintain a coherent style in the codebase you are encouraged to use the template available in the Templates folder, although this is not necessary.
Irrespective of style, it is highly advisable to name your variables in a meaningful manner and keep them as short as possible while still communicating their purpose. Comments are highly recommended in your code, especially where they can facilitate a better understanding of the code and the intent of the developer. Over-commented code is better than under-commented code.

Authors and acknowledgment

Authors

The main contributor is Achilles Kappis.

Acknowledgments

Part of the ptsOnSphere() MATLAB/Octave function is an adaptation of a function provided by Prof. Jordan Cheer of the Institute of Sound and Vibration Research (ISVR), University of Southampton.

License

The project is licensed under the MIT License, which is a rather unrestrictive license, effectively passing the code to the public scope. For more information see the MIT License, or the LICENSE file of the project.

Versioning

The project uses semantic versioning and the current version is v0.2.3.

Important

If you are unable, or do not want to contribute under this license please do not contribute to this project at all. All content within the project must be under the same license.