LinearOperators
Linear Operators for Julia
Science Score: 64.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
✓Committers with academic emails
4 of 32 committers (12.5%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.1%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Linear Operators for Julia
Basic Info
- Host: GitHub
- Owner: JuliaSmoothOptimizers
- License: other
- Language: Julia
- Default Branch: main
- Size: 2.24 MB
Statistics
- Stars: 171
- Watchers: 6
- Forks: 36
- Open Issues: 22
- Releases: 41
Topics
Metadata Files
README.md
A Julia Linear Operator Package
| Documentation | Linux/macOS/Windows/FreeBSD | Coverage | DOI |
|:-----------------:|:-------------------------------:|:------------:|:-------:|
|
|
|
|
|
How to Cite
If you use LinearOperators.jl in your work, please cite using the format given in CITATION.cff.
Philosophy
Operators behave like matrices (with some exceptions - see below) but are defined by their effect when applied to a vector. They can be transposed, conjugated, or combined with other operators cheaply. The costly operation is deferred until multiplied with a vector.
Compatibility
Julia 1.6 and up.
How to Install
JULIA
pkg> add LinearOperators
pkg> test LinearOperators
How to use
Check the tutorial.
Operators Available
Operator | Description
-----------------------|------------
LinearOperator | Base class. Useful to define operators from functions
TimedLinearOperator | Linear operator instrumented with timers from TimerOutputs
BlockDiagonalOperator| Block-diagonal linear operator
opEye | Identity operator
opOnes | All ones operator
opZeros | All zeros operator
opDiagonal | Square (equivalent to diagm()) or rectangular diagonal operator
opInverse | Equivalent to \
opCholesky | More efficient than opInverse for symmetric positive definite matrices
opHouseholder | Apply a Householder transformation I-2hh'
opHermitian | Represent a symmetric/hermitian operator based on the diagonal and strict lower triangle
opRestriction | Represent a selection of "rows" when composed on the left with an existing operator
opExtension | Represent a selection of "columns" when composed on the right with an existing operator
LBFGSOperator | Limited-memory BFGS approximation in operator form (damped or not)
InverseLBFGSOperator | Inverse of a limited-memory BFGS approximation in operator form (damped or not)
LSR1Operator | Limited-memory SR1 approximation in operator form
Utility Functions
Function | Description
-------------------|------------
check_ctranspose | Cheap check that A' is correctly implemented
check_hermitian | Cheap check that A = A'
check_positive_definite | Cheap check that an operator is positive (semi-)definite
diag | Extract the diagonal of an operator
Matrix | Convert an abstract operator to a dense array
hermitian | Determine whether the operator is Hermitian
push! | For L-BFGS or L-SR1 operators, push a new pair {s,y}
reset! | For L-BFGS or L-SR1 operators, reset the data
show | Display basic information about an operator
size | Return the size of a linear operator
symmetric | Determine whether the operator is symmetric
normest | Estimate the 2-norm
solve_shifted_system! | Solves linear system $(B + \sigma I) x = b$, where $B$ is a forward L-BFGS operator and $\sigma \geq 0$.
Other Operations on Operators
Operators can be transposed (transpose(A)), conjugated (conj(A)) and conjugate-transposed (A').
Operators can be sliced (A[:,3], A[2:4,1:5], A[1,1]), but unlike matrices, slices always return
operators (see differences below).
Differences
Unlike matrices, an operator never reduces to a vector or a number.
JULIA
A = rand(5,5)
opA = LinearOperator(A)
A[:,1] * 3 # Vector
opA[:,1] * 3 # LinearOperator
A[:,1] * [3] # ERROR
opA[:,1] * [3] # Vector
This is also true for A[i,J], which returns vectors on 0.5, and for the scalar
A[i,j].
Similarly, opA[1,1] is an operator of size (1,1):"
JULIA
opA[1,1] # LinearOperator
A[1,1] # Number
In the same spirit, the operator full always returns a matrix.
JULIA
full(opA[:,1]) # nx1 matrix
Other Operators
- LimitedLDLFactorizations features a limited-memory LDLT factorization operator that may be used as preconditioner in iterative methods
- MUMPS.jl features a full distributed-memory factorization operator that may be used to represent the preconditioner in, e.g., constraint-preconditioned Krylov methods.
Bug reports and discussions
If you think you found a bug, feel free to open an issue. Focused suggestions and requests can also be opened as issues. Before opening a pull request, start an issue or a discussion on the topic, please.
If you want to ask a question not suited for a bug report, feel free to start a discussion here. This forum is for general discussion about this repository and the JuliaSmoothOptimizers organization, so questions about any of our packages are welcome.
Owner
- Name: JuliaSmoothOptimizers
- Login: JuliaSmoothOptimizers
- Kind: organization
- Location: DOI: 10.5281/zenodo.2655082
- Website: https://juliasmoothoptimizers.github.io
- Repositories: 63
- Profile: https://github.com/JuliaSmoothOptimizers
Infrastructure and Solvers for Continuous Optimization in Julia
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: >-
LinearOperators.jl: Linear Operators for Julia
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Geoffroy
family-names: Leconte
email: geoffroy.leconte@polymtl.ca
affiliation: >-
GERAD and Department of Mathematics and
Industrial Engineering, Polytechnique Montréal,
QC, Canada.
orcid: 'https://orcid.org/0000-0002-1825-1639'
- given-names: Dominique
family-names: Orban
email: dominique.orban@gerad.ca
orcid: 'https://orcid.org/0000-0002-8017-7687'
affiliation: >-
GERAD and Department of Mathematics and
Industrial Engineering, Polytechnique Montréal,
QC, Canada
- affiliation: 'Netherlands eScience Center, Amsterdam, NL'
orcid: 'https://orcid.org/0000-0003-4451-281X'
email: abel.s.siqueira@gmail.com
given-names: Abel
family-names: Soares Siqueira
- given-names: contributors
identifiers:
- description: Zenodo archive
type: doi
value: 10.5281/zenodo.2559295
keywords:
- Linear Algebra
- Julia
- Matrix Factorization
license: MPL-2.0
version: 2.6.0
date-released: '2023-12-11'
repository-code: >-
https://github.com/JuliaSmoothOptimizers/LinearOperators.jl
GitHub Events
Total
- Create event: 15
- Commit comment event: 3
- Release event: 2
- Issues event: 4
- Watch event: 22
- Delete event: 14
- Issue comment event: 44
- Push event: 73
- Pull request review event: 9
- Pull request review comment event: 6
- Pull request event: 44
- Fork event: 4
Last Year
- Create event: 15
- Commit comment event: 3
- Release event: 2
- Issues event: 4
- Watch event: 22
- Delete event: 14
- Issue comment event: 44
- Push event: 73
- Pull request review event: 9
- Pull request review comment event: 6
- Pull request event: 44
- Fork event: 4
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Dominique Orban | d****n@g****m | 193 |
| Abel Soares Siqueira | a****a@g****m | 113 |
| Geoffroy Leconte | g****0@g****m | 56 |
| Alexis Montoison | a****n@p****a | 35 |
| nHackel | n****l | 17 |
| github-actions[bot] | 4****] | 8 |
| tmigot | t****t@g****m | 7 |
| farhadrclass | 3****s | 5 |
| Jakob Asslaender | j****r@n****g | 4 |
| MohamedLaghdafHABIBOULLAH | m****h@p****a | 4 |
| Tobias Knopp | t****s@k****e | 4 |
| CompatHelper Julia | c****y@j****g | 3 |
| Guillaume Dalle | 2****e | 3 |
| Hubert Mouton | 6****n | 3 |
| Maxence Gollier | 1****r | 3 |
| Alexander Jaffray | a****y@g****m | 2 |
| Joshua-Wolff | j****9@g****m | 2 |
| Monssaf Toukal | t****f@g****m | 2 |
| Ruthotto, Lars | l****o@e****u | 2 |
| migrosser | m****r@u****e | 2 |
| Stefanos Carlström | s****m@f****e | 2 |
| Nicholas Richardson | n****a@m****a | 1 |
| JSOTemplate workflow | b****t@j****m | 1 |
| Guillaume Mestdagh | g****h@p****a | 1 |
| Fernando Guevara Vasquez | f****a@m****u | 1 |
| Austin Benson | a****n@g****m | 1 |
| Daniel Henderson | 7****n | 1 |
| Elliot Saba | s****t@g****m | 1 |
| Julia TagBot | 5****t | 1 |
| Neven Sajko | s@p****m | 1 |
| and 2 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 46
- Total pull requests: 163
- Average time to close issues: 8 months
- Average time to close pull requests: 24 days
- Total issue authors: 21
- Total pull request authors: 24
- Average comments per issue: 2.59
- Average comments per pull request: 3.07
- Merged pull requests: 136
- Bot issues: 0
- Bot pull requests: 37
Past Year
- Issues: 4
- Pull requests: 46
- Average time to close issues: 2 months
- Average time to close pull requests: 23 days
- Issue authors: 3
- Pull request authors: 10
- Average comments per issue: 1.5
- Average comments per pull request: 1.43
- Merged pull requests: 39
- Bot issues: 0
- Bot pull requests: 15
Top Authors
Issue Authors
- tmigot (7)
- geoffroyleconte (5)
- dpo (4)
- paraynaud (3)
- JakobAsslaender (3)
- amontoison (3)
- andreasvarga (2)
- MaxenceGollier (2)
- gdalle (2)
- abelsiqueira (2)
- tknopp (1)
- kellertuer (1)
- nHackel (1)
- mtanneau (1)
- ehgus (1)
Pull Request Authors
- github-actions[bot] (43)
- dpo (37)
- geoffroyleconte (26)
- amontoison (20)
- nHackel (11)
- tmigot (11)
- MohamedLaghdafHABIBOULLAH (10)
- abelsiqueira (9)
- farhadrclass (8)
- MaxenceGollier (4)
- paraynaud (3)
- JakobAsslaender (2)
- dependabot[bot] (2)
- gdalle (2)
- njericha (2)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- julia 970 total
- Total dependent packages: 45
- Total dependent repositories: 18
- Total versions: 37
juliahub.com: LinearOperators
Linear Operators for Julia
- Documentation: https://docs.juliahub.com/General/LinearOperators/stable/
- License: MPL-2.0
-
Latest release: 2.11.0
published 7 months ago
Rankings
Dependencies
- actions/checkout v3 composite
- julia-actions/setup-julia latest composite
- actions/cache v1 composite
- actions/checkout v2 composite
- actions/download-artifact v2 composite
- actions/upload-artifact v2 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/setup-julia v1 composite
- actions/github-script v3.1.0 composite
- actions/github-script v6 composite
- julia-actions/setup-julia latest composite
- actions/checkout v2 composite
- julia-actions/setup-julia latest composite
- JuliaRegistries/TagBot v1 composite
- actions/checkout v3 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-invalidations v1 composite
- julia-actions/setup-julia v1 composite
- actions/cache v1 composite
- actions/checkout v2 composite
- codecov/codecov-action v1 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-processcoverage v1 composite
- julia-actions/julia-runtest v1 composite
- julia-actions/setup-julia v1 composite
- actions/checkout v2 composite
- peter-evans/create-pull-request v3 composite
- julia-actions/RegisterAction latest composite