fastHDMI - Fast High-Dimensional Mutual Information Estimation
Kai Yang
Contact: <kai.yang2 "at" mail.mcgill.ca>
GPG Public Key Fingerprint: B9F863A56220DBD56B91C3E835022A1A5941D810
Fast mutual information estimation for high-dimensional data. See the paper: fastHDMI: Fast Mutual Information Estimation for High-Dimensional Data.
Installation
pip install fastHDMI
Usage
Basic MI Estimation
import fastHDMI
import numpy as np
# Generate sample data
x = np.random.randn(1000)
y = x + 0.5 * np.random.randn(1000)
# Estimate MI between continuous variables
mi = fastHDMI.MI_continuous_continuous(x, y, bw_multiplier=1.0)
print(f"MI: {mi}")
# MI between binary and continuous
binary_y = (y > 0).astype(int)
mi_binary = fastHDMI.MI_binary_continuous(binary_y, x, bw_multiplier=1.0)
Feature Screening
# Screen features against continuous outcome
X = np.random.randn(100, 50) # 100 samples, 50 features
y = X[:, 0] + 0.5 * X[:, 1] + np.random.randn(100) * 0.1
# Single-threaded screening
mi_scores = fastHDMI.continuous_screening_array(X, y)
# Parallel screening (faster for many features)
mi_scores_parallel = fastHDMI.continuous_screening_array_parallel(X, y, core_num=4)
# Find top features
top_features = np.argsort(mi_scores)[-10:]
print(f"Top 10 features: {top_features}")
CSV File Screening
# Screen features from CSV file (outcome in first column)
mi_scores = fastHDMI.continuous_screening_csv_parallel(
"data.csv",
core_num=4
)
# Using sklearn MI estimation
mi_scores_sk = fastHDMI.continuous_skMI_screening_csv_parallel(
"data.csv",
n_neighbors=3,
core_num=4
)
# Pearson correlation screening
correlations = fastHDMI.Pearson_screening_csv_parallel(
"data.csv",
core_num=4
)
DataFrame Screening
import pandas as pd
# Create DataFrame with outcome as first column
df = pd.DataFrame(X, columns=[f'feature_{i}' for i in range(50)])
df.insert(0, 'outcome', y)
# Screen using DataFrame
mi_scores = fastHDMI.continuous_screening_dataframe(df)
Package Information
ABIDE Data Analysis
- Data: (pre-processed) ABIDE data
- Notebook: /paper/ABIDE_data_analysis/ABIDE_analysis.ipynb - generates scripts for fastHDMI analysis
- Execution: Run scripts on server (e.g., Compute Canada), then rerun notebook with results (.npy files) to generate plots
Computational Resources
- Resource logs:
seff-[jobID].outfiles show job resource usage - Compute Canada docs: docs.alliancecan.ca/wiki/Running_jobs
Metadata
Release files for fastHDMI 1.25.26
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fasthdmi-1.25.26.tar.gz | 239.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fasthdmi-1.25.26-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
Total release size: 584.9 kB
Release files / fasthdmi-1.25.26.tar.gz
| Download URL | fasthdmi-1.25.26.tar.gz |
|---|---|
| Size | 239.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c6f3afbc1e3b1ac8e87e1a9f4afef2c11d73bde3e97f68ac55ccf399713562b5
|
|
BLAKE2b-256 checksum How to use checksums |
46fe655cdc69ae67f499dc385f9439f49841ad7a09634707bce8b11f86c5c33a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Release files / fasthdmi-1.25.26-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | fasthdmi-1.25.26-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 345.7 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ea0dd52ea0da614cb6835e49138fd6a56e145e85cb87d6d40fc35a2a2fd21adf
|
|
BLAKE2b-256 checksum How to use checksums |
46ef302f962afb4e6afbb14c06f86a5a165df91886127e29786b8e2484cd996f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|