JanusX
CLI Guide | Core API Guide | v2.0.0 Release
Overview
JanusX (Joint Association and Novel Utility for Selection) is a GWAS and genomic selection toolkit that combines:
- Rust-accelerated kernels (PyO3 extension)
- Python analysis modules
- A Rust launcher (
jx) for runtime/toolchain management and pipeline orchestration
_ __ __
| | \ \ / /
| | __ _ _ __ _ _ ___ \ V /
_ | |/ _` | '_ \| | | / __| > <
| |__| | (_| | | | | |_| \__ \/ . \
\____/ \__,_|_| |_|\__,_|___/_/ \_\ Tools for GWAS and GS
---------------------------------------------------------
Main capabilities:
- Genome-Wide Association Study (GWAS):
lm,lmm,lmm2,fvlmm, SparseLMM (splmm/splmm-exact),farmcpu, and cis/trans pair scans (ct) - Genomic Selection (GS):
BLUP,BayesA/B/C/R, PLS/KRR, and ML models (RF/ET/GBDT/XGB/SVM/ENET) - Streaming genotype IO for VCF/HMP/PLINK BED and PLINK 2 PGEN
- Post-analysis workflows:
postgwas,postgs - Utility workflows:
grm,pca,gformat,gmerge,fastpop(including FST and XP-CLR)
Installation
Quick installation: Python with uv (recommend)
- Linux | MacOS
curl -fsSL https://raw.githubusercontent.com/FJingxian/JanusX/main/scripts/install.sh | sh
- Windows
powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/FJingxian/JanusX/main/scripts/install.ps1 | iex"
Option A: Python package install
pip install janusx==2.0.0
Option B: Conda / Bioconda
conda create -n janusx \
--channel conda-forge \
--channel bioconda \
janusx
Quick start
1) GWAS
# Estimate variance for every SNP.
jx gwas -vcf example/mouse_hs1940.vcf.gz -p example/mouse_hs1940.pheno -lmm -o test/
# Exact LMM with Wald and likelihood-ratio results.
jx gwas -vcf example/mouse_hs1940.vcf.gz -p example/mouse_hs1940.pheno -lmm2 -o test/
# Estimate variance once in NULL model, similar with EMMAX. (fast, recommend)
jx gwas -vcf example/mouse_hs1940.vcf.gz -p example/mouse_hs1940.pheno -fvlmm -o test/
# SparseLMM with sparse REML null and approximate GRAMMAR-gamma scan.
jx gwas -vcf example/mouse_hs1940.vcf.gz -p example/mouse_hs1940.pheno -splmm -o test/
# SparseLMM with the exact sparse-Cholesky g'Pg scan denominator.
jx gwas -vcf example/mouse_hs1940.vcf.gz -p example/mouse_hs1940.pheno -splmm-exact -o test/
# FarmCPU.
jx gwas -vcf example/mouse_hs1940.vcf.gz -p example/mouse_hs1940.pheno -farmcpu -o test/
For PLINK 2 PGEN input, use -pfile <prefix>; -bfile <prefix> reads PLINK BED files.
2) Post-GWAS
jx postgwas -i test/mouse_hs1940.test0.lmm.tsv -manh -qq -thr 1e-6 -o testpost/
jx postgwas -i test/mouse_hs1940.test0.lmm.tsv test/mouse_hs1940.test1.lmm.tsv -manh-merge -qq-merge -fontsize 11 -fontstyle arial -o testpost/
jx postgwas -i test/mouse_hs1940.test0.lmm.tsv test/mouse_hs1940.test1.lmm.tsv test/mouse_hs1940.test2.lmm.tsv -manh-merge -qq-merge -scatter-size 4 10 -alpha 0.2 0.5 -ylim 2 10 -o testpost/
3) Genomic selection
# BLUP method, prepared for biobank cohorts
# n≤15,000 GBLUP
# n>15,000 & m≤15,000 rrBLUP
# n>15,000 & m>15,000 rrBLUP with PCG (Jacobi)
jx gs -vcf example/mouse_hs1940.vcf.gz -p example/mouse_hs1940.pheno -BLUP -o test/ -cv 5
# Bayesian methods (BayesR in JanusX-2.0.0 uses pi=(0.95,0.03,0.01,0.01), gamma=(0,0.01,0.1,1))
jx gs -vcf example/mouse_hs1940.vcf.gz -p example/mouse_hs1940.pheno -BayesA -BayesB -BayesC -BayesR -o test/ -cv 5
# BayesB fixes pi at 0.05 by default; append a value to override it. BayesC
# estimates pi unless a value is supplied:
# jx gs ... -BayesB 0.05 -BayesC 0.10
* Genomic Selection for trait: test0
Train size: 1410, Test size: 530, EffSNPs: 8960
** BLUP
✔︎ Cross-validation ...Finished [0.8s]
✔︎ Fitting ...Finished [0.3s]
✔︎ Predicting ...Finished [0.0s]
** BayesA
✔︎ Cross-validation ...Finished [17.9s]
✔︎ Fitting ...Finished [4.1s]
✔︎ Predicting ...Finished [0.0s]
...
------------------------------------------------------------
Fold Method Pearsonr Spearmanr R2 time(s) Best
1 BLUP 0.704 0.675 0.493 0.198
1 BayesA 0.709 0.680 0.493 3.507
...
------------------------------------------------------------
4) Get module help
jx -h
jx <module> -h
See full usages in CLI Guide.
Module map
Genome-wide Association Studies (GWAS):
grmpcagwasct(cis/trans pair scans)postgwas(Visualization,manhqqldblock)fastpop(population structure, FST, and XP-CLR)
Attribution note:
- FastPop is JanusX's own population-structure workflow and public name for this module.
- Historical JanusX releases referenced ADAMIXTURE as a related implementation; the BSD-3-Clause attribution notice is recorded in THIRD_PARTY_NOTICES.md.
Genomic Selection (GS):
gspostgs(Visualization)
Epistasis:
garfield(Based on https://github.com/heroalone/Garfield)
Utility:
gformat(Conversion between genotype data formats, support fast splicing/filtering/prune)gmerge(Merge genotype between samples)gstats(State freq/het/missing/ldscore of genotype)
Citation
@article{FuJanusX,
author = {Fu, Jingxian and Jia, Anqiang and Wang, Haiyang and Liu, Hai-Jun},
title = {JanusX: an integrated and high-performance platform for scalable genome-wide association studies and genomic selection},
journal = {The Plant Journal},
volume = {127},
number = {5},
pages = {e71105},
doi = {https://doi.org/10.1111/tpj.71105},
url = {https://onlinelibrary.wiley.com/doi/abs/10.1111/tpj.71105},
year = {2026}
}
License
This project is licensed under GNU Affero General Public License v3.0 (AGPL-3.0-or-later). See LICENSE.
Metadata
Release files for janusx 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| janusx-2.0.0.tar.gz | 6.1 MB | Without provenance | Details for janusx-2.0.0.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| janusx-2.0.0-cp310-abi3-win_arm64.whl | CPython 3.10 | abi3 | Windows ARM64 | Details for janusx-2.0.0-cp310-abi3-win_arm64.whl |
| janusx-2.0.0-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details for janusx-2.0.0-cp310-abi3-win_amd64.whl |
| janusx-2.0.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details for janusx-2.0.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
| janusx-2.0.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ ARM64 | Details for janusx-2.0.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
| janusx-2.0.0-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details for janusx-2.0.0-cp310-abi3-macosx_11_0_arm64.whl |
Total release size: 113.2 MB
Release files / janusx-2.0.0.tar.gz
| Download URL | janusx-2.0.0.tar.gz |
|---|---|
| Size | 6.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f9fa4c6a710a2189c2023078a9599c8d54412c911324b91297155879a3c0f250
|
|
BLAKE2b-256 checksum How to use checksums |
86b69a77734c0d624052d0d917af128fc61eefd8bd1e15af63bc357d5e35924b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.9.4
|
Release files / janusx-2.0.0-cp310-abi3-win_arm64.whl
| Download URL | janusx-2.0.0-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 10.6 MB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
3ede55258d7b9c5008373d871dc02ef0dc09ca9f3330327b92a0d95550b585bc
|
|
BLAKE2b-256 checksum How to use checksums |
decbeb1145cd1218b88945634f42aecb837153166a4148f10615eff4edaf29ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.9.4
|
Release files / janusx-2.0.0-cp310-abi3-win_amd64.whl
| Download URL | janusx-2.0.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 20.0 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
e604a4412f98bc87c9a4dbfcaa385e69ea569efb57359f8f4c57491df18b15dc
|
|
BLAKE2b-256 checksum How to use checksums |
cf1dafe78d9a8fe219c118ffe78367b93fdc8c137f1a0628531cf2cf21ab041a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.9.4
|
Release files / janusx-2.0.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | janusx-2.0.0-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 28.2 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
df9c5f9519ec817cede7f8d2e58f9679dc57049eca2543e0455f0587d41514e6
|
|
BLAKE2b-256 checksum How to use checksums |
8e173ae4204f045ff2fb1307440e509b79a8026c8049967f5e091ec4c92b6111
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.9.4
|
Release files / janusx-2.0.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
| Download URL | janusx-2.0.0-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
|---|---|
| Size | 21.3 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
3fcdc91a4a5b921bf84bdaf2feb5ec08acc4f2636998d69fa2ab99197a4be373
|
|
BLAKE2b-256 checksum How to use checksums |
4f3c1105f16b983e0906895b290af2e50084b82fb1439568d7485fb26024d9c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.9.4
|
Release files / janusx-2.0.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | janusx-2.0.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 27.0 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5cdce3193e089733e9ff7ba47683f2ac172cf4ceb4414b62cda05538c2ad1ca2
|
|
BLAKE2b-256 checksum How to use checksums |
7bd55793976e63fb2f5a4d2b8db88aab2853c75f57b72adfb632dc131d232566
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.9.4
|
Security for janusx 2.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.