LinearOperators

Linear Operators for Julia

https://github.com/juliasmoothoptimizers/linearoperators.jl

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

julia julia-language linear-maps linear-operators matrices preconditioner

Keywords from Contributors

krylov factorization linear-systems performance-profile nonlinear-programming nlpmodels permutations cutest flux optimization-tools
Last synced: 6 months ago · JSON representation ·

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
julia julia-language linear-maps linear-operators matrices preconditioner
Created over 11 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation Zenodo

README.md

A Julia Linear Operator Package

| Documentation | Linux/macOS/Windows/FreeBSD | Coverage | DOI | |:-----------------:|:-------------------------------:|:------------:|:-------:| | docs-stable docs-dev | build-gh build-cirrus | codecov | 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

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

All Time
  • Total Commits: 481
  • Total Committers: 32
  • Avg Commits per committer: 15.031
  • Development Distribution Score (DDS): 0.599
Past Year
  • Commits: 47
  • Committers: 11
  • Avg Commits per committer: 4.273
  • Development Distribution Score (DDS): 0.723
Top Committers
Name Email 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
enhancement (7) GPU (4) bug (2) up-for-grabs (1) documentation (1) good first issue (1)
Pull Request Labels
formatting (33) automated pr (33) no changelog (33) documentation (4) work in progress (3) CI (2) bug (2) dependencies (2) Documentation (1)

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

  • Versions: 37
  • Dependent Packages: 45
  • Dependent Repositories: 18
  • Downloads: 970 Total
Rankings
Dependent packages count: 1.8%
Dependent repos count: 2.0%
Average: 3.7%
Stargazers count: 5.2%
Forks count: 5.6%
Last synced: 6 months ago

Dependencies

.github/workflows/Aqua.yml actions
  • actions/checkout v3 composite
  • julia-actions/setup-julia latest composite
.github/workflows/Breakage.yml actions
  • 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
.github/workflows/CommentPR.yml actions
  • actions/github-script v3.1.0 composite
  • actions/github-script v6 composite
.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia latest composite
.github/workflows/Documentation.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/Invalidations.yml actions
  • actions/checkout v3 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-invalidations v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/CI.yml actions
  • 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
.github/workflows/Formatter.yml actions
  • actions/checkout v2 composite
  • peter-evans/create-pull-request v3 composite
.github/workflows/Register.yml actions
  • julia-actions/RegisterAction latest composite