/mnt/smb/notebooktian/RNASeq/260429AGING ### References * MAJIQ [RNA splicing analysis using heterogeneous and large RNA-seq datasets - nature communications](https://www.nature.com/articles/s41467-023-36585-y) * MAJIQ -> cryptic 3'splice site * A3SS 图B, 有拖尾感的sashimi [Cancer-Associated SF3B1 Hotspot Mutations Induce Cryptic 3′ Splice Site Selection through Use of a Different Branch Point](https://www.cell.com/cell-reports/fulltext/S2211-1247(15)01078-5) ### MAJIQ https://bitbucket.org/biociphers/majiq_academic/src/main/ https://biociphers.bitbucket.io/majiq-docs/ ```dockerfile FROM python:3.12-slim-bookworm ENV DEBIAN_FRONTEND=noninteractive # 1. 安装系统依赖(已增加 libzstd-dev) RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ git \ libhts-dev \ libbz2-dev \ zlib1g-dev \ liblzma-dev \ libzstd-dev \ && rm -rf /var/lib/apt/lists/* ENV HTSLIB_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu ENV HTSLIB_INCLUDE_DIR=/usr/include # 2. 拆分指令以利用缓存 (存档点:下载源码) WORKDIR /tmp RUN git clone https://bitbucket.org/biociphers/majiq_academic.git # 3. 存档点:安装 Voila WORKDIR /tmp/majiq_academic RUN pip install --no-cache-dir ./moccasin RUN pip install --no-cache-dir ./voila # 4. 存档点:安装 MAJIQ RUN pip install --no-cache-dir ./majiq WORKDIR / RUN rm -rf /tmp/majiq_academic RUN majiq --help && voila --version CMD ["/bin/bash"] ``` #### License * 放入 ~/majiq_license_academic_official.lic ```majiq_license_academic_official.lic gAAAAABlW6-jYooOgeYvzqoEZ9Z6jMLcFAfydEzRxJWwJ7bl9z71xmQCS343USkuLpu88lpTwTOGiGqpJ0uMZV36nto1SCRmdP_LWSugZyS7-E1wDVOzyV8kQcUHzNtPQVMVaLUQXmpYGfXGHEVo-XUPVG3v3waurw== ``` ### Steps v3 ```bash alias majiq='docker run --rm -e MAJIQ_LICENSE_FILE=/data/majiq_license_academic_official.lic -v "$(pwd)/datamj:/data" -w /data majiq_image majiq' alias voila='docker run --rm -e MAJIQ_LICENSE_FILE=/data/majiq_license_academic_official.lic -v "$(pwd)/datamj:/data" -p 5000:5000 -w /data majiq_image voila' alias majiq3='docker run --rm -e MAJIQ_LICENSE_FILE=/data/majiq_license_academic_official.lic -v "$(pwd)/datamj:/data" -w /data majiq_image majiq-v3' PATH_GFF3="/data/mm39_115.gff3" PATH_BAMS="/data/bams" PATH_ANNO_SG="/data/mj/anno_sg.zarr" PATH_SJ="/data/mj/sjs" PATH_SG_ZAAR="/data/mj/sg.zarr" PATH_PSICOV="/data/mj/psi" PATH_SGC="/data/mj/sgc" PATH_VOILA="/data/mj/voila" majiq3 gff3 $PATH_GFF3 $PATH_ANNO_SG majiq3 sj $PATH_BAMS/OLDSED_1.bam $PATH_ANNO_SG $PATH_SJ/OLDSED_1.sj majiq3 sj $PATH_BAMS/OLDSED_2.bam $PATH_ANNO_SG $PATH_SJ/OLDSED_2.sj majiq3 sj $PATH_BAMS/OLDSED_3.bam $PATH_ANNO_SG $PATH_SJ/OLDSED_3.sj majiq3 sj $PATH_BAMS/YNGSED_1.bam $PATH_ANNO_SG $PATH_SJ/YNGSED_1.sj majiq3 sj $PATH_BAMS/YNGSED_2.bam $PATH_ANNO_SG $PATH_SJ/YNGSED_2.sj majiq3 sj $PATH_BAMS/YNGSED_3.bam $PATH_ANNO_SG $PATH_SJ/YNGSED_3.sj majiq3 build $PATH_ANNO_SG $PATH_SG_ZAAR --sjs $PATH_SJ/OLDSED_1.sj $PATH_SJ/OLDSED_2.sj $PATH_SJ/OLDSED_3.sj --sjs $PATH_SJ/YNGSED_1.sj $PATH_SJ/YNGSED_2.sj $PATH_SJ/YNGSED_3.sj majiq3 psi-coverage $PATH_SG_ZAAR $PATH_PSICOV/OLDSED.psicov $PATH_SJ/OLDSED_1.sj $PATH_SJ/OLDSED_2.sj $PATH_SJ/OLDSED_3.sj majiq3 psi-coverage $PATH_SG_ZAAR $PATH_PSICOV/YNGSED.psicov $PATH_SJ/YNGSED_1.sj $PATH_SJ/YNGSED_2.sj $PATH_SJ/YNGSED_3.sj majiq3 sg-coverage $PATH_SG_ZAAR $PATH_SGC/OLDSED.sgc $PATH_SJ/OLDSED_1.sj $PATH_SJ/OLDSED_2.sj $PATH_SJ/OLDSED_3.sj majiq3 sg-coverage $PATH_SG_ZAAR $PATH_SGC/YNGSED.sgc $PATH_SJ/YNGSED_1.sj $PATH_SJ/YNGSED_2.sj $PATH_SJ/YNGSED_3.sj majiq3 deltapsi --splicegraph $PATH_SG_ZAAR --output-voila $PATH_PSICOV/OLDSED_v_YNGSED.psicov --output-tsv $PATH_PSICOV/OLDSED_v_YNGSED.tsv -psi1 $PATH_PSICOV/OLDSED.psicov -psi2 $PATH_PSICOV/YNGSED.psicov majiq3 quantify $PATH_PSICOV/OLDSED.psicov --min-experiments 0.01 --splicegraph $PATH_SG_ZAAR --output-tsv $PATH_PSICOV/OLDSED.tsv --overwrite majiq3 quantify $PATH_PSICOV/YNGSED.psicov --min-experiments 0.01 --splicegraph $PATH_SG_ZAAR --output-tsv $PATH_PSICOV/YNGSED.tsv --overwrite majiq3 heterogen --stats infoscore mannwhitneyu ttest tnom --splicegraph $PATH_SG_ZAAR --output-voila $PATH_VOILA/OLDSED_v_YNGSED.voila --output-tsv $PATH_PSICOV/OLDSED_v_YNGSED.tsv -psi1 $PATH_PSICOV/OLDSED.psicov -psi2 $PATH_PSICOV/YNGSED.psicov voila view --host 0.0.0.0 --port 5000 --enable-type-indexing --psicov-grouping-file /data/majiq.tsv $PATH_SG_ZAAR $PATH_VOILA/OLDSED_v_YNGSED.voila $PATH_SGC/ ``` ### Steps v2 ```bash majiq build /data/mm39_115.gff3 -c /data/majiq.config -o /data/build_output majiq psi-coverage \ /data/build_output/splicegraph.zarr \ /data/psi_coverage_output \ /data/build_output/YNGSED_1.sj /data/build_output/YNGSED_2.sj /data/build_output/YNGSED_3.sj \ /data/build_output/OLDSED_1.sj /data/build_output/OLDSED_2.sj /data/build_output/OLDSED_3.sj \ --nthreads 8 majiq deltapsi \ -grp1 /data/psi_coverage_output \ -grp2 /data/psi_coverage_output \ --select-grp1-prefixes YNGSED_1 YNGSED_2 YNGSED_3 \ --select-grp2-prefixes OLDSED_1 OLDSED_2 OLDSED_3 \ --names YNGSED OLDSED \ --splicegraph /data/build_output/splicegraph.zarr \ --output-voila /data/deltapsi_output/YNGSED_vs_OLDSED.voila \ --output-tsv /data/deltapsi_output/YNGSED_vs_OLDSED.tsv \ --nthreads 8 majiq sg-coverage /data/build_output/splicegraph.zarr /sgc/YNGSED.sgc /data/build_output/YNGSED_1.sj /data/build_output/YNGSED_2.sj /data/build_output/YNGSED_3.sj voila view /data/build_output/ --host 0.0.0.0 --port 5000 --enable-type-indexing --psicov-grouping-file /data/majiq.tsv ```