Alternating Conditional Expectation Algorithm
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++ toolchain.
-
Download MinGW-w64 from sourceforge, which provides the necessary fortran compiler
-
Install MinGW-w64 and add
{install_dir}\mingw64\bin
path to environment variable (makegfortran
accessible from command line).- (for conda environment) Add
{install_dir}\Anaconda3\Scripts
to environment variable (makef2py
accessible from command line).
- (for conda environment) Add
Mac
You can use package manager to install gfortran
(included within gnu compiler collection). For example, with Homebrew
you can use
brew install gcc
Ubuntu
To install gfortran
, use the default package manager:
sudo apt-get install gfortran
Run python setup.py install
from command line at the project root directory.
How to use
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
change log
- v0.1 initial commit
- v0.2 modify to relative import in
__init__.py
- v0.3 add support for multiple columns of x and other directions of transformation
- v0.4 add
f_mapping
function and unittests for this function
License
Apache License Version 2.0