Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zhaofeng-shu33/ace_cream
This project provides a wrapper program of Python for ACE algorithm implementation of Fortran.
https://github.com/zhaofeng-shu33/ace_cream
Last synced: 3 months ago
JSON representation
This project provides a wrapper program of Python for ACE algorithm implementation of Fortran.
- Host: GitHub
- URL: https://github.com/zhaofeng-shu33/ace_cream
- Owner: zhaofeng-shu33
- License: other
- Created: 2018-06-20T02:54:39.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-04-26T03:47:25.000Z (over 5 years ago)
- Last Synced: 2024-09-27T09:22:06.079Z (4 months ago)
- Language: Python
- Size: 94.7 KB
- Stars: 6
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Alternating Conditional Expectation Algorithm
[![Build Status](https://travis-ci.org/zhaofeng-shu33/ace_cream.svg?branch=master)](https://travis-ci.org/zhaofeng-shu33/ace_cream)
[![PyPI](https://img.shields.io/pypi/v/ace_cream.svg)](https://pypi.org/project/ace_cream)
[![Windows](https://ci.appveyor.com/api/projects/status/github/zhaofeng-shu33/ace_cream?branch=master&svg=true)](https://ci.appveyor.com/project/zhaofeng-shu33/ace-cream)This project provides a wrapper program of Python for ACE algorithm implementation of Fortran.
## Install Binary Distribution
Currently, only 64-bit binary distribution is provided.
Run `pip install ace_cream` to install the binary distribution.| Platform | py3.6 | py3.7 | py2.7 |
| -------- | :---: | :---: | :---: |
| Windows | T | T | T |
| MacOS | | T | T |
| Linux | T | T | T |## How to build
You need `numpy` and fortran compiler to build from source.### Windows
* Install [Visual C++](https://blogs.msdn.microsoft.com/vcblog/2017/03/07/msvc-the-best-choice-for-windows/) toolchain.
* Download MinGW-w64 from [sourceforge](https://sourceforge.net/projects/mingw-w64/files/latest/download?source=typ_redirect), which provides the necessary fortran compiler
* Install MinGW-w64 and add `{install_dir}\mingw64\bin` path to environment variable (make `gfortran` accessible from command line).
* (for conda environment) Add `{install_dir}\Anaconda3\Scripts` to environment variable (make `f2py` accessible from command line).
### Mac
You can use package manager to install `gfortran` (included within gnu compiler collection). For example, with `Homebrew` you can use
```shell
brew install gcc
```### Ubuntu
To install `gfortran`, use the default package manager:
```shell
sudo apt-get install gfortran
```Run `python setup.py install` from command line at the project root directory.
## How to use
```Python
import numpy as np
from ace_cream import ace_cream
# discrete case, binary symmetric channel with crossover probability 0.1
x = np.random.choice([0,1], size=N_SIZE)
n = np.random.choice([0,1], size=N_SIZE, p=[0.9, 0.1])
y = np.mod(x + n, 2)
# set both x(cat=0) and y(cat=-1) as categorical type
tx, ty = ace_cream(x, y, cat=[-1,0])# continuous case
x = np.random.uniform(0, np.pi, 200)
y = np.exp(np.sin(x)+np.random.normal(size=200)/2)
tx, ty = ace_cream(x, y)
```
## Result
![image](./example/continuous.svg)## change log
1. v0.1 initial commit
1. v0.2 modify to relative import in `__init__.py`
1. v0.3 add support for multiple columns of x and other directions of transformation
1. v0.4 add `f_mapping` function and unittests for this function## License
Apache License Version 2.0## Reference
1. [https://en.wikipedia.org/wiki/Alternating_conditional_expectations](https://en.wikipedia.org/wiki/Alternating_conditional_expectations)