Overview
Alignment
Hi-C reads are mapped to the GRCh38 (human) or mm10 (mouse) reference genome using bwa version 0.7.17. Specifically, we run:
bwa mem -SP5M -t<nthreads> <genome_index> <fastq1> <fastq2>
- The
-SPoption is used to ensure the results are equivalent to that obtained by runningbwa memon each mate separately, while retaining the right formatting for paired-end reads. This option skips a step inbwa memthat forces alignment of a poorly aligned read given an alignment of its mate with the assumption that the two mates are part of a single genomic segment. - The
-5option is used to report the 5' portion of chimeric alignments as the primary alignment. In Hi-C experiments, when a mate has chimeric alignments, typically, the 5' portion is the position of interest, while the 3' portion represents the same fragment as the mate. For chimeric alignments,bwa memreports two alignments: one of them is annotated as primary and soft-clipped, retaining the full-length of the original sequence. The other end is annotated as hard-clipped and marked as either 'supplementary' or 'secondary'. The-5option forces the 5'end to be always annotated as primary. - The
-Moption is used to annotate the secondary/supplementary clipped reads as secondary rather than supplementary, for compatibility with some public software tools such aspicard MarkDuplicates. - The
-toption is used for multi-threading and should not affect the result.
Filtering
For filtering valid Hi-C alignments, we use pairtools (previously called pairsamtools). Specifically, we use version 0.2.2. The filtering workflow outputs a pairs file containing a list of valid contacts.
This filtering workflow applies the following criteria:
- Reads marked as duplicates are removed.
- Full-length alignments that are unique are kept.
- An unmapped portion shorter than 20bp is ignored; and the rest of the alignment is still considered as full-length.
- In addition, clipped (chimeric) alignments are kept, if they are valid Hi-C contacts. If one mate is clipped and the other is full-length and the 3'end of the clipped alignment is mapped within 2kb of the full-length alignment in the orientation that the two 3'ends are pointing toward each other they are considered valid contacts.
- As with full-length alignments, any unmapped portion shorter than 20bp is ignored.
One of the design choices we have made is to include a lossless bam file as an output of the data processing. This output file, containing all the sequences in the original fastq files, the alignment results, and pairtools-provided flags for read filtering, is provided as a resource. To be able to produce this output file, the contents of the bam file is carried forward in the filtering workflow in intermediate pairsam files. Users who are only interested in the valid contact lists may run the same analysis with more light-weight intermediate files.
Specifically, the filtering workflow consists of the following steps:
pairtools parse- A bam file is read in, and a pairsam file is written out.
- The pairsam file is a pairs file, listing one read pair per line, with additional columns to track the sam-file lines, and a pairtools read classification.
- These classifications include information on whether the read aligned to 0, 1, or multiple places in the genome and whether it aligned end-to-end or if it was clipped.
- This tool also upper-triangularizes the reads, i.e. if the coordinate of second read is higher than the first, the reads are flipped.
-
For more details, see pairsamtools doc
-
pairtools sort - A
pairsam(or genericallypairs) file is read in, and apairsamfile is written out. - The rows are sorted in chr1-chr2-pos1-pos2 order.
-
Note that the flipping order and sort order of chromosomes is not identical. See the docs for more details.
-
pairtools merge - One or more
pairsam(or genericallypairs) files are read in, and apairsamfile is written out. -
The files are merged, preserving the sorted order.
-
pairtools dedup --mark-dups - (equivalent to
pairtools markasdup) - Duplicate alignments that share the same pair of 5'end coordinates +/- 3 bps are marked as identified.
-
An arbitrary one is retained with the original classification, while others get a duplicate classification.
-
pairtools select - Only the reads with pairtools classification
UUandUCare retained and output to apairsfile.
Matrix aggregation and normalization
Depending on the experiment type, the Hi-C pipeline was used either as it is or without restriction enzyme-based intra-fragment contact filtering.
- In situ Hi-C and dilution Hi-C data have been processed with the Hi-C pipeline as it is.
- Data from similar experiment types were processed using the Hi-C pipeline either without restriction enzyme filtering or without balancing.
| Experiment type | Restriction site file | no_balance |
|---|---|---|
| in situ Hi-C | yes | False |
| dilution Hi-C | yes | False |
| DNase Hi-C | no | False |
| Micro-C | no | False |
| Capture Hi-C | yes | True |
| ChIA-PET | no | True |
4DN DCIC provides a Hi-C matrix in two different formats: .mcool format and .hic format. The two files are generated from the same pairs file as input filtered contact list. Both files contain multiple resolutions.
.hicformat- A
.hicfile is produced by Juicertools (version 1.8.9-cuda8) and can be visualized using Juicebox - The matrix is normalized using the VC, VC_SQRT, KR methods, after filtering out intra-fragment contacts (contacts that fall in the same restriction fragment).
.mcoolformat- An
.mcoolfile is produced by Cooler (version 0.8.3) and can be visualized using HiGlass. - The matrix is normalized using the ICE (iterative correction and eigenvalue decomposition) matrix balancing algorithm, after the matrix-level removal of the diagonal and the rows/columns with a low value.
- The
.mcoolfile also contains the normalization vectors generated by Juicertools (same as in a.hicfile generated from the samepairsfile)
Resolutions
Both mcool and hic files contain the following resolutions.
- 1kb, 2kb, 5kb, 10kb, 25kb, 50kb, 100kb, 250kb, 500kb, 1Mb, 2.5Mb, 5Mb, 10Mb
Merging replicates
Replicates are merged in two steps before producing a matrix.
- Sequencing replicates (replicates within an experiment)
- Sequencing replicates are merged after the alignment but before duplicate removal step (
pairsam dedup), since reads resulting from a single PCR duplication event may exist in both replicates. - Merging is performed on (intermediate)
pairsamfiles usingpairsam merge. - DCIC provides a merged output as a
pairsfile. - Biological replicates (replicates within an experiment set)
- Biological replicates are merged after duplicate removal step, since PCR duplication event happened independently in these replicates.
- Merging is performed on
pairsfiles using run-merge-pairs.sh. - DCIC provides a merged output as a merged
pairsfile.
Source files
The pipeline components are pre-installed in a publicly available Docker image (duplexa/4dn-hic:v43) on Docker Hub. The source code for the Docker image and pipeline description in Common Workflow Language (CWL) can be found on GitHub.
- Latest runs
Content-wise, 0.2.5, 0.2.6, 0.2.7 can be considered (nearly) identical.
0.2.7- CWL : https://github.com/4dn-dcic/docker-4dn-hic/tree/v43/cwl
- Docker : https://github.com/4dn-dcic/docker-4dn-hic/tree/v43
0.2.5/0.2.6- CWL : https://github.com/4dn-dcic/docker-4dn-hic/tree/v42.2/cwl
- Docker : https://github.com/4dn-dcic/docker-4dn-hic/tree/v42.2
- Old runs
0.2.0- CWL : https://github.com/4dn-dcic/pipelines-cwl/tree/0.2.0/cwl_awsem/
- Docker : https://github.com/4dn-dcic/docker-4dn-hic/tree/v40
Example set of commands that were actually run as part of the pipeline can be found at https://github.com/4dn-dcic/docker-4dn-hic/blob/v43/HiCPipeline.md
Restriction Enzyme Check
For a bam file (produced in the alignment step), this process calculates the percentage of clipped sites with a restriction enzyme motif which matches the motif of the reported restriction enzyme. The result is available on the portal as the percent of clipped sites with RE motif field, located in the details section of the assessed bam file. Expected percentages for correctly reported restriction enzymes are in the neighborhood of 80%, while incorrect enzymes tend to produce values less than 10%.
The Docker image created for this step (4dndcic/4dn-re-checker/v1.1) is available on Docker Hub. All source files can be found in the GitHub
re-checker v1.1 repository.