
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
docker_4dn是基于4dn-dcic/docker-4dn-hic项目构建的Docker镜像(GitHub仓库:https://github.com/rnakato/docker_4dn),专为Hi-C数据分析设计。该镜像集成了Cooler、pairtools、BWA、Samtools等工具,支持从原始fastq文件到最终可视化数据的完整分析流程,适用于基因组三维结构研究。
适用于需要进行Hi-C数据分析的科研人员,可用于:
拉取镜像
bashdocker pull docker.xuanyuan.run/rnakato/4dn
容器登录
bashdocker run [--gpus all] --rm -it rnakato/4dn /bin/bash
注:
--gpus all为可选参数,用于启用GPU加速
运行Jupyter Notebook
bashdocker run [--gpus all] --rm -p 8888:8888 -v (你的目录):/opt/work rnakato/4dn <command>
说明:将本地目录挂载到容器的
/opt/work路径,通过8888端口访问Jupyter Notebook
构建镜像
bashsingularity build rnakato_4dn.sif docker://rnakato/4dn
运行Jupyter Notebook
bashsingularity exec [--nv] rnakato_4dn.sif <command>
注:
--nv为可选参数,用于启用GPU支持
以下流程假设fastq文件存储在fastq/$cell(如fastq/Control_1),输出结果存储在Results4dn/$cell。
1. 读段映射
bashodir=Results4dn/$cell bwa_index=bwa-indexes/UCSC-hg38 # 指定BWA索引路径 fq1s="" fq2s="" for id in $(ls fastq/$cell/*_R1.fastq.gz) do id=${id%%_R1.fastq.gz} fq1s="$fq1s ${id}_R1.fastq.gz" fq2s="$fq2s ${id}_R2.fastq.gz" done mkdir -p $odir/aligned/ $odir/log bwa mem -t 32 -SP5M $bwa_index <(zcat $fq1s) <(zcat $fq2s) | samtools view -Shb - > $odir/aligned/$cell.bam
2. pairtools解析/排序/去重
bashodir=Results4dn/$cell gt=genome_table.txt # 指定基因组表路径 BAM=$odir/aligned/$cell.bam OUTDIR=$odir/pairsam-parse-sort OUTPREFIX=$cell SORTED_PAIRS_PATH=${OUTDIR}/${OUTPREFIX}.sam.pairs.gz PAIRSAM=${OUTDIR}/${OUTPREFIX}.sam.pairs.gz MARKED_PAIRSAM=$OUTDIR/${OUTPREFIX}.marked.sam.pairs.gz sing="singularity exec rnakato_4dn.sif" # Singularity执行命令 mkdir -p $OUTDIR samtools view -h $BAM | { $sing pairtools parse -c $gt --add-columns mapq } | { $sing pairtools sort --nproc 32 \ --tmpdir ${OUTDIR} \ --output ${SORTED_PAIRS_PATH} } $sing pairtools dedup --mark-dups --output-dups - --output-unmapped - --output ${MARKED_PAIRSAM} ${PAIRSAM} $sing pairix ${MARKED_PAIRSAM} # 完整性检查
3. 数据过滤(选择、拆分)
bashodir=Results4dn/$cell OUTDIR=$odir/pairsam-parse-sort OUTPREFIX=$cell sing="singularity exec rnakato_4dn.sif" PAIRSAM=${OUTDIR}/${OUTPREFIX}.sam.pairs.gz UNMAPPED_SAMPAIRS=$OUTDIR/${OUTPREFIX}.unmapped.sam.pairs.gz DEDUP_PAIRS=$OUTDIR/${OUTPREFIX}.dedup.pairs.gz LOSSLESS_BAM=$OUTDIR/${OUTPREFIX}.lossless.bam TEMPFILE=$OUTDIR/temp.gz TEMPFILE1=$OUTDIR/temp1.gz ## 生成无损BAM文件 $sing pairtools split --output-sam ${LOSSLESS_BAM} ${PAIRSAM} # 选择UU、UR、RU类型读段 $sing pairtools select '(pair_type == "UU") or (pair_type == "UR") or (pair_type == "RU")' \ --output-rest ${UNMAPPED_SAMPAIRS} \ --output ${TEMPFILE} \ ${PAIRSAM} $sing pairtools split --output-pairs ${TEMPFILE1} ${TEMPFILE} $sing pairtools select 'True' --chrom-subset $gt -o ${DEDUP_PAIRS} ${TEMPFILE1} $sing pairix ${DEDUP_PAIRS} rm ${TEMPFILE} ${TEMPFILE1} # 清理临时文件
4. QC报告生成
bashodir=Results4dn/$cell OUTDIR=$odir/pairsam-parse-sort OUTPREFIX=$cell input_pairs=${OUTDIR}/${OUTPREFIX}.marked.sam.pairs.gz sample_name=$cell sing="singularity exec rnakato_4dn.sif" scriptdir=/usr/local/bin/pairsqc/ $sing python3 $scriptdir/pairsqc.py -p $input_pairs -c $gt -tP -s $sample_name -O $odir/$sample_name -M $max_distance $sing Rscript $scriptdir/plot.r $enzymelen $odir/$sample_name\_report
5. addfrag2pairs处理
bashodir=Results4dn/$cell sing="singularity exec rnakato_4dn.sif" scriptdir=/usr/local/bin OUTDIR=$odir/pairsam-parse-sort OUTPREFIX=$cell input_pairs=${OUTDIR}/${OUTPREFIX}.marked.sam.pairs.gz gunzip -c $input_pairs \ | $sing $scriptdir/pairix/util/fragment_4dnpairs.pl -a - ${OUTDIR}/${OUTPREFIX}.ff.pairs $restrictionsite $sing bgzip -f ${OUTDIR}/${OUTPREFIX}.ff.pairs $sing pairix -f ${OUTDIR}/${OUTPREFIX}.ff.pairs.gz
bashodir=Results4dn/$cell sing="singularity exec rnakato_4dn.sif" OUTDIR=$odir/coolfile OUTPREFIX=$cell pairs_file=$odir/pairsam-parse-sort/${OUTPREFIX}.ff.pairs.gz out_prefix=${OUTDIR}/${OUTPREFIX} max_split=2 binsizes="5000,10000,25000,50000,100000,500000,1000000,2500000,5000000,10000000" binsize_min=5000 pwd=`pwd` mkdir -p $OUTDIR $sing cooler cload pairix -p $ncore -s $max_split $gt:$binsize_min $pairs_file $out_prefix.cool " >& $odir/log/run-cooler.$binsize_min ### 矩阵平衡 $sing cooler balance -p $ncore $out_prefix.cool $sing run-juicebox-pre.sh -i $pairs_file -c $gt -o $odir/$cell -r $binsize_min -u $binsizes ### 生成多分辨率cooler文件 $sing run-cool2multirescool.sh -i $out_prefix.cool -p $ncore -o $out_prefix -u $binsizes ### 从hic文件向mcool文件添加归一化向量 $sing run-add-hicnormvector-to-mcool.sh $pwd/$odir/$cell.hic $pwd/$out_prefix.multires.cool $pwd/$OUTDIR ### 导出矩阵文件 for binsize in 5000 25000 50000 100000 do cool=$out_prefix.$binsize.cool $sing cooler cload pairix -p $ncore -s $max_split $gt:$binsize $pairs_file $cool ### 矩阵平衡 $sing cooler balance -p $ncore $cool $sing run-cooler-dump.sh $cool $odir $binsize $gt done cp $pwd/$out_prefix.multires.cool $out_prefix.hic2cool.cool $sing hic2cool extract-norms -e $odir/$cell.hic $out_prefix.hic2cool.cool
bashgit clone https://github.com/rnakato/docker_4dn.git cd docker_4dn
bashdocker build -t <account>/4dn .
注:将
<account>替换为你的Docker账户名
Ryuichiro Nakato: rnakato AT iqb.u-tokyo.ac.jp
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务