Viewer for sequence alignments.
Note: This is the source code for the pileup only! You might want to check out the following repositories as well:
- HiGlass viewer: https://github.com/higlass/higlass
- HiGlass server: https://github.com/higlass/higlass-server
- HiGlass docker: https://github.com/higlass/higlass-docker
npm install higlass-pileup
The live scripts can be found at:
- Group by strand when using single vs. paired end reads
- Group by HP tag when using single vs. paired end reads
- Make sure you load this track prior to
hglib.js. For example:
<script src="/higlass-pileup-track.js"></script>
<script src="hglib.js"></script>
<script>
...
</script>
- Now, configure the track in your view config and be happy!
{
"editable": true,
"trackSourceServers": [
"http://higlass.io/api/v1"
],
"exportViewUrl": "/api/v1/viewconfs",
"views": [
{
"initialXDomain": [
0,
100000
],
"tracks": {
"top": [
{
"type": "pileup",
"options": {
"axisPositionHorizontal": "right",
"axisLabelFormatting": "normal",
"showCoverage": false,
"colorScale": [
// A T G C N Other
"#2c7bb6",
"#92c5de",
"#ffffbf",
"#fdae61",
"#808080",
"#DCDCDC"
]
},
"height": 180,
"uid": "FylkvVBTSumoJ959HT4-5A",
"data": {
"type": "bam",
"bamUrl": "https://pkerp.s3.amazonaws.com/public/bamfile_test/SRR1770413.sorted.bam",
"baiUrl": "https://pkerp.s3.amazonaws.com/public/bamfile_test/SRR1770413.sorted.bam.bai",
"chromSizesUrl": "https://pkerp.s3.amazonaws.com/public/bamfile_test/GCF_000005845.2_ASM584v2_genomic.chrom.sizes",
{
"options": {
"maxTileWidth": 30000
}
}
},
"width": 470
}
]
},
"layout": {
"w": 12,
"h": 6,
"x": 0,
"y": 0
}
}
]
}
- To use in higlass.io:
- Modify the viewconf above to specify the URL for your BAM file.
- Either remove or update the
chromSizesUrlentry to point to a chromosome sizes file for the assembly that your BAM file is aligned to. If it's omitted, the chromosome sizes will be extracted directly from the BAM file and ordered best-guess semantically (i.e. chr1, chr2, ...., chrM, chrX, chrY). - Save the viewconf as a JSON file.
- Navigate to higlass.io/app and drag the JSON file onto the viewer.
- Browse away!
maxTileWidth - To limit the amount of data that is fetched from the server, HiGlass sets a
default maximum tile width. This can be modified in the data section of the track config. Setting
it to a large file will let you zoom out further while still fetching data. This is useful for
viewing low coverage BAM files.
colorScale - Array that controls the color of substitutions and highlighted reads. It can take 6, 11, 21, or 26 values:
- 6 values: DNA bases (A, T, G, C, N, other)
- 11 values: DNA bases + highlighted read colors (see
highlightReadsByoption) - 21 values: Protein amino acids (ALA, ARG, ASN, ASP, CYS, GLN, GLU, GLY, HIS, ILE, LEU, LYS, MET, PHE, PRO, SER, THR, TRP, TYR, VAL, STOP)
- 26 values: Protein amino acids + highlighted read colors
DNA example:
"colorScale": [
"#2c7bb6", //color of A substitutions
"#92c5de", //color of T substitutions
"#ffffbf", //color of G substitutions
"#fdae61", //color of C substitutions
"#808080", //color of N substitutions
"#DCDCDC", //color of other substitutions
"#FF0000", //color of reads with large insert size
"#0000D1", //color of reads with small insert size
"#00D1D1", //color of reads with LL orientation
"#555CFA", //color of reads with RR orientation
"#02A221", //color of reads with RL orientation
]
Protein example:
"colorScale": [
"#CCCCCC", //ALA - Alanine
"#0000FF", //ARG - Arginine (basic)
"#00FFFF", //ASN - Asparagine (polar)
"#FF0000", //ASP - Aspartic acid (acidic)
"#FFFF00", //CYS - Cysteine (sulfur)
"#00FFFF", //GLN - Glutamine (polar)
"#FF0000", //GLU - Glutamic acid (acidic)
"#E6E6E6", //GLY - Glycine (small)
"#0000FF", //HIS - Histidine (basic)
"#00FF00", //ILE - Isoleucine (hydrophobic)
"#00FF00", //LEU - Leucine (hydrophobic)
"#0000FF", //LYS - Lysine (basic)
"#00FF00", //MET - Methionine (hydrophobic)
"#00FF00", //PHE - Phenylalanine (hydrophobic)
"#FF8000", //PRO - Proline (special)
"#00FFFF", //SER - Serine (polar)
"#00FFFF", //THR - Threonine (polar)
"#00FF00", //TRP - Tryptophan (hydrophobic)
"#00FFFF", //TYR - Tyrosine (polar)
"#00FF00", //VAL - Valine (hydrophobic)
"#000000" //STOP - Stop codon
]
outlineReadOnHover - Highlights the current read on hover.
outlineMateOnHover - Highlights the mate of the current read on hover. If the mate is a split read, both alignments will be highlighted.
highlightReadsBy - Array that can take the values insertSize, pairOrientation or insertSizeAndPairOrientation:
- if
insertSizeis set, reads that have a large or small insert size will be highlighted. The thresholds are controlled by thelargeInsertSizeThresholdandsmallInsertSizeThresholdtrack options.largeInsertSizeThresholddefaults to1000, i.e., 1000 bp.smallInsertSizeThresholdis not set by default, i.e, reads with small insert size won't be highlighted. - if
pairOrientationis set, reads with an abnormal mapping orientation are highlighted (e.g. ++,--,-+). - if
insertSizeAndPairOrientationis set, reads with an abnormal mapping orientation that also have abnormal insert sizes are highlighted. - if multiple values are set, reads that fulfill any of the conditions are highlighed in the corresponding color.
- highlight colors can be controlled by extending the
colorScaletrack option to 11 values. The additional 5 values will control the large insert size color, small insert size color and the ++, --, -+ mapping orientations (in that order).
minMappingQuality - If this is set (integer), reads with a mapping quality lower than the specified value are not displayed.
The higlass-pileup track supports local tiles. Local tiles can contain either BAM formatted data or they can include raw rendering objects. The following is a snippet that goes in the track section of a viewconf:
data: {
type: 'local-tiles',
tilesetInfo: {
'min_pos': [0],
'max_pos': [14],
'max_width': 64,
'tile_size': 1024,
'chromsizes': [['a', 14]],
'max_zoom': 0,
'max_tile_width': 100000,
'format': 'subs'
},
tiles: {
'0.0': [{
"id": "r1",
"from": 0,
"to": 100,
"substitutions": [
{'pos': 2, 'type': 'D', 'length': 2},
{'pos': 6, 'type': 'X', 'length': 1, 'base': 'A', 'variant': 'T'},
{'pos': 9, 'type': 'D', 'length': 2}
],
"color": 0
}],
}
}
The currently available substitution types are:
S- corresponding to soft clipped basesH- corresponding to hard clipped basesX- corresponding to a mismatchI- corresponding to an insertionD- corresponding to a deletion
The pileup track now supports protein sequences with a 21-color amino acid color scale. The colors are mapped to amino acids based on their chemical properties:
- Basic amino acids (ARG, HIS, LYS): Blue
- Acidic amino acids (ASP, GLU): Red
- Polar amino acids (ASN, GLN, SER, THR, TYR): Cyan
- Hydrophobic amino acids (ILE, LEU, MET, PHE, TRP, VAL): Green
- Special amino acids (CYS, PRO): Yellow/Orange
- Small amino acids (ALA, GLY): Gray
- Stop codons: Black
For questions, please either open an issue or ask on the HiGlass Slack channel at http://bit.ly/higlass-slack
$ git clone https://github.com/higlass/higlass-pileup-track && higlass-pileup-track
$ npm installDevelopmental server: npm start
Production build: npm run build
