Metadata-Version: 2.4
Name: mimoCoRB2
Version: 0.0.4
Summary: Multiple In Multiple Out Configurable Ring Buffer manager
Author-email: Julian Baader <julian.baader@gmx.de>
License: MIT License
        
        Copyright (c) 2024 JulianBaader
        
        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.
        
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: pyyaml
Requires-Dist: graphviz
Requires-Dist: scipy
Requires-Dist: pandas
Requires-Dist: matplotlib
Requires-Dist: PyQt5
Requires-Dist: psutil
Provides-Extra: dev
Requires-Dist: sphinx; extra == "dev"
Requires-Dist: sphinx-autodoc-typehints; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: sphinxcontrib-tikz; extra == "dev"
Dynamic: license-file

Introduction
============



What is mimoCoRB2?
------------------

mimoCoRB2 (multiple in multiple out configurable ringbuffer manager) provides a
central component of each data acquisition system needed to record and
preanalyse data from randomly occurring processes. Typical examples are
waveform data as provided by detectors common in quantum mechanical
measurements, or in nuclear, particle and astro particle physics, e. g. photo
tubes, Geiger counters, avalanche photo-diodes or modern SiPMs. The random
nature of such processes and the need to keep read-out dead times low requires
an input buffer for fast collection of data and an efficient buffer manager
delivering a constant data stream to the subsequent processing steps. While a
data source feeds data into the buffer, consumer processes receive the data to
filter, reduce, analyze or simply visualize the recorded data. In order to
optimally use the available resources, multi-core and multi-processing
techniques must be applied.



This project originated from an effort to structure and generalize data acquisition for several experiments in advanced
physics laboratory courses at Karlsruhe Institute of Technology (KIT) and has been extensively tested with Ubuntu
Linux.


What can it do?
---------------

Amongst the core features of mimoCoRB2 are:

* multiprocessing safe ringbuffer for NumPy structured arrays
* setup of multiple ringbuffers and workers from configuration files
* templates for common interactions between buffers (importing/exporting, filtering, processing, observing)
* pre built functions for common operations (oscilloscope, histogram, pulse height analysis)
* gui for monitoring and controlling the system

Running an example
------------------
Clone this repo and move into the directory
```bash
pip install .
mimocorb2 examples/muon/spin_setup.yaml
```
