HiC-Pro是一个成熟的Hi-C数据处理软件,负责从原始测序(FASTQ)到互作矩阵(contact maps)的一整套处理:mapping、过滤、fragment分配、生成validPairs、矩阵构建、质量控制等。它还包含多个实用脚本(utilities),用于downstream可视化或特定分析。

  make_viewpoints.py是HiC-Pro软件中的一个轻量脚本工具,能够从HiC-Pro生成的validPairs(或allValidPairs)与restriction-fragment BED、以及一个viewpoint/target BED,统计每个viewpoint(capture)与基因组上其他fragment的交互计数,并把结果写为bedGraph(方便在IGV/UCSC中查看virtual-4C风格的轨迹)。脚本也会在标准错误中输出每个viewpoint的若干统计量(CAP-REP、CAP-CAP、Excluded等)。

使用前准备

validPairsFile:HiC-Pro产出的有效配对文件(tab分割)。脚本需要该文件每行至少前7个字段:readname, r1_chr, r1_start, r1_strand, r2_chr, r2_start, r2_strand。脚本对格式不符的行会报错并跳过。

fragmentFile(resfrag BED):restriction fragment的BED(HiC-Pro data_info下通常有),脚本把read的坐标映射到fragment上。脚本需要该文件至少4列:chrom start end name(注意:脚本把BED当作0-based处理)。若行格式不对会报错并退出。

targetFile(viewpoints/capture BED):每行一个viewpoint,必须含4列chrom start end name(脚本以name作为viewpoint的标识符并用于输出文件名/统计)。可以把 promoter/bait以±bp的区间写在这里。

命令行与常用选项

脚本的选项在源码get_args()和主流程里解析,常用参数如下:

Usage:
  -i/--validPairs   <validPairs file>
  -f/--fragmentFile <restriction fragment BED>
  -t/--targetFile   <target viewpoints BED>
  -c/--cis          Restrict analysis to cis interactions (only chromosomes present in target)
  -e/--exclusion    Size (bp) of upstream/downstream regions around each capture to exclude
  -o/--oprefix      Output file prefix
  -v/--verbose      Verbose mode (prints progress & parameters to stderr)
  -h/--help         Help

各参数注释

-i / --validPairs
指定HiC-Pro生成的validPairs文件路径(文本文件,每行一个有效配对)。
脚本按行读取该文件,解析每一条配对的染色体/位置信息,用来统计viewpoint(capture)与reporter fragment的配对计数。

-f / --fragmentFile
指定限制性内切酶片段(restriction fragments)对应的BED文件路径(resfrag)。
用于把 validPairs 中的 read 坐标映射到对应的restriction fragment(reporter);脚本把fragment BED加载进染色体索引树以便快速查找。

-t / --target
指定viewpoint / capture(bait)列表的BED文件路径。
脚本把target(capture sites)加载为interval树,用来判定配对的任一端是否落在capture区域(若落在则视为capture端);对每个被检测到的capture,会累积该capture与各reporter fragment的计数并最终输出bedGraph。

-c / --cis
启用“只统计cis(同染色体)”模式(Restrict the analysis to cis contact)。
当加上-c时,脚本在加载fragment BED时只加载那些染色体与target中出现的染色体(即load_BED(fragmentFile, chroms=target.keys())),能节省内存/时间并确保只统计与目标染色体上的交互。适用于只关心capture同染色体交互的情形。

-e / --exclusion
为每个capture指定向上游和下游排除区的大小(以碱基对bp为单位)。
脚本会为每个target生成两个exclusion interval:[start - exclusion, start) 和 [end, end + exclusion);如果validPairs的任一端落在这些排除区内,该配对会被记为“Excluded”并计入exclu_counter(不会记为CAP-REP)。这个参数常用来去除近端self-ligation/restriction bias导致的强信号。
注意:传入的值应为整数;排除区不会自动做边界检查(例如start-exclusion可能为负数,通常床文件坐标为0-based,建议检查输入或用合理的exclusion值如500–2000 bp)。

exclusion和target的优先顺序:源码先检查exclusion(若存在),若任一端落在exclusion区则记为excluded;只有在两端都不在exclusion时,才进一步判断是否落在target或fragment。理解这一点有助于选择合适的-e大小。

-o / --oprefix
指定输出文件名前缀(prefix)。
脚本会为每个viewpoint生成一个bedGraph文件;若指定-o PREFIX,文件名形如PREFIX_<viewpoint_name>.bedgraph;否则文件名为<viewpoint_name>.bedgraph。同时脚本会在写文件时在stderr打印Writing in _viewpoint.bedgraph。

-v / --verbose
详细/输出模式(Verbose)。
开启后脚本会打印运行时信息到标准错误(stderr),例如参数值(validPairsFile / fragmentFile / targetFile / cisOnly / exclusionSize / verbose)、数据加载进度提示(每百万行报告一次)以及后续的统计信息等,便于调试与监控长任务。

-h / --help
显示帮助/用法并退出。

示例:该命令会为my_baits.bed中的每个bait生成sample_.bedgraph(如果不使用-o,则输出文件名默认是.bedgraph)。

标签: Hi-C