package owl-base
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=3817a2e4391922c8a2225b4e33ca95da6809246994e6bf291a300c82d8cac6c5
sha512=68a21f540cb4a289419f35cd152d132af36f1000fb41f98bab6e100698820379e36d650c5aa70a0126513451b354f86a28ea4ecf6f1d3b196b5b5e56f0fac9bd
Description
Owl is an OCaml scientific library.
Published: 13 Jan 2025
README
Owl - OCaml Scientific Computing
Owl is a dedicated system for scientific and engineering computing. The system is developed in OCaml and licensed under MIT. The project is originated by Liang Wang and currently led by Jianxin Zhao. The history of the project can be seen on the Wikipedia page.
Functionalities
Owl provides a wide range of scientific computing functionalities:
mathematical function, from the basic
log
,sin
etc., to special functions such as the Beta and Gamma functionsintegration; interpolation and extrapolation
statistics and probability; e.g. generation of random number and various distributions
various computation on n-dimensional arrays (tensors), including advanced slicing and broadcasting
linear algebra
ordinary differential equations
discrete Fourier Transform algorithms for signal processing
algorithmic differentiation, or automatic differentiation
various optimization algorithms
regression algorithms
deep neural network and natural language processing with the optional support of computation graph optimization
dataframe processing
visualization (with the help of external package
owl-plot
)
Installation
Please follow the tutorial about installing Owl. You can also start by trying the docker images.
Mission
Our mission is to push the frontier of high-performance scientific computing, provide both researchers and industry programmers a powerful framework to write concise, fast and safe analytical code. The system aims to serve as the de-facto tool for computation intensive tasks in OCaml. Owl is the de-facto scientific computing library in OCaml. Currently we aim to actively maintain it and keep it stable, utilizing the limited time and human resource we have.
The current code base is designed to be concise and self-contained. We encourage anyone who would like to build up their own tools based on Owl to create new repositories in the Owlbarn organization.
Owl Code Structure
To help potential developers to understand the structure of Owl, here we briefly describe its overall design. More detailed description can be found in the documentation and the Owl books.
Owl provides a basic data structure for modern numerical computing: n-dimensional array (Ndarray). It is based on the mathematics, linear algebra, and statistics functions, which are built on both OCaml and C functions and libraries.
Sharing the same set of interface with Ndarray is the base
system data architecture, which is implemented in pure OCaml. It is also based on modules that are implemented in OCaml. However, though it is sufficient for daily use for normal computing, the base version Ndarray does not implement some advanced functions as in the previous Owl version Ndarray, and its performance is understandably much slower.
Besides these two types of Ndarray, another type is CGraph-Ndarray, which can be used to support symbolic style computing like TensorFlow v1. It facilitate building computation graph and computation optimization. The CGraph-Ndarray can be built up by wrapping up either of the previous two types of Ndarray, which are used for actual execution of computing. All three types of Ndarray can be used to support advanced computing modules, including algorithmic differentiation, optimization, and neural networks.
Code of Contributing
In principle any change to the code base is made via a GitHub Pull Request (PR). Pull requests must be reviewed and approved by at least two key developers in the Owl Team.
Team members are responsible for the issues and PRs concerning the domain aspects they claim, and are also responsible for fixing the problems caused by accepting such PRs.
If a PR is large or involves significant update or changes to the code structure, an issue should be submitted for the community and team members to discuss, and it then can be decided by the corresponding team member and project leader.
If an issue or PR does not belong to any team member's domain aspect, the response will also be on a best-effort basis with no guaranteed response time.
Please check the full contributing rules and code of conduct of the Owl project for more detail.
Community
The Owl community is based on the OCaml Discourse and Owl Slack channel. All participants in the community are encouraged to provide support for new users within the project management infrastructure. Those seeking technical support should also recognize that all support activities within the project is voluntary and is therefore provided as and when time permits.
Dependencies (3)
-
dune
>= "3.16"
- base-bigarray
-
ocaml
>= "4.12.0"
Dev Dependencies
None
Used by (3)
-
gobba
>= "0.4.2"
-
owl
>= "1.2"
-
owl-ode-base
!= "0.3.0"
Conflicts
None