Metadata-Version: 2.1
Name: sparseSEM
Version: 2.0
Summary: Python wrapper for sparseSEM
Home-page: https://scholar.google.com/citations?user=WhDMZEIAAAAJ&hl=en
Author: Anhui Huang
Author-email: anhuihuang@gmail.com
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: numpy (>=1.9.2)
Requires-Dist: networkx
Requires-Dist: matplotlib

# Elastic Net for Structural Equation Models (SEM)

Anhui Huang | Ph.D. Electrical and Computer Engineering 

<https://scholar.google.com/citations?user=WhDMZEIAAAAJ&hl=en>

## Summary
Provides elastic net penalized maximum likelihood for structural equation models (SEM).   The package implements 
`lasso` and `elastic net` (l1/l2) penalized SEM and 
estimates the model parameters with an efficient block coordinate ascent algorithm that maximizes the penalized 
likelihood of the SEM.  Hyperparameters are inferred from cross-validation (CV).  A Stability Selection (STS) function 
is also available to provide accurate causal effect selection. 

The experimental study and vignettes are also available in the `doc/` folder in the package.  

## PyPI installation 
`sparseSEM` is available on PyPI:  https://pypi.org/project/sparseSEM/. Run command `pip install sparseSEM` to install 
from PyPI.

`test/` folder contains examples using data packed along with this package in `data/` folder. 
To run `test/` examples, clone this repo, and run from `test/` directory. 


### Configuration
This package was originally developed to leverage high performance computer clusters to enable parallel computation 
through openMPI.  Users who have access to large scale computational resources can explore the functionality and 
checkout the openMPI module in this package.

Current package utilizes blas/lapack for high speed computation. To build the C/C++ code, the intel OneMKL library is 
specified in the package setup. 
- Install the free OneMKL package (https://www.intel.com/content/www/us/en/docs/oneapi/programming-guide/2023-0/intel-oneapi-math-kernel-library-onemkl.html)
- Check if your package is the same as in the setup.py file ('/opt/intel/oneapi/mkl/2023.1.0/include'). Update the file 
accordingly if it was installed in a different path.

### Release Note
- V2.0: add more output information include CV results, hyperparameter, and details of model fit. V2.0 is a major release with stability selection added.
- V1: initial release with corresponding to R package v2.


## Package for other platforms
### R package
An R package for `sparseSEM` is also available at CRAN: https://cran.r-project.org/web/packages/sparseSEM/index.html

### OpenMPI
C/C++ implementation of sparseSEM with openMPI for parallel computation is available in openMPI branch (https://github.com/anhuihng/pySparseSEM/tree/openMPI). 

    
## Reference
    - Huang A. (2014) Sparse Model Learning for Inferring Genotype and Phenotype Associations. Ph.D Dissertation,
    University of Miami, Coral Gables, FL, USA.
    - Huang A. (2014) sparseSEM: Sparse-Aware Maximum Likelihood for Structural Equation Models. Rpackage
    (https://cran.r-project.org/web/packages/sparseSEM/index.html)
