
Research
PyPI Package Disguised as Instagram Growth Tool Harvests User Credentials
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
Genomics research toolkit for jointly embedding Hi-C 3D chromatin contact matrices into the same vector space
Welcome to jointly-hic
, a Python tool for jointly embedding Hi-C 3D chromatin contact matrices into the same vector space.
This toolkit is designed to help you analyze multi-sample Hi-C datasets efficiently and integrate epigenetic data (ATAC-seq, RNA-seq, ChIP-seq) effectively.
The three-dimensional organization of the genome plays a critical role in regulating gene expression and establishing cell identity. Hi-C and related chromosome conformation capture technologies have enabled genome-wide profiling of chromatin contacts, revealing compartmental domains and long-range interactions that orchestrate regulatory programs across development and disease. However, as the scale and diversity of Hi-C datasets grow—from tissue atlases to time courses and in vitro differentiation models—there remains a lack of computational tools that can integrate dozens to hundreds of Hi-C experiments into a unified analytical space while preserving biological signal and enabling comparative analyses.
Jointly-HiC is a scalable, Python-based toolkit for the joint analysis of Hi-C data across many biosamples. It enables efficient pre-processing, fixed-memory joint decomposition using incremental principal component analysis (PCA), singular value decomposition (SVD), or non-negative matrix factorization (NMF), and downstream clustering and visualization. Designed with scalability and interpretability in mind, jointly-hic extracts low-dimensional embeddings that can be used to identify shared and sample-specific chromatin interaction profiles across conditions, cell types, and developmental stages. By operating in a mini-batched fashion, it avoids the memory constraints of traditional matrix factorization techniques, making it suitable for large-scale studies such as tissue atlases or differentiation trajectories.
In addition to providing core Hi-C analysis workflows, jointly-hic integrates seamlessly with other epigenomic data through the optional JointDb module, a compressed HDF5 database format supporting ChIP-seq, RNA-seq, and ATAC-seq signal tracks at the same resolution. This unified framework enables users to analyze compartmentalization dynamics, correlate chromatin interactions with regulatory activity, and discover structural genome features such as nuclear speckle-associated regions or heterochromatic domains. With jointly-hic, researchers can uncover patterns of 3D genome organization at scale, shedding light on the structural underpinnings of gene regulation and chromatin state transitions across biological contexts.
Jointly-hic
can be installed via pip
or a pre-built docker image is available on GHRC
. It can also be installed from source.
pip install jointly-hic
docker pull ghcr.io/abdenlab/jointly-hic
git clone https://github.com/abdenlab/jointly-hic.git
cd jointly-hic
python3 -m venv venv
source venv/bin/activate
pip install -e '.[dev,notebook]'
You can run jointly
from the command line to embed, post-process, analyze trajectories, or create metadata and databases from Hi-C matrices.
To get help on available subcommands:
jointly -h
.mcool
files, binned and balanced at your planned analysis resolution. (We recommend using: Distiller for alignment, cooler for pre-processing, and hictk for file conversion)cooler balance
.The primary compute module of jointly-hic
is through embed
.
This will take a list of input mcool
files and create a joint decomposition using the provided method, resolution, genome and number of components.
jointly-embed
will run the post-processing and trajectory modules with default parameters, which is good for many use cases.
The output files are vertically stacked tables of bins, embeddings, clustering and UMAP visualizations for all samples, stacked on top of each other.
Some useful plots, logs, and information will be printed and saved.
jointly embed \
--mcools sample1.mcool sample2.mcool \
--resolution 50000 \
--assembly hg38 \
--method PCA \
--components 32
Post-processing is usually performed as part of the embed
pipeline, but can also be run separately if necessary.
jointly post-process \
--parquet-file jointly_embeddings.pq \
--umap-neighbours 30 100 500 \
--kmeans-clusters 5 10 15
Trajectory analysis is usually performed as part of the embed
pipeline, but can also be run separately if necessary.
jointly trajectory \
--parquet-file jointly_embeddings.pq
--kmeans-clusters 5 10 15
Part of jointly-hic
is the JointDb
database module, a powerful way to integrate embeddings from jointly embed
with ChIP-seq, ATAC-seq, RNA-seq or other epigenetic signal tracks.
This requires extensive metadata, and we recommend examining the example notebooks and hdf5db source code for more information.
Creation of a JointDb
database requires 1) Experiment Metadata in YAML format and 2) (Optional) ENCODE track metadata in YAML format.
Use embedding2yaml
to extract experiment metadata from the post processed embeddings.
jointly embedding2yaml \
--parquet-file jointly_embeddings_updated.pq \
--accession-column hic_accession \
--metadata-columns condition stage \ # Assuming these have been added to jointly_embeddings_updated.pq
--yaml-file experiments.yaml
Then use tracks2yaml
to convert a CSV table of ENCODE metadata to YAML format.
jointly tracks2yaml track_meta.csv tracks.yaml
Finally, create the JointDb
.
jointly hdf5db \
--experiments experiments.yaml \
--tracks tracks.yaml \
--embeddings jointly_embedding_embeddings.pq \
--accession sample_id \
--output jointly_output.h5
The output of the jointly-hic
tool includes a set of files that contain the results of the analysis. The files are saved with the prefix specified by the --output
option.
*_post_processed.pq
/ *_post_processed.csv.gz
: Rescaled embeddings, clustering and visualization table. (This is the main output)*_embeddings.pq
and *_embeddings.csv.gz
: Raw Hi-C embeddings.*_model.pkl.gz
: Trained sklearn decomposition model (PCA, NMF or SVD).*_log.txt
: Execution log.*_trajectories.pq
/ *_trajectories.csv.gz
: Trajectory analysis results.*jointly_output.h5
: HDF5 database of all embeddings, metadata, and track info (if using hdf5db
).*_scores.png
, *_scores_clustered.png
, *_scores_filenames.png
*_umap-n##_clustered.png
, *_umap-n##_filenames.png
*_trajectory_umap-n##_kmeans.png
We welcome contributions to this project! If you have suggestions, bug reports, or feature requests, please open an issue or submit a pull request.
git clone https://github.com/abdenlab/jointly-hic.git
cd jointly-hic
pip install -e '.[dev,notebook]'
pre-commit install
ruff check jointly_hic
pytest --cov=jointly_hic --cov-report=term-missing tests
We use GitHub Actions for continuous integration and deployment.
main
, we run tests and linting (python-pytest.yaml
).jointly_hic/__init__.py
, and a GitHub release is created (auto-release.yaml
).This project is licensed under the GNU GPL (version 3). See the LICENSE file for details.
Please cite this work if you use it:
Reimonn, Thomas & Abdennur, Nezar. (2025). abdenlab/jointly-hic: Release v1.0.1 (v1.0.1). Zenodo. https://doi.org/10.5281/zenodo.15198530
Thank you for your interest in jointly-hic
. We hope this tool aids your research and helps you uncover new insights into chromatin organization and 3D genome structure.
FAQs
Genomics research toolkit for jointly embedding Hi-C 3D chromatin contact matrices into the same vector space
We found that jointly-hic demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
Product
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.
Security News
Research
Socket uncovered two npm packages that register hidden HTTP endpoints to delete all files on command.