Pyxel detector simulation framework
===================================

[![doi](https://zenodo.org/badge/DOI/10.1117/1.JATIS.8.4.048002.svg)](https://doi.org/10.1117/1.JATIS.8.4.048002)
[![ASCL](https://img.shields.io/badge/ascl-2301.002-blue.svg?colorB=262255)](https://ascl.net/2301.002)
[![docs](https://esa.gitlab.io/pyxel/documentation.svg)](https://esa.gitlab.io/pyxel/doc)
[![gitter](https://badges.gitter.im/pyxel-framework/community.svg)](https://gitter.im/pyxel-framework/community)
[![Google Group](https://img.shields.io/badge/Google%20Group-Pyxel%20Detector%20Framework-blue.svg)](https://groups.google.com/g/pyxel-detector-framework)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://gitlab.com/esa/pyxel/blob/master/LICENSE.txt)
[![PyPI version](https://badge.fury.io/py/pyxel-sim.svg)](https://badge.fury.io/py/pyxel-sim)
[![conda](https://img.shields.io/conda/vn/conda-forge/pyxel-sim.svg)](https://anaconda.org/conda-forge/pyxel-sim)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gl/esa%2Fpyxel-data/HEAD?urlpath=lab)
[![pipeline status](https://gitlab.com/esa/pyxel/badges/master/pipeline.svg)](https://gitlab.com/esa/pyxel/-/pipelines)
[![coverage report](https://gitlab.com/esa/pyxel/badges/master/coverage.svg)](https://esa.gitlab.io/pyxel/htmlcov/)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![JSON Schema](https://img.shields.io/badge/JSON%20Schema-draft--07-green)](https://esa.gitlab.io/pyxel/pyxel_schema.json)
[![Static Badge](https://img.shields.io/badge/I_want_to_contribute_to_Pyxel-yellow)](https://esa.gitlab.io/pyxel/doc/stable/references/contributing.html)

## What is it?

*Pyxel* is a general detector simulation framework.
An easy-to-use framework that can simulate a variety of imaging detector
effects combined on images (e.g. radiation and optical effects, noises)
made by CCD or CMOS-based detectors.

*Pyxel* is tested on Python 3.9+.

If you'd like to contribute to *Pyxel* you're most welcome.
Please read [the little guide](https://esa.gitlab.io/pyxel/doc/stable/references/contributing.html) to get you started.

## Documentation

Learn more about *Pyxel* in its offical [blog](https://esa.gitlab.io/pyxel) and its official documentation at [https://esa.gitlab.io/pyxel/doc](https://esa.gitlab.io/pyxel/doc).

## Quickstart Setup

The best way to get started and learn Pyxel are the [Tutorials and Examples](https://esa.gitlab.io/pyxel/doc/stable/tutorials/examples.html).

For convenience we provide a pre-defined conda environment file,
so you can get additional useful packages together with Pyxel in a virtual isolated environment.

For more information check the [Quickstart Setup](https://esa.gitlab.io/pyxel/doc/stable/tutorials/overview.html#quickstart-setup) instructions.
 
## Installation

[Installation instructions](https://esa.gitlab.io/pyxel/doc/stable/tutorials/install.html) can be found in the tutorials.

## Examples

Example notebooks of Pyxel can be found in a separate public repository [Pyxel Data](https://gitlab.com/esa/pyxel-data). Examples can either be downloaded and run locally or run in the cloud using Binder, by clicking on the badge above.


## Getting Help


* Report bugs, suggest features or view the source code on [GitLab](https://gitlab.com/esa/pyxel).
* For less well-defined questions or ideas, or to announce other projets of interest to Pyxel users, use the *Pyxel* [mailing list](https://groups.google.com/g/pyxel-detector-framework).

## Discussion and Development

Most development discussion is taking place on GitLab in this repo.
Further, the *Pyxel* [mailing list](https://groups.google.com/g/pyxel-detector-framework) can also be used for specialized discussions or design issues, and a [Gitter channel](https://gitter.im/pyxel-framework/community) is available for quick development related questions.


## Citing Pyxel

If you use *Pyxel*, please cite the paper we published in [SPIE Digital Library](https://www.spiedigitallibrary.org/journals/Journal-of-Astronomical-Telescopes-Instruments-and-Systems/volume-8/issue-04/048002/Pyxel-10--an-open-source-Python-framework-for-detector/10.1117/1.JATIS.8.4.048002.full?SSO=1).

## Contributing to *Pyxel*

All contributions, bug reports, bug fixes, documentation improvements, enhancements and ideas are welcome.

A detailed overview on how to contribute to *Pyxel* can be found in the
[**contributing guide**](https://esa.gitlab.io/pyxel/doc/stable/references/contributing.html).
There is also an [overview](.gitlab/CONTRIBUTING.md) on GitLab.

If you are simply looking to start working with the *Pyxel* codebase, navigate to the
[GitLab "issues" tab](https://gitlab.com/esa/pyxel/issues) and start looking through interesting issues.
There are a number of issues listed under [Docs](https://gitlab.com/esa/pyxel/issues?label_name%5B%5D=documentation) and [good first issue](https://gitlab.com/esa/pyxel/issues?label_name%5B%5D=good+first+issue) where you could start out.

Or maybe through using *Pyxel* you have an idea of your own or are looking for something in the documentation and thinking 'this can be improved'... you can do something about it !

Feel free to ask questions on the [mailing list](https://groups.google.com/g/pyxel-detector-framework) or on [Gitter](https://gitter.im/pyxel-framework/community).


## Changelog

The [detailed changelog](https://esa.gitlab.io/pyxel/doc/stable/references/changelog.html) is available on the website.


## License

*Pyxel* is released under [MIT license](https://gitlab.com/esa/pyxel/blob/master/LICENSE.txt).
