HDIM
HDIM is a toolkit for working with high-dimensional data that emphasizes speed and statistical guarantees. Specifically, it provides tools for working with the LASSO objective function.
HDIM provides traditional iterative solvers for the LASSO objective function including ISTA, FISTA and Coordinate Descent. HDIM also provides FOS, the Fast and Optimal Selection algorithm, a novel new method for performing high-dimensional linear regression.
HDIM is a product of the research conducted by Lederer and Hauser HDIM Group in affiliation with the University of Washington.
Supported Languages
The HDIM package is written in C++, and can be used in native form or via the supplied Python or R language wrappers.
Supported Platforms
HDIM currently supports the following operating systems and languages.
Operating System | Supported Languages |
---|---|
Windows | C++, R |
OS X | C++, Python |
Linux | C++, R, Python |
Installation
Native C++
HDIM's native code base is cross-platform and header-only.
There is no installation step -- just clone the git repository and #include
the appropriate source files in your C++ projects. Just be sure to link against the
appropriate dependencies, as outlined in the Dependencies section below.
Dependencies
HDIM's native code base depends on the following libraries.
These libraries will need to be installed in order to use the native C++ or any of the wrappers.
Wrappers
Using the Python or R wrapper requires additional dependencies and build steps compared to using the native code base. Currently both wrappers require building from source -- in the future we hope to provide users with more convenient installation options.
Linux
Python
Dependencies
- SWIG The Simplified Wrapper and Interface Generator
- Python Development Headers
- Numpy, including Development Headers
- Eigen 3 A C++ template library for linear algebra
Building
- Clone the HDIM package into a convenient location.
- Navigate to $PKG_DIR/Python_Wrapper, where PKG_DIR is the root directory of the cloned repository.
- Find the file
nix_build.sh
and mark it as executable (chmod +x ./nix_build.sh
). - This will run SWIG and build the Python wrapper.
- The Python package path will not be updated.
R
Dependencies
Building
- Clone the HDIM package into a convenient location.
- Navigate to $PKG_DIR/R_Wrapper, where PKG_DIR is the root directory of the cloned repository.
- Find the file
nix_build.sh
and mark it as executable (chmod +x ./nix_build.sh
). - This will run a preprocessing step using Rcpp then build and install the R Wrapper.
OS X
Python
Dependencies
- SWIG The Simplified Wrapper and Interface Generator
- Python Development Headers
- Numpy, including Development Headers
- Eigen 3 A C++ template library for linear algebra
- gcc -- installation will not work with the default C++ complier, clang
Building
- Clone the HDIM package into a convenient location.
- Navigate to $PKG_DIR/Python_Wrapper, where PKG_DIR is the root directory of the cloned repository.
- Find the file
os_x_build.sh
and mark it as executable (chmod +x ./os_x_build.sh
). - This will run SWIG and build the Python wrapper.
- The Python package path will not be updated.
Windows
Installation under Windows requires that the root directory of the Eigen3 library be located in the same directory as the root of the HDIM package.
R
Dependencies
Building
- Clone the HDIM package into the directory where the Eigen3 library is located.
- Navigate to $PKG_DIR/R_Wrapper, where PKG_DIR is the root directory of the cloned repository.
- Find the file
win_build.ps1
and run it using PowerShell. - This will run a preprocessing step using Rcpp then build and install the R Wrapper.
Licensing
The HDIM package is licensed under the MIT license with one notable exception --
the R language wrapper on all platforms is licensed under the GPL version 3. To
view the MIT license please consult LICENSE.txt
and for the the GPLv3 see
/R_Wrapper/HDIM/LICENSE.
Authors
- Benjamin J Phillips - Work on native C++, R wrapper, and Python wrapper
- Saba Noorassa - Work on adding Mac OS compatibility