All Projects → slimgroup → JOLI.jl

slimgroup / JOLI.jl

Licence: MIT license
Julia Operators LIbrary

Programming Languages

julia
2034 projects
Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to JOLI.jl

Armadillo Code
Armadillo: fast C++ library for linear algebra & scientific computing - http://arma.sourceforge.net
Stars: ✭ 388 (+2671.43%)
Mutual labels:  vector, matrix, linear-algebra
Mathematics for Machine Learning
Learn mathematics behind machine learning and explore different mathematics in machine learning.
Stars: ✭ 28 (+100%)
Mutual labels:  vector, matrix, linear-algebra
Vectorious
Linear algebra in TypeScript.
Stars: ✭ 616 (+4300%)
Mutual labels:  vector, matrix, linear-algebra
Cgmath
A linear algebra and mathematics library for computer graphics.
Stars: ✭ 773 (+5421.43%)
Mutual labels:  vector, matrix, linear-algebra
Node Sylvester
🐱 Sylvester is a vector, matrix, and geometry library for JavaScript, that runs in the browser and on the server.
Stars: ✭ 144 (+928.57%)
Mutual labels:  vector, matrix, linear-algebra
LinAlg
实现一个线性代数库,为Python写扩展。《程序猿的数学3 线性代数》读后笔记
Stars: ✭ 17 (+21.43%)
Mutual labels:  vector, matrix, linear-algebra
Tensor
A library and extension that provides objects for scientific computing in PHP.
Stars: ✭ 146 (+942.86%)
Mutual labels:  vector, matrix, linear-algebra
Matrix
Easy-to-use Scientific Computing library in/for C++ available for Linux and Windows.
Stars: ✭ 20 (+42.86%)
Mutual labels:  vector, matrix, linear-algebra
Numphp
Mathematical PHP library for scientific computing
Stars: ✭ 120 (+757.14%)
Mutual labels:  vector, matrix, linear-algebra
Lacaml
OCaml bindings for BLAS/LAPACK (high-performance linear algebra Fortran libraries)
Stars: ✭ 101 (+621.43%)
Mutual labels:  vector, matrix, linear-algebra
Fmatvec
A fast vector/matrix library
Stars: ✭ 5 (-64.29%)
Mutual labels:  vector, matrix, linear-algebra
Nalgebra
Linear algebra library for Rust.
Stars: ✭ 2,433 (+17278.57%)
Mutual labels:  vector, matrix, linear-algebra
Math Php
Powerful modern math library for PHP: Features descriptive statistics and regressions; Continuous and discrete probability distributions; Linear algebra with matrices and vectors, Numerical analysis; special mathematical functions; Algebra
Stars: ✭ 2,009 (+14250%)
Mutual labels:  vector, matrix, linear-algebra
Blasjs
Pure Javascript manually written 👌 implementation of BLAS, Many numerical software applications use BLAS computations, including Armadillo, LAPACK, LINPACK, GNU Octave, Mathematica, MATLAB, NumPy, R, and Julia.
Stars: ✭ 241 (+1621.43%)
Mutual labels:  vector, matrix, linear-algebra
Mathematics for Machine Learning
Notes and step-by-step exercises resolution to aid students learning the base math for machine learning. Content summed up from the the course from the Imperial London College in Coursera.
Stars: ✭ 44 (+214.29%)
Mutual labels:  matrix, linear-algebra
SCNMathExtensions
Math extensions for SCNVector3, SCNQuaternion, SCNMatrix4
Stars: ✭ 32 (+128.57%)
Mutual labels:  vector, matrix
Julia-data-science
Data science and numerical computing with Julia
Stars: ✭ 54 (+285.71%)
Mutual labels:  linear-algebra, julia-language
matrixgl
Yet another matrix library for WebGL
Stars: ✭ 25 (+78.57%)
Mutual labels:  vector, matrix
sparse
Sparse matrix formats for linear algebra supporting scientific and machine learning applications
Stars: ✭ 136 (+871.43%)
Mutual labels:  vector, matrix
GenericTensor
The only library allowing to create Tensors (matrices extension) with custom types
Stars: ✭ 42 (+200%)
Mutual labels:  vector, matrix

JOLI - Julia Operators LIbrary

Build Status Citation DOI [REFERENCE guide] [Tutorials]

Julia framework for constructing matrix-free linear operators with explicit domain/range type control and applying them in basic algebraic matrix-vector operations.

Julia Operator LIbrary (JOLI) is a package for creating algebraic operators (currently linear only) and use them in a way that tries to mimic the mathematical formulas of basics algebra.

The package was created in SLIM group at the University of British Columbia for their work in seismic imaging and modelling.

JOLI has a collection of methods that allow creating and use of element-free operators, operators created from explicit Matrices, and composing all of those into complex formulas that are not explicitly executed until they act on the Vector or Matrix. '*', '+', '-', and etc... operations are supported in any mathematically valid combination of operators and vectors as long as vector is on the right side of the operator. Composite operators can be defined before they are used to act on vectors.

JOLI operators support operations like adjoint, transpose, and conjugate for element-free operators provided that enough functionality is provided when constructing JOLI operator.

JOLI operators support and enforce consistency of domain and range data types for operators with both vectors acted upon and created by operators. JOLI also has the functionality that allows easily to switch precision of computations using global type definitions.

Contrary to other linear-operators Julia packages, JOLI operators act on matrices as if those were column-wise collections of vectors. I.e. JOLI operator does not treat explicit matrix on left side of '*' as another operator, and will act on it immediately. Such behaviour is convenient for implementation of Kronecker product.

INSTALLATION

JOLI is registered and can be added like any standard julia package with the command:

] add JOLI

3-Rd Party Libraries

  • CurveLab: In order to use joCurvelet2D or joCurvelet2DnoFFT operators, you need to obtain CurveLab-2.1.2-SLIM, a SLIM extension to CurveLab-2.1.2. The tarball of this extension is available from curvelet.org under Software tab. The installation instructions are included in the tarball of CurveLab-2.1.2-SLIM. Note, that CurveLab is free only for academic use and requires registration.

  • PyWavelets: In order to use joSWT that implements 1D stationary/shift invariant wavelet transform, the PyWavelets package needs to be installed within the python environement used by PyCall.jl. By default, it will use Conda.jl and you should follow its directiv to install a package within it. If you have configured PyCall with your own python environment you can install PyWavelets via pip install --upgrade PyWavelets.

Documentation (more to come)

Examples (more to come)

Check examples for the examples of how to build your own operators or types, or look up DCT implementation in src/joLinearFunctionConstructors/joDCT.jl.

Try templates/joLinearFunctionFwd.jl as a starting point for building your own operators.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].