From 3058d704b4aa9612ab51f9d54d791050dffa4bbc Mon Sep 17 00:00:00 2001 From: Nicola VIGANO Date: Mon, 31 Oct 2022 16:17:01 +0100 Subject: [PATCH] Updated documentation Signed-off-by: Nicola VIGANO --- docs/_sources/changelog.md.txt | 13 +- docs/changelog.html | 239 +++++++++++++++++-------------- docs/doctrees/changelog.doctree | Bin 73383 -> 77529 bytes docs/doctrees/environment.pickle | Bin 449315 -> 450539 bytes docs/index.html | 33 ++--- docs/searchindex.js | 2 +- 6 files changed, 162 insertions(+), 125 deletions(-) diff --git a/docs/_sources/changelog.md.txt b/docs/_sources/changelog.md.txt index a669a11..7456b1a 100644 --- a/docs/_sources/changelog.md.txt +++ b/docs/_sources/changelog.md.txt @@ -4,7 +4,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -[Unreleased]: https://www.github.com/cicwi/corrct/compare/v0.7.0...develop +[Unreleased]: https://www.github.com/cicwi/corrct/compare/v0.7.1...develop + +## 0.7.1 - 2022-10-31 +### Added +- More documentation / tutorial content. +- Energy conversion functions (keV to m, and viceversa). +- Tapering for truncated volumes in FSC computation. +### Fixed +- Typo that preventing using `ProjectionGeometry` from `models`. +- Shape dimensions (XYZ vs ZXY) interpretation in `VolumeGeometry` and other functions. +- Cross-validation data term initialization in solvers. +- Tapering to circular masks. ## 0.7.0 - 2022-10-11 ### Added diff --git a/docs/changelog.html b/docs/changelog.html index 0dfa236..8ad12fc 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -41,83 +41,88 @@
  • Tutorial
  • corrct
  • Changelog
      -
    • 0.7.0 - 2022-10-11
        +
      • 0.7.1 - 2022-10-31
      • -
      • 0.6.0 - 2022-09-08
          +
        • 0.7.0 - 2022-10-11
        • -
        • 0.5.1 - 2022-06-23
            +
          • 0.6.0 - 2022-09-08
          • -
          • 0.5.0 - 2022-04-14
              +
            • 0.5.1 - 2022-06-23
            • -
            • 0.4.2 - 2022-01-14
                +
              • 0.5.0 - 2022-04-14
              • -
              • 0.4.1 - 2021-12-06
                  +
                • 0.4.2 - 2022-01-14
                • -
                • 0.4.0 - 2021-11-29
                    +
                  • 0.4.1 - 2021-12-06
                  • -
                  • 0.3.2 - 2021-04-15
                      +
                    • 0.4.0 - 2021-11-29
                    • -
                    • 0.3.1 - 2020-10-20
                        +
                      • 0.3.2 - 2021-04-15
                      • -
                      • 0.3.0 - 2020-09-23
                          +
                        • 0.3.1 - 2020-10-20
                        • -
                        • 0.2.4 - 2020-06-01
                            +
                          • 0.3.0 - 2020-09-23
                          • -
                          • 0.2.3 - 2020-05-05
                              +
                            • 0.2.4 - 2020-06-01
                            • -
                            • 0.2.2 - 2020-03-30
                                +
                              • 0.2.3 - 2020-05-05
                              • -
                              • 0.2.1 - 2020-02-25
                                  +
                                • 0.2.2 - 2020-03-30
                                • -
                                • 0.2.0 - 2019-11-05
                                    +
                                  • 0.2.1 - 2020-02-25
                                  • -
                                  • 0.1.0 - 2019-10-29 @@ -154,10 +159,30 @@

                                    ChangelogKeep a Changelog, and this project adheres to Semantic Versioning.

                                    -

                                    0.7.0 - 2022-10-11

                                    +

                                    0.7.1 - 2022-10-31

                                    Added

                                      +
                                    • More documentation / tutorial content.

                                    • +
                                    • Energy conversion functions (keV to m, and viceversa).

                                    • +
                                    • Tapering for truncated volumes in FSC computation.

                                    • +
                                    +
                                    +
                                    +

                                    Fixed

                                    +
                                      +
                                    • Typo that preventing using ProjectionGeometry from models.

                                    • +
                                    • Shape dimensions (XYZ vs ZXY) interpretation in VolumeGeometry and other functions.

                                    • +
                                    • Cross-validation data term initialization in solvers.

                                    • +
                                    • Tapering to circular masks.

                                    • +
                                    +
                                    +
                                    +
                                    +

                                    0.7.0 - 2022-10-11

                                    +
                                    +

                                    Added

                                    +
                                    • Wide API refactoring: renamed various modules, and moved processing routines to sub-package.

                                    • Initial draft of tutorial. More documentation on the way.

                                    • Line intersection computation.

                                    • @@ -165,8 +190,8 @@

                                      Added
                                    • Tests: initial support for projectors.

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Typo in function name.

                                    • Simplified examples 01 and 02.

                                    • @@ -174,10 +199,10 @@

                                      Fixed

                                    -
                                    -

                                    0.6.0 - 2022-09-08

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.6.0 - 2022-09-08

                                    +
                                    +

                                    Added

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Potential memory leak in astra-toolbox projector backend.

                                    • Gradient and laplacian implementations for arbitrary directions.

                                    • @@ -198,10 +223,10 @@

                                      Fixed

                                    -
                                    -

                                    0.5.1 - 2022-06-23

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.5.1 - 2022-06-23

                                    +
                                    +

                                    Added

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Border behavior in convolution operator.

                                    • Sanitized projector’s angle input.

                                    • @@ -226,10 +251,10 @@

                                      Fixed

                                    -
                                    -

                                    0.5.0 - 2022-04-14

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.5.0 - 2022-04-14

                                    +
                                    +

                                    Added

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Pixel weights, when having small outliers.

                                    • Volume mask generation

                                    • @@ -256,18 +281,18 @@

                                      Fixed

                                    -
                                    -

                                    0.4.2 - 2022-01-14

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.4.2 - 2022-01-14

                                    +
                                    +

                                    Added

                                    • Support for XRF line handling (Siegbahn).

                                    • Support for log-scaling of data weigths.

                                    • More type hinting and docstrings.

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • 3D volume support (especially in astra-toolbox backend).

                                    • Attenuation correction in 3D volumes.

                                    • @@ -280,17 +305,17 @@

                                      Fixed

                                    -
                                    -

                                    0.4.1 - 2021-12-06

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.4.1 - 2021-12-06

                                    +
                                    +

                                    Added

                                    • Uncertainty propagation functions, for weighted minimizations.

                                    • Unpreconditioned l1-minimization (standard behavior).

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Double application of weights in SIRT weighted least squares.

                                    • Use PDHG preconditioning by default.

                                    • @@ -298,10 +323,10 @@

                                      Fixed

                                    -
                                    -

                                    0.4.0 - 2021-11-29

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.4.0 - 2021-11-29

                                    +
                                    +

                                    Added

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Size of transformed volumes in dwt.

                                    • Deprecation warnings from recent numpy versions.

                                    • @@ -327,10 +352,10 @@

                                      Fixed

                                    -
                                    -

                                    0.3.2 - 2021-04-15

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.3.2 - 2021-04-15

                                    +
                                    +

                                    Added

                                    • scikit-image backend, as preferred in 2D non-GPU reconstructions.

                                    • Renamed AttenuationProjector into ProjectorAttenuationXRF.

                                    • @@ -339,8 +364,8 @@

                                      Added
                                    • Projection matrix based projector.

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • PyWavelets interface change.

                                    • Background usage in the data terms.

                                    • @@ -349,18 +374,18 @@

                                      Fixed

                                    -
                                    -

                                    0.3.1 - 2020-10-20

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.3.1 - 2020-10-20

                                    +
                                    +

                                    Added

                                    • FFT operator, and FFT regularizer.

                                    • l2-gradient (smooth) regularizer.

                                    • Support for multiple regularizers.

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Norm l2b (deadzone) is also weighted now.

                                    • Weighted least-squares implementation.

                                    • @@ -369,10 +394,10 @@

                                      Fixed

                                    -
                                    -

                                    0.3.0 - 2020-09-23

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.3.0 - 2020-09-23

                                    +
                                    +

                                    Added

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Python hard crash when CUDA not available.

                                    • Examples to comply with recent changes.

                                    • @@ -410,10 +435,10 @@

                                      Fixed

                                    -
                                    -

                                    0.2.4 - 2020-06-01

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.2.4 - 2020-06-01

                                    +
                                    +

                                    Added

                                    • Operator form (based on scipy.linalg.LinearOperator) for regularizers and projectors

                                    • Data fidelity function classes, including weighted least-squares

                                    • @@ -422,8 +447,8 @@

                                      Added
                                    • Multi-dimensional volume mask creation

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • SIRT regularization

                                    • Windows conda package build, and Python 3.8 target

                                    • @@ -432,10 +457,10 @@

                                      Fixed

                                    -
                                    -

                                    0.2.3 - 2020-05-05

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.2.3 - 2020-05-05

                                    +
                                    +

                                    Added

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Copy-paste error, and detector data axis order in SART algorithm implementation

                                    • Weights for masks in SART algorithm

                                    • @@ -458,10 +483,10 @@

                                      Fixed

                                    -
                                    -

                                    0.2.2 - 2020-03-30

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.2.2 - 2020-03-30

                                    +
                                    +

                                    Added

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • Wavelet decomposition along one dimension

                                    • TV regularizer for dimensions larger than ndims

                                    • @@ -479,33 +504,33 @@

                                      Fixed

                                    -
                                    -

                                    0.2.1 - 2020-02-25

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.2.1 - 2020-02-25

                                    +
                                    +

                                    Added

                                    • New regularizers: non-decimated wavelets and laplacian

                                    • Solvers: added projection masks, relaxation parameters, sirt regularizers

                                    • Uncorrected projector for 2D and 3D data

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • sub-pixel attenuation correction

                                    -
                                    -

                                    0.2.0 - 2019-11-05

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.2.0 - 2019-11-05

                                    +
                                    +

                                    Added

                                    • Multi-detector reconstruction

                                    -
                                    -

                                    Fixed

                                    +
                                    +

                                    Fixed

                                    • TV-min sign

                                    • Solvers’ name visualization

                                    • @@ -513,10 +538,10 @@

                                      Fixed

                                    -
                                    -

                                    0.1.0 - 2019-10-29

                                    -
                                    -

                                    Added

                                    +
                                    +

                                    0.1.0 - 2019-10-29

                                    +
                                    +

                                    Added

                                    • Initial release, with corrected forward and back-projections.

                                    • SIRT, SART, and Chambolle-Pock solvers.

                                    • diff --git a/docs/doctrees/changelog.doctree b/docs/doctrees/changelog.doctree index e2cab6624aa2a0b5cba4b1292e0686b60a89ce3d..2034a0a77c7daf891a0c5ecc32d0ce810ac8fe2a 100644 GIT binary patch delta 12694 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 delta 10641 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 z¥5EI=*LMW6^YycGB$&Yh1%2}QFHO#vEOp1Do<=MeYhAi6#WvKDK0jW4lg`1bA2 z2iga88mIsbuOq%Fy2oQhZvdSGa-qT6^82#8HjI!pl$sQ9ui=uH8!v3`xu?+%MpJ-2 za2AO706t>f^CPJ#0Sd;xSd2^F7dY$PYtf`}gB?-_#Crt?o_hnDA!yE{*^Gww4<2%N zAMB*y=r+_g01iZhO~p@Id6gy2$Okyt0|vq))}r!PuVv0Cy6wjdtI? zydp$pw2P&`2D^`ABj8Wk-Y1d%KHP-u7`V>}>!#u9m)*ZDz@^E`15pvhS7j#91SJu8TZ%g=@5J?S-h!ebKL^w#lm zeB$8=^)r@u%e~G^Jv^0dY$DIZMDEzSg&k_37WRe!|BZ$F83> zhrY+xdAK-_54m;d5+7$A-hR#!db+Rm6tO-h*0L#EduJ6Vzn={UEcbPpFD|uV-nCiZ z#_NL53O^SKQ|oK9T5M9nZ#~ZEea49oA3tjjxXaghhd7`94d>N9&iDlLbC%Gb`C5M> z)&&u_4!zFD8Xt*%)*SjrU*{|0JU{Z*&KrE3@xkinETPFI_U6Mx3l&QbQ?UKk*4uon z@k#Ax&7nK_I;V>B+TU>A<>QRcdp~Cho#SggK&;cEZXJ4`k2PK({H!_jcwgtS;=JKE zoDcap<2A(3Swhe8wJsLx^I|Orc8d4Wz&nhe4F|0Db*U1UKGC-x`f;Ct!Swp$=PUsm ue68!ny5TphPx@Hn&C1W3Lx14wd{CUb$8hKlzxHzSxsNlwpDj*TL;nXjOialD diff --git a/docs/doctrees/environment.pickle b/docs/doctrees/environment.pickle index 0d4840629463c7c77c1d4beb7ece986fae62190b..ed21185c2025937a655af57b1e954f20006c1818 100644 GIT binary patch delta 30468 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 reP}FE{Wm;SJMjWelcome to the documentation of PyCorrectedEmissionCT!
                                    • Changelog
                                    diff --git a/docs/searchindex.js b/docs/searchindex.js index 40133b4..bbff632 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["LICENSE", "changelog", "corrct", "corrct.processing", "index", "modules", "readme", "tutorial"], "filenames": ["LICENSE.md", "changelog.md", "corrct.rst", "corrct.processing.rst", "index.rst", "modules.rst", "readme.md", "tutorial.md"], "titles": ["<no title>", "Changelog", "corrct package", "corrct.processing package", "Welcome to the documentation of PyCorrectedEmissionCT!", "corrct", "PyCorrectedEmissionCT (corrct)", "Tutorial"], "terms": {"bsd": [0, 6], "3": [0, 2, 3, 4, 6], "claus": [0, 6], "licens": [0, 4], "copyright": 0, "c": [0, 6], "2019": [0, 4], "nicola": [0, 2, 3, 6], "vigan\u00f2": [0, 2, 3, 6, 7], "all": [0, 1, 2, 3, 7], "right": [0, 2, 6], "reserv": 0, "redistribut": 0, "us": [0, 1, 2, 3, 6, 7], "sourc": [0, 2, 3], "binari": 0, "form": [0, 1], "without": 0, "modif": 0, "ar": [0, 2, 3, 6, 7], "permit": 0, "provid": [0, 2, 6, 7], "follow": [0, 3, 6, 7], "condit": [0, 1, 7], "met": 0, "code": [0, 1, 2, 6, 7], "must": 0, "retain": 0, "abov": 0, "notic": 0, "thi": [0, 1, 2, 3, 6, 7], "list": [0, 2, 3, 6], "disclaim": 0, "reproduc": 0, "document": [0, 1, 6], "other": [0, 6, 7], "materi": 0, "distribut": 0, "neither": [0, 2, 3], "name": [0, 1, 2, 6, 7], "holder": 0, "nor": [0, 2, 3], "its": [0, 6], "contributor": [0, 4], "mai": 0, "endors": 0, "promot": [0, 2], "product": [0, 2], "deriv": [0, 7], "from": [0, 1, 2, 3, 7], "softwar": [0, 6], "specif": [0, 2, 7], "prior": [0, 7], "written": 0, "permiss": 0, "IS": 0, "BY": 0, "THE": 0, "AND": 0, "AS": 0, "ani": [0, 2, 3, 6], "express": 0, "OR": 0, "impli": 0, "warranti": 0, "includ": [0, 1, 2, 6, 7], "BUT": 0, "NOT": 0, "limit": [0, 1, 2, 7], "TO": 0, "OF": 0, "merchant": 0, "fit": [0, 2, 6], "FOR": 0, "A": [0, 1, 2, 3, 6, 7], "particular": 0, "purpos": 0, "IN": 0, "NO": 0, "event": 0, "shall": 0, "BE": 0, "liabl": 0, "direct": [0, 1, 2, 3, 7], "indirect": 0, "incident": 0, "special": 0, "exemplari": 0, "consequenti": 0, "damag": 0, "procur": 0, "substitut": 0, "good": 0, "servic": 0, "loss": 0, "data": [0, 1, 2, 3, 4, 6], "profit": 0, "busi": 0, "interrupt": 0, "howev": 0, "caus": 0, "ON": 0, "theori": 0, "liabil": 0, "whether": [0, 2, 3], "contract": 0, "strict": 0, "tort": 0, "neglig": 0, "otherwis": 0, "aris": 0, "wai": [0, 1, 7], "out": [0, 2, 6], "even": 0, "IF": 0, "advis": 0, "possibl": [0, 7], "SUCH": 0, "notabl": 1, "chang": 1, "project": [1, 2, 3, 4, 6], "file": [1, 6], "The": [1, 2, 3], "format": 1, "base": [1, 2, 7], "keep": 1, "adher": 1, "semant": 1, "version": 1, "wide": [1, 6], "api": 1, "refactor": 1, "renam": 1, "variou": [1, 6, 7], "modul": [1, 4, 5, 6, 7], "move": 1, "process": [1, 2, 5, 7], "routin": [1, 3], "sub": [1, 2, 3], "packag": [1, 4, 5, 6, 7], "initi": [1, 2, 6, 7], "draft": 1, "tutori": [1, 4], "more": [1, 3, 6, 7], "line": [1, 2, 3], "intersect": [1, 3], "comput": [1, 2, 3, 7], "plot": [1, 2, 3], "frc": [1, 3], "test": [1, 5], "support": [1, 2, 6, 7], "projector": [1, 5, 6], "typo": 1, "function": [1, 2, 3, 6], "simplifi": [1, 2], "exampl": 1, "fsc": [1, 3], "ax": [1, 2, 3], "select": [1, 2, 3, 4, 6], "multi": [1, 2, 6, 7], "channel": [1, 2, 6], "collabor": [1, 6], "regular": [1, 4, 5, 6], "tnv": [1, 2, 6], "total": [1, 2, 6], "nuclear": [1, 2, 6], "variat": [1, 2, 6], "custom": [1, 2, 7], "extern": 1, "user": [1, 6, 7], "defin": [1, 2], "backend": [1, 6, 7], "dedic": 1, "fbp": [1, 2, 6], "filter": [1, 5, 6, 7], "parallel": [1, 2, 7], "guid": [1, 4, 6], "lot": 1, "work": [1, 3, 6], "toward": 1, "full": [1, 3], "type": [1, 2, 3], "hint": 1, "usag": [1, 7], "potenti": 1, "memori": 1, "leak": 1, "astra": [1, 2, 6, 7], "toolbox": [1, 2, 6, 7], "gradient": [1, 2, 6, 7], "laplacian": [1, 2, 6], "implement": [1, 2, 7], "arbitrari": 1, "output": [1, 2, 3], "consist": 1, "solver": [1, 5, 6], "class": [1, 2, 3, 7], "residu": [1, 2], "norm": [1, 2, 7], "weight": [1, 2, 7], "least": [1, 2, 7], "squar": [1, 2, 7], "term": [1, 2, 4, 6], "dimens": [1, 2, 3], "mismatch": [1, 3], "when": [1, 2, 3, 7], "onli": [1, 2, 7], "one": [1, 2, 3, 7], "angl": [1, 2, 3, 7], "back": [1, 2, 6, 7], "normal": [1, 2, 3], "scikit": [1, 6, 7], "imag": [1, 2, 3, 6, 7], "better": 1, "3d": [1, 2, 7], "geometri": [1, 2], "s": [1, 2, 7], "rfft": 1, "pad": [1, 2, 3], "mode": [1, 2, 3], "constant": [1, 2], "edg": [1, 2, 3], "etc": [1, 2, 7], "convolut": [1, 2, 3], "oper": [1, 5, 6, 7], "lorentzian": 1, "sech": 1, "beam": [1, 2, 7], "shape": [1, 2, 3], "center": [1, 3, 7], "mass": [1, 2, 3], "volum": [1, 2, 3, 7], "border": 1, "behavior": [1, 2], "sanit": 1, "input": [1, 2, 3], "denois": [1, 5], "deconvolut": 1, "method": [1, 2, 6, 7], "model": [1, 5, 6], "handl": [1, 7], "2d": [1, 2], "rotat": [1, 2, 3, 7], "new": 1, "call": [1, 2, 7], "volumegeometri": [1, 2], "descript": [1, 2, 6], "projectiongeometri": [1, 2], "manipul": 1, "unmatch": 1, "pixel": [1, 2, 3, 7], "voxel": [1, 2, 3], "size": [1, 2, 3, 7], "cone": 1, "uneven": 1, "tilt": 1, "detector": [1, 2, 7], "stack": [1, 2, 3], "cross": [1, 2, 3, 6, 7], "correl": [1, 3], "curv": [1, 2, 3], "psf": [1, 2], "pencil": [1, 2], "scan": [1, 2], "gaussian": [1, 2, 6], "attenu": [1, 4, 5, 6], "map": [1, 2, 7], "outsid": 1, "correct": [1, 2, 3, 4, 6], "have": [1, 2, 3, 6], "small": 1, "outlier": 1, "mask": [1, 2, 3], "gener": [1, 2, 3], "bug": 1, "azimuth": [1, 3], "integr": [1, 2, 3], "inconsist": 1, "between": [1, 2, 3], "xrf": [1, 2, 7], "siegbahn": [1, 2], "log": [1, 2, 3], "scale": [1, 2, 7], "weigth": 1, "docstr": 1, "especi": 1, "non": [1, 3, 7], "symmetr": [1, 2], "sart": [1, 2, 6, 7], "wavelet": [1, 2, 6, 7], "instal": 1, "instruct": 1, "flat": [1, 2, 3], "field": [1, 2, 3], "updat": [1, 2], "latest": 1, "uncertainti": 1, "propag": 1, "minim": [1, 2], "unprecondit": 1, "l1": [1, 2, 6, 7], "standard": [1, 2], "doubl": 1, "applic": [1, 2], "sirt": [1, 2, 6], "pdhg": [1, 2, 6], "precondit": 1, "default": [1, 2, 3, 7], "approxim": [1, 2], "low": 1, "pass": [1, 2, 3, 7], "portion": 1, "decomposit": [1, 2], "valid": [1, 2, 6, 7], "l": [1, 2], "paramet": [1, 2, 3, 4, 6], "differ": [1, 2, 7], "across": [1, 2], "reconstruct": [1, 2, 3, 4, 6], "improv": [1, 2, 7], "perform": [1, 2, 3, 7], "restructur": 1, "expand": 1, "phantom": [1, 2], "creation": [1, 7], "basic": [1, 7], "thread": [1, 2], "cpu": 1, "automat": 1, "transform": [1, 2], "dwt": 1, "deprec": 1, "warn": 1, "recent": 1, "numpi": [1, 2, 3, 7], "copi": 1, "x0": [1, 7], "among": 1, "projectormatrix": [1, 2], "precondion": 1, "prefer": 1, "gpu": [1, 7], "attenuationprojector": 1, "projectorattenuationxrf": [1, 2, 7], "set": [1, 2, 7], "calcul": 1, "fidel": [1, 2], "matrix": [1, 2], "pywavelet": 1, "interfac": [1, 2, 7], "background": [1, 2], "github": [1, 2, 6], "workflow": 1, "pip": [1, 6], "instead": 1, "conda": 1, "fft": [1, 2], "l2": [1, 2, 7], "smooth": [1, 2, 3], "multipl": 1, "l2b": 1, "deadzon": 1, "also": [1, 6, 7], "now": 1, "crop": [1, 3], "invers": [1, 2], "necessari": [1, 3], "huber": [1, 2], "l12": [1, 2], "l1b": 1, "bia": [1, 2], "tv": [1, 2, 6, 7], "decim": [1, 2], "median": [1, 2], "constraint": [1, 2, 7], "lower": [1, 2], "upper": [1, 2], "unifi": 1, "cp": [1, 2], "report": 1, "inform": [1, 2, 3, 6], "correctli": 1, "flexibl": 1, "option": [1, 2, 3, 6, 7], "eas": 1, "develop": 1, "python": [1, 6], "hard": 1, "crash": 1, "cuda": 1, "avail": [1, 7], "compli": 1, "stationari": [1, 2], "scipi": [1, 2, 7], "linalg": [1, 2], "linearoper": [1, 2], "coverag": 1, "dimension": [1, 3], "window": [1, 2, 3], "build": [1, 2], "8": [1, 2], "target": 1, "On": 1, "demand": 1, "intens": 1, "rescal": 1, "absorpt": 1, "thouroughli": 1, "yet": 1, "some": [1, 3], "autom": 1, "lint": 1, "super": [1, 3], "sampl": [1, 3, 7], "spars": [1, 2, 7], "util": [1, 2], "min": [1, 6, 7], "simpl": [1, 2, 7], "transmiss": 1, "past": 1, "error": [1, 2, 3], "axi": [1, 2, 3, 7], "order": [1, 2], "algorithm": [1, 2, 6, 7], "appli": [1, 2, 3], "readabl": 1, "chambol": [1, 2, 6, 7], "pock": [1, 2, 6, 7], "sinogram": [1, 2, 3, 7], "circular": [1, 3, 7], "depend": [1, 2, 6, 7], "d": [1, 2, 7], "pelt": [1, 2, 7], "backproject": [1, 2, 7], "uncorrect": 1, "along": [1, 2, 3], "larger": [1, 3], "than": 1, "ndim": [1, 2], "link": 1, "matric": 1, "relax": [1, 2], "sign": 1, "visual": 1, "releas": 1, "forward": [1, 2, 6, 7], "misc": [2, 5], "post": [2, 5], "pre": [2, 5], "incid": 2, "emid": 2, "radiat": 2, "author": [2, 3, 4], "group": [2, 3, 7], "cwi": [2, 3], "netherland": [2, 3], "esrf": [2, 3, 6], "european": [2, 3], "synchrotron": [2, 3], "grenobl": [2, 3], "franc": [2, 3], "attenuationvolum": [2, 7], "incident_loc": 2, "ndarrai": [2, 3], "dtype": [2, 3], "float": [2, 3], "emitted_loc": 2, "angles_rot_rad": 2, "union": [2, 3], "_array_lik": [2, 3], "_supportsarrai": [2, 3], "_nested_sequ": [2, 3], "_nestedsequ": [2, 3], "bool": [2, 3], "int": [2, 3], "complex": [2, 3, 7], "str": [2, 3], "byte": [2, 3], "angles_det_rad": 2, "1": [2, 3, 4, 6, 7], "5707963267948966": 2, "none": [2, 3], "_dtype_lik": [2, 3], "_supportsdtyp": [2, 3], "tupl": [2, 3], "supportsindex": [2, 3], "sequenc": [2, 3], "_dtypedict": [2, 3], "float32": [2, 3], "object": 2, "compute_map": 2, "use_multithread": 2, "true": [2, 3], "verbos": [2, 3], "each": [2, 3], "show": 2, "get_map": 2, "roi": 2, "rot_ind": 2, "slice": 2, "det_ind": 2, "scalartyp": [2, 3], "return": [2, 3], "arraylik": [2, 3], "region": [2, 3], "interest": 2, "index": [2, 4], "desir": 2, "get_projector_arg": 2, "dict": 2, "argument": [2, 3], "dictionari": 2, "contain": [2, 6, 7], "plot_map": 2, "0": [2, 3, 4, 7], "slice_ind": 2, "2": [2, 3, 4, 7], "request": [2, 3, 6, 7], "matplotlib": 2, "where": [2, 7], "rais": [2, 3], "valueerror": [2, 3], "In": [2, 3, 7], "case": [2, 3], "vol_shape_zyx": 2, "datafidelitybas": 2, "abc": 2, "datafidel": 2, "abstract": 2, "apply_proxim": 2, "dual": [2, 6, 7], "proxim": 2, "domain": [2, 3], "ndarrayfloat": 2, "solut": [2, 7], "assign_data": 2, "sigma": 2, "compute_data_dual_dot": 2, "dot": 2, "compute_primal_dual_gap": 2, "proj_prim": 2, "primal": [2, 6, 7], "gap": 2, "current": 2, "compute_residu": 2, "compute_residual_norm": 2, "info": 2, "string": [2, 3, 7], "initialize_du": 2, "zero": 2, "arrai": [2, 3], "sigma_data": 2, "update_du": 2, "datafidelity_hub": 2, "local_error": 2, "l2_axi": 2, "given": [2, 3, 7], "x": [2, 6, 7], "datafidelity_kl": [2, 7], "kullbackleibl": 2, "datafidelity_l1": [2, 7], "datafidelity_l12": 2, "datafidelity_l1b": 2, "ball": [2, 3], "datafidelity_l2": [2, 7], "datafidelity_l2b": 2, "datafidelity_ln": 2, "ln_ax": 2, "spectral_norm": 2, "datafidelity_wl2": [2, 7], "advanc": [2, 6, 7], "denoise_imag": 2, "img": [2, 3], "_generic_alia": [2, 3], "reg_weight": 2, "01": [2, 4], "pix_weight": 2, "iter": [2, 6, 7], "250": [2, 3], "callabl": [2, 3], "lambda": 2, "lower_limit": [2, 7], "fals": [2, 3, 7], "an": [2, 3, 6, 7], "requir": [2, 7], "local": [2, 3, 7], "wise": [2, 3], "It": [2, 3, 6, 7], "can": [2, 3, 6, 7], "1e": 2, "If": [2, 3, 6], "valu": [2, 3, 7], "over": [2, 3], "chosen": 2, "number": 2, "constructor": 2, "dwl": 2, "clip": 2, "turn": 2, "fbp_filter": [2, 7], "pad_mod": 2, "use_rfft": 2, "apply_filt": 2, "data_wu": 2, "compute_filt": 2, "refer": [2, 3, 4], "properti": 2, "filter_fouri": 2, "fourier": [2, 3], "represent": 2, "np": [2, 3, 7], "filter_r": 2, "real": 2, "space": 2, "get_padding_s": 2, "data_wu_shap": 2, "linear": [2, 3, 7], "last": [2, 3], "num_filt": 2, "plot_filt": 2, "to_fouri": 2, "to_real": 2, "filtercustom": 2, "dummi": 2, "becaus": 2, "filterfbp": 2, "filter_nam": 2, "ramp": [2, 7], "tradit": 2, "filtermr": 2, "basetransform": 2, "binning_typ": 2, "exponenti": 2, "binning_start": 2, "lambda_smooth": 2, "m": [2, 3, 7], "batenburg": [2, 7], "k": [2, 7], "j": [2, 3, 7], "2014": [2, 7], "ieee": [2, 7], "transact": [2, 7], "23": [2, 4, 7], "11": [2, 4, 7], "4750": [2, 7], "4762": [2, 7], "inspir": 2, "http": [2, 6], "com": [2, 3, 6], "dmpelt": 2, "pymrfbp": 2, "projectoroper": 2, "is_initi": 2, "create_basi": 2, "num_pixel": 2, "basi": [2, 7], "fixel": 2, "start": [2, 4], "displac": 2, "bin": 2, "dtypelik": [2, 3], "through": [2, 6, 7], "geom_typ": 2, "src_pos_xyz": 2, "det_pos_xyz": 2, "det_u_xyz": 2, "det_v_xyz": 2, "rot_dir_xyz": 2, "pix2vox_ratio": 2, "det_shape_vu": 2, "store": 2, "static": 2, "get_default_parallel": 2, "rot_axis_shift_pix": 2, "rot_axis_dir": 2, "clockwis": 2, "parallel3d": 2, "shift": [2, 7], "either": [2, 3, 6, 7], "paral": 2, "get_field_sc": 2, "field_nam": 2, "pix2vox": 2, "ratio": [2, 3], "access": 2, "project_displacement_to_detector": 2, "disp_zyx": 2, "vector": 2, "coordin": [2, 3, 7], "u": [2, 3, 7], "v": [2, 3, 6, 7], "don": [2, 6], "match": [2, 3], "angles_w_rad": 2, "patch_astra_2d": 2, "radian": [2, 7], "set_detector_shifts_vu": 2, "det_pos_vu": 2, "posit": [2, 3, 7], "xyz": 2, "vu": 2, "vertic": [2, 3, 7], "horizont": [2, 3, 7], "vol_shape_xyz": 2, "vox_siz": 2, "extent": 2, "y": 2, "z": [2, 7], "get_default_from_data": 2, "data_format": 2, "dvwu": 2, "mean": 2, "deault": 2, "is_3d": 2, "tell": 2, "is_squar": 2, "xy": 2, "shape_xyz": 2, "shape_zxi": 2, "zxy": 2, "swap": 2, "impos": [2, 7], "arg": 2, "kwarg": 2, "absolut": 2, "coeffici": 2, "adj_shap": 2, "integ": 2, "dir_shap": 2, "explicit": 2, "associ": [2, 3], "rmatvec": 2, "row": 2, "left": 2, "array_lik": 2, "column": 2, "transpos": 2, "basewavelettransform": 2, "fix": 2, "bp": 2, "fp": 2, "prj_shape": 2, "expos": [2, 7], "adjoint": 2, "vol_shap": 2, "transformconvolut": 2, "x_shape": 2, "kernel": 2, "is_symm": 2, "flip_adjoint": 2, "should": [2, 3, 7], "flip": 2, "transformdecimatedwavelet": 2, "direct_dwt": 2, "inverse_dwt": 2, "anti": 2, "transformdiagonalsc": 2, "diagon": 2, "transformfouri": 2, "ifft": 2, "transformfunct": 2, "attributeerror": 2, "Not": 2, "transformgradi": 2, "which": [2, 3, 6, 7], "do": [2, 7], "diverg": 2, "transformident": 2, "ident": 2, "transformlaplacian": 2, "transformsvd": 2, "singular": 2, "vt": 2, "direct_svd": 2, "svd": 2, "inverse_svd": 2, "dcomposit": 2, "transformstationarywavelet": 2, "avelet": 2, "direct_swt": 2, "inverse_swt": 2, "aid": 2, "estim": 2, "baseregularizationestim": 2, "parallel_ev": 2, "plot_result": 2, "compute_loss_valu": 2, "lams_reg": 2, "cost": 2, "compute_reconstruction_and_loss": 2, "lam_reg": 2, "kwd": [2, 3], "keyword": 2, "rec": 2, "compute_reconstruction_error": 2, "gnd_truth": 2, "against": [2, 6], "ground": 2, "truth": 2, "expect": 2, "err_l1": 2, "err_l2": 2, "get_lambda_rang": 2, "end": 2, "num_per_ord": 2, "4": [2, 4], "within": 2, "interv": 2, "first": [2, 3, 7], "step": [2, 6], "per": [2, 3, 7], "magnitud": 2, "solver_calling_funct": 2, "solutioninfo": 2, "solver_spawning_funct": 2, "spawn": 2, "crossvalid": 2, "data_shap": 2, "test_fract": 2, "num_averag": 2, "7": [2, 4], "helper": 2, "f_avg": 2, "averag": [2, 3, 7], "f_std": 2, "deviat": 2, "f_val": 2, "fit_loss_min": 2, "parabol": 2, "purpous": 2, "min_lam": 2, "minimum": 2, "min_val": 2, "lcurv": 2, "loss_funct": 2, "data_dtyp": 2, "create_random_test_mask": 2, "05": [2, 3, 4], "creat": [2, 3, 7], "random": 2, "fraction": 2, "data_test_mask": 2, "rai": [2, 6, 7], "relat": 2, "funtion": 2, "fri": 2, "jan": 2, "16": [2, 7], "07": 2, "21": 2, "2022": [2, 4], "detectorxrf": 2, "surface_mm2": 2, "distance_mm": 2, "angle_rad": 2, "solid_angle_sr": 2, "solid": 2, "cover": 2, "fluolin": 2, "indx": 2, "fluoresc": [2, 7], "fluolinessiegbahn": 2, "collect": 2, "get_energi": 2, "element": [2, 7], "compute_averag": 2, "energi": [2, 7], "i": [2, 7], "whole": 2, "shell": [2, 3], "transit": 2, "rate": 2, "energy_kev": 2, "get_lin": 2, "xraylib": 2, "macro": 2, "definit": [2, 3], "famili": 2, "correspond": [2, 3, 7], "ka1": 2, "ka2": 2, "ka3": 2, "kb1": 2, "6": [2, 4], "kb2": 2, "kb3": 2, "5": [2, 3, 4], "kb4": 2, "13": 2, "kb5": 2, "la1": 2, "90": 2, "la2": 2, "89": 2, "lb1": 2, "63": 2, "lb2": 2, "95": 2, "lb3": 2, "34": 2, "lb4": 2, "33": 2, "lb5": 2, "102": 2, "lb6": 2, "91": 2, "lb7": 2, "98": 2, "lb9": 2, "36": 2, "lb10": 2, "35": 2, "lb15": 2, "94": 2, "lb17": 2, "62": 2, "lg1": 2, "68": 2, "lg2": 2, "38": 2, "lg3": 2, "39": 2, "lg4": 2, "47": 2, "lg5": 2, "65": 2, "lg6": 2, "75": 2, "lg8": 2, "72": 2, "le": 2, "60": 2, "lh": 2, "ll": 2, "86": 2, "ls": 2, "88": 2, "lt": 2, "87": 2, "lu": 2, "96": 2, "lv": 2, "70": 2, "ma1": 2, "207": 2, "ma2": 2, "206": 2, "mb": 2, "187": 2, "mg": 2, "165": 2, "volumemateri": [2, 7], "phase_fract": 2, "phase_compound": 2, "voxel_size_cm": 2, "predict": 2, "compton": 2, "yield": 2, "concentr": 2, "phase": 2, "compound": 2, "cm": 2, "produc": 2, "incorrect": 2, "get_attenu": 2, "get_compound": 2, "cmp_name": 2, "densiti": 2, "composit": [2, 7], "compund": 2, "compos": 2, "cmp": 2, "structur": 2, "get_compton_scatt": 2, "energy_in_kev": 2, "scatter": 2, "incom": [2, 7], "respect": [2, 3, 7], "been": 2, "energy_out_kev": 2, "receiv": 2, "cmptn_yield": 2, "need": [2, 3, 7], "suppli": 2, "get_element_mass_fract": 2, "look": 2, "mass_fract": 2, "get_element_numb": 2, "symbol": 2, "won": 2, "t": [2, 3, 6, 7], "convert": [2, 7], "get_fluo_yield": 2, "fluo_lin": 2, "consid": [2, 3], "incomb": 2, "emit": 2, "el_yield": 2, "convert_kev_to_m": 2, "convert_m_to_kev": 2, "energy_m": 2, "pencil_beam_profil": 2, "voxel_size_um": 2, "beam_fwhm_um": 2, "profile_s": 2, "beam_shap": 2, "point": [2, 3, 7], "spread": 2, "length": [2, 7], "fwhm": 2, "print": 2, "tomograph": [2, 6, 7], "projectoruncorrect": [2, 7], "att_vol_angl": 2, "sino": [2, 7], "bp_angl": 2, "angle_ind": 2, "single_lin": 2, "singl": 2, "foward": 2, "collapse_detector": 2, "configur": 2, "vol": [2, 3, 7], "fp_angl": 2, "sino_lin": 2, "spmatrix": 2, "prj_vwu": 2, "prj_vu": 2, "proj": [2, 3], "could": 2, "try": 2, "prj_intens": 2, "projector_backend": 2, "projectorbackend": [2, 7], "vol_geom": 2, "baseregular": 2, "initilizi": 2, "place": 2, "compute_update_prim": 2, "partial": 2, "upd": 2, "initialize_sigma_tau": 2, "intern": [2, 7], "state": 2, "tau": 2, "op": 2, "stat": 2, "baseregularizer_m": 2, "filt_siz": 2, "constraint_lowerlimit": 2, "certain": 2, "constraint_upperlimit": 2, "regularizer_grad": 2, "piec": 2, "regularizer_hubtv2d": 2, "huber_s": 2, "regularizer_hubtv3d": 2, "regularizer_hub_dwl": 2, "level": 2, "pad_on_demand": 2, "regularizer_dwl": 2, "regularizer_hub_swl": 2, "min_approx": 2, "regularizer_swl": 2, "regularizer_tnv": 2, "x_ref": 2, "regularizer_tv2d": 2, "regularizer_tv3d": 2, "regularizer_vtv": 2, "pwise_der_norm": 2, "pwise_chan_norm": 2, "inf": 2, "vectori": 2, "vtv": 2, "regularizer_fft": 2, "exp": 2, "regularizer_l1": 2, "regularizer_l1dwl": 2, "regularizer_l1m": 2, "regularizer_l1swl": 2, "regularizer_l2m": 2, "regularizer_lap": 2, "regularizer_lap2d": 2, "regularizer_lap3d": 2, "regularizer_lnswl": 2, "compress": 2, "regularizer_smooth2d": 2, "regularizer_smooth3d": 2, "regularizer_vsvd": 2, "axis_channel": 2, "similar": [2, 7], "regularizer_vl1wl": 2, "pwise_lvl_norm": 2, "problem": 2, "alia": 2, "toler": 2, "data_term_test": 2, "stand": [2, 7], "hybridg": 2, "stop": 2, "same": [2, 3, 7], "rest": 2, "power_method": 2, "b": 2, "power": 2, "whose": 2, "simultan": [2, 6, 7], "algebra": [2, 6, 7], "techniqu": [2, 6, 7], "a_num_row": 2, "b_mask": 2, "max_iter": 2, "residual0": 2, "residual0_cv": 2, "residuals_cv": 2, "residuals_cv_rel": 2, "residuals_rel": 2, "thu": [2, 7], "jun": 2, "12": [2, 4], "28": 2, "2020": [2, 3, 4], "add_nois": 2, "img_clean": 2, "num_photon": 2, "add_poisson": 2, "readout_noise_std": 2, "background_avg": 2, "background_std": 2, "detection_effici": 2, "add": 2, "nois": [2, 3, 6, 7], "clean": 2, "photon": [2, 7], "poisson": [2, 6, 7], "readout": 2, "effici": 2, "detect": 2, "e": [2, 6, 7], "g": [2, 6, 7], "inclin": 2, "compute_error_pow": 2, "expected_vol": 2, "computed_vol": 2, "signal": 2, "create_sino": 2, "ph": 2, "num_angl": 2, "start_angle_deg": 2, "end_angle_deg": 2, "180": [2, 7], "dwell_time_": 2, "photon_flux": 2, "1000000000": 2, "detectors_pos_rad": 2, "vol_att_in": 2, "vol_att_out": 2, "imping": 2, "degre": [2, 3], "final": [2, 7], "acquisit": [2, 7], "time": 2, "flux": 2, "unit": 2, "second": [2, 3], "1e9": 2, "pi": 2, "outgo": 2, "probe": 2, "profil": [2, 3], "switch": 2, "read": 2, "datatyp": 2, "angular": 2, "phton": 2, "create_sino_transmiss": 2, "download_phantom": 2, "download": 2, "barbei": 2, "repositori": 2, "phantom_assign_concentr": 2, "ph_or": 2, "ca": 2, "em_lin": 2, "ka": 2, "in_energy_kev": 2, "20": [2, 4], "ha": 2, "n": [2, 3, 6, 7], "sol\u00e9": [2, 6, 7], "induc": [2, 6, 7], "emiss": [2, 6, 7], "tomographi": [2, 3, 6, 7], "simul": [2, 6, 7], "studi": [2, 6, 7], "mea": [2, 6, 7], "sci": [2, 6, 7], "technol": [2, 6, 7], "pp": [2, 3, 6, 7], "26": [2, 6, 7], "nov": [2, 6, 7], "2017": [2, 6, 7], "alpha": 2, "kev": 2, "vol_fluo_yield": 2, "phantom_assign_concentration_multi": 2, "fe": 2, "vol_yield": 2, "roundup_to_pow2": 2, "p": [2, 7], "round": 2, "indic": 2, "up": 2, "top": 2, "pycorrectedemissionct": 2, "miscellan": 3, "azimuthal_integr": 3, "them": 3, "wrong": 3, "data_shape_vu": 3, "radiu": 3, "super_sampl": 3, "func": 3, "specifi": [3, 7], "smoother": 3, "circular_mask": 3, "vol_shape_zxi": 3, "signedinteg": 3, "radius_offset": 3, "coords_bal": 3, "vol_origin_zxi": 3, "taper_func": 3, "taper_target": 3, "ndarrayint": 3, "offset": 3, "origin": [3, 7], "allow": 3, "const": 3, "co": 3, "unknown": 3, "lines_intersect": 3, "line_1": 3, "line_2": 3, "x_lim": 3, "two": [3, 6, 7], "scalar": 3, "repres": 3, "wa": 3, "found": [3, 7], "norm_cross_corr": 3, "img1": 3, "img2": 3, "t_match": 3, "mode_ful": 3, "compute_profil": 3, "auto": 3, "templat": 3, "tue": 3, "mar": 3, "24": 3, "15": [3, 4], "25": [3, 4], "14": [3, 4], "snrt": 3, "2071": 3, "taper_ratio": 3, "supersampl": 3, "ring": 3, "pleas": [3, 6], "articl": 3, "van": 3, "heel": 3, "schatz": 3, "threshold": 3, "criteria": 3, "struct": 3, "biol": 3, "151": 3, "262": 3, "sep": 3, "2005": 3, "snr": 3, "resolut": [3, 7], "4142": 3, "hald": 3, "bit": [3, 7], "dataset": 3, "split": 3, "halv": 3, "half": 3, "threashold": 3, "we": [3, 6, 7], "want": [3, 6], "hann": [3, 7], "taper": 3, "off": 3, "truncat": 3, "avoid": 3, "artifact": 3, "factor": 3, "increas": 3, "high": 3, "frequenc": 3, "rang": 3, "nyquist": 3, "threshod": 3, "plot_frc": 3, "volume_pair": 3, "label": 3, "titl": 3, "figur": 3, "pair": 3, "unus": 3, "displai": 3, "apply_flat_field": 3, "dark": 3, "falt": 3, "apply_minus_log": 3, "pad_sinogram": 3, "width": 3, "pad_axi": 3, "rotate_proj_stack": 3, "data_vwu": 3, "rot_angle_deg": 3, "w": [3, 7], "omega": [3, 7], "content": [4, 5], "corrct": [4, 7], "get": 4, "how": [4, 7], "contribut": 4, "changelog": 4, "10": [4, 6, 7], "09": 4, "08": 4, "06": 4, "04": 4, "2021": 4, "29": 4, "03": 4, "30": 4, "02": 4, "search": 4, "page": 4, "subpackag": 5, "submodul": 5, "data_term": [5, 7], "param_tun": 5, "physic": [5, 6, 7], "ct": 6, "usual": [6, 7], "abbrevi": 6, "pronounc": 6, "corr": 6, "optim": 6, "hybrid": [6, 7], "like": [6, 7], "learn": [6, 7], "variant": 6, "pymr": 6, "elbow": [6, 7], "paper": 6, "mathemat": 6, "concept": 6, "here": 6, "doi": 6, "org": 6, "1088": 6, "1361": 6, "6501": 6, "aa9d54": 6, "free": 6, "cicwi": 6, "io": 6, "take": [6, 7], "few": 6, "setup": 6, "your": 6, "machin": 6, "recommend": 6, "anaconda": 6, "manag": 6, "simpli": 6, "vigano": 6, "you": 6, "fast": 6, "jupyt": 6, "system": [6, 7], "slurm": 6, "To": [6, 7], "clone": 6, "go": 6, "directori": 6, "git": 6, "cd": 6, "about": 6, "check": 6, "our": 6, "folder": 6, "see": [6, 7], "who": 6, "particip": 6, "alwai": [6, 7], "welcom": 6, "submit": 6, "pull": 6, "master": 6, "branch": 6, "issu": 6, "question": 6, "remark": 6, "open": 6, "under": 6, "md": 6, "detail": 6, "introduc": 7, "topic": 7, "organ": 7, "yx": 7, "present": 7, "wu": 7, "suppos": 7, "simplest": 7, "meant": 7, "intend": 7, "serv": 7, "statement": 7, "care": 7, "de": 7, "underli": 7, "resourc": 7, "import": 7, "cct": 7, "vol_shape_xi": 7, "angles_rad": 7, "deg2rad": 7, "linspac": 7, "endpoint": 7, "prj": 7, "ones": 7, "done": 7, "veri": 7, "manner": 7, "involv": 7, "later": 7, "section": 7, "avil": 7, "thei": 7, "skimag": 7, "_projector_backend": 7, "achiev": 7, "analyt": 7, "mr": 7, "driven": 7, "assum": 7, "variabl": 7, "solver_fbp": 7, "_": 7, "By": 7, "anoth": 7, "shepp": 7, "logan": 7, "both": 7, "box": 7, "count": 7, "solver_sirt": 7, "100": 7, "intial": 7, "goe": 7, "upper_limit": 7, "describ": 7, "effect": 7, "subject": 7, "knowledg": 7, "experiment": 7, "excit": 7, "morpholog": 7, "emitt": 7, "att_in": 7, "att_out": 7, "angles_detectors_rad": 7, "suggest": 7, "drawback": 7, "cannot": 7, "re": 7, "deleg": 7, "entir": 7, "choos": 7, "particularli": 7, "conjunct": 7, "former": 7, "while": 7, "latter": 7, "famou": 7, "varianc": 7, "known": 7, "mostli": 7, "kullback": 7, "leibler": 7, "deal": 7}, "objects": {"": [[2, 0, 0, "-", "corrct"]], "corrct": [[2, 0, 0, "-", "attenuation"], [2, 0, 0, "-", "data_terms"], [2, 0, 0, "-", "denoisers"], [2, 0, 0, "-", "filters"], [2, 0, 0, "-", "models"], [2, 0, 0, "-", "operators"], [2, 0, 0, "-", "param_tuning"], [2, 0, 0, "-", "physics"], [3, 0, 0, "-", "processing"], [2, 0, 0, "-", "projectors"], [2, 0, 0, "-", "regularizers"], [2, 0, 0, "-", "solvers"], [2, 0, 0, "-", "testing"]], "corrct.attenuation": [[2, 1, 1, "", "AttenuationVolume"]], "corrct.attenuation.AttenuationVolume": [[2, 2, 1, "", "angles_det_rad"], [2, 2, 1, "", "angles_rot_rad"], [2, 3, 1, "", "compute_maps"], [2, 2, 1, "", "dtype"], [2, 2, 1, "", "emitted_local"], [2, 3, 1, "", "get_maps"], [2, 3, 1, "", "get_projector_args"], [2, 2, 1, "", "incident_local"], [2, 2, 1, "", "maps"], [2, 3, 1, "", "plot_map"], [2, 2, 1, "", "vol_shape_zyx"]], "corrct.data_terms": [[2, 1, 1, "", "DataFidelityBase"], [2, 1, 1, "", "DataFidelity_Huber"], [2, 1, 1, "", "DataFidelity_KL"], [2, 1, 1, "", "DataFidelity_l1"], [2, 1, 1, "", "DataFidelity_l12"], [2, 1, 1, "", "DataFidelity_l1b"], [2, 1, 1, "", "DataFidelity_l2"], [2, 1, 1, "", "DataFidelity_l2b"], [2, 1, 1, "", "DataFidelity_ln"], [2, 1, 1, "", "DataFidelity_wl2"]], "corrct.data_terms.DataFidelityBase": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_data_dual_dot"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_dual"], [2, 3, 1, "", "lower"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"], [2, 3, 1, "", "update_dual"], [2, 3, 1, "", "upper"]], "corrct.data_terms.DataFidelity_Huber": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_KL": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l1": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l12": [[2, 2, 1, "", "background"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l1b": [[2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l2": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l2b": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_ln": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_wl2": [[2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_residual"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.denoisers": [[2, 4, 1, "", "denoise_image"]], "corrct.filters": [[2, 1, 1, "", "Filter"], [2, 1, 1, "", "FilterCustom"], [2, 1, 1, "", "FilterFBP"], [2, 1, 1, "", "FilterMR"], [2, 4, 1, "", "create_basis"]], "corrct.filters.Filter": [[2, 3, 1, "", "apply_filter"], [2, 3, 1, "", "compute_filter"], [2, 2, 1, "", "dtype"], [2, 2, 1, "", "fbp_filter"], [2, 5, 1, "", "filter_fourier"], [2, 5, 1, "", "filter_real"], [2, 3, 1, "", "get_padding_size"], [2, 5, 1, "", "num_filters"], [2, 2, 1, "", "pad_mode"], [2, 3, 1, "", "plot_filters"], [2, 3, 1, "", "to_fourier"], [2, 3, 1, "", "to_real"], [2, 2, 1, "", "use_rfft"]], "corrct.filters.FilterCustom": [[2, 3, 1, "", "compute_filter"], [2, 2, 1, "", "dtype"], [2, 2, 1, "", "fbp_filter"], [2, 2, 1, "", "pad_mode"], [2, 2, 1, "", "use_rfft"]], "corrct.filters.FilterFBP": [[2, 3, 1, "", "compute_filter"], [2, 2, 1, "", "filter_name"]], "corrct.filters.FilterMR": [[2, 2, 1, "", "binning_start"], [2, 2, 1, "", "binning_type"], [2, 3, 1, "", "compute_filter"], [2, 3, 1, "", "initialize"], [2, 2, 1, "", "is_initialized"], [2, 2, 1, "", "lambda_smooth"], [2, 2, 1, "", "projector"]], "corrct.models": [[2, 1, 1, "", "Geometry"], [2, 1, 1, "", "ProjectionGeometry"], [2, 1, 1, "", "VolumeGeometry"]], "corrct.models.ProjectionGeometry": [[2, 2, 1, "", "det_pos_xyz"], [2, 2, 1, "", "det_shape_vu"], [2, 2, 1, "", "det_u_xyz"], [2, 2, 1, "", "det_v_xyz"], [2, 2, 1, "", "geom_type"], [2, 3, 1, "", "get_default_parallel"], [2, 3, 1, "", "get_field_scaled"], [2, 2, 1, "", "pix2vox_ratio"], [2, 3, 1, "", "project_displacement_to_detector"], [2, 2, 1, "", "rot_dir_xyz"], [2, 3, 1, "", "rotate"], [2, 3, 1, "", "set_detector_shifts_vu"], [2, 2, 1, "", "src_pos_xyz"]], "corrct.models.VolumeGeometry": [[2, 5, 1, "", "extent"], [2, 3, 1, "", "get_default_from_data"], [2, 3, 1, "", "is_3D"], [2, 3, 1, "", "is_square"], [2, 5, 1, "", "shape_xyz"], [2, 5, 1, "", "shape_zxy"], [2, 2, 1, "", "vox_size"]], "corrct.operators": [[2, 1, 1, "", "BaseTransform"], [2, 1, 1, "", "BaseWaveletTransform"], [2, 1, 1, "", "ProjectorOperator"], [2, 1, 1, "", "TransformConvolution"], [2, 1, 1, "", "TransformDecimatedWavelet"], [2, 1, 1, "", "TransformDiagonalScaling"], [2, 1, 1, "", "TransformFourier"], [2, 1, 1, "", "TransformFunctions"], [2, 1, 1, "", "TransformGradient"], [2, 1, 1, "", "TransformIdentity"], [2, 1, 1, "", "TransformLaplacian"], [2, 1, 1, "", "TransformSVD"], [2, 1, 1, "", "TransformStationaryWavelet"]], "corrct.operators.BaseTransform": [[2, 3, 1, "", "absolute"], [2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "explicit"], [2, 3, 1, "", "rmatvec"]], "corrct.operators.BaseWaveletTransform": [[2, 2, 1, "", "axes"], [2, 2, 1, "", "wavelet"]], "corrct.operators.ProjectorOperator": [[2, 2, 1, "", "adj_shape"], [2, 3, 1, "", "bp"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "fp"], [2, 5, 1, "", "prj_shape"], [2, 5, 1, "", "vol_shape"]], "corrct.operators.TransformConvolution": [[2, 3, 1, "", "absolute"], [2, 2, 1, "", "flip_adjoint"], [2, 2, 1, "", "is_symm"], [2, 2, 1, "", "kernel"], [2, 2, 1, "", "pad_mode"]], "corrct.operators.TransformDecimatedWavelet": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "axes"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "direct_dwt"], [2, 3, 1, "", "inverse_dwt"], [2, 2, 1, "", "wavelet"]], "corrct.operators.TransformDiagonalScaling": [[2, 3, 1, "", "absolute"], [2, 2, 1, "", "scale"]], "corrct.operators.TransformFourier": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "fft"], [2, 3, 1, "", "ifft"]], "corrct.operators.TransformFunctions": [[2, 3, 1, "", "absolute"], [2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"]], "corrct.operators.TransformGradient": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "divergence"], [2, 3, 1, "", "gradient"]], "corrct.operators.TransformIdentity": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"]], "corrct.operators.TransformLaplacian": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "laplacian"]], "corrct.operators.TransformSVD": [[2, 2, 1, "", "U"], [2, 2, 1, "", "Vt"], [2, 3, 1, "", "direct_svd"], [2, 3, 1, "", "inverse_svd"]], "corrct.operators.TransformStationaryWavelet": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "axes"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "direct_swt"], [2, 3, 1, "", "inverse_swt"], [2, 2, 1, "", "wavelet"]], "corrct.param_tuning": [[2, 1, 1, "", "BaseRegularizationEstimation"], [2, 1, 1, "", "CrossValidation"], [2, 1, 1, "", "LCurve"], [2, 4, 1, "", "create_random_test_mask"]], "corrct.param_tuning.BaseRegularizationEstimation": [[2, 3, 1, "", "compute_loss_values"], [2, 3, 1, "", "compute_reconstruction_and_loss"], [2, 3, 1, "", "compute_reconstruction_error"], [2, 3, 1, "", "get_lambda_range"], [2, 5, 1, "", "solver_calling_function"], [2, 5, 1, "", "solver_spawning_function"]], "corrct.param_tuning.CrossValidation": [[2, 3, 1, "", "compute_loss_values"], [2, 3, 1, "", "fit_loss_min"]], "corrct.param_tuning.LCurve": [[2, 3, 1, "", "compute_loss_values"]], "corrct.physics": [[2, 1, 1, "", "DetectorXRF"], [2, 1, 1, "", "FluoLine"], [2, 1, 1, "", "FluoLinesSiegbahn"], [2, 1, 1, "", "VolumeMaterial"], [2, 4, 1, "", "convert_keV_to_m"], [2, 4, 1, "", "convert_m_to_keV"], [2, 4, 1, "", "pencil_beam_profile"]], "corrct.physics.DetectorXRF": [[2, 2, 1, "", "angle_rad"], [2, 2, 1, "", "distance_mm"], [2, 5, 1, "", "solid_angle_sr"], [2, 2, 1, "", "surface_mm2"]], "corrct.physics.FluoLine": [[2, 2, 1, "", "indx"], [2, 2, 1, "", "name"]], "corrct.physics.FluoLinesSiegbahn": [[2, 3, 1, "", "get_energy"], [2, 3, 1, "", "get_lines"], [2, 2, 1, "", "lines"]], "corrct.physics.VolumeMaterial": [[2, 3, 1, "", "get_attenuation"], [2, 3, 1, "", "get_compound"], [2, 3, 1, "", "get_compton_scattering"], [2, 3, 1, "", "get_element_mass_fraction"], [2, 3, 1, "", "get_element_number"], [2, 3, 1, "", "get_fluo_yield"]], "corrct.processing": [[3, 0, 0, "-", "misc"], [3, 0, 0, "-", "post"], [3, 0, 0, "-", "pre"]], "corrct.processing.misc": [[3, 4, 1, "", "azimuthal_integration"], [3, 4, 1, "", "ball"], [3, 4, 1, "", "circular_mask"], [3, 4, 1, "", "lines_intersection"], [3, 4, 1, "", "norm_cross_corr"]], "corrct.processing.post": [[3, 4, 1, "", "com"], [3, 4, 1, "", "frc"], [3, 4, 1, "", "plot_frcs"]], "corrct.processing.pre": [[3, 4, 1, "", "apply_flat_field"], [3, 4, 1, "", "apply_minus_log"], [3, 4, 1, "", "pad_sinogram"], [3, 4, 1, "", "rotate_proj_stack"]], "corrct.projectors": [[2, 1, 1, "", "ProjectorAttenuationXRF"], [2, 1, 1, "", "ProjectorMatrix"], [2, 1, 1, "", "ProjectorUncorrected"]], "corrct.projectors.ProjectorAttenuationXRF": [[2, 2, 1, "", "att_vol_angles"], [2, 3, 1, "", "bp"], [2, 3, 1, "", "bp_angle"], [2, 3, 1, "", "collapse_detectors"], [2, 3, 1, "", "fp"], [2, 3, 1, "", "fp_angle"]], "corrct.projectors.ProjectorMatrix": [[2, 2, 1, "", "A"], [2, 3, 1, "", "absolute"], [2, 3, 1, "", "bp"], [2, 3, 1, "", "fp"]], "corrct.projectors.ProjectorUncorrected": [[2, 5, 1, "", "angles_rot_rad"], [2, 3, 1, "", "bp"], [2, 3, 1, "", "bp_angle"], [2, 3, 1, "", "fbp"], [2, 3, 1, "", "fp"], [2, 3, 1, "", "fp_angle"], [2, 2, 1, "", "prj_intensities"], [2, 2, 1, "", "projector_backend"], [2, 2, 1, "", "psf"], [2, 2, 1, "", "vol_geom"]], "corrct.regularizers": [[2, 1, 1, "", "BaseRegularizer"], [2, 1, 1, "", "BaseRegularizer_med"], [2, 1, 1, "", "Constraint_LowerLimit"], [2, 1, 1, "", "Constraint_UpperLimit"], [2, 1, 1, "", "Regularizer_Grad"], [2, 1, 1, "", "Regularizer_HubTV2D"], [2, 1, 1, "", "Regularizer_HubTV3D"], [2, 1, 1, "", "Regularizer_Hub_dwl"], [2, 1, 1, "", "Regularizer_Hub_swl"], [2, 1, 1, "", "Regularizer_TNV"], [2, 1, 1, "", "Regularizer_TV2D"], [2, 1, 1, "", "Regularizer_TV3D"], [2, 1, 1, "", "Regularizer_VTV"], [2, 1, 1, "", "Regularizer_dwl"], [2, 1, 1, "", "Regularizer_fft"], [2, 1, 1, "", "Regularizer_l1"], [2, 1, 1, "", "Regularizer_l1dwl"], [2, 1, 1, "", "Regularizer_l1med"], [2, 1, 1, "", "Regularizer_l1swl"], [2, 1, 1, "", "Regularizer_l2med"], [2, 1, 1, "", "Regularizer_lap"], [2, 1, 1, "", "Regularizer_lap2D"], [2, 1, 1, "", "Regularizer_lap3D"], [2, 1, 1, "", "Regularizer_lnswl"], [2, 1, 1, "", "Regularizer_smooth2D"], [2, 1, 1, "", "Regularizer_smooth3D"], [2, 1, 1, "", "Regularizer_swl"], [2, 1, 1, "", "Regularizer_vSVD"], [2, 1, 1, "", "Regularizer_vl1wl"]], "corrct.regularizers.BaseRegularizer": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "compute_update_primal"], [2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_dual"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 3, 1, "", "lower"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 3, 1, "", "upper"], [2, 2, 1, "", "weight"]], "corrct.regularizers.BaseRegularizer_med": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Constraint_LowerLimit": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Constraint_UpperLimit": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_Grad": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_HubTV2D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_HubTV3D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_Hub_dwl": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_Hub_swl": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_TNV": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_TV2D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_TV3D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_VTV": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_dwl": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_fft": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l1": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l1dwl": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l1med": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l1swl": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l2med": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_lap": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_lap2D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_lap3D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_lnswl": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_smooth2D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_smooth3D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_swl": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_vSVD": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_vl1wl": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.solvers": [[2, 2, 1, "", "CP"], [2, 1, 1, "", "FBP"], [2, 1, 1, "", "PDHG"], [2, 1, 1, "", "SART"], [2, 1, 1, "", "SIRT"], [2, 1, 1, "", "SolutionInfo"], [2, 1, 1, "", "Solver"]], "corrct.solvers.FBP": [[2, 3, 1, "", "info"]], "corrct.solvers.PDHG": [[2, 3, 1, "", "info"], [2, 3, 1, "", "power_method"]], "corrct.solvers.SART": [[2, 3, 1, "", "compute_residual"]], "corrct.solvers.SIRT": [[2, 3, 1, "", "info"]], "corrct.solvers.SolutionInfo": [[2, 2, 1, "", "iterations"], [2, 2, 1, "", "max_iterations"], [2, 2, 1, "", "method"], [2, 2, 1, "", "residual0"], [2, 2, 1, "", "residual0_cv"], [2, 2, 1, "", "residuals"], [2, 2, 1, "", "residuals_cv"], [2, 5, 1, "", "residuals_cv_rel"], [2, 5, 1, "", "residuals_rel"], [2, 2, 1, "", "tolerance"]], "corrct.solvers.Solver": [[2, 3, 1, "", "info"], [2, 3, 1, "", "lower"], [2, 3, 1, "", "upper"]], "corrct.testing": [[2, 4, 1, "", "add_noise"], [2, 4, 1, "", "compute_error_power"], [2, 4, 1, "", "create_sino"], [2, 4, 1, "", "create_sino_transmission"], [2, 4, 1, "", "download_phantom"], [2, 4, 1, "", "phantom_assign_concentration"], [2, 4, 1, "", "phantom_assign_concentration_multi"], [2, 4, 1, "", "roundup_to_pow2"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "titleterms": {"changelog": 1, "0": 1, "7": 1, "2022": 1, "10": 1, "11": 1, "ad": 1, "fix": 1, "6": 1, "09": 1, "08": 1, "5": 1, "1": 1, "06": 1, "23": 1, "04": 1, "14": 1, "4": 1, "2": 1, "01": 1, "2021": 1, "12": 1, "29": 1, "3": 1, "15": 1, "2020": 1, "20": 1, "05": 1, "03": 1, "30": 1, "02": 1, "25": 1, "2019": 1, "corrct": [2, 3, 5, 6], "packag": [2, 3], "subpackag": 2, "submodul": [2, 3], "attenu": [2, 7], "modul": [2, 3], "data_term": 2, "denois": 2, "filter": 2, "model": [2, 7], "oper": 2, "param_tun": 2, "physic": 2, "projector": [2, 7], "regular": [2, 7], "solver": [2, 7], "test": 2, "content": [2, 3], "process": 3, "misc": 3, "post": 3, "pre": 3, "welcom": 4, "document": 4, "pycorrectedemissionct": [4, 6], "indic": 4, "tabl": 4, "get": 6, "start": 6, "instal": 6, "conda": 6, "from": 6, "pypi": 6, "sourc": 6, "run": 6, "exampl": 6, "author": 6, "contributor": 6, "how": 6, "contribut": 6, "licens": 6, "tutori": 7, "reconstruct": 7, "project": 7, "data": 7, "The": 7, "geometri": 7, "fbp": 7, "sirt": 7, "pdhg": 7, "correct": 7, "term": 7, "fidel": 7, "guid": 7, "paramet": 7, "select": 7, "refer": 7}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["LICENSE", "changelog", "corrct", "corrct.processing", "index", "modules", "readme", "tutorial"], "filenames": ["LICENSE.md", "changelog.md", "corrct.rst", "corrct.processing.rst", "index.rst", "modules.rst", "readme.md", "tutorial.md"], "titles": ["<no title>", "Changelog", "corrct package", "corrct.processing package", "Welcome to the documentation of PyCorrectedEmissionCT!", "corrct", "PyCorrectedEmissionCT (corrct)", "Tutorial"], "terms": {"bsd": [0, 6], "3": [0, 2, 3, 4, 6], "claus": [0, 6], "licens": [0, 4], "copyright": 0, "c": [0, 6], "2019": [0, 4], "nicola": [0, 2, 3, 6], "vigan\u00f2": [0, 2, 3, 6, 7], "all": [0, 1, 2, 3, 7], "right": [0, 2, 6], "reserv": 0, "redistribut": 0, "us": [0, 1, 2, 3, 6, 7], "sourc": [0, 2, 3], "binari": 0, "form": [0, 1], "without": 0, "modif": 0, "ar": [0, 2, 3, 6, 7], "permit": 0, "provid": [0, 2, 6, 7], "follow": [0, 3, 6, 7], "condit": [0, 1, 7], "met": 0, "code": [0, 1, 2, 6, 7], "must": 0, "retain": 0, "abov": 0, "notic": 0, "thi": [0, 1, 2, 3, 6, 7], "list": [0, 2, 3, 6], "disclaim": 0, "reproduc": 0, "document": [0, 1, 6], "other": [0, 1, 6, 7], "materi": 0, "distribut": 0, "neither": [0, 2, 3], "name": [0, 1, 2, 6, 7], "holder": 0, "nor": [0, 2, 3], "its": [0, 6], "contributor": [0, 4], "mai": 0, "endors": 0, "promot": [0, 2], "product": [0, 2], "deriv": [0, 7], "from": [0, 1, 2, 3, 7], "softwar": [0, 6], "specif": [0, 2, 7], "prior": [0, 7], "written": 0, "permiss": 0, "IS": 0, "BY": 0, "THE": 0, "AND": 0, "AS": 0, "ani": [0, 2, 3, 6], "express": 0, "OR": 0, "impli": 0, "warranti": 0, "includ": [0, 1, 2, 6, 7], "BUT": 0, "NOT": 0, "limit": [0, 1, 2, 7], "TO": 0, "OF": 0, "merchant": 0, "fit": [0, 2, 6], "FOR": 0, "A": [0, 1, 2, 3, 6, 7], "particular": 0, "purpos": 0, "IN": 0, "NO": 0, "event": 0, "shall": 0, "BE": 0, "liabl": 0, "direct": [0, 1, 2, 3, 7], "indirect": 0, "incident": 0, "special": 0, "exemplari": 0, "consequenti": 0, "damag": 0, "procur": 0, "substitut": 0, "good": 0, "servic": 0, "loss": 0, "data": [0, 1, 2, 3, 4, 6], "profit": 0, "busi": 0, "interrupt": 0, "howev": 0, "caus": 0, "ON": 0, "theori": 0, "liabil": 0, "whether": [0, 2, 3], "contract": 0, "strict": 0, "tort": 0, "neglig": 0, "otherwis": 0, "aris": 0, "wai": [0, 1, 7], "out": [0, 2, 6], "even": 0, "IF": 0, "advis": 0, "possibl": [0, 7], "SUCH": 0, "notabl": 1, "chang": 1, "project": [1, 2, 3, 4, 6], "file": [1, 6], "The": [1, 2, 3], "format": 1, "base": [1, 2, 7], "keep": 1, "adher": 1, "semant": 1, "version": 1, "more": [1, 3, 6, 7], "tutori": [1, 4], "content": [1, 4, 5], "energi": [1, 2, 7], "convers": 1, "function": [1, 2, 3, 6], "kev": [1, 2], "m": [1, 2, 3, 7], "viceversa": 1, "taper": [1, 3], "truncat": [1, 3], "volum": [1, 2, 3, 7], "fsc": [1, 3], "comput": [1, 2, 3, 7], "typo": 1, "prevent": 1, "projectiongeometri": [1, 2], "model": [1, 5, 6], "shape": [1, 2, 3], "dimens": [1, 2, 3], "xyz": [1, 2], "vs": 1, "zxy": [1, 2], "interpret": 1, "volumegeometri": [1, 2], "cross": [1, 2, 3, 6, 7], "valid": [1, 2, 6, 7], "term": [1, 2, 4, 6], "initi": [1, 2, 6, 7], "solver": [1, 5, 6], "circular": [1, 3, 7], "mask": [1, 2, 3], "wide": [1, 6], "api": 1, "refactor": 1, "renam": 1, "variou": [1, 6, 7], "modul": [1, 4, 5, 6, 7], "move": 1, "process": [1, 2, 5, 7], "routin": [1, 3], "sub": [1, 2, 3], "packag": [1, 4, 5, 6, 7], "draft": 1, "line": [1, 2, 3], "intersect": [1, 3], "plot": [1, 2, 3], "frc": [1, 3], "test": [1, 5], "support": [1, 2, 6, 7], "projector": [1, 5, 6], "simplifi": [1, 2], "exampl": 1, "ax": [1, 2, 3], "select": [1, 2, 3, 4, 6], "multi": [1, 2, 6, 7], "channel": [1, 2, 6], "collabor": [1, 6], "regular": [1, 4, 5, 6], "tnv": [1, 2, 6], "total": [1, 2, 6], "nuclear": [1, 2, 6], "variat": [1, 2, 6], "custom": [1, 2, 7], "extern": 1, "user": [1, 6, 7], "defin": [1, 2], "backend": [1, 6, 7], "dedic": 1, "fbp": [1, 2, 6], "filter": [1, 5, 6, 7], "parallel": [1, 2, 7], "guid": [1, 4, 6], "lot": 1, "work": [1, 3, 6], "toward": 1, "full": [1, 3], "type": [1, 2, 3], "hint": 1, "usag": [1, 7], "potenti": 1, "memori": 1, "leak": 1, "astra": [1, 2, 6, 7], "toolbox": [1, 2, 6, 7], "gradient": [1, 2, 6, 7], "laplacian": [1, 2, 6], "implement": [1, 2, 7], "arbitrari": 1, "output": [1, 2, 3], "consist": 1, "class": [1, 2, 3, 7], "residu": [1, 2], "norm": [1, 2, 7], "weight": [1, 2, 7], "least": [1, 2, 7], "squar": [1, 2, 7], "mismatch": [1, 3], "when": [1, 2, 3, 7], "onli": [1, 2, 7], "one": [1, 2, 3, 7], "angl": [1, 2, 3, 7], "back": [1, 2, 6, 7], "normal": [1, 2, 3], "scikit": [1, 6, 7], "imag": [1, 2, 3, 6, 7], "better": 1, "3d": [1, 2, 7], "geometri": [1, 2], "s": [1, 2, 7], "rfft": 1, "pad": [1, 2, 3], "mode": [1, 2, 3], "constant": [1, 2], "edg": [1, 2, 3], "etc": [1, 2, 7], "convolut": [1, 2, 3], "oper": [1, 5, 6, 7], "lorentzian": 1, "sech": 1, "beam": [1, 2, 7], "center": [1, 3, 7], "mass": [1, 2, 3], "border": 1, "behavior": [1, 2], "sanit": 1, "input": [1, 2, 3], "denois": [1, 5], "deconvolut": 1, "method": [1, 2, 6, 7], "handl": [1, 7], "2d": [1, 2], "rotat": [1, 2, 3, 7], "new": 1, "call": [1, 2, 7], "descript": [1, 2, 6], "manipul": 1, "unmatch": 1, "pixel": [1, 2, 3, 7], "voxel": [1, 2, 3], "size": [1, 2, 3, 7], "cone": 1, "uneven": 1, "tilt": 1, "detector": [1, 2, 7], "stack": [1, 2, 3], "correl": [1, 3], "curv": [1, 2, 3], "psf": [1, 2], "pencil": [1, 2], "scan": [1, 2], "gaussian": [1, 2, 6], "attenu": [1, 4, 5, 6], "map": [1, 2, 7], "outsid": 1, "correct": [1, 2, 3, 4, 6], "have": [1, 2, 3, 6], "small": 1, "outlier": 1, "gener": [1, 2, 3], "bug": 1, "azimuth": [1, 3], "integr": [1, 2, 3], "inconsist": 1, "between": [1, 2, 3], "xrf": [1, 2, 7], "siegbahn": [1, 2], "log": [1, 2, 3], "scale": [1, 2, 7], "weigth": 1, "docstr": 1, "especi": 1, "non": [1, 3, 7], "symmetr": [1, 2], "sart": [1, 2, 6, 7], "wavelet": [1, 2, 6, 7], "instal": 1, "instruct": 1, "flat": [1, 2, 3], "field": [1, 2, 3], "updat": [1, 2], "latest": 1, "uncertainti": 1, "propag": 1, "minim": [1, 2], "unprecondit": 1, "l1": [1, 2, 6, 7], "standard": [1, 2], "doubl": 1, "applic": [1, 2], "sirt": [1, 2, 6], "pdhg": [1, 2, 6], "precondit": 1, "default": [1, 2, 3, 7], "approxim": [1, 2], "low": 1, "pass": [1, 2, 3, 7], "portion": 1, "decomposit": [1, 2], "l": [1, 2], "paramet": [1, 2, 3, 4, 6], "differ": [1, 2, 7], "across": [1, 2], "reconstruct": [1, 2, 3, 4, 6], "improv": [1, 2, 7], "perform": [1, 2, 3, 7], "restructur": 1, "expand": 1, "phantom": [1, 2], "creation": [1, 7], "basic": [1, 7], "thread": [1, 2], "cpu": 1, "automat": 1, "transform": [1, 2], "dwt": 1, "deprec": 1, "warn": 1, "recent": 1, "numpi": [1, 2, 3, 7], "copi": 1, "x0": [1, 7], "among": 1, "projectormatrix": [1, 2], "precondion": 1, "prefer": 1, "gpu": [1, 7], "attenuationprojector": 1, "projectorattenuationxrf": [1, 2, 7], "set": [1, 2, 7], "calcul": 1, "fidel": [1, 2], "matrix": [1, 2], "pywavelet": 1, "interfac": [1, 2, 7], "background": [1, 2], "github": [1, 2, 6], "workflow": 1, "pip": [1, 6], "instead": 1, "conda": 1, "fft": [1, 2], "l2": [1, 2, 7], "smooth": [1, 2, 3], "multipl": 1, "l2b": 1, "deadzon": 1, "also": [1, 6, 7], "now": 1, "crop": [1, 3], "invers": [1, 2], "necessari": [1, 3], "huber": [1, 2], "l12": [1, 2], "l1b": 1, "bia": [1, 2], "tv": [1, 2, 6, 7], "decim": [1, 2], "median": [1, 2], "constraint": [1, 2, 7], "lower": [1, 2], "upper": [1, 2], "unifi": 1, "cp": [1, 2], "report": 1, "inform": [1, 2, 3, 6], "correctli": 1, "flexibl": 1, "option": [1, 2, 3, 6, 7], "eas": 1, "develop": 1, "python": [1, 6], "hard": 1, "crash": 1, "cuda": 1, "avail": [1, 7], "compli": 1, "stationari": [1, 2], "scipi": [1, 2, 7], "linalg": [1, 2], "linearoper": [1, 2], "coverag": 1, "dimension": [1, 3], "window": [1, 2, 3], "build": [1, 2], "8": [1, 2], "target": 1, "On": 1, "demand": 1, "intens": 1, "rescal": 1, "absorpt": 1, "thouroughli": 1, "yet": 1, "some": [1, 3], "autom": 1, "lint": 1, "super": [1, 3], "sampl": [1, 3, 7], "spars": [1, 2, 7], "util": [1, 2], "min": [1, 6, 7], "simpl": [1, 2, 7], "transmiss": 1, "past": 1, "error": [1, 2, 3], "axi": [1, 2, 3, 7], "order": [1, 2], "algorithm": [1, 2, 6, 7], "appli": [1, 2, 3], "readabl": 1, "chambol": [1, 2, 6, 7], "pock": [1, 2, 6, 7], "sinogram": [1, 2, 3, 7], "depend": [1, 2, 6, 7], "d": [1, 2, 7], "pelt": [1, 2, 7], "backproject": [1, 2, 7], "uncorrect": 1, "along": [1, 2, 3], "larger": [1, 3], "than": 1, "ndim": [1, 2], "link": 1, "matric": 1, "relax": [1, 2], "sign": 1, "visual": 1, "releas": 1, "forward": [1, 2, 6, 7], "misc": [2, 5], "post": [2, 5], "pre": [2, 5], "incid": 2, "emid": 2, "radiat": 2, "author": [2, 3, 4], "group": [2, 3, 7], "cwi": [2, 3], "netherland": [2, 3], "esrf": [2, 3, 6], "european": [2, 3], "synchrotron": [2, 3], "grenobl": [2, 3], "franc": [2, 3], "attenuationvolum": [2, 7], "incident_loc": 2, "ndarrai": [2, 3], "dtype": [2, 3], "float": [2, 3], "emitted_loc": 2, "angles_rot_rad": 2, "union": [2, 3], "_array_lik": [2, 3], "_supportsarrai": [2, 3], "_nested_sequ": [2, 3], "_nestedsequ": [2, 3], "bool": [2, 3], "int": [2, 3], "complex": [2, 3, 7], "str": [2, 3], "byte": [2, 3], "angles_det_rad": 2, "1": [2, 3, 4, 6, 7], "5707963267948966": 2, "none": [2, 3], "_dtype_lik": [2, 3], "_supportsdtyp": [2, 3], "tupl": [2, 3], "supportsindex": [2, 3], "sequenc": [2, 3], "_dtypedict": [2, 3], "float32": [2, 3], "object": 2, "compute_map": 2, "use_multithread": 2, "true": [2, 3], "verbos": [2, 3], "each": [2, 3], "show": 2, "get_map": 2, "roi": 2, "rot_ind": 2, "slice": 2, "det_ind": 2, "scalartyp": [2, 3], "return": [2, 3], "arraylik": [2, 3], "region": [2, 3], "interest": 2, "index": [2, 4], "desir": 2, "get_projector_arg": 2, "dict": 2, "argument": [2, 3], "dictionari": 2, "contain": [2, 6, 7], "plot_map": 2, "0": [2, 3, 4, 7], "slice_ind": 2, "2": [2, 3, 4, 7], "request": [2, 3, 6, 7], "matplotlib": 2, "where": [2, 7], "rais": [2, 3], "valueerror": [2, 3], "In": [2, 3, 7], "case": [2, 3], "vol_shape_zyx": 2, "datafidelitybas": 2, "abc": 2, "datafidel": 2, "abstract": 2, "apply_proxim": 2, "dual": [2, 6, 7], "proxim": 2, "domain": [2, 3], "ndarrayfloat": 2, "solut": [2, 7], "assign_data": 2, "sigma": 2, "compute_data_dual_dot": 2, "dot": 2, "compute_primal_dual_gap": 2, "proj_prim": 2, "primal": [2, 6, 7], "gap": 2, "current": 2, "compute_residu": 2, "compute_residual_norm": 2, "info": 2, "string": [2, 3, 7], "initialize_du": 2, "zero": 2, "arrai": [2, 3], "sigma_data": 2, "update_du": 2, "datafidelity_hub": 2, "local_error": 2, "l2_axi": 2, "given": [2, 3, 7], "x": [2, 6, 7], "datafidelity_kl": [2, 7], "kullbackleibl": 2, "datafidelity_l1": [2, 7], "datafidelity_l12": 2, "datafidelity_l1b": 2, "ball": [2, 3], "datafidelity_l2": [2, 7], "datafidelity_l2b": 2, "datafidelity_ln": 2, "ln_ax": 2, "spectral_norm": 2, "datafidelity_wl2": [2, 7], "advanc": [2, 6, 7], "denoise_imag": 2, "img": [2, 3], "_generic_alia": [2, 3], "reg_weight": 2, "01": [2, 4], "pix_weight": 2, "iter": [2, 6, 7], "250": [2, 3], "callabl": [2, 3], "lambda": 2, "lower_limit": [2, 7], "fals": [2, 3, 7], "an": [2, 3, 6, 7], "requir": [2, 7], "local": [2, 3, 7], "wise": [2, 3], "It": [2, 3, 6, 7], "can": [2, 3, 6, 7], "1e": 2, "If": [2, 3, 6], "valu": [2, 3, 7], "over": [2, 3], "chosen": 2, "number": 2, "constructor": 2, "dwl": 2, "clip": 2, "turn": 2, "fbp_filter": [2, 7], "pad_mod": 2, "use_rfft": 2, "apply_filt": 2, "data_wu": 2, "compute_filt": 2, "refer": [2, 3, 4], "properti": 2, "filter_fouri": 2, "fourier": [2, 3], "represent": 2, "np": [2, 3, 7], "filter_r": 2, "real": 2, "space": 2, "get_padding_s": 2, "data_wu_shap": 2, "linear": [2, 3, 7], "last": [2, 3], "num_filt": 2, "plot_filt": 2, "to_fouri": 2, "to_real": 2, "filtercustom": 2, "dummi": 2, "becaus": 2, "filterfbp": 2, "filter_nam": 2, "ramp": [2, 7], "tradit": 2, "filtermr": 2, "basetransform": 2, "binning_typ": 2, "exponenti": 2, "binning_start": 2, "lambda_smooth": 2, "batenburg": [2, 7], "k": [2, 7], "j": [2, 3, 7], "2014": [2, 7], "ieee": [2, 7], "transact": [2, 7], "23": [2, 4, 7], "11": [2, 4, 7], "4750": [2, 7], "4762": [2, 7], "inspir": 2, "http": [2, 6], "com": [2, 3, 6], "dmpelt": 2, "pymrfbp": 2, "projectoroper": 2, "is_initi": 2, "create_basi": 2, "num_pixel": 2, "basi": [2, 7], "fixel": 2, "start": [2, 4], "displac": 2, "bin": 2, "dtypelik": [2, 3], "through": [2, 6, 7], "geom_typ": 2, "src_pos_xyz": 2, "det_pos_xyz": 2, "det_u_xyz": 2, "det_v_xyz": 2, "rot_dir_xyz": 2, "pix2vox_ratio": 2, "det_shape_vu": 2, "store": 2, "static": 2, "get_default_parallel": 2, "rot_axis_shift_pix": 2, "rot_axis_dir": 2, "clockwis": 2, "parallel3d": 2, "shift": [2, 7], "either": [2, 3, 6, 7], "paral": 2, "get_field_sc": 2, "field_nam": 2, "pix2vox": 2, "ratio": [2, 3], "access": 2, "project_displacement_to_detector": 2, "disp_zyx": 2, "vector": 2, "coordin": [2, 3, 7], "u": [2, 3, 7], "v": [2, 3, 6, 7], "don": [2, 6], "match": [2, 3], "angles_w_rad": 2, "patch_astra_2d": 2, "radian": [2, 7], "set_detector_shifts_vu": 2, "det_pos_vu": 2, "posit": [2, 3, 7], "vu": 2, "vertic": [2, 3, 7], "horizont": [2, 3, 7], "vol_shape_xyz": 2, "vox_siz": 2, "extent": 2, "y": 2, "z": [2, 7], "get_default_from_data": 2, "data_format": 2, "dvwu": 2, "mean": 2, "deault": 2, "is_3d": 2, "tell": 2, "is_squar": 2, "xy": 2, "shape_xyz": 2, "shape_zxi": 2, "swap": 2, "impos": [2, 7], "arg": 2, "kwarg": 2, "absolut": 2, "coeffici": 2, "adj_shap": 2, "integ": 2, "dir_shap": 2, "explicit": 2, "associ": [2, 3], "rmatvec": 2, "row": 2, "left": 2, "array_lik": 2, "column": 2, "transpos": 2, "basewavelettransform": 2, "fix": 2, "bp": 2, "fp": 2, "prj_shape": 2, "expos": [2, 7], "adjoint": 2, "vol_shap": 2, "transformconvolut": 2, "x_shape": 2, "kernel": 2, "is_symm": 2, "flip_adjoint": 2, "should": [2, 3, 7], "flip": 2, "transformdecimatedwavelet": 2, "direct_dwt": 2, "inverse_dwt": 2, "anti": 2, "transformdiagonalsc": 2, "diagon": 2, "transformfouri": 2, "ifft": 2, "transformfunct": 2, "attributeerror": 2, "Not": 2, "transformgradi": 2, "which": [2, 3, 6, 7], "do": [2, 7], "diverg": 2, "transformident": 2, "ident": 2, "transformlaplacian": 2, "transformsvd": 2, "singular": 2, "vt": 2, "direct_svd": 2, "svd": 2, "inverse_svd": 2, "dcomposit": 2, "transformstationarywavelet": 2, "avelet": 2, "direct_swt": 2, "inverse_swt": 2, "aid": 2, "estim": 2, "baseregularizationestim": 2, "parallel_ev": 2, "plot_result": 2, "compute_loss_valu": 2, "lams_reg": 2, "cost": 2, "compute_reconstruction_and_loss": 2, "lam_reg": 2, "kwd": [2, 3], "keyword": 2, "rec": 2, "compute_reconstruction_error": 2, "gnd_truth": 2, "against": [2, 6], "ground": 2, "truth": 2, "expect": 2, "err_l1": 2, "err_l2": 2, "get_lambda_rang": 2, "end": 2, "num_per_ord": 2, "4": [2, 4], "within": 2, "interv": 2, "first": [2, 3, 7], "step": [2, 6], "per": [2, 3, 7], "magnitud": 2, "solver_calling_funct": 2, "solutioninfo": 2, "solver_spawning_funct": 2, "spawn": 2, "crossvalid": 2, "data_shap": 2, "test_fract": 2, "num_averag": 2, "7": [2, 4], "helper": 2, "f_avg": 2, "averag": [2, 3, 7], "f_std": 2, "deviat": 2, "f_val": 2, "fit_loss_min": 2, "parabol": 2, "purpous": 2, "min_lam": 2, "minimum": 2, "min_val": 2, "lcurv": 2, "loss_funct": 2, "data_dtyp": 2, "create_random_test_mask": 2, "05": [2, 3, 4], "creat": [2, 3, 7], "random": 2, "fraction": 2, "data_test_mask": 2, "rai": [2, 6, 7], "relat": 2, "funtion": 2, "fri": 2, "jan": 2, "16": [2, 7], "07": 2, "21": 2, "2022": [2, 4], "detectorxrf": 2, "surface_mm2": 2, "distance_mm": 2, "angle_rad": 2, "solid_angle_sr": 2, "solid": 2, "cover": 2, "fluolin": 2, "indx": 2, "fluoresc": [2, 7], "fluolinessiegbahn": 2, "collect": 2, "get_energi": 2, "element": [2, 7], "compute_averag": 2, "i": [2, 7], "whole": 2, "shell": [2, 3], "transit": 2, "rate": 2, "energy_kev": 2, "get_lin": 2, "xraylib": 2, "macro": 2, "definit": [2, 3], "famili": 2, "correspond": [2, 3, 7], "ka1": 2, "ka2": 2, "ka3": 2, "kb1": 2, "6": [2, 4], "kb2": 2, "kb3": 2, "5": [2, 3, 4], "kb4": 2, "13": 2, "kb5": 2, "la1": 2, "90": 2, "la2": 2, "89": 2, "lb1": 2, "63": 2, "lb2": 2, "95": 2, "lb3": 2, "34": 2, "lb4": 2, "33": 2, "lb5": 2, "102": 2, "lb6": 2, "91": 2, "lb7": 2, "98": 2, "lb9": 2, "36": 2, "lb10": 2, "35": 2, "lb15": 2, "94": 2, "lb17": 2, "62": 2, "lg1": 2, "68": 2, "lg2": 2, "38": 2, "lg3": 2, "39": 2, "lg4": 2, "47": 2, "lg5": 2, "65": 2, "lg6": 2, "75": 2, "lg8": 2, "72": 2, "le": 2, "60": 2, "lh": 2, "ll": 2, "86": 2, "ls": 2, "88": 2, "lt": 2, "87": 2, "lu": 2, "96": 2, "lv": 2, "70": 2, "ma1": 2, "207": 2, "ma2": 2, "206": 2, "mb": 2, "187": 2, "mg": 2, "165": 2, "volumemateri": [2, 7], "phase_fract": 2, "phase_compound": 2, "voxel_size_cm": 2, "predict": 2, "compton": 2, "yield": 2, "concentr": 2, "phase": 2, "compound": 2, "cm": 2, "produc": 2, "incorrect": 2, "get_attenu": 2, "get_compound": 2, "cmp_name": 2, "densiti": 2, "composit": [2, 7], "compund": 2, "compos": 2, "cmp": 2, "structur": 2, "get_compton_scatt": 2, "energy_in_kev": 2, "scatter": 2, "incom": [2, 7], "respect": [2, 3, 7], "been": 2, "energy_out_kev": 2, "receiv": 2, "cmptn_yield": 2, "need": [2, 3, 7], "suppli": 2, "get_element_mass_fract": 2, "look": 2, "mass_fract": 2, "get_element_numb": 2, "symbol": 2, "won": 2, "t": [2, 3, 6, 7], "convert": [2, 7], "get_fluo_yield": 2, "fluo_lin": 2, "consid": [2, 3], "incomb": 2, "emit": 2, "el_yield": 2, "convert_kev_to_m": 2, "convert_m_to_kev": 2, "energy_m": 2, "pencil_beam_profil": 2, "voxel_size_um": 2, "beam_fwhm_um": 2, "profile_s": 2, "beam_shap": 2, "point": [2, 3, 7], "spread": 2, "length": [2, 7], "fwhm": 2, "print": 2, "tomograph": [2, 6, 7], "projectoruncorrect": [2, 7], "att_vol_angl": 2, "sino": [2, 7], "bp_angl": 2, "angle_ind": 2, "single_lin": 2, "singl": 2, "foward": 2, "collapse_detector": 2, "configur": 2, "vol": [2, 3, 7], "fp_angl": 2, "sino_lin": 2, "spmatrix": 2, "prj_vwu": 2, "prj_vu": 2, "proj": [2, 3], "could": 2, "try": 2, "prj_intens": 2, "projector_backend": 2, "projectorbackend": [2, 7], "vol_geom": 2, "baseregular": 2, "initilizi": 2, "place": 2, "compute_update_prim": 2, "partial": 2, "upd": 2, "initialize_sigma_tau": 2, "intern": [2, 7], "state": 2, "tau": 2, "op": 2, "stat": 2, "baseregularizer_m": 2, "filt_siz": 2, "constraint_lowerlimit": 2, "certain": 2, "constraint_upperlimit": 2, "regularizer_grad": 2, "piec": 2, "regularizer_hubtv2d": 2, "huber_s": 2, "regularizer_hubtv3d": 2, "regularizer_hub_dwl": 2, "level": 2, "pad_on_demand": 2, "regularizer_dwl": 2, "regularizer_hub_swl": 2, "min_approx": 2, "regularizer_swl": 2, "regularizer_tnv": 2, "x_ref": 2, "regularizer_tv2d": 2, "regularizer_tv3d": 2, "regularizer_vtv": 2, "pwise_der_norm": 2, "pwise_chan_norm": 2, "inf": 2, "vectori": 2, "vtv": 2, "regularizer_fft": 2, "exp": 2, "regularizer_l1": 2, "regularizer_l1dwl": 2, "regularizer_l1m": 2, "regularizer_l1swl": 2, "regularizer_l2m": 2, "regularizer_lap": 2, "regularizer_lap2d": 2, "regularizer_lap3d": 2, "regularizer_lnswl": 2, "compress": 2, "regularizer_smooth2d": 2, "regularizer_smooth3d": 2, "regularizer_vsvd": 2, "axis_channel": 2, "similar": [2, 7], "regularizer_vl1wl": 2, "pwise_lvl_norm": 2, "problem": 2, "alia": 2, "toler": 2, "data_term_test": 2, "stand": [2, 7], "hybridg": 2, "stop": 2, "same": [2, 3, 7], "rest": 2, "power_method": 2, "b": 2, "power": 2, "whose": 2, "simultan": [2, 6, 7], "algebra": [2, 6, 7], "techniqu": [2, 6, 7], "a_num_row": 2, "b_mask": 2, "max_iter": 2, "residual0": 2, "residual0_cv": 2, "residuals_cv": 2, "residuals_cv_rel": 2, "residuals_rel": 2, "thu": [2, 7], "jun": 2, "12": [2, 4], "28": 2, "2020": [2, 3, 4], "add_nois": 2, "img_clean": 2, "num_photon": 2, "add_poisson": 2, "readout_noise_std": 2, "background_avg": 2, "background_std": 2, "detection_effici": 2, "add": 2, "nois": [2, 3, 6, 7], "clean": 2, "photon": [2, 7], "poisson": [2, 6, 7], "readout": 2, "effici": 2, "detect": 2, "e": [2, 6, 7], "g": [2, 6, 7], "inclin": 2, "compute_error_pow": 2, "expected_vol": 2, "computed_vol": 2, "signal": 2, "create_sino": 2, "ph": 2, "num_angl": 2, "start_angle_deg": 2, "end_angle_deg": 2, "180": [2, 7], "dwell_time_": 2, "photon_flux": 2, "1000000000": 2, "detectors_pos_rad": 2, "vol_att_in": 2, "vol_att_out": 2, "imping": 2, "degre": [2, 3], "final": [2, 7], "acquisit": [2, 7], "time": 2, "flux": 2, "unit": 2, "second": [2, 3], "1e9": 2, "pi": 2, "outgo": 2, "probe": 2, "profil": [2, 3], "switch": 2, "read": 2, "datatyp": 2, "angular": 2, "phton": 2, "create_sino_transmiss": 2, "download_phantom": 2, "download": 2, "barbei": 2, "repositori": 2, "phantom_assign_concentr": 2, "ph_or": 2, "ca": 2, "em_lin": 2, "ka": 2, "in_energy_kev": 2, "20": [2, 4], "ha": 2, "n": [2, 3, 6, 7], "sol\u00e9": [2, 6, 7], "induc": [2, 6, 7], "emiss": [2, 6, 7], "tomographi": [2, 3, 6, 7], "simul": [2, 6, 7], "studi": [2, 6, 7], "mea": [2, 6, 7], "sci": [2, 6, 7], "technol": [2, 6, 7], "pp": [2, 3, 6, 7], "26": [2, 6, 7], "nov": [2, 6, 7], "2017": [2, 6, 7], "alpha": 2, "vol_fluo_yield": 2, "phantom_assign_concentration_multi": 2, "fe": 2, "vol_yield": 2, "roundup_to_pow2": 2, "p": [2, 7], "round": 2, "indic": 2, "up": 2, "top": 2, "pycorrectedemissionct": 2, "miscellan": 3, "azimuthal_integr": 3, "them": 3, "wrong": 3, "data_shape_vu": 3, "radiu": 3, "super_sampl": 3, "func": 3, "specifi": [3, 7], "smoother": 3, "circular_mask": 3, "vol_shape_zxi": 3, "signedinteg": 3, "radius_offset": 3, "coords_bal": 3, "vol_origin_zxi": 3, "taper_func": 3, "taper_target": 3, "ndarrayint": 3, "offset": 3, "origin": [3, 7], "allow": 3, "const": 3, "co": 3, "unknown": 3, "lines_intersect": 3, "line_1": 3, "line_2": 3, "x_lim": 3, "two": [3, 6, 7], "scalar": 3, "repres": 3, "wa": 3, "found": [3, 7], "norm_cross_corr": 3, "img1": 3, "img2": 3, "t_match": 3, "mode_ful": 3, "compute_profil": 3, "auto": 3, "templat": 3, "tue": 3, "mar": 3, "24": 3, "15": [3, 4], "25": [3, 4], "14": [3, 4], "snrt": 3, "2071": 3, "taper_ratio": 3, "supersampl": 3, "ring": 3, "pleas": [3, 6], "articl": 3, "van": 3, "heel": 3, "schatz": 3, "threshold": 3, "criteria": 3, "struct": 3, "biol": 3, "151": 3, "262": 3, "sep": 3, "2005": 3, "snr": 3, "resolut": [3, 7], "4142": 3, "hald": 3, "bit": [3, 7], "dataset": 3, "split": 3, "halv": 3, "half": 3, "threashold": 3, "we": [3, 6, 7], "want": [3, 6], "hann": [3, 7], "off": 3, "avoid": 3, "artifact": 3, "factor": 3, "increas": 3, "high": 3, "frequenc": 3, "rang": 3, "nyquist": 3, "threshod": 3, "plot_frc": 3, "volume_pair": 3, "label": 3, "titl": 3, "figur": 3, "pair": 3, "unus": 3, "displai": 3, "apply_flat_field": 3, "dark": 3, "falt": 3, "apply_minus_log": 3, "pad_sinogram": 3, "width": 3, "pad_axi": 3, "rotate_proj_stack": 3, "data_vwu": 3, "rot_angle_deg": 3, "w": [3, 7], "omega": [3, 7], "corrct": [4, 7], "get": 4, "how": [4, 7], "contribut": 4, "changelog": 4, "10": [4, 6, 7], "31": 4, "09": 4, "08": 4, "06": 4, "04": 4, "2021": 4, "29": 4, "03": 4, "30": 4, "02": 4, "search": 4, "page": 4, "subpackag": 5, "submodul": 5, "data_term": [5, 7], "param_tun": 5, "physic": [5, 6, 7], "ct": 6, "usual": [6, 7], "abbrevi": 6, "pronounc": 6, "corr": 6, "optim": 6, "hybrid": [6, 7], "like": [6, 7], "learn": [6, 7], "variant": 6, "pymr": 6, "elbow": [6, 7], "paper": 6, "mathemat": 6, "concept": 6, "here": 6, "doi": 6, "org": 6, "1088": 6, "1361": 6, "6501": 6, "aa9d54": 6, "free": 6, "cicwi": 6, "io": 6, "take": [6, 7], "few": 6, "setup": 6, "your": 6, "machin": 6, "recommend": 6, "anaconda": 6, "manag": 6, "simpli": 6, "vigano": 6, "you": 6, "fast": 6, "jupyt": 6, "system": [6, 7], "slurm": 6, "To": [6, 7], "clone": 6, "go": 6, "directori": 6, "git": 6, "cd": 6, "about": 6, "check": 6, "our": 6, "folder": 6, "see": [6, 7], "who": 6, "particip": 6, "alwai": [6, 7], "welcom": 6, "submit": 6, "pull": 6, "master": 6, "branch": 6, "issu": 6, "question": 6, "remark": 6, "open": 6, "under": 6, "md": 6, "detail": 6, "introduc": 7, "topic": 7, "organ": 7, "yx": 7, "present": 7, "wu": 7, "suppos": 7, "simplest": 7, "meant": 7, "intend": 7, "serv": 7, "statement": 7, "care": 7, "de": 7, "underli": 7, "resourc": 7, "import": 7, "cct": 7, "vol_shape_xi": 7, "angles_rad": 7, "deg2rad": 7, "linspac": 7, "endpoint": 7, "prj": 7, "ones": 7, "done": 7, "veri": 7, "manner": 7, "involv": 7, "later": 7, "section": 7, "avil": 7, "thei": 7, "skimag": 7, "_projector_backend": 7, "achiev": 7, "analyt": 7, "mr": 7, "driven": 7, "assum": 7, "variabl": 7, "solver_fbp": 7, "_": 7, "By": 7, "anoth": 7, "shepp": 7, "logan": 7, "both": 7, "box": 7, "count": 7, "solver_sirt": 7, "100": 7, "intial": 7, "goe": 7, "upper_limit": 7, "describ": 7, "effect": 7, "subject": 7, "knowledg": 7, "experiment": 7, "excit": 7, "morpholog": 7, "emitt": 7, "att_in": 7, "att_out": 7, "angles_detectors_rad": 7, "suggest": 7, "drawback": 7, "cannot": 7, "re": 7, "deleg": 7, "entir": 7, "choos": 7, "particularli": 7, "conjunct": 7, "former": 7, "while": 7, "latter": 7, "famou": 7, "varianc": 7, "known": 7, "mostli": 7, "kullback": 7, "leibler": 7, "deal": 7}, "objects": {"": [[2, 0, 0, "-", "corrct"]], "corrct": [[2, 0, 0, "-", "attenuation"], [2, 0, 0, "-", "data_terms"], [2, 0, 0, "-", "denoisers"], [2, 0, 0, "-", "filters"], [2, 0, 0, "-", "models"], [2, 0, 0, "-", "operators"], [2, 0, 0, "-", "param_tuning"], [2, 0, 0, "-", "physics"], [3, 0, 0, "-", "processing"], [2, 0, 0, "-", "projectors"], [2, 0, 0, "-", "regularizers"], [2, 0, 0, "-", "solvers"], [2, 0, 0, "-", "testing"]], "corrct.attenuation": [[2, 1, 1, "", "AttenuationVolume"]], "corrct.attenuation.AttenuationVolume": [[2, 2, 1, "", "angles_det_rad"], [2, 2, 1, "", "angles_rot_rad"], [2, 3, 1, "", "compute_maps"], [2, 2, 1, "", "dtype"], [2, 2, 1, "", "emitted_local"], [2, 3, 1, "", "get_maps"], [2, 3, 1, "", "get_projector_args"], [2, 2, 1, "", "incident_local"], [2, 2, 1, "", "maps"], [2, 3, 1, "", "plot_map"], [2, 2, 1, "", "vol_shape_zyx"]], "corrct.data_terms": [[2, 1, 1, "", "DataFidelityBase"], [2, 1, 1, "", "DataFidelity_Huber"], [2, 1, 1, "", "DataFidelity_KL"], [2, 1, 1, "", "DataFidelity_l1"], [2, 1, 1, "", "DataFidelity_l12"], [2, 1, 1, "", "DataFidelity_l1b"], [2, 1, 1, "", "DataFidelity_l2"], [2, 1, 1, "", "DataFidelity_l2b"], [2, 1, 1, "", "DataFidelity_ln"], [2, 1, 1, "", "DataFidelity_wl2"]], "corrct.data_terms.DataFidelityBase": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_data_dual_dot"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_dual"], [2, 3, 1, "", "lower"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"], [2, 3, 1, "", "update_dual"], [2, 3, 1, "", "upper"]], "corrct.data_terms.DataFidelity_Huber": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_KL": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l1": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l12": [[2, 2, 1, "", "background"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l1b": [[2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l2": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_l2b": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_ln": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_primal_dual_gap"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.data_terms.DataFidelity_wl2": [[2, 3, 1, "", "assign_data"], [2, 2, 1, "", "background"], [2, 3, 1, "", "compute_residual"], [2, 3, 1, "", "compute_residual_norm"], [2, 2, 1, "", "data"], [2, 2, 1, "", "sigma"], [2, 2, 1, "", "sigma_data"]], "corrct.denoisers": [[2, 4, 1, "", "denoise_image"]], "corrct.filters": [[2, 1, 1, "", "Filter"], [2, 1, 1, "", "FilterCustom"], [2, 1, 1, "", "FilterFBP"], [2, 1, 1, "", "FilterMR"], [2, 4, 1, "", "create_basis"]], "corrct.filters.Filter": [[2, 3, 1, "", "apply_filter"], [2, 3, 1, "", "compute_filter"], [2, 2, 1, "", "dtype"], [2, 2, 1, "", "fbp_filter"], [2, 5, 1, "", "filter_fourier"], [2, 5, 1, "", "filter_real"], [2, 3, 1, "", "get_padding_size"], [2, 5, 1, "", "num_filters"], [2, 2, 1, "", "pad_mode"], [2, 3, 1, "", "plot_filters"], [2, 3, 1, "", "to_fourier"], [2, 3, 1, "", "to_real"], [2, 2, 1, "", "use_rfft"]], "corrct.filters.FilterCustom": [[2, 3, 1, "", "compute_filter"], [2, 2, 1, "", "dtype"], [2, 2, 1, "", "fbp_filter"], [2, 2, 1, "", "pad_mode"], [2, 2, 1, "", "use_rfft"]], "corrct.filters.FilterFBP": [[2, 3, 1, "", "compute_filter"], [2, 2, 1, "", "filter_name"]], "corrct.filters.FilterMR": [[2, 2, 1, "", "binning_start"], [2, 2, 1, "", "binning_type"], [2, 3, 1, "", "compute_filter"], [2, 3, 1, "", "initialize"], [2, 2, 1, "", "is_initialized"], [2, 2, 1, "", "lambda_smooth"], [2, 2, 1, "", "projector"]], "corrct.models": [[2, 1, 1, "", "Geometry"], [2, 1, 1, "", "ProjectionGeometry"], [2, 1, 1, "", "VolumeGeometry"]], "corrct.models.ProjectionGeometry": [[2, 2, 1, "", "det_pos_xyz"], [2, 2, 1, "", "det_shape_vu"], [2, 2, 1, "", "det_u_xyz"], [2, 2, 1, "", "det_v_xyz"], [2, 2, 1, "", "geom_type"], [2, 3, 1, "", "get_default_parallel"], [2, 3, 1, "", "get_field_scaled"], [2, 2, 1, "", "pix2vox_ratio"], [2, 3, 1, "", "project_displacement_to_detector"], [2, 2, 1, "", "rot_dir_xyz"], [2, 3, 1, "", "rotate"], [2, 3, 1, "", "set_detector_shifts_vu"], [2, 2, 1, "", "src_pos_xyz"]], "corrct.models.VolumeGeometry": [[2, 5, 1, "", "extent"], [2, 3, 1, "", "get_default_from_data"], [2, 3, 1, "", "is_3D"], [2, 3, 1, "", "is_square"], [2, 5, 1, "", "shape_xyz"], [2, 5, 1, "", "shape_zxy"], [2, 2, 1, "", "vox_size"]], "corrct.operators": [[2, 1, 1, "", "BaseTransform"], [2, 1, 1, "", "BaseWaveletTransform"], [2, 1, 1, "", "ProjectorOperator"], [2, 1, 1, "", "TransformConvolution"], [2, 1, 1, "", "TransformDecimatedWavelet"], [2, 1, 1, "", "TransformDiagonalScaling"], [2, 1, 1, "", "TransformFourier"], [2, 1, 1, "", "TransformFunctions"], [2, 1, 1, "", "TransformGradient"], [2, 1, 1, "", "TransformIdentity"], [2, 1, 1, "", "TransformLaplacian"], [2, 1, 1, "", "TransformSVD"], [2, 1, 1, "", "TransformStationaryWavelet"]], "corrct.operators.BaseTransform": [[2, 3, 1, "", "absolute"], [2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "explicit"], [2, 3, 1, "", "rmatvec"]], "corrct.operators.BaseWaveletTransform": [[2, 2, 1, "", "axes"], [2, 2, 1, "", "wavelet"]], "corrct.operators.ProjectorOperator": [[2, 2, 1, "", "adj_shape"], [2, 3, 1, "", "bp"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "fp"], [2, 5, 1, "", "prj_shape"], [2, 5, 1, "", "vol_shape"]], "corrct.operators.TransformConvolution": [[2, 3, 1, "", "absolute"], [2, 2, 1, "", "flip_adjoint"], [2, 2, 1, "", "is_symm"], [2, 2, 1, "", "kernel"], [2, 2, 1, "", "pad_mode"]], "corrct.operators.TransformDecimatedWavelet": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "axes"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "direct_dwt"], [2, 3, 1, "", "inverse_dwt"], [2, 2, 1, "", "wavelet"]], "corrct.operators.TransformDiagonalScaling": [[2, 3, 1, "", "absolute"], [2, 2, 1, "", "scale"]], "corrct.operators.TransformFourier": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "fft"], [2, 3, 1, "", "ifft"]], "corrct.operators.TransformFunctions": [[2, 3, 1, "", "absolute"], [2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"]], "corrct.operators.TransformGradient": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "divergence"], [2, 3, 1, "", "gradient"]], "corrct.operators.TransformIdentity": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"]], "corrct.operators.TransformLaplacian": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "laplacian"]], "corrct.operators.TransformSVD": [[2, 2, 1, "", "U"], [2, 2, 1, "", "Vt"], [2, 3, 1, "", "direct_svd"], [2, 3, 1, "", "inverse_svd"]], "corrct.operators.TransformStationaryWavelet": [[2, 2, 1, "", "adj_shape"], [2, 2, 1, "", "axes"], [2, 2, 1, "", "dir_shape"], [2, 3, 1, "", "direct_swt"], [2, 3, 1, "", "inverse_swt"], [2, 2, 1, "", "wavelet"]], "corrct.param_tuning": [[2, 1, 1, "", "BaseRegularizationEstimation"], [2, 1, 1, "", "CrossValidation"], [2, 1, 1, "", "LCurve"], [2, 4, 1, "", "create_random_test_mask"]], "corrct.param_tuning.BaseRegularizationEstimation": [[2, 3, 1, "", "compute_loss_values"], [2, 3, 1, "", "compute_reconstruction_and_loss"], [2, 3, 1, "", "compute_reconstruction_error"], [2, 3, 1, "", "get_lambda_range"], [2, 5, 1, "", "solver_calling_function"], [2, 5, 1, "", "solver_spawning_function"]], "corrct.param_tuning.CrossValidation": [[2, 3, 1, "", "compute_loss_values"], [2, 3, 1, "", "fit_loss_min"]], "corrct.param_tuning.LCurve": [[2, 3, 1, "", "compute_loss_values"]], "corrct.physics": [[2, 1, 1, "", "DetectorXRF"], [2, 1, 1, "", "FluoLine"], [2, 1, 1, "", "FluoLinesSiegbahn"], [2, 1, 1, "", "VolumeMaterial"], [2, 4, 1, "", "convert_keV_to_m"], [2, 4, 1, "", "convert_m_to_keV"], [2, 4, 1, "", "pencil_beam_profile"]], "corrct.physics.DetectorXRF": [[2, 2, 1, "", "angle_rad"], [2, 2, 1, "", "distance_mm"], [2, 5, 1, "", "solid_angle_sr"], [2, 2, 1, "", "surface_mm2"]], "corrct.physics.FluoLine": [[2, 2, 1, "", "indx"], [2, 2, 1, "", "name"]], "corrct.physics.FluoLinesSiegbahn": [[2, 3, 1, "", "get_energy"], [2, 3, 1, "", "get_lines"], [2, 2, 1, "", "lines"]], "corrct.physics.VolumeMaterial": [[2, 3, 1, "", "get_attenuation"], [2, 3, 1, "", "get_compound"], [2, 3, 1, "", "get_compton_scattering"], [2, 3, 1, "", "get_element_mass_fraction"], [2, 3, 1, "", "get_element_number"], [2, 3, 1, "", "get_fluo_yield"]], "corrct.processing": [[3, 0, 0, "-", "misc"], [3, 0, 0, "-", "post"], [3, 0, 0, "-", "pre"]], "corrct.processing.misc": [[3, 4, 1, "", "azimuthal_integration"], [3, 4, 1, "", "ball"], [3, 4, 1, "", "circular_mask"], [3, 4, 1, "", "lines_intersection"], [3, 4, 1, "", "norm_cross_corr"]], "corrct.processing.post": [[3, 4, 1, "", "com"], [3, 4, 1, "", "frc"], [3, 4, 1, "", "plot_frcs"]], "corrct.processing.pre": [[3, 4, 1, "", "apply_flat_field"], [3, 4, 1, "", "apply_minus_log"], [3, 4, 1, "", "pad_sinogram"], [3, 4, 1, "", "rotate_proj_stack"]], "corrct.projectors": [[2, 1, 1, "", "ProjectorAttenuationXRF"], [2, 1, 1, "", "ProjectorMatrix"], [2, 1, 1, "", "ProjectorUncorrected"]], "corrct.projectors.ProjectorAttenuationXRF": [[2, 2, 1, "", "att_vol_angles"], [2, 3, 1, "", "bp"], [2, 3, 1, "", "bp_angle"], [2, 3, 1, "", "collapse_detectors"], [2, 3, 1, "", "fp"], [2, 3, 1, "", "fp_angle"]], "corrct.projectors.ProjectorMatrix": [[2, 2, 1, "", "A"], [2, 3, 1, "", "absolute"], [2, 3, 1, "", "bp"], [2, 3, 1, "", "fp"]], "corrct.projectors.ProjectorUncorrected": [[2, 5, 1, "", "angles_rot_rad"], [2, 3, 1, "", "bp"], [2, 3, 1, "", "bp_angle"], [2, 3, 1, "", "fbp"], [2, 3, 1, "", "fp"], [2, 3, 1, "", "fp_angle"], [2, 2, 1, "", "prj_intensities"], [2, 2, 1, "", "projector_backend"], [2, 2, 1, "", "psf"], [2, 2, 1, "", "vol_geom"]], "corrct.regularizers": [[2, 1, 1, "", "BaseRegularizer"], [2, 1, 1, "", "BaseRegularizer_med"], [2, 1, 1, "", "Constraint_LowerLimit"], [2, 1, 1, "", "Constraint_UpperLimit"], [2, 1, 1, "", "Regularizer_Grad"], [2, 1, 1, "", "Regularizer_HubTV2D"], [2, 1, 1, "", "Regularizer_HubTV3D"], [2, 1, 1, "", "Regularizer_Hub_dwl"], [2, 1, 1, "", "Regularizer_Hub_swl"], [2, 1, 1, "", "Regularizer_TNV"], [2, 1, 1, "", "Regularizer_TV2D"], [2, 1, 1, "", "Regularizer_TV3D"], [2, 1, 1, "", "Regularizer_VTV"], [2, 1, 1, "", "Regularizer_dwl"], [2, 1, 1, "", "Regularizer_fft"], [2, 1, 1, "", "Regularizer_l1"], [2, 1, 1, "", "Regularizer_l1dwl"], [2, 1, 1, "", "Regularizer_l1med"], [2, 1, 1, "", "Regularizer_l1swl"], [2, 1, 1, "", "Regularizer_l2med"], [2, 1, 1, "", "Regularizer_lap"], [2, 1, 1, "", "Regularizer_lap2D"], [2, 1, 1, "", "Regularizer_lap3D"], [2, 1, 1, "", "Regularizer_lnswl"], [2, 1, 1, "", "Regularizer_smooth2D"], [2, 1, 1, "", "Regularizer_smooth3D"], [2, 1, 1, "", "Regularizer_swl"], [2, 1, 1, "", "Regularizer_vSVD"], [2, 1, 1, "", "Regularizer_vl1wl"]], "corrct.regularizers.BaseRegularizer": [[2, 3, 1, "", "apply_proximal"], [2, 3, 1, "", "compute_update_primal"], [2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_dual"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 3, 1, "", "lower"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 3, 1, "", "upper"], [2, 2, 1, "", "weight"]], "corrct.regularizers.BaseRegularizer_med": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Constraint_LowerLimit": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Constraint_UpperLimit": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_Grad": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_HubTV2D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_HubTV3D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_Hub_dwl": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_Hub_swl": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_TNV": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_TV2D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_TV3D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_VTV": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_dwl": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_fft": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l1": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l1dwl": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l1med": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l1swl": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_l2med": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_lap": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_lap2D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_lap3D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_lnswl": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_smooth2D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_smooth3D": [[2, 2, 1, "", "dtype"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_swl": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "info"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 3, 1, "", "update_dual"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_vSVD": [[2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.regularizers.Regularizer_vl1wl": [[2, 3, 1, "", "apply_proximal"], [2, 2, 1, "", "dtype"], [2, 3, 1, "", "initialize_sigma_tau"], [2, 2, 1, "", "op"], [2, 2, 1, "", "weight"]], "corrct.solvers": [[2, 2, 1, "", "CP"], [2, 1, 1, "", "FBP"], [2, 1, 1, "", "PDHG"], [2, 1, 1, "", "SART"], [2, 1, 1, "", "SIRT"], [2, 1, 1, "", "SolutionInfo"], [2, 1, 1, "", "Solver"]], "corrct.solvers.FBP": [[2, 3, 1, "", "info"]], "corrct.solvers.PDHG": [[2, 3, 1, "", "info"], [2, 3, 1, "", "power_method"]], "corrct.solvers.SART": [[2, 3, 1, "", "compute_residual"]], "corrct.solvers.SIRT": [[2, 3, 1, "", "info"]], "corrct.solvers.SolutionInfo": [[2, 2, 1, "", "iterations"], [2, 2, 1, "", "max_iterations"], [2, 2, 1, "", "method"], [2, 2, 1, "", "residual0"], [2, 2, 1, "", "residual0_cv"], [2, 2, 1, "", "residuals"], [2, 2, 1, "", "residuals_cv"], [2, 5, 1, "", "residuals_cv_rel"], [2, 5, 1, "", "residuals_rel"], [2, 2, 1, "", "tolerance"]], "corrct.solvers.Solver": [[2, 3, 1, "", "info"], [2, 3, 1, "", "lower"], [2, 3, 1, "", "upper"]], "corrct.testing": [[2, 4, 1, "", "add_noise"], [2, 4, 1, "", "compute_error_power"], [2, 4, 1, "", "create_sino"], [2, 4, 1, "", "create_sino_transmission"], [2, 4, 1, "", "download_phantom"], [2, 4, 1, "", "phantom_assign_concentration"], [2, 4, 1, "", "phantom_assign_concentration_multi"], [2, 4, 1, "", "roundup_to_pow2"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:attribute", "3": "py:method", "4": "py:function", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "property", "Python property"]}, "titleterms": {"changelog": 1, "0": 1, "7": 1, "1": 1, "2022": 1, "10": 1, "31": 1, "ad": 1, "fix": 1, "11": 1, "6": 1, "09": 1, "08": 1, "5": 1, "06": 1, "23": 1, "04": 1, "14": 1, "4": 1, "2": 1, "01": 1, "2021": 1, "12": 1, "29": 1, "3": 1, "15": 1, "2020": 1, "20": 1, "05": 1, "03": 1, "30": 1, "02": 1, "25": 1, "2019": 1, "corrct": [2, 3, 5, 6], "packag": [2, 3], "subpackag": 2, "submodul": [2, 3], "attenu": [2, 7], "modul": [2, 3], "data_term": 2, "denois": 2, "filter": 2, "model": [2, 7], "oper": 2, "param_tun": 2, "physic": 2, "projector": [2, 7], "regular": [2, 7], "solver": [2, 7], "test": 2, "content": [2, 3], "process": 3, "misc": 3, "post": 3, "pre": 3, "welcom": 4, "document": 4, "pycorrectedemissionct": [4, 6], "indic": 4, "tabl": 4, "get": 6, "start": 6, "instal": 6, "conda": 6, "from": 6, "pypi": 6, "sourc": 6, "run": 6, "exampl": 6, "author": 6, "contributor": 6, "how": 6, "contribut": 6, "licens": 6, "tutori": 7, "reconstruct": 7, "project": 7, "data": 7, "The": 7, "geometri": 7, "fbp": 7, "sirt": 7, "pdhg": 7, "correct": 7, "term": 7, "fidel": 7, "guid": 7, "paramet": 7, "select": 7, "refer": 7}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 56}}) \ No newline at end of file