SCICO is a Python package for solving the inverse problems that arise in scientific imaging applications.

Related tags

Science
Overview
Package License Documentation Status Lint status CI status

Scientific Computational Imaging COde (SCICO)

SCICO is a Python package for solving the inverse problems that arise in scientific imaging applications. Its primary focus is providing methods for solving ill-posed inverse problems by using an appropriate prior model of the reconstruction space. SCICO includes a growing suite of operators, cost functionals, regularizers, and optimization routines that may be combined to solve a wide range of problems, and is designed so that it is easy to add new building blocks. SCICO is built on top of JAX, which provides features such as automatic gradient calculation and GPU acceleration.

Documentation is available online. If you use this software for published work, please cite bibtex entry pfister-2021-scico in docs/source/references.bib.

Installation

See the INSTALL.rst file or the online documentation for installation instructions.

Usage Examples

Usage examples are available as Python scripts and Jupyter Notebooks. Example scripts are located in examples/scripts. The corresponding Jupyter Notebooks are provided in the scico-data submodule and symlinked to examples/notebooks. They are also viewable on GitHub or nbviewer.

License

SCICO is distributed as open-source software under a BSD 3-Clause License (see the LICENSE file for details).

LANL open source approval reference C20091.

(c) 2020-2021. Triad National Security, LLC. All rights reserved. This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. Department of Energy/National Nuclear Security Administration. All rights in the program are reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear Security Administration. The Government has granted for itself and others acting on its behalf a nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so.

Comments
  • Import Error: `KeyError: 'asscalar'`

    Import Error: `KeyError: 'asscalar'`

    Hey, first of all, great project! I'm really looking forward to work with this software! However, I'm running into some problems when installing and starting Scico. I'm running it on a Macbook M1, where I installed jax/jaxlib using this command:

    conda install -c conda-forge jaxlib
    conda install -c conda-forge jax
    

    I had to make sure that scico leaves this installation untouched - I guess it tries installing its pip equivalent? Didn't work out nicely..

    After trying to import the scico package I get this error:

    Python 3.9.13 | packaged by conda-forge | (main, May 27 2022, 17:01:00) 
    [Clang 13.0.1 ] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import jax
    >>> impor scico
      File "<stdin>", line 1
        impor scico
              ^
    SyntaxError: invalid syntax
    >>> import scico
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Users/bene/Dropbox/Dokumente/Promotion/PYTHON/scico/scico/__init__.py", line 24, in <module>
        from . import numpy
      File "/Users/bene/Dropbox/Dokumente/Promotion/PYTHON/scico/scico/numpy/__init__.py", line 43, in <module>
        _wrappers.wrap_recursively(vars(), mathematical_functions, _wrappers.map_func_over_blocks)
      File "/Users/bene/Dropbox/Dokumente/Promotion/PYTHON/scico/scico/numpy/_wrappers.py", line 57, in wrap_recursively
        target_dict[name] = wrap(target_dict[name])
    KeyError: 'asscalar'
    

    I get this in the latest pipy and github version. I haven't looked too deep into the sources to understand therror- but is it known already? Thanks! Help very much appreciated!

    bug 
    opened by beniroquai 15
  • Installation instructions

    Installation instructions

    The installation instructions need to be updated to reflect the new recommended way of installing jaxlib. Updating of the astra-toolbox installation instructions should also be considered since the conda version (2.0.0) is now substantially more recent than the pip version (1.8b5).

    Also note https://scico.readthedocs.io/en/latest/contributing.html#scico-dev-contributing does not mention dev_requirements.txt and it probably should.

    documentation 
    opened by bwohlberg 14
  • Problem with W^1/2 weight exponent

    Problem with W^1/2 weight exponent

    Initially I thought svmbir and scico use different notation for weighted norms, so I ignored this. Now after second thought I think we need remove the squaring of the weights.

    Our weight_op is ||y||_W^2 = ||W^(1/2) y||^2 = y^T W y so there is no need to square the weights before passing them to svmbir. (Albeit in the svmbir docs the notation was not really clear until I updated it just now.)

    In the example scripts I removed the square root operation on the weights to compensate for the squaring. This, however, yields different regularization for the cg-example, so it requires retuning. I suggest to return to this later, since I am expecting there may be more changes to the svmbir interface in the near future which would require another retuning.

    bug priority: high 
    opened by tbalke 11
  • Check todo in docs

    Check todo in docs

    This PR addresses the todos in the contributing, style, and operators sections of the documentation. Makes the install a fork tutorial instead, adds references to style guides used, and creates docstrings for marked wrapper methods.

    It is still a draft waiting for some edits in the installation section.

    documentation 
    opened by FernandoDavis 10
  • The curious case of the ASTRA adjoint on GPU

    The curious case of the ASTRA adjoint on GPU

    The ASTRA Toolbox GPU back projector is known to not be a highly accurate adjoint to the forward operator. In the old days, we handled this with a generous tolerance on our adjoint test. After some improvements to that adjoint test, the ASTRA back projector fails very hard (relative error 0.78).

    The question: is this a problem with the test, our interface to ASTRA, or ASTRA itself? If it's the latter, let's just skip these tests on GPU.

    First step: get a GPU install of SCICO and run pytest scico/test/linop/test_radon_astra.py to see if the failures occur for you.

    bug tests 
    opened by Michael-T-McCann 9
  • SquaredL2Loss should inherit from WeightedSquaredL2Loss

    SquaredL2Loss should inherit from WeightedSquaredL2Loss

    SquaredL2Loss = WeightedSquaredL2Loss with W=None, however, internally W will still become the and Identity operator.

    Hence, should we have the following inheritance?

    class SquaredL2Loss(WeightedSquaredL2Loss):
    

    Pro's and con's:

    • (+) less code, more reused code since SquaredL2Loss trivially small
    • (-) create some performance overhead (?)

    Someone with more understanding of the inner workings of scico (@lukepfister) can perhaps comment?

    Otherwise the performance concerns can also easily be tested using

    f_unw = SquaredL2Loss(y, A=A)
    f_wei = WeightedSquaredL2Loss(y, A=A, W=None)
    

    while benchmarking the performance of the eval and prox methods.

    opened by tbalke 9
  • Changes to admm and svmbir wrapper to address issue #57

    Changes to admm and svmbir wrapper to address issue #57

    Addresses issue #57

    Overview of changes (Mike and Soumendu):

    • Pass initializer to prox in admm
    • Use initial condition in svmbir prox
    • Make number of iterations in svmbir prox user-defined (with large number of iterations as default)
    • Make roi radius large by default in svmbir so that there is no masking and the solution matches with CG. (masking can be enabled by the user if required)
    • Use nanfix branch of svmbir in requirements (we can change it back once the fix is pushed to PyPi)
    bug priority: high 
    opened by smajee 8
  • Add loss functions for phase retrieval

    Add loss functions for phase retrieval

    Add loss functions for phase retrieval.

    The names of the new loss functions are rather cumbersome: WeightedSquaredL2AbsLoss and WeightedSquaredL2AbsSquaredLoss. Any suggestions for shorter alternatives? Perhaps something like WeightSqrL2AbsLoss and WeightSqrL2AbsSqrLoss (which would also imply changing SquaredL2Loss to SqrL2Loss and WeightedSquaredL2Loss to WeightSqrL2Loss)?

    enhancement 
    opened by bwohlberg 7
  • Replace manual GPU<->host copies in `scico.solver` with host callback

    Replace manual GPU<->host copies in `scico.solver` with host callback

    In order to use scicpy.minimize, we currently manual copy arrays back to the host https://github.com/lanl/scico/blob/ec3dea364b03b63578e962cbe90f0d25db7a4fb8/scico/solver.py#L164-L166 and send the result back to the GPU if needed https://github.com/lanl/scico/blob/ec3dea364b03b63578e962cbe90f0d25db7a4fb8/scico/solver.py#L200-L201

    A cleaner solution would be to use jax's host callback mechanism, which we use, e.g., for astra and svmbir. It is simpler in the case, as we do not need custom_vjp, etc. Also note that the current code probably won't work correctly on multi-GPU systems.

    enhancement 
    opened by Michael-T-McCann 7
  • Move some functions to different modules

    Move some functions to different modules

    Moved some functions from scico.util and scico.math to new module scico.array.

    It's not clear whether it's worth keeping scico.math; function safe_divide could be moved to scico.array, and rel_res would perhaps make sense in scico.metric.

    enhancement 
    opened by bwohlberg 7
  • Too clever?

    Too clever?

    This is a clever little construction

    https://github.com/lanl/scico/blob/ddeee4e7ab9745b227da291f00412ab2d6d36283/scico/linop/_stack.py#L72

    but is the compactness worth the potential confusion (codefactor does not like it)? The non-obscure way of doing this only requires one extra line, i.e.

    for s in shape:
        shapes2.append(s)
    
    opened by bwohlberg 7
  • Replace `DeviceArray` with `Array` in the docs

    Replace `DeviceArray` with `Array` in the docs

    JAX has introduced jax.Array, which "subsumes DeviceArray, ShardedDeviceArray, and GlobalDeviceArray" (see https://jax.readthedocs.io/en/latest/jax_array_migration.html). So, if we want to talk about the JAX array type, it should be Array, not DeviceArray as we were previously doing in many places in the docs.

    documentation 
    opened by Michael-T-McCann 0
  • Open in Colab currently broken

    Open in Colab currently broken

    The Open in Colab option (via a button in the project README) is currently broken, apparently due to failure to install svmbir >= 0.3.0 (see #363 for the error message). Best initial guess as to the cause of the problem is that svmbir doesn't build correctly under Python 3.7 on Colab.

    bug 
    opened by bwohlberg 1
  • Freezing elements of a BlockArray as part of optimization

    Freezing elements of a BlockArray as part of optimization

    Having a class that optimizes

    min_(x,y,z) loss(A(x, y, z)),
    

    it may be nice to selectively freeze some of the elements conveniently as in

    min_(x,z) loss(A(x, y0, z)),
    

    without having to redefine the operator or handle different outputs of the solver separately.


    One method that came to mind is to use an indicator

    min_(x,y,z) loss(A(x, y, z)) + I_y0(y)
    

    so that prox_{I_y0}(y) = y0 always.


    Another idea is to define a composed operator A(F(x,y,z)) where F fixes certain variables and passes the other ones through as is:

    F(x,y,z) = (x,y0,z)
    

    with the optimization problem being

    min_(x,y,z) loss(A(F(x, y, z))).
    

    The solution to the constrained problem is then F(x*,y*,z*) = (x*, y0, z*).

    enhancement 
    opened by tbalke 0
  • Document and test `input_dtype` and `output_dtype` policy

    Document and test `input_dtype` and `output_dtype` policy

    Proposed input_dtype and output_dtype policy:

    • All instantiated Operators must have input_dtype and output_dtype properties
      • Possible data types are snp.float32, snp.float64, snp.complex64
    • at the level of Operator, we should call snp.dtype(input_dtype) to make sure it is a dtype and not a type
      • compare print(snp.float32) and print(snp.dtype(snp.float32)), second has nice repl
    • For an Operator H, H(x) should throw an error if x.dtype is not input_dtype
      • Instead: how about input_dtype is the "largest" dtype allowed, passing a "smaller" one is allowed
        • Would this still work on the adjoint? NO, so largest dtype does not work
    • Operators should be written so that H(x).dtype is H.output_dtype; this will not be checked and runtime, but should be tested
    • Operators should attempt to automatically deduce input_dtype and output_dtype from other arguments and throw an error if the user requests an input_dtype or output_dtype that is not realizable

    This policy should be described in the docs and implemented in the code.

    Related: #165 #234

    discussion required 
    opened by Michael-T-McCann 0
  • Test for `svmbir` interface hang on GPU device

    Test for `svmbir` interface hang on GPU device

    The test functions test_prox and test_prox_weights in scico/test/linop/test_radon_svmbir.py hang when run on a GPU. A temporary workaround using @pytest.mark.skipif will be implemented, but the cause of the problem needs to be determined and addressed.

    bug tests 
    opened by bwohlberg 0
Releases(v0.0.3)
  • v0.0.3(Sep 22, 2022)

    Change Summary

    • Change required packages and version numbers, including more recent version requirements for numpy, scipy, svmbir, and ray.
    • Package bm4d removed from main requirements list due to issue #342.
    • Support jaxlib versions 0.3.0 to 0.3.15 and jax versions 0.3.0 to 0.3.17.
    • Rename linear operators in radon_astra and radon_svmbir modules to TomographicProjector.
    • Add support for fan beam CT in radon_svmbir module.
    • Add function linop.linop_from_function for constructing linear operators from functions.
    • Enable addition operator for functionals.
    • Completely new implementation of BlockArray class.
    • Additional solvers in scico.solver.
    • New Huber norm (HuberNorm) and set distance functionals (SetDistance and SquaredSetDistance).
    • New loss functions loss.SquaredL2AbsLoss and loss.SquaredL2SquaredAbsLoss for phase retrieval problems.
    • Add interface to BM4D denoiser.
    • Change interfaces of linop.FiniteDifference and linop.DFT.
    • Change filenames of some example scripts (and corresponding notebooks).
    • Add support for Python 3.7.
    • New DiagonalStack linear operator.
    • Add support for non-linear operators to optimize.PDHG optimizer class.
    • Various bug fixes.

    Changes in Detail

    • Preparation for next release by @bwohlberg in https://github.com/lanl/scico/pull/226
    • Miscellaneous changes by @bwohlberg in https://github.com/lanl/scico/pull/227
    • Check for blockarray inputs in from_operator by @Michael-T-McCann in https://github.com/lanl/scico/pull/229
    • Revert SVD workaround by @Michael-T-McCann in https://github.com/lanl/scico/pull/230
    • Make user-facing code use scico.random instead of np.random by @Michael-T-McCann in https://github.com/lanl/scico/pull/235
    • Add loss functions for phase retrieval by @bwohlberg in https://github.com/lanl/scico/pull/236
    • Fix bug and add example by @smajee in https://github.com/lanl/scico/pull/246
    • Make bm3d dependency optional by @bwohlberg in https://github.com/lanl/scico/pull/243
    • Fix readthedocs build failure by @bwohlberg in https://github.com/lanl/scico/pull/248
    • Add doctest of modules to workflow, fix modules so they pass by @Michael-T-McCann in https://github.com/lanl/scico/pull/247
    • Address missing examples in docs by @bwohlberg in https://github.com/lanl/scico/pull/251
    • Minor clean up and packaging fix by @bwohlberg in https://github.com/lanl/scico/pull/254
    • Add a mechanism to create linear operators from functions by @Michael-T-McCann in https://github.com/lanl/scico/pull/249
    • Fix bugs in loss module by @bwohlberg in https://github.com/lanl/scico/pull/255
    • svmbir refactor by @smajee in https://github.com/lanl/scico/pull/252
    • Make SCICO compatible with jax 0.3.4 by @Michael-T-McCann in https://github.com/lanl/scico/pull/256
    • Docs style fixes by @bwohlberg in https://github.com/lanl/scico/pull/257
    • Add support for addition of functionals by @bwohlberg in https://github.com/lanl/scico/pull/258
    • Sphinx autodoc configuration changes by @bwohlberg in https://github.com/lanl/scico/pull/260
    • Update and fix conda environment construction script by @bwohlberg in https://github.com/lanl/scico/pull/262
    • Solver and functional extensions by @bwohlberg in https://github.com/lanl/scico/pull/264
    • Add BM4D by @smajee in https://github.com/lanl/scico/pull/263
    • Misc bug fix by @smajee in https://github.com/lanl/scico/pull/266
    • Bump pinned black version by @bwohlberg in https://github.com/lanl/scico/pull/268
    • Bug fix by @bwohlberg in https://github.com/lanl/scico/pull/267
    • Improve documentation for linop.optics by @bwohlberg in https://github.com/lanl/scico/pull/233
    • Minor docs fix by @bwohlberg in https://github.com/lanl/scico/pull/269
    • Minor additional improvements to conda script by @bwohlberg in https://github.com/lanl/scico/pull/270
    • Make compatible with jax v0.3.5 by @Michael-T-McCann in https://github.com/lanl/scico/pull/273
    • Change development version number structure by @bwohlberg in https://github.com/lanl/scico/pull/271
    • Reduce test run time by @bwohlberg in https://github.com/lanl/scico/pull/275
    • Improve SquaredL2SquaredAbsLoss by @bwohlberg in https://github.com/lanl/scico/pull/278
    • Simplify BlockArray implementation by @Michael-T-McCann in https://github.com/lanl/scico/pull/259
    • Fix typing errors and set up mypy workflow action by @bwohlberg in https://github.com/lanl/scico/pull/176
    • Fix parameter name in example script by @bwohlberg in https://github.com/lanl/scico/pull/286
    • Restore missing BlockArray docs by @bwohlberg in https://github.com/lanl/scico/pull/285
    • Fix bugs introduced by BlockArray changes by @Michael-T-McCann in https://github.com/lanl/scico/pull/282
    • Various improvements by @bwohlberg in https://github.com/lanl/scico/pull/290
    • Improve docs by @Michael-T-McCann in https://github.com/lanl/scico/pull/289
    • Bump maximum jax version and address imageio warnings by @bwohlberg in https://github.com/lanl/scico/pull/294
    • Improve example checking script by @bwohlberg in https://github.com/lanl/scico/pull/295
    • Modify FiniteDifference linop by @bwohlberg in https://github.com/lanl/scico/pull/296
    • Clean up examples by @bwohlberg in https://github.com/lanl/scico/pull/297
    • Improve handling of h_center parameter in linop.CircularConvolve by @bwohlberg in https://github.com/lanl/scico/pull/299
    • Improve notebook build script by @bwohlberg in https://github.com/lanl/scico/pull/300
    • Resolve import error by @bwohlberg in https://github.com/lanl/scico/pull/302
    • Add Python 3.7 compatibility by @Michael-T-McCann in https://github.com/lanl/scico/pull/301
    • Fix variable getting code for strings by @Michael-T-McCann in https://github.com/lanl/scico/pull/303
    • Clean up ray.tune interface by @bwohlberg in https://github.com/lanl/scico/pull/304
    • Improve script and resolve context-dependent test failure by @bwohlberg in https://github.com/lanl/scico/pull/305
    • Update change summary by @bwohlberg in https://github.com/lanl/scico/pull/306
    • Add google colab badge by @bwohlberg in https://github.com/lanl/scico/pull/308
    • Add separable Huber norm and minor docs improvements. by @bwohlberg in https://github.com/lanl/scico/pull/307
    • Added the name of the BlockArray class to repr by @FernandoDavis in https://github.com/lanl/scico/pull/293
    • Extend interface of linop.DFT by @bwohlberg in https://github.com/lanl/scico/pull/309
    • Extend L21Norm to support multiple l2 axes by @bwohlberg in https://github.com/lanl/scico/pull/313
    • Update type checking command by @Michael-T-McCann in https://github.com/lanl/scico/pull/314
    • Add block diagonal linear operator by @Michael-T-McCann in https://github.com/lanl/scico/pull/315
    • Bump test tolerance by @Michael-T-McCann in https://github.com/lanl/scico/pull/318
    • Make compatible with jax 0.3.15 by @Michael-T-McCann in https://github.com/lanl/scico/pull/320
    • Miscellaneous changes by @bwohlberg in https://github.com/lanl/scico/pull/321
    • Add PDHG solver with support for non-linear operators by @bwohlberg in https://github.com/lanl/scico/pull/322
    • Minor improvements to scico.optimize docs by @bwohlberg in https://github.com/lanl/scico/pull/328
    • Clean up Operator and LinearOperator module structure by @bwohlberg in https://github.com/lanl/scico/pull/329
    • Address #335 by @bwohlberg in https://github.com/lanl/scico/pull/336
    • Significant docs extension and restructuring by @bwohlberg in https://github.com/lanl/scico/pull/332
    • Bump maximum jax version and some other small changes by @bwohlberg in https://github.com/lanl/scico/pull/338
    • Address #324 by @bwohlberg in https://github.com/lanl/scico/pull/339
    • Replaced gpu<->cpu copies with host_callback in minimize. by @FernandoDavis in https://github.com/lanl/scico/pull/253
    • Resolve some components of #228 by @bwohlberg in https://github.com/lanl/scico/pull/340
    • Various changes by @bwohlberg in https://github.com/lanl/scico/pull/341
    • Mitigate impact of #342 by @bwohlberg in https://github.com/lanl/scico/pull/343
    • Fix conda script and work around #344 by @bwohlberg in https://github.com/lanl/scico/pull/345
    • Changes for 0.0.3 release by @bwohlberg in https://github.com/lanl/scico/pull/346

    Full Changelog: https://github.com/lanl/scico/compare/v0.0.2...v0.0.3

    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(Feb 18, 2022)

    Change Summary

    • Additional optimization algorithms: Linearized ADMM and PDHG.
    • Additional Abel transform and array slicing linear operators.
    • Additional nuclear norm functional.
    • New module scico.ray.tune providing a simplified interface to Ray Tune.
    • Move optimization algorithms into optimize subpackage.
    • Additional iteration stats columns for iterative ADMM subproblem solvers.
    • Renamed "Primal Rsdl" to "Prml Rsdl" in displayed iteration stats.
    • Move some functions from util and math modules to new array module.
    • Bump pinned jaxlib and jax versions to 0.3.0.

    Changes in Detail

    • Add optional relaxation to ADMM solver by @bwohlberg in https://github.com/lanl/scico/pull/118
    • Add codefactor badge by @bwohlberg in https://github.com/lanl/scico/pull/120
    • Docstring cleanup and improvement of style guide compliance by @bwohlberg in https://github.com/lanl/scico/pull/119
    • Added Markup section. by @FernandoDavis in https://github.com/lanl/scico/pull/121
    • Clean up scico.solver module by @bwohlberg in https://github.com/lanl/scico/pull/125
    • New optimization algorithms by @bwohlberg in https://github.com/lanl/scico/pull/117
    • A collection of small docs updates by @Michael-T-McCann in https://github.com/lanl/scico/pull/77
    • Run pytest on latest jax version by @Michael-T-McCann in https://github.com/lanl/scico/pull/126
    • Add ray.tune interface and example script by @bwohlberg in https://github.com/lanl/scico/pull/128
    • Improve iteration statistics mechanism by @bwohlberg in https://github.com/lanl/scico/pull/130
    • Move optimizers into optimize package by @bwohlberg in https://github.com/lanl/scico/pull/129
    • Bump jax version by @Michael-T-McCann in https://github.com/lanl/scico/pull/134
    • Fix bugs in linop.optics by @bwohlberg in https://github.com/lanl/scico/pull/131
    • Address codefactor complaints by @bwohlberg in https://github.com/lanl/scico/pull/135
    • Changes to examples scripts by @bwohlberg in https://github.com/lanl/scico/pull/137
    • Modify cg_kwargs mechanism in admm.LinearSubproblemSolver by @bwohlberg in https://github.com/lanl/scico/pull/140
    • Add pylint to pre-commit by @SauravMaheshkar in https://github.com/lanl/scico/pull/141
    • Miscellaneous changes by @bwohlberg in https://github.com/lanl/scico/pull/143
    • Make pylint skip scico/test, docs/, and examples/ by @Michael-T-McCann in https://github.com/lanl/scico/pull/145
    • Allow Diagonal to use broadcasting by @Michael-T-McCann in https://github.com/lanl/scico/pull/144
    • Move common functions in example scripts into new module by @bwohlberg in https://github.com/lanl/scico/pull/151
    • Remove problematic array copy operations by @bwohlberg in https://github.com/lanl/scico/pull/156
    • Address some docs build warnings by @bwohlberg in https://github.com/lanl/scico/pull/157
    • Fix explanation of weight in weighted CT example by @Michael-T-McCann in https://github.com/lanl/scico/pull/158
    • Update installation instructions by @smajee in https://github.com/lanl/scico/pull/154
    • Address readthedocs build failure by @bwohlberg in https://github.com/lanl/scico/pull/169
    • Bump sphinx-autodoc-typehints version to avoid readthedocs build error by @Michael-T-McCann in https://github.com/lanl/scico/pull/171
    • Address TODO in code by @Michael-T-McCann in https://github.com/lanl/scico/pull/150
    • Silence docs build warnings by @bwohlberg in https://github.com/lanl/scico/pull/174
    • Add array slicing LinearOperator by @bwohlberg in https://github.com/lanl/scico/pull/162
    • Move some functions to different modules by @bwohlberg in https://github.com/lanl/scico/pull/175
    • Make prox notation consistent by @Michael-T-McCann in https://github.com/lanl/scico/pull/180
    • Add center_offset to svmbir interface by @smajee in https://github.com/lanl/scico/pull/177
    • Fix some problems in DnCNN implementation and example by @bwohlberg in https://github.com/lanl/scico/pull/185
    • Correct __module__ for wrapped functions by @Michael-T-McCann in https://github.com/lanl/scico/pull/186
    • Make output types jax-array by @smajee in https://github.com/lanl/scico/pull/187
    • Make pytest-latest-jax workflow get latest jax even with SCICO jax version pinned by @Michael-T-McCann in https://github.com/lanl/scico/pull/189
    • Update conda install scripts by @bwohlberg in https://github.com/lanl/scico/pull/178
    • Split pytest and pytest-latest by @Michael-T-McCann in https://github.com/lanl/scico/pull/190
    • Refactor svmbir loss by @smajee in https://github.com/lanl/scico/pull/191
    • Remove is_smooth attribute (#89) by @tbalke in https://github.com/lanl/scico/pull/184
    • Fix scico.random failure with latest jax version by @bwohlberg in https://github.com/lanl/scico/pull/194
    • Add Robust PCA example by @bwohlberg in https://github.com/lanl/scico/pull/192
    • Poisson Example by @tbalke in https://github.com/lanl/scico/pull/197
    • Replace tabs with spaces by @bwohlberg in https://github.com/lanl/scico/pull/201
    • Add docs for scico.solver module by @bwohlberg in https://github.com/lanl/scico/pull/202
    • Update notebooks by @tbalke in https://github.com/lanl/scico/pull/206
    • Remove double spacing instances by @bwohlberg in https://github.com/lanl/scico/pull/207
    • Improve ray.tune usage example. by @bwohlberg in https://github.com/lanl/scico/pull/209
    • Miscellaneous minor improvements by @bwohlberg in https://github.com/lanl/scico/pull/210
    • Change svd call to avoid compute_uv=False by @Michael-T-McCann in https://github.com/lanl/scico/pull/214
    • Move denoiser implementations out of functional sub-module by @bwohlberg in https://github.com/lanl/scico/pull/213
    • Add Abel linear operator by @smajee in https://github.com/lanl/scico/pull/208
    • Add parameter documentation for h_center in CircularConvolve by @Michael-T-McCann in https://github.com/lanl/scico/pull/217
    • Address excessive memory usage in functional.NuclearNorm.__call__ by @bwohlberg in https://github.com/lanl/scico/pull/218
    • Fix type annotations in pgm by @tbalke in https://github.com/lanl/scico/pull/219
    • Add check for A not linop in prox by @tbalke in https://github.com/lanl/scico/pull/220
    • Add new example script by @bwohlberg in https://github.com/lanl/scico/pull/221
    • Minor conda script changes by @bwohlberg in https://github.com/lanl/scico/pull/222
    • Fix some typing and docstring issues by @bwohlberg in https://github.com/lanl/scico/pull/223
    • Bump jaxlib, jax, and flax versions by @bwohlberg in https://github.com/lanl/scico/pull/224
    • Final changes for 0.0.2 release. by @bwohlberg in https://github.com/lanl/scico/pull/225

    New Contributors

    • @SauravMaheshkar made their first contribution in https://github.com/lanl/scico/pull/141

    Full Changelog: https://github.com/lanl/scico/compare/v0.0.1...v0.0.2

    Source code(tar.gz)
    Source code(zip)
  • v0.0.1(Feb 18, 2022)

    Change Summary

    • Initial release.

    Changes in Detail

    • Set test_radon tolerances based on CPU/GPU by @lukepfister in https://github.com/lanl/scico/pull/4
    • Add inital CI jobs by @lukepfister in https://github.com/lanl/scico/pull/6
    • Add new loss with prox computed by svmbir.recon by @Michael-T-McCann in https://github.com/lanl/scico/pull/5
    • Rename radon.py -> radon_astra.py by @lukepfister in https://github.com/lanl/scico/pull/9
    • Switch to lukes personal email by @lukepfister in https://github.com/lanl/scico/pull/12
    • Update ci-build.yml by @lukepfister in https://github.com/lanl/scico/pull/13
    • Lukepfister/optics improvements by @lukepfister in https://github.com/lanl/scico/pull/10
    • Fix up biconvolve docstring by @lukepfister in https://github.com/lanl/scico/pull/14
    • Address docs build warnings by @bwohlberg in https://github.com/lanl/scico/pull/18
    • Docs fixes by @bwohlberg in https://github.com/lanl/scico/pull/21
    • Update svmbir install instructions by @bwohlberg in https://github.com/lanl/scico/pull/24
    • Added additional information to error when data submodule is not present by @FernandoDavis in https://github.com/lanl/scico/pull/20
    • Docs improvements by @bwohlberg in https://github.com/lanl/scico/pull/28
    • Add 2D support to radon_svmbir by @Michael-T-McCann in https://github.com/lanl/scico/pull/30
    • ADMM extensions by @bwohlberg in https://github.com/lanl/scico/pull/29
    • Clean up example scripts by @bwohlberg in https://github.com/lanl/scico/pull/26
    • Minor api docs improvements by @bwohlberg in https://github.com/lanl/scico/pull/16
    • Allow ADMM f to be a Functional by @bwohlberg in https://github.com/lanl/scico/pull/25
    • Add method for computing prox of convex conjugate of functional by @bwohlberg in https://github.com/lanl/scico/pull/33
    • Minor test improvements by @bwohlberg in https://github.com/lanl/scico/pull/39
    • Make random wrapping more robust to changes in jax.random by @Michael-T-McCann in https://github.com/lanl/scico/pull/43
    • Fix scaling bug in CG by @tbalke in https://github.com/lanl/scico/pull/45
    • Improve ADMM tests by @bwohlberg in https://github.com/lanl/scico/pull/46
    • Add svmbir examples by @tbalke in https://github.com/lanl/scico/pull/40
    • Improve notebooks build system by @bwohlberg in https://github.com/lanl/scico/pull/51
    • Example script clean up by @bwohlberg in https://github.com/lanl/scico/pull/50
    • Add features to PGM solver classes by @bwohlberg in https://github.com/lanl/scico/pull/56
    • Mike's docs readthrough by @Michael-T-McCann in https://github.com/lanl/scico/pull/53
    • Fixed SSLCertificate Error in Get_URL by @FernandoDavis in https://github.com/lanl/scico/pull/58
    • Add a style guide for grammar to our style documentation by @Michael-T-McCann in https://github.com/lanl/scico/pull/49
    • Additional improvements to the notebooks build system by @bwohlberg in https://github.com/lanl/scico/pull/55
    • Print device info in example scripts by @bwohlberg in https://github.com/lanl/scico/pull/59
    • Address user warnings in tests by @FernandoDavis in https://github.com/lanl/scico/pull/54
    • Minor docs edits by @bwohlberg in https://github.com/lanl/scico/pull/65
    • Rename usage examples by @bwohlberg in https://github.com/lanl/scico/pull/67
    • Replace objax with flax by @crstngc in https://github.com/lanl/scico/pull/68
    • Docstring cleanup by @bwohlberg in https://github.com/lanl/scico/pull/70
    • Improve LinearOperator adjoint tests by @bwohlberg in https://github.com/lanl/scico/pull/72
    • Pin jax version and update pip install instructions by @Michael-T-McCann in https://github.com/lanl/scico/pull/73
    • Microscopy example scripts by @bwohlberg in https://github.com/lanl/scico/pull/74
    • Improve usage overview docs by @bwohlberg in https://github.com/lanl/scico/pull/76
    • Check todo in docs by @FernandoDavis in https://github.com/lanl/scico/pull/71
    • Add function to compute operator norm by @bwohlberg in https://github.com/lanl/scico/pull/79
    • Consistent notation for Hermitian conjugate by @bwohlberg in https://github.com/lanl/scico/pull/87
    • Add tests for DnCNN by @bwohlberg in https://github.com/lanl/scico/pull/85
    • Problem with W^1/2 weight exponent by @tbalke in https://github.com/lanl/scico/pull/78
    • Skip test based on content of scico/data/examples by @bwohlberg in https://github.com/lanl/scico/pull/99
    • Changes to admm and svmbir wrapper to address issue #57 by @smajee in https://github.com/lanl/scico/pull/88
    • Rebuild examples by @Michael-T-McCann in https://github.com/lanl/scico/pull/102
    • Add deterministic flag for DnCnn GPU-based tests by @Michael-T-McCann in https://github.com/lanl/scico/pull/105
    • Add pylint check for missing docstrings by @Michael-T-McCann in https://github.com/lanl/scico/pull/106
    • Stop codecov checking the patch by @Michael-T-McCann in https://github.com/lanl/scico/pull/114
    • Fix ASTRA test in GPU issue #103 by @smajee in https://github.com/lanl/scico/pull/107
    • Clean up notebooks build script by @bwohlberg in https://github.com/lanl/scico/pull/108
    • Add missing requirement by @tbalke in https://github.com/lanl/scico/pull/115
    • Modified SquareL2Loss to inherit from WeightedSquareL2Loss by @FernandoDavis in https://github.com/lanl/scico/pull/112
    • Final changes for release 0.0.1 by @bwohlberg in https://github.com/lanl/scico/pull/101

    New Contributors

    • @lukepfister made their first contribution in https://github.com/lanl/scico/pull/4
    • @crstngc made their first contribution in https://github.com/lanl/scico/pull/68

    Full Changelog: https://github.com/lanl/scico/commits/v0.0.1

    Source code(tar.gz)
    Source code(zip)
Owner
Los Alamos National Laboratory
Los Alamos National Laboratory
3D medical imaging reconstruction software

InVesalius InVesalius generates 3D medical imaging reconstructions based on a sequence of 2D DICOM files acquired with CT or MRI equipments. InVesaliu

null 443 Jan 1, 2023
Veusz scientific plotting application

Veusz 3.3.1 Veusz is a scientific plotting package. It is designed to produce publication-ready PDF or SVG output. Graphs are built-up by combining pl

Veusz 613 Dec 16, 2022
A flexible package manager that supports multiple versions, configurations, platforms, and compilers.

Spack Spack is a multi-platform package manager that builds and installs multiple versions and configurations of software. It works on Linux, macOS, a

Spack 3.1k Dec 31, 2022
PsychoPy is an open-source package for creating experiments in behavioral science.

PsychoPy is an open-source package for creating experiments in behavioral science. It aims to provide a single package that is: precise enoug

PsychoPy 1.3k Dec 31, 2022
Datamol is a python library to work with molecules

Datamol is a python library to work with molecules. It's a layer built on top of RDKit and aims to be as light as possible.

datamol 276 Dec 19, 2022
Incubator for useful bioinformatics code, primarily in Python and R

Collection of useful code related to biological analysis. Much of this is discussed with examples at Blue collar bioinformatics. All code, images and

Brad Chapman 560 Dec 24, 2022
Karate Club: An API Oriented Open-source Python Framework for Unsupervised Learning on Graphs (CIKM 2020)

Karate Club is an unsupervised machine learning extension library for NetworkX. Please look at the Documentation, relevant Paper, Promo Video, and Ext

Benedek Rozemberczki 1.8k Dec 31, 2022
Probabilistic Programming in Python: Bayesian Modeling and Probabilistic Machine Learning with Aesara

PyMC3 is a Python package for Bayesian statistical modeling and Probabilistic Machine Learning focusing on advanced Markov chain Monte Carlo (MCMC) an

PyMC 7.2k Dec 30, 2022
Statsmodels: statistical modeling and econometrics in Python

About statsmodels statsmodels is a Python package that provides a complement to scipy for statistical computations including descriptive statistics an

statsmodels 8.1k Dec 30, 2022
A computer algebra system written in pure Python

SymPy See the AUTHORS file for the list of authors. And many more people helped on the SymPy mailing list, reported bugs, helped organize SymPy's part

SymPy 9.9k Jan 8, 2023
Kedro is an open-source Python framework for creating reproducible, maintainable and modular data science code

A Python framework for creating reproducible, maintainable and modular data science code.

QuantumBlack Labs 7.9k Jan 1, 2023
PennyLane is a cross-platform Python library for differentiable programming of quantum computers.

PennyLane is a cross-platform Python library for differentiable programming of quantum computers. Train a quantum computer the same way as a neural network.

PennyLaneAI 1.6k Jan 4, 2023
Efficient Python Tricks and Tools for Data Scientists

Why efficient Python? Because using Python more efficiently will make your code more readable and run more efficiently.

Khuyen Tran 944 Dec 28, 2022
Float2Binary - A simple python class which finds the binary representation of a floating-point number.

Float2Binary A simple python class which finds the binary representation of a floating-point number. You can find a class in IEEE754.py file with the

Bora Canbula 3 Dec 14, 2021
A simple computer program made with Python on the brachistochrone curve.

Brachistochrone-curve This is a simple computer program made with Python on the brachistochrone curve. I decided to write it after a physics lesson on

Diego Romeo 1 Dec 16, 2021
CONCEPT (COsmological N-body CodE in PyThon) is a free and open-source simulation code for cosmological structure formation

CONCEPT (COsmological N-body CodE in PyThon) is a free and open-source simulation code for cosmological structure formation. The code should run on any Linux system, from massively parallel computer clusters to laptops.

Jeppe Dakin 62 Dec 8, 2022
SNIPS: Solving Noisy Inverse Problems Stochastically

SNIPS: Solving Noisy Inverse Problems Stochastically This repo contains the official implementation for the paper SNIPS: Solving Noisy Inverse Problem

Bahjat Kawar 35 Nov 9, 2022
Keyhole Imaging: Non-Line-of-Sight Imaging and Tracking of Moving Objects Along a Single Optical Path

Keyhole Imaging Code & Dataset Code associated with the paper "Keyhole Imaging: Non-Line-of-Sight Imaging and Tracking of Moving Objects Along a Singl

Stanford Computational Imaging Lab 20 Feb 3, 2022
OGE-2022-na-Python - Solving problems in python for the OGE 2022

OGE-2022-na-Python Решение задачек на питоне для ОГЭ 2022 Тут разобраны разные в

Slava 0 Oct 14, 2022
IDRLnet, a Python toolbox for modeling and solving problems through Physics-Informed Neural Network (PINN) systematically.

IDRLnet IDRLnet is a machine learning library on top of PyTorch. Use IDRLnet if you need a machine learning library that solves both forward and inver

IDRL 105 Dec 17, 2022