LiberTEM

LiberTEM: Software platform for scalable multidimensional data processing in transmission electron microscopy - Published in JOSS (2020)

https://github.com/libertem/libertem

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 17 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    7 of 29 committers (24.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

data-processing electron-microscopy image-processing python

Keywords from Contributors

energy-system hydrology mesh exoplanet turing-machine standardization pde ode astronomy optimisation

Scientific Fields

Mathematics Computer Science - 84% confidence
Artificial Intelligence and Machine Learning Computer Science - 62% confidence
Last synced: 4 months ago · JSON representation

Repository

Open pixelated STEM framework

Basic Info
Statistics
  • Stars: 119
  • Watchers: 12
  • Forks: 68
  • Open Issues: 173
  • Releases: 0
Topics
data-processing electron-microscopy image-processing python
Created almost 8 years ago · Last pushed 4 months ago
Metadata Files
Readme License

README.rst

|docs|_ |gitter|_ |azure|_ |github|_ |precommit|_ |joss|_ |zenodo|_ |pypi|_ |condaforge|_

.. |docs| image:: https://img.shields.io/badge/%F0%9F%95%AE-docs-green.svg
.. _docs: https://libertem.github.io/LiberTEM/

.. |gitter| image:: https://badges.gitter.im/join_chat.svg
.. _gitter: https://gitter.im/LiberTEM/Lobby

.. |azure| image:: https://dev.azure.com/LiberTEM/LiberTEM/_apis/build/status/LiberTEM.LiberTEM-data?branchName=master
.. _azure: https://dev.azure.com/LiberTEM/LiberTEM/_build/latest?definitionId=4&branchName=master

.. |zenodo| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.1477847.svg
.. _zenodo: https://doi.org/10.5281/zenodo.1477847

.. |github| image:: https://img.shields.io/badge/GitHub-MIT-informational
.. _github: https://github.com/LiberTEM/LiberTEM/

.. |joss| image:: https://joss.theoj.org/papers/10.21105/joss.02006/status.svg
.. _joss: https://doi.org/10.21105/joss.02006

.. |precommit| image:: https://results.pre-commit.ci/badge/github/LiberTEM/LiberTEM/master.svg
.. _precommit: https://results.pre-commit.ci/latest/github/LiberTEM/LiberTEM/master

.. |pypi| image:: https://badge.fury.io/py/libertem.svg
.. _pypi: https://pypi.org/project/libertem/

.. |condaforge| image:: https://anaconda.org/conda-forge/libertem/badges/version.svg
.. _condaforge: https://anaconda.org/conda-forge/libertem

LiberTEM is an open source platform for high-throughput distributed processing
of large-scale binary data sets and live data streams using a modified
`MapReduce programming model `_. The
current focus is `pixelated
`_
scanning transmission electron microscopy (`STEM
`_)
\[`MacLaren et al. (2016) `_,
`Ophus (2019) `_\] and scanning electron
beam diffraction data.

MapReduce-like processing allows to specify an algorithm through two functions:
One function that is mapped on portions of the input data, and another function
that merges (reduces) a partial result from this mapping step into the complete
result. A wide range of TEM and 4D STEM processing tasks can be expressed in
this fashion, see `Applications`_.

The UDF interface of LiberTEM offers a standardized, versatile API to decouple
the mathematical core of an algorithm from details of data source, parallelism,
and use of results. Mapping and merging can be performed in any order and with
different subdivisions of the input data, including running parts of the
calculation concurrently. That means the same implementation can be used in a
wide range of modalities, including massive scaling on clusters. Since each
merge step produces an intermediate result, this style of processing is suitable
for displaying live results from a running calculation in a GUI application and
for `processing live data streams `_.
A closed-loop feedback between processing and instrument control can be realized
as well. See `User-defined functions
`_ for more details on the
LiberTEM UDF interface.

The LiberTEM back-end offers `high throughput and scalability
`_ on PCs, single server
nodes, clusters and cloud services. On clusters it can use fast distributed
local storage on high-performance SSDs. That way it achieves `very high
aggregate IO performance
`_ on a compact and
cost-efficient system built from stock components. All CPU cores and CUDA
devices in a system can be used in parallel.

LiberTEM is supported on Linux, Mac OS X and Windows. Other platforms that allow
installation of Python 3.7+ and the required packages will likely work as well. The
GUI is running in a web browser.

Installation
------------

The short version:

.. code-block:: shell

    $ virtualenv -p python3 ~/libertem-venv/
    $ source ~/libertem-venv/bin/activate
    (libertem-venv) $ python -m pip install "libertem[torch]"

    # optional for GPU support
    # See also https://docs.cupy.dev/en/stable/install.html
    (libertem-venv) $ python -m pip install cupy

Please see `our documentation
`_ for details!

Alternatively, to run the `LiberTEM Docker image
`_:

.. code-block:: shell

    $ docker run -p 127.0.0.1:9000:9000 --mount type=bind,source=/path/to/your/data/,dst=/data/,ro ghcr.io/libertem/libertem

or

.. code-block:: shell

    $ apptainer exec docker://ghcr.io/libertem/libertem /venv/bin/libertem-server

Deployment for offline data processing on a single-node system for a local user
is thoroughly tested and can be considered stable. Deployment on a cluster is
experimental and still requires some additional work, see `Issue #105
`_. Back-end support for live data processing
is still experimental as well, see https://github.com/LiberTEM/LiberTEM-live.

Applications
------------

Since LiberTEM is programmable through `user-defined functions (UDFs)
`_, it can be used for a wide
range of processing tasks on array-like data and data streams. The following
applications have been implemented already:

- Virtual detectors (virtual bright field, virtual HAADF, center of mass
  \[`Krajnak et al. (2016) `_\],
  custom shapes via masks)
- `Analysis of amorphous materials `_
- `Strain mapping `_
- `Off-axis electron holography reconstruction `_
- `Single Side Band ptychography `_

Some of these applications are available through an `interactive web GUI
`_. Please see `the
applications section `_
of our documentation for details!

The Python API and user-defined functions (UDFs) can be used for complex
operations such as arbitrary linear operations and other features like data
export. Example Jupyter notebooks are available in the `examples directory
`_. If you are having
trouble running the examples, please let us know by filing an issue or
by `joining our Gitter chat `_.

LiberTEM is suitable as a high-performance processing backend for other
applications, including live data streams. `Contact us
`_ if you are interested!

LiberTEM is evolving rapidly and prioritizes features following user demand and
contributions. Currently we are working on `live data processing
`_, improving application support for sparse
data and event-based detectors, performance improvements for GPU processing, and implementing
analysis methods for various applications of pixelated
STEM and other large-scale detector data. If you like to influence the direction
this project is taking, or if you'd like to `contribute
`_, please join our
`gitter chat `_ and our `general mailing list
`_.

File formats
------------

LiberTEM currently opens most file formats used for pixelated STEM. See `our
general information on loading data
`_ and `format-specific
documentation
`_ for more
information!

- Raw binary files
- NumPy .npy binary files
- Thermo Fisher EMPAD detector \[`Tate et al. (2016) `_\] files
- `Quantum Detectors MIB format `_
- Nanomegas .blo block files
- Direct Electron DE5 files (HDF5-based) and Norpix SEQ files for `DE-Series `_ detectors
- `Gatan K2 IS `_ raw format
- Stacks of Gatan DM3 and DM4 files (via `openNCEM `_)
- Single-file Gatan DM4 scans when saved using C-ordering
- FRMS6 from PNDetector pnCCD cameras \[`Simson et al. (2015) `_\]
  (currently alpha, gain correction still needs UI changes)
- FEI SER files (via `openNCEM `_)
- MRC (via `openNCEM `_)
- HDF5-based formats such as HyperSpy files, NeXus and EMD
- TVIPS binary files
- Sparse data in Raw CSR (compressed sparse row) format, as is possible
  to generate from event-based detectors
- Please contact us if you are interested in support for an additional format!

Live processing and detectors (experimental)
--------------------------------------------

See `LiberTEM-live `_!

License
-------

LiberTEM is licensed under the MIT license.

Acknowledgements
----------------

We are very grateful for your continuing support for LiberTEM!

See `the acknowledgement page
`_ for a list of authors and
contributors to LiberTEM and its subprojects. See also our info on `funding
`_ and `industry partners
`_.

Owner

  • Name: LiberTEM
  • Login: LiberTEM
  • Kind: organization
  • Email: libertem@googlegroups.com

JOSS Publication

LiberTEM: Software platform for scalable multidimensional data processing in transmission electron microscopy
Published
June 20, 2020
Volume 5, Issue 50, Page 2006
Authors
Alexander Clausen ORCID
Forschungszentrum Jülich, Ernst Ruska-Centre for Microscopy and Spectroscopy with Electrons
Dieter Weber ORCID
Forschungszentrum Jülich, Ernst Ruska-Centre for Microscopy and Spectroscopy with Electrons
Karina Ruzaeva ORCID
Forschungszentrum Jülich, Ernst Ruska-Centre for Microscopy and Spectroscopy with Electrons
Vadim Migunov ORCID
Forschungszentrum Jülich, Ernst Ruska-Centre for Microscopy and Spectroscopy with Electrons, Central Facility for Electron Microscopy (GFE), RWTH Aachen University
Anand Baburajan ORCID
Government Engineering College Sreekrishnapuram
Abijith Bahuleyan ORCID
Government Engineering College Sreekrishnapuram
Jan Caron ORCID
Forschungszentrum Jülich, Ernst Ruska-Centre for Microscopy and Spectroscopy with Electrons
Rahul Chandra ORCID
Chandigarh University
Sayandip Halder ORCID
Jadavpur University
Magnus Nord ORCID
University of Antwerp, EMAT
Knut Müller-Caspary ORCID
Forschungszentrum Jülich, Ernst Ruska-Centre for Microscopy and Spectroscopy with Electrons
Rafal E. Dunin-Borkowski ORCID
Forschungszentrum Jülich, Ernst Ruska-Centre for Microscopy and Spectroscopy with Electrons
Editor
Mark A. Jensen ORCID
Tags
transmission electron microscopy distributed big data MapReduce

GitHub Events

Total
  • Create event: 69
  • Issues event: 41
  • Release event: 38
  • Watch event: 5
  • Delete event: 65
  • Issue comment event: 314
  • Push event: 65
  • Pull request review comment event: 39
  • Pull request review event: 63
  • Pull request event: 104
  • Fork event: 2
Last Year
  • Create event: 69
  • Issues event: 41
  • Release event: 38
  • Watch event: 5
  • Delete event: 65
  • Issue comment event: 314
  • Push event: 65
  • Pull request review comment event: 39
  • Pull request review event: 63
  • Pull request event: 104
  • Fork event: 2

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 4,530
  • Total Committers: 29
  • Avg Commits per committer: 156.207
  • Development Distribution Score (DDS): 0.583
Past Year
  • Commits: 219
  • Committers: 5
  • Avg Commits per committer: 43.8
  • Development Distribution Score (DDS): 0.548
Top Committers
Name Email Commits
Alexander Clausen a****x@g****e 1,888
Dieter Weber d****r@f****e 1,422
Matthew Bryan m****2@g****m 716
Anand Baburajan a****n@g****m 99
abijith-bahuleyan a****2@g****m 98
pre-commit-ci[bot] 6****] 89
dependabot[bot] 4****] 58
Karina Ruzaeva k****a@f****e 51
Jae s****4@g****m 17
Shankhadeep Dey s****9@g****m 17
Karina KR. Ruzaeva r****a@i****e 15
Vadim Migunov v****v@g****m 10
Sai Sunku s****0@g****m 6
abijith-bahuleyan a****n@g****m 6
DYVZ8X p****9@g****m 5
probonopd p****d 5
Barnaby Levin b****7@c****u 4
Sivert Dagenborg s****g@g****m 3
ozej8y j****l@m****u 3
Sayandip Halder 4****8 3
Dieter Weber w****e@m****e 3
Jan Caron c****n@f****e 2
Dieter Weber u****e@p****e 2
Daniel S. Katz d****z@i****g 2
Håkon Wiik Ånes h****s@g****m 2
caron j****n@f****e 1
Rahul Chandra 1****1@g****m 1
Magnus Nord m****r@g****m 1
kruzaeva 4****a 1

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 178
  • Total pull requests: 413
  • Average time to close issues: almost 2 years
  • Average time to close pull requests: 15 days
  • Total issue authors: 7
  • Total pull request authors: 6
  • Average comments per issue: 3.07
  • Average comments per pull request: 4.2
  • Merged pull requests: 346
  • Bot issues: 0
  • Bot pull requests: 128
Past Year
  • Issues: 14
  • Pull requests: 138
  • Average time to close issues: 20 days
  • Average time to close pull requests: 4 days
  • Issue authors: 3
  • Pull request authors: 5
  • Average comments per issue: 1.21
  • Average comments per pull request: 3.59
  • Merged pull requests: 110
  • Bot issues: 0
  • Bot pull requests: 45
Top Authors
Issue Authors
  • sk1p (84)
  • uellue (72)
  • matbryan52 (17)
  • anandbaburajan (2)
  • CSSFrancis (1)
  • sivborg (1)
  • robbmcleod (1)
Pull Request Authors
  • sk1p (145)
  • uellue (93)
  • pre-commit-ci[bot] (64)
  • dependabot[bot] (64)
  • matbryan52 (43)
  • sivborg (4)
Top Labels
Issue Labels
enhancement (45) bug (32) GUI (29) UX/DX (14) docs (13) file formats and I/O (13) future (12) discussion (11) infra (9) good first issue (8) Web API (8) Performance (8) windows (6) design (5) GSOC (5) QA (4) UDFs (4) GPU (2) upstream (2) dependencies (2) Python API (2) wontfix (1) related project (1) security (1) help wanted (1) AAA-Priority (1)
Pull Request Labels
dependencies (74) infra (40) javascript (37) bug (36) docs (28) enhancement (27) GUI (11) Web API (8) AAA-Priority (7) file formats and I/O (7) QA (6) github_actions (5) python (5) backport:stable (4) notebooks (2) Performance (2) discussion (1) UDFs (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 1,467 last-month
  • Total dependent packages: 2
  • Total dependent repositories: 3
  • Total versions: 42
  • Total maintainers: 3
pypi.org: libertem

Open pixelated STEM framework

  • Homepage: https://libertem.github.io/LiberTEM/
  • Documentation: https://libertem.readthedocs.io/
  • License: Copyright (c) 2024 LiberTEM creators Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  • Latest release: 0.15.2
    published 6 months ago
  • Versions: 42
  • Dependent Packages: 2
  • Dependent Repositories: 3
  • Downloads: 1,467 Last month
Rankings
Dependent packages count: 3.2%
Forks count: 5.3%
Average: 6.6%
Stargazers count: 7.1%
Downloads: 8.3%
Dependent repos count: 9.0%
Last synced: 4 months ago

Dependencies

client/package-lock.json npm
  • 1202 dependencies
client/package.json npm
  • @types/jest ^27.4.1 development
  • @types/node ^17.0.26 development
  • @types/path-browserify ^1.0.0 development
  • @types/react ^17.0.14 development
  • @types/react-dom ^17.0.9 development
  • @types/react-redux ^7.1.24 development
  • @types/styled-components ^5.1.25 development
  • @typescript-eslint/eslint-plugin ^5.20.0 development
  • @typescript-eslint/parser ^5.20.0 development
  • deep-freeze 0.0.1 development
  • eslint-plugin-import ^2.23.4 development
  • eslint-plugin-jsdoc ^35.4.3 development
  • eslint-plugin-prefer-arrow ^1.2.3 development
  • eslint-plugin-react ^7.24.0 development
  • http-proxy-middleware ^2.0.1 development
  • react-scripts 5.0.0 development
  • typescript ^4.3.5 development
  • utility-types ^3.10.0 development
  • @types/deep-freeze ^0.1.2
  • @types/lodash ^4.14.182
  • @types/prop-types ^15.7.5
  • @types/uuid ^8.3.4
  • ajv ^8.6.1
  • formik ^2.2.9
  • immer ^9.0.6
  • lodash ^4.17.21
  • path-browserify ^1.0.1
  • react ^17.0.2
  • react-app-polyfill ^2.0.0
  • react-dom ^17.0.2
  • react-redux ^8.0.1
  • react-window ^1.8.6
  • redux 4.2
  • redux-saga ^1.1.3
  • semantic-ui-css git+https://github.com/Semantic-Org/Semantic-UI-CSS.git#01e4a53
  • semantic-ui-react ^2.1.2
  • styled-components ^5.3.0
  • uuid ^8.3.2
docs_requirements.txt pypi
  • graphviz *
  • hdbscan >=0.8.28
  • ipython *
  • libertem_blobfinder *
  • nbsphinx *
  • nbsphinx_link *
  • sphinx >=3.5.1
  • sphinx-autobuild *
  • sphinx-issues *
  • sphinx-rtd-theme *
  • sphinxcontrib-bibtex >=2
scripts/requirements.txt pypi
  • bibtexparser *
  • click *
  • docutils *
  • ghp-import *
  • html5lib *
  • pygithub *
  • requests *
  • twine *
  • wheel *
setup.py pypi
  • FIXME *
  • async_generator *
  • autopep8 *
  • click *
  • cloudpickle *
  • defusedxml *
  • distributed >=2.19.0
  • empyre >=0.3.0
  • h5py *
  • https *
  • jsonschema *
  • matplotlib *
  • nbconvert *
  • nbformat *
  • ncempy >=1.4
  • numba >=0.51
  • numpy *
  • opentelemetry-api *
  • pillow *
  • psutil *
  • pywin32 *
  • scikit-image *
  • scikit-learn *
  • scipy *
  • sparse *
  • threadpoolctl >=3.0
  • tornado >=5
  • tqdm *
  • typing-extensions *
test_requirements.txt pypi
  • aiohttp * test
  • ipykernel * test
  • nest-asyncio * test
  • pytest >=6 test
  • pytest-asyncio >0.11 test
  • pytest-benchmark * test
  • pytest-cov * test
  • pytest-env * test
  • pytest-xdist * test
  • websockets * test
packaging/docker/Dockerfile docker
  • builder0 latest build
  • python 3.9-slim build
packaging/docker/docker-compose.yml docker
  • libertem/libertem triage
  • libertem/libertem-dev latest
tracing/docker-compose.yml docker
  • ${OTELCOL_IMG} latest
  • jaegertracing/all-in-one latest
  • openzipkin/zipkin latest
.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • actions/deploy-pages v2 composite
  • actions/setup-node v3 composite
  • actions/setup-python v4 composite
  • actions/upload-pages-artifact v1.0.8 composite
  • codecov/codecov-action v3 composite
  • docker/build-push-action v4 composite
  • docker/login-action v2 composite
  • docker/setup-buildx-action v2 composite
override_requirements.txt pypi
pyproject.toml pypi