geniml
当处理基因组区间数据(BED 文件)并用于机器学习任务时,应使用此技能。用于训练区域嵌入(Region2Vec、BEDspace)、单细胞 ATAC-seq 分析(scEmbed)、构建共识峰(universes),或任何基于机器学习的基因组区域分析。适用于 BED 文件集合、scATAC-seq 数据、染色质可及性数据集,以及基于区域的基因组特征学习。
分类
开发工具安装
下载并解压到你的 skills 目录
复制命令,发送给智能体自动安装:
Geniml: Genomic Interval Machine Learning
Overview
Geniml is a Python package for building machine learning models on genomic interval data from BED files. It provides unsupervised methods for learning embeddings of genomic regions, single cells, and metadata labels, enabling similarity searches, clustering, and downstream ML tasks.
Installation
Install geniml using uv:
uv pip install genimlFor ML dependencies (PyTorch, etc.):
uv pip install 'geniml[ml]'Development version from GitHub:
uv pip install git+https://github.com/databio/geniml.gitCore Capabilities
Geniml provides five primary capabilities, each detailed in dedicated reference files:
1. Region2Vec: Genomic Region Embeddings
Train unsupervised embeddings of genomic regions using word2vec-style learning.
Use for: Dimensionality reduction of BED files, region similarity analysis, feature vectors for downstream ML.
Workflow:
Reference: See references/region2vec.md for detailed workflow, parameters, and examples.
2. BEDspace: Joint Region and Metadata Embeddings
Train shared embeddings for region sets and metadata labels using StarSpace.
Use for: Metadata-aware searches, cross-modal queries (region→label or label→region), joint analysis of genomic content and experimental conditions.
Workflow:
Reference: See references/bedspace.md for detailed workflow, search types, and examples.
3. scEmbed: Single-Cell Chromatin Accessibility Embeddings
Train Region2Vec models on single-cell ATAC-seq data for cell-level embeddings.
Use for: scATAC-seq clustering, cell-type annotation, dimensionality reduction of single cells, integration with scanpy workflows.
Workflow:
Reference: See references/scembed.md for detailed workflow, parameters, and examples.
4. Consensus Peaks: Universe Building
Build reference peak sets (universes) from BED file collections using multiple statistical methods.
Use for: Creating tokenization references, standardizing regions across datasets, defining consensus features with statistical rigor.
Workflow:
Methods:
Reference: See references/consensus_peaks.md for method comparison, parameters, and examples.
5. Utilities: Supporting Tools
Additional tools for caching, randomization, evaluation, and search.
Available utilities:
Reference: See references/utilities.md for detailed usage of each utility.
Common Workflows
Basic Region Embedding Pipeline
from geniml.tokenization import hard_tokenization
from geniml.region2vec import region2vec
from geniml.evaluation import evaluate_embeddings
# Step 1: Tokenize BED files
hard_tokenization(
src_folder='bed_files/',
dst_folder='tokens/',
universe_file='universe.bed',
p_value_threshold=1e-9
)
# Step 2: Train Region2Vec
region2vec(
token_folder='tokens/',
save_dir='model/',
num_shufflings=1000,
embedding_dim=100
)
# Step 3: Evaluate
metrics = evaluate_embeddings(
embeddings_file='model/embeddings.npy',
labels_file='metadata.csv'
)scATAC-seq Analysis Pipeline
import scanpy as sc
from geniml.scembed import ScEmbed
from geniml.io import tokenize_cells
# Step 1: Load data
adata = sc.read_h5ad('scatac_data.h5ad')
# Step 2: Tokenize cells
tokenize_cells(
adata='scatac_data.h5ad',
universe_file='universe.bed',
output='tokens.parquet'
)
# Step 3: Train scEmbed
model = ScEmbed(embedding_dim=100)
model.train(dataset='tokens.parquet', epochs=100)
# Step 4: Generate embeddings
embeddings = model.encode(adata)
adata.obsm['scembed_X'] = embeddings
# Step 5: Cluster with scanpy
sc.pp.neighbors(adata, use_rep='scembed_X')
sc.tl.leiden(adata)
sc.tl.umap(adata)Universe Building and Evaluation
# Generate coverage
cat bed_files/*.bed > combined.bed
uniwig -m 25 combined.bed chrom.sizes coverage/
# Build universe with coverage cutoff
geniml universe build cc \
--coverage-folder coverage/ \
--output-file universe.bed \
--cutoff 5 \
--merge 100 \
--filter-size 50
# Evaluate universe quality
geniml universe evaluate \
--universe universe.bed \
--coverage-folder coverage/ \
--bed-folder bed_files/CLI Reference
Geniml provides command-line interfaces for major operations:
# Region2Vec training
geniml region2vec --token-folder tokens/ --save-dir model/ --num-shuffle 1000
# BEDspace preprocessing
geniml bedspace preprocess --input regions/ --metadata labels.csv --universe universe.bed
# BEDspace training
geniml bedspace train --input preprocessed.txt --output model/ --dim 100
# BEDspace search
geniml bedspace search -t r2l -d distances.pkl -q query.bed -n 10
# Universe building
geniml universe build cc --coverage-folder coverage/ --output universe.bed --cutoff 5
# BEDshift randomization
geniml bedshift --input peaks.bed --genome hg38 --preserve-chrom --iterations 100When to Use Which Tool
Use Region2Vec when:
Use BEDspace when:
Use scEmbed when:
Use Universe Building when:
Use Utilities when:
Best Practices
General Guidelines
Performance Considerations
Integration Patterns
adata.obsm entriesRelated Projects
Geniml is part of the BEDbase ecosystem:
Additional Resources
Troubleshooting
"Tokenization coverage too low":
"Training not converging":
"Out of memory errors":
"StarSpace not found" (BEDspace):
--path-to-starspace parameter correctlyFor detailed troubleshooting and method-specific issues, consult the appropriate reference file.