MiniPipes 0.4.1
Auto-generated gui for mini-python apps with provenance recording. This version includes Image2PDF, Fit2Map
Requires Python: >=3.7

*MiniPipes*
======================================================

Developers
-------------------------------------------------------
* Main:
    - Yevgeny Rakita
* contributors:
    - Simon Billinge

License
-------------------------------------------------------
- Columbia University

Installation
------------------------------------------------------
1. Make a new conda environment, for example: 
    `conda create --name MiniPipes python=3.8`
2. Activate conda environment: 
    `conda activate MiniPipes`
3. Download package from source : https://github.com/yevgenyr/MiniPipes  **(privet; TBD for public)**
4. `cd` to main *MiniPipes* repo.
5. Install: `python setup.py install`.
    > **WARNING**: make sure you are in your dedicated conda environment. Dependencies will be automatically installed!
6. (Windows only) - if "graphviz" is not installed, please install graphviz for windows from here: 
https://graphviz.org/download/. After installation, open the Anaconda prompt as "admin" and type `dot -c`.  
#### (opt.) create executables:
- (Linux) : If not done automatically, move "MiniPipes.desktop" to "~/.local/share/applications.
   > If you have installed *MiniPipes* as a 'developer', change the path in:
      - Exec = Path/to/MiniPipes/"MiniPipes/core/main.py"
      - Icon = MiniPipes/docs/_static/icons/MiniPipes.png
- (macOS) : **TODO**
- (Windos) : To create an executable for windows: `pip install auto-py-to-exe` --> `> auto-py-to-exe` 

Running
------------------------------------------------------
If the execution icon file is not active, type `minipipes` from your shell console

Apps
------------------------------------------------------
General Properties: 
    - UI and functionality are designed to be auto-generated from \*_f.py and \*_c.yml (config) files.
    - The basic design is such that it allows execution of a single file, as well as a set of files in dir with a unique extension. 
Available for current version:
 * Image2PDF
    - converts powder diffraction tiff images to PDF [G(r)].
    - includes:
        - **FIXME** Average Images : takes diffraction images with similar (separated with an index) filename and averages them.
        - Mask Images: masks diffraction images
            - auto-masking
            - static-masking
            - combined
        - Image to IQ: integrates images to get I(q). Uses related mask, or a static mask. 
        - IQ to PDF: reduces I(q) to F(q) and Fourier transform to a PDF, G(r)
 * Fit2Map
    - Fits a 1D array to a set of functions. Current set of functions is available in: */MiniPipes/apps/Fit2Map/Fitting/functions.py* 
        > *Users are encouraged to contribute new useful functions.*                                                                                                                                    
    - includes:
        - Fitting: fits 
            - Fit: fit and visualize the fitting of a chosen function with initial conditions to a 1D array.
            - Inspect: configure the fitting parameters for a chosen function
        - Visualize:
            After Bulk production or related arrays, allows visualization of QOI maps
            - **TODO**: print or popup the available set of parameters                                                                                                              


Contribution:
------------------------------------------------------
- **You can create your own applications easily!**
    - Got to `docs/BasicAppExample`. You will find there a minimal-example application that you can use to create your own application
        - \*_c.yml files contains the configurations (the tag-name will change according to what stands before _c.)
        - \*_f.py file contains the driver. You must give the class the same name for the file before _f, e.g. `class Driver:`.
    - After installing in a development mode: `python setu.py develop`, copy a version of your app to `MiniPipes/apps/<apps_group`.
    - <apps_group> can take any name, and it will create a tag in the app navigator window.
    - The available apps inside 'apps-group' will be shown after pressing the tag (for example 'BasicAppExample'). Apps that start with an "\_" will be neglected
    - when pressing a particular app, a new window will appear. The window will contain: 
        - an activation button at the top with the name of **any** _f.py file that exists in the app-dir.
        - tags with configurations that will be generated from **any** _c.yml file