Skip to content

Instantly share code, notes, and snippets.

@kortschak
Created February 2, 2017 02:22
Show Gist options
  • Save kortschak/f3dcf73818c81d21b421929f88890d02 to your computer and use it in GitHub Desktop.
Save kortschak/f3dcf73818c81d21b421929f88890d02 to your computer and use it in GitHub Desktop.
flagstat CPU profiling
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: flagstat Pages: 1 -->
<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<script type="text/ecmascript"><![CDATA[
/**
* SVGPan library 1.2.1
* ======================
*
* Given an unique existing element with id "viewport" (or when missing, the first g
* element), including the the library into any SVG adds the following capabilities:
*
* - Mouse panning
* - Mouse zooming (using the wheel)
* - Object dragging
*
* You can configure the behavior of the pan/zoom/drag with the variables
* listed in the CONFIGURATION section of this file.
*
* Known issues:
*
* - Zooming (while panning) on Safari has still some issues
*
* Releases:
*
* 1.2.1, Mon Jul 4 00:33:18 CEST 2011, Andrea Leofreddi
* - Fixed a regression with mouse wheel (now working on Firefox 5)
* - Working with viewBox attribute (#4)
* - Added "use strict;" and fixed resulting warnings (#5)
* - Added configuration variables, dragging is disabled by default (#3)
*
* 1.2, Sat Mar 20 08:42:50 GMT 2010, Zeng Xiaohui
* Fixed a bug with browser mouse handler interaction
*
* 1.1, Wed Feb 3 17:39:33 GMT 2010, Zeng Xiaohui
* Updated the zoom code to support the mouse wheel on Safari/Chrome
*
* 1.0, Andrea Leofreddi
* First release
*
* This code is licensed under the following BSD license:
*
* Copyright 2009-2010 Andrea Leofreddi <a.leofreddi@itcharm.com>. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of Andrea Leofreddi.
*/
"use strict";
/// CONFIGURATION
/// ====>
var enablePan = 1; // 1 or 0: enable or disable panning (default enabled)
var enableZoom = 1; // 1 or 0: enable or disable zooming (default enabled)
var enableDrag = 0; // 1 or 0: enable or disable dragging (default disabled)
/// <====
/// END OF CONFIGURATION
var root = document.documentElement;
var state = 'none', svgRoot, stateTarget, stateOrigin, stateTf;
setupHandlers(root);
/**
* Register handlers
*/
function setupHandlers(root){
setAttributes(root, {
"onmouseup" : "handleMouseUp(evt)",
"onmousedown" : "handleMouseDown(evt)",
"onmousemove" : "handleMouseMove(evt)",
//"onmouseout" : "handleMouseUp(evt)", // Decomment this to stop the pan functionality when dragging out of the SVG element
});
if(navigator.userAgent.toLowerCase().indexOf('webkit') >= 0)
window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari
else
window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others
}
/**
* Retrieves the root element for SVG manipulation. The element is then cached into the svgRoot global variable.
*/
function getRoot(root) {
if(typeof(svgRoot) == "undefined") {
var g = null;
g = root.getElementById("viewport");
if(g == null)
g = root.getElementsByTagName('g')[0];
if(g == null)
alert('Unable to obtain SVG root element');
setCTM(g, g.getCTM());
g.removeAttribute("viewBox");
svgRoot = g;
}
return svgRoot;
}
/**
* Instance an SVGPoint object with given event coordinates.
*/
function getEventPoint(evt) {
var p = root.createSVGPoint();
p.x = evt.clientX;
p.y = evt.clientY;
return p;
}
/**
* Sets the current transform matrix of an element.
*/
function setCTM(element, matrix) {
var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")";
element.setAttribute("transform", s);
}
/**
* Dumps a matrix to a string (useful for debug).
*/
function dumpMatrix(matrix) {
var s = "[ " + matrix.a + ", " + matrix.c + ", " + matrix.e + "\n " + matrix.b + ", " + matrix.d + ", " + matrix.f + "\n 0, 0, 1 ]";
return s;
}
/**
* Sets attributes of an element.
*/
function setAttributes(element, attributes){
for (var i in attributes)
element.setAttributeNS(null, i, attributes[i]);
}
/**
* Handle mouse wheel event.
*/
function handleMouseWheel(evt) {
if(!enableZoom)
return;
if(evt.preventDefault)
evt.preventDefault();
evt.returnValue = false;
var svgDoc = evt.target.ownerDocument;
var delta;
if(evt.wheelDelta)
delta = evt.wheelDelta / 3600; // Chrome/Safari
else
delta = evt.detail / -90; // Mozilla
var z = 1 + delta; // Zoom factor: 0.9/1.1
var g = getRoot(svgDoc);
var p = getEventPoint(evt);
p = p.matrixTransform(g.getCTM().inverse());
// Compute new scale matrix in current mouse position
var k = root.createSVGMatrix().translate(p.x, p.y).scale(z).translate(-p.x, -p.y);
setCTM(g, g.getCTM().multiply(k));
if(typeof(stateTf) == "undefined")
stateTf = g.getCTM().inverse();
stateTf = stateTf.multiply(k.inverse());
}
/**
* Handle mouse move event.
*/
function handleMouseMove(evt) {
if(evt.preventDefault)
evt.preventDefault();
evt.returnValue = false;
var svgDoc = evt.target.ownerDocument;
var g = getRoot(svgDoc);
if(state == 'pan' && enablePan) {
// Pan mode
var p = getEventPoint(evt).matrixTransform(stateTf);
setCTM(g, stateTf.inverse().translate(p.x - stateOrigin.x, p.y - stateOrigin.y));
} else if(state == 'drag' && enableDrag) {
// Drag mode
var p = getEventPoint(evt).matrixTransform(g.getCTM().inverse());
setCTM(stateTarget, root.createSVGMatrix().translate(p.x - stateOrigin.x, p.y - stateOrigin.y).multiply(g.getCTM().inverse()).multiply(stateTarget.getCTM()));
stateOrigin = p;
}
}
/**
* Handle click event.
*/
function handleMouseDown(evt) {
if(evt.preventDefault)
evt.preventDefault();
evt.returnValue = false;
var svgDoc = evt.target.ownerDocument;
var g = getRoot(svgDoc);
if(
evt.target.tagName == "svg"
|| !enableDrag // Pan anyway when drag is disabled and the user clicked on an element
) {
// Pan mode
state = 'pan';
stateTf = g.getCTM().inverse();
stateOrigin = getEventPoint(evt).matrixTransform(stateTf);
} else {
// Drag mode
state = 'drag';
stateTarget = evt.target;
stateTf = g.getCTM().inverse();
stateOrigin = getEventPoint(evt).matrixTransform(stateTf);
}
}
/**
* Handle mouse button release event.
*/
function handleMouseUp(evt) {
if(evt.preventDefault)
evt.preventDefault();
evt.returnValue = false;
var svgDoc = evt.target.ownerDocument;
if(state == 'pan' || state == 'drag') {
// Quit pan mode
state = '';
}
}
]]></script><g id="viewport" transform="scale(0.5,0.5) translate(0,0)"><g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1782)">
<title>flagstat</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1782 2110.5,-1782 2110.5,4 -4,4"/>
<g id="clust1" class="cluster"><title>cluster_L</title>
<polygon fill="none" stroke="black" points="8,-1501 8,-1770 546,-1770 546,-1501 8,-1501"/>
</g>
<!-- L -->
<g id="node1" class="node"><title>L</title>
<polygon fill="#f8f8f8" stroke="black" points="537.5,-1762 16.5,-1762 16.5,-1509 537.5,-1509 537.5,-1762"/>
<text text-anchor="start" x="24.5" y="-1732.4" font-family="Times,serif" font-size="32.00">File: flagstat</text>
<text text-anchor="start" x="24.5" y="-1697.4" font-family="Times,serif" font-size="32.00">Type: cpu</text>
<text text-anchor="start" x="24.5" y="-1662.4" font-family="Times,serif" font-size="32.00">Time: Feb 2, 2017 at 12:43pm (ACDT)</text>
<text text-anchor="start" x="24.5" y="-1627.4" font-family="Times,serif" font-size="32.00">Duration: 5m15.012391301s</text>
<text text-anchor="start" x="24.5" y="-1592.4" font-family="Times,serif" font-size="32.00">302.03s of 315.19s total (95.82%)</text>
<text text-anchor="start" x="24.5" y="-1557.4" font-family="Times,serif" font-size="32.00">Dropped 220 nodes (cum &lt;= 1.58s)</text>
<text text-anchor="start" x="24.5" y="-1522.4" font-family="Times,serif" font-size="32.00">Dropped 9 edges (freq &lt;= 0.32s)</text>
</g>
<!-- N1 -->
<g id="node2" class="node"><title>N1</title>
<g id="a_node2"><a xlink:title="compress/flate.(*decompressor).huffSym (145.55s)">
<polygon fill="#f8f8f8" stroke="black" points="806,-763 392,-763 392,-677 806,-677 806,-763"/>
<text text-anchor="middle" x="599" y="-739.8" font-family="Times,serif" font-size="24.00">compress/flate.(*decompressor).huffSym</text>
<text text-anchor="middle" x="599" y="-713.8" font-family="Times,serif" font-size="24.00">82.60s(26.21%)</text>
<text text-anchor="middle" x="599" y="-687.8" font-family="Times,serif" font-size="24.00">of 145.55s(46.18%)</text>
</a>
</g>
</g>
<!-- N3 -->
<g id="node4" class="node"><title>N3</title>
<g id="a_node4"><a xlink:title="compress/flate.(*decompressor).moreBits (76.65s)">
<polygon fill="#f8f8f8" stroke="black" points="773.5,-626 424.5,-626 424.5,-552 773.5,-552 773.5,-626"/>
<text text-anchor="middle" x="599" y="-606" font-family="Times,serif" font-size="20.00">compress/flate.(*decompressor).moreBits</text>
<text text-anchor="middle" x="599" y="-584" font-family="Times,serif" font-size="20.00">42.01s(13.33%)</text>
<text text-anchor="middle" x="599" y="-562" font-family="Times,serif" font-size="20.00">of 76.65s(24.32%)</text>
</a>
</g>
</g>
<!-- N1&#45;&gt;N3 -->
<g id="edge10" class="edge"><title>N1&#45;&gt;N3</title>
<g id="a_edge10"><a xlink:title="compress/flate.(*decompressor).huffSym &#45;&gt; compress/flate.(*decompressor).moreBits (62.95s)">
<path fill="none" stroke="black" d="M599,-676.761C599,-663.889 599,-649.669 599,-636.53"/>
<polygon fill="black" stroke="black" points="602.5,-636.272 599,-626.272 595.5,-636.272 602.5,-636.272"/>
</a>
</g>
<g id="a_edge10&#45;label"><a xlink:title="compress/flate.(*decompressor).huffSym &#45;&gt; compress/flate.(*decompressor).moreBits (62.95s)">
<text text-anchor="middle" x="619" y="-647.8" font-family="Times,serif" font-size="14.00"> 62.95s</text>
</a>
</g>
</g>
<!-- N2 -->
<g id="node3" class="node"><title>N2</title>
<g id="a_node3"><a xlink:title="compress/flate.(*decompressor).huffmanBlock (248.83s)">
<polygon fill="#f8f8f8" stroke="black" points="833,-900 365,-900 365,-814 833,-814 833,-900"/>
<text text-anchor="middle" x="599" y="-876.8" font-family="Times,serif" font-size="24.00">compress/flate.(*decompressor).huffmanBlock</text>
<text text-anchor="middle" x="599" y="-850.8" font-family="Times,serif" font-size="24.00">76.45s(24.26%)</text>
<text text-anchor="middle" x="599" y="-824.8" font-family="Times,serif" font-size="24.00">of 248.83s(78.95%)</text>
</a>
</g>
</g>
<!-- N2&#45;&gt;N1 -->
<g id="edge8" class="edge"><title>N2&#45;&gt;N1</title>
<g id="a_edge8"><a xlink:title="compress/flate.(*decompressor).huffmanBlock &#45;&gt; compress/flate.(*decompressor).huffSym (143.40s)">
<path fill="none" stroke="black" stroke-width="3" d="M599,-813.656C599,-800.839 599,-786.61 599,-773.226"/>
<polygon fill="black" stroke="black" stroke-width="3" points="602.5,-773.194 599,-763.194 595.5,-773.194 602.5,-773.194"/>
</a>
</g>
<g id="a_edge8&#45;label"><a xlink:title="compress/flate.(*decompressor).huffmanBlock &#45;&gt; compress/flate.(*decompressor).huffSym (143.40s)">
<text text-anchor="middle" x="622.5" y="-784.8" font-family="Times,serif" font-size="14.00"> 143.40s</text>
</a>
</g>
</g>
<!-- N2&#45;&gt;N3 -->
<g id="edge16" class="edge"><title>N2&#45;&gt;N3</title>
<g id="a_edge16"><a xlink:title="compress/flate.(*decompressor).huffmanBlock &#45;&gt; compress/flate.(*decompressor).moreBits (13.57s)">
<path fill="none" stroke="black" d="M800.928,-813.985C812.774,-808.554 821.94,-802.564 827,-796 836.365,-783.852 871.977,-751.735 815,-677 800.189,-657.574 780.337,-642.471 758.647,-630.733"/>
<polygon fill="black" stroke="black" points="760.079,-627.534 749.586,-626.07 756.876,-633.758 760.079,-627.534"/>
</a>
</g>
<g id="a_edge16&#45;label"><a xlink:title="compress/flate.(*decompressor).huffmanBlock &#45;&gt; compress/flate.(*decompressor).moreBits (13.57s)">
<text text-anchor="middle" x="867" y="-716.3" font-family="Times,serif" font-size="14.00"> 13.57s</text>
</a>
</g>
</g>
<!-- N5 -->
<g id="node6" class="node"><title>N5</title>
<g id="a_node6"><a xlink:title="runtime.memmove (16.18s)">
<polygon fill="#f8f8f8" stroke="black" points="183.5,-611 44.5,-611 44.5,-567 183.5,-567 183.5,-611"/>
<text text-anchor="middle" x="114" y="-594.2" font-family="Times,serif" font-size="16.00">runtime.memmove</text>
<text text-anchor="middle" x="114" y="-576.2" font-family="Times,serif" font-size="16.00">16.18s(5.13%)</text>
</a>
</g>
</g>
<!-- N2&#45;&gt;N5 -->
<g id="edge21" class="edge"><title>N2&#45;&gt;N5</title>
<g id="a_edge21"><a xlink:title="compress/flate.(*decompressor).huffmanBlock &#45;&gt; runtime.memmove (11.19s)">
<path fill="none" stroke="black" d="M364.808,-837.194C261.448,-823.684 155.912,-800.912 123,-763 89.1194,-723.972 96.6691,-659.387 105.294,-621.142"/>
<polygon fill="black" stroke="black" points="108.775,-621.639 107.722,-611.097 101.971,-619.995 108.775,-621.639"/>
</a>
</g>
<g id="a_edge21&#45;label"><a xlink:title="compress/flate.(*decompressor).huffmanBlock &#45;&gt; runtime.memmove (11.19s)">
<text text-anchor="middle" x="143" y="-716.3" font-family="Times,serif" font-size="14.00"> 11.19s</text>
</a>
</g>
</g>
<!-- N10 -->
<g id="node11" class="node"><title>N10</title>
<g id="a_node11"><a xlink:title="compress/flate.(*dictDecoder).writeCopy (4.22s)">
<polygon fill="#f8f8f8" stroke="black" points="374,-742 172,-742 172,-698 374,-698 374,-742"/>
<text text-anchor="middle" x="273" y="-729.2" font-family="Times,serif" font-size="11.00">compress/flate.(*dictDecoder).writeCopy</text>
<text text-anchor="middle" x="273" y="-717.2" font-family="Times,serif" font-size="11.00">2.48s(0.79%)</text>
<text text-anchor="middle" x="273" y="-705.2" font-family="Times,serif" font-size="11.00">of 4.22s(1.34%)</text>
</a>
</g>
</g>
<!-- N2&#45;&gt;N10 -->
<g id="edge30" class="edge"><title>N2&#45;&gt;N10</title>
<g id="a_edge30"><a xlink:title="compress/flate.(*decompressor).huffmanBlock &#45;&gt; compress/flate.(*dictDecoder).writeCopy (4.22s)">
<path fill="none" stroke="black" d="M497.193,-813.84C443.473,-791.595 379.38,-765.053 333.509,-746.057"/>
<polygon fill="black" stroke="black" points="334.586,-742.715 324.007,-742.123 331.907,-749.183 334.586,-742.715"/>
</a>
</g>
<g id="a_edge30&#45;label"><a xlink:title="compress/flate.(*decompressor).huffmanBlock &#45;&gt; compress/flate.(*dictDecoder).writeCopy (4.22s)">
<text text-anchor="middle" x="463" y="-784.8" font-family="Times,serif" font-size="14.00"> 4.22s</text>
</a>
</g>
</g>
<!-- N4 -->
<g id="node5" class="node"><title>N4</title>
<g id="a_node5"><a xlink:title="github.com/biogo/hts/bgzf.(*decompressor).ReadByte (34.64s)">
<polygon fill="#f8f8f8" stroke="black" points="814.5,-501 383.5,-501 383.5,-451 814.5,-451 814.5,-501"/>
<text text-anchor="middle" x="599" y="-481.8" font-family="Times,serif" font-size="19.00">github.com/biogo/hts/bgzf.(*decompressor).ReadByte</text>
<text text-anchor="middle" x="599" y="-460.8" font-family="Times,serif" font-size="19.00">34.64s(10.99%)</text>
</a>
</g>
</g>
<!-- N3&#45;&gt;N4 -->
<g id="edge14" class="edge"><title>N3&#45;&gt;N4</title>
<g id="a_edge14"><a xlink:title="compress/flate.(*decompressor).moreBits &#45;&gt; github.com/biogo/hts/bgzf.(*decompressor).ReadByte (34.64s)">
<path fill="none" stroke="black" d="M599,-551.961C599,-539.004 599,-524.426 599,-511.595"/>
<polygon fill="black" stroke="black" points="602.5,-511.3 599,-501.3 595.5,-511.3 602.5,-511.3"/>
</a>
</g>
<g id="a_edge14&#45;label"><a xlink:title="compress/flate.(*decompressor).moreBits &#45;&gt; github.com/biogo/hts/bgzf.(*decompressor).ReadByte (34.64s)">
<text text-anchor="middle" x="619" y="-522.8" font-family="Times,serif" font-size="14.00"> 34.64s</text>
</a>
</g>
</g>
<!-- N6 -->
<g id="node7" class="node"><title>N6</title>
<g id="a_node7"><a xlink:title="hash/crc32.slicingUpdate (11.33s)">
<polygon fill="#f8f8f8" stroke="black" points="1223,-883.5 1069,-883.5 1069,-830.5 1223,-830.5 1223,-883.5"/>
<text text-anchor="middle" x="1146" y="-868.3" font-family="Times,serif" font-size="14.00">hash/crc32.slicingUpdate</text>
<text text-anchor="middle" x="1146" y="-853.3" font-family="Times,serif" font-size="14.00">11.21s(3.56%)</text>
<text text-anchor="middle" x="1146" y="-838.3" font-family="Times,serif" font-size="14.00">of 11.33s(3.59%)</text>
</a>
</g>
</g>
<!-- N7 -->
<g id="node8" class="node"><title>N7</title>
<g id="a_node8"><a xlink:title="runtime.mallocgc (16.11s)">
<polygon fill="#f8f8f8" stroke="black" points="1812,-501 1702,-501 1702,-451 1812,-451 1812,-501"/>
<text text-anchor="middle" x="1757" y="-486.6" font-family="Times,serif" font-size="13.00">runtime.mallocgc</text>
<text text-anchor="middle" x="1757" y="-472.6" font-family="Times,serif" font-size="13.00">7.88s(2.50%)</text>
<text text-anchor="middle" x="1757" y="-458.6" font-family="Times,serif" font-size="13.00">of 16.11s(5.11%)</text>
</a>
</g>
</g>
<!-- N12 -->
<g id="node13" class="node"><title>N12</title>
<g id="a_node13"><a xlink:title="runtime.heapBitsSetType (2.24s)">
<polygon fill="#f8f8f8" stroke="black" points="1927.5,-399 1798.5,-399 1798.5,-363 1927.5,-363 1927.5,-399"/>
<text text-anchor="middle" x="1863" y="-384.2" font-family="Times,serif" font-size="11.00">runtime.heapBitsSetType</text>
<text text-anchor="middle" x="1863" y="-372.2" font-family="Times,serif" font-size="11.00">2.24s(0.71%)</text>
</a>
</g>
</g>
<!-- N7&#45;&gt;N12 -->
<g id="edge45" class="edge"><title>N7&#45;&gt;N12</title>
<g id="a_edge45"><a xlink:title="runtime.mallocgc &#45;&gt; runtime.heapBitsSetType (2.24s)">
<path fill="none" stroke="black" d="M1784.57,-450.808C1800.35,-436.967 1820.06,-419.671 1835.78,-405.882"/>
<polygon fill="black" stroke="black" points="1838.38,-408.254 1843.59,-399.028 1833.77,-402.992 1838.38,-408.254"/>
</a>
</g>
<g id="a_edge45&#45;label"><a xlink:title="runtime.mallocgc &#45;&gt; runtime.heapBitsSetType (2.24s)">
<text text-anchor="middle" x="1836" y="-421.8" font-family="Times,serif" font-size="14.00"> 2.24s</text>
</a>
</g>
</g>
<!-- N13 -->
<g id="node14" class="node"><title>N13</title>
<g id="a_node14"><a xlink:title="runtime.memclrNoHeapPointers (2.24s)">
<polygon fill="#f8f8f8" stroke="black" points="2106.5,-399 1945.5,-399 1945.5,-363 2106.5,-363 2106.5,-399"/>
<text text-anchor="middle" x="2026" y="-384.2" font-family="Times,serif" font-size="11.00">runtime.memclrNoHeapPointers</text>
<text text-anchor="middle" x="2026" y="-372.2" font-family="Times,serif" font-size="11.00">2.24s(0.71%)</text>
</a>
</g>
</g>
<!-- N7&#45;&gt;N13 -->
<g id="edge62" class="edge"><title>N7&#45;&gt;N13</title>
<g id="a_edge62"><a xlink:title="runtime.mallocgc &#45;&gt; runtime.memclrNoHeapPointers (1.06s)">
<path fill="none" stroke="black" d="M1812.09,-455.956C1857.15,-440.377 1920.73,-418.394 1966.86,-402.447"/>
<polygon fill="black" stroke="black" points="1968.12,-405.715 1976.42,-399.14 1965.83,-399.099 1968.12,-405.715"/>
</a>
</g>
<g id="a_edge62&#45;label"><a xlink:title="runtime.mallocgc &#45;&gt; runtime.memclrNoHeapPointers (1.06s)">
<text text-anchor="middle" x="1932" y="-421.8" font-family="Times,serif" font-size="14.00"> 1.06s</text>
</a>
</g>
</g>
<!-- N33 -->
<g id="node34" class="node"><title>N33</title>
<g id="a_node34"><a xlink:title="runtime.(*mcache).nextFree (3.37s)">
<polygon fill="#f8f8f8" stroke="black" points="1780,-400 1664,-400 1664,-362 1780,-362 1780,-400"/>
<text text-anchor="middle" x="1722" y="-388.8" font-family="Times,serif" font-size="9.00">runtime.(*mcache).nextFree</text>
<text text-anchor="middle" x="1722" y="-378.8" font-family="Times,serif" font-size="9.00">0.06s(0.019%)</text>
<text text-anchor="middle" x="1722" y="-368.8" font-family="Times,serif" font-size="9.00">of 3.37s(1.07%)</text>
</a>
</g>
</g>
<!-- N7&#45;&gt;N33 -->
<g id="edge33" class="edge"><title>N7&#45;&gt;N33</title>
<g id="a_edge33"><a xlink:title="runtime.mallocgc &#45;&gt; runtime.(*mcache).nextFree (3.37s)">
<path fill="none" stroke="black" d="M1747.8,-450.565C1743.06,-437.957 1737.25,-422.531 1732.35,-409.506"/>
<polygon fill="black" stroke="black" points="1735.61,-408.227 1728.81,-400.1 1729.06,-410.692 1735.61,-408.227"/>
</a>
</g>
<g id="a_edge33&#45;label"><a xlink:title="runtime.mallocgc &#45;&gt; runtime.(*mcache).nextFree (3.37s)">
<text text-anchor="middle" x="1757" y="-421.8" font-family="Times,serif" font-size="14.00"> 3.37s</text>
</a>
</g>
</g>
<!-- N8 -->
<g id="node9" class="node"><title>N8</title>
<g id="a_node9"><a xlink:title="compress/flate.(*huffmanDecoder).init (5.56s)">
<polygon fill="#f8f8f8" stroke="black" points="1099.5,-743.5 900.5,-743.5 900.5,-696.5 1099.5,-696.5 1099.5,-743.5"/>
<text text-anchor="middle" x="1000" y="-729.9" font-family="Times,serif" font-size="12.00">compress/flate.(*huffmanDecoder).init</text>
<text text-anchor="middle" x="1000" y="-716.9" font-family="Times,serif" font-size="12.00">4.58s(1.45%)</text>
<text text-anchor="middle" x="1000" y="-703.9" font-family="Times,serif" font-size="12.00">of 5.56s(1.76%)</text>
</a>
</g>
</g>
<!-- N20 -->
<g id="node21" class="node"><title>N20</title>
<g id="a_node21"><a xlink:title="runtime.makeslice (7.09s)">
<polygon fill="#f8f8f8" stroke="black" points="1728.5,-609.5 1637.5,-609.5 1637.5,-568.5 1728.5,-568.5 1728.5,-609.5"/>
<text text-anchor="middle" x="1683" y="-597.5" font-family="Times,serif" font-size="10.00">runtime.makeslice</text>
<text text-anchor="middle" x="1683" y="-586.5" font-family="Times,serif" font-size="10.00">0.76s(0.24%)</text>
<text text-anchor="middle" x="1683" y="-575.5" font-family="Times,serif" font-size="10.00">of 7.09s(2.25%)</text>
</a>
</g>
</g>
<!-- N8&#45;&gt;N20 -->
<g id="edge64" class="edge"><title>N8&#45;&gt;N20</title>
<g id="a_edge64"><a xlink:title="compress/flate.(*huffmanDecoder).init &#45;&gt; runtime.makeslice (0.94s)">
<path fill="none" stroke="black" d="M1048.34,-696.428C1066.9,-688.821 1088.54,-681.201 1109,-677 1214.21,-655.396 1490.85,-695.123 1592,-659 1598.81,-656.569 1627.38,-634.524 1650.72,-615.995"/>
<polygon fill="black" stroke="black" points="1653.07,-618.596 1658.71,-609.626 1648.71,-613.122 1653.07,-618.596"/>
</a>
</g>
<g id="a_edge64&#45;label"><a xlink:title="compress/flate.(*huffmanDecoder).init &#45;&gt; runtime.makeslice (0.94s)">
<text text-anchor="middle" x="1629" y="-647.8" font-family="Times,serif" font-size="14.00"> 0.94s</text>
</a>
</g>
</g>
<!-- N9 -->
<g id="node10" class="node"><title>N9</title>
<g id="a_node10"><a xlink:title="github.com/biogo/hts/bam.(*Reader).Read (37.99s)">
<polygon fill="#f8f8f8" stroke="black" points="891,-1274 687,-1274 687,-1230 891,-1230 891,-1274"/>
<text text-anchor="middle" x="789" y="-1261.2" font-family="Times,serif" font-size="11.00">github.com/biogo/hts/bam.(*Reader).Read</text>
<text text-anchor="middle" x="789" y="-1249.2" font-family="Times,serif" font-size="11.00">2.70s(0.86%)</text>
<text text-anchor="middle" x="789" y="-1237.2" font-family="Times,serif" font-size="11.00">of 37.99s(12.05%)</text>
</a>
</g>
</g>
<!-- N15 -->
<g id="node16" class="node"><title>N15</title>
<g id="a_node16"><a xlink:title="github.com/biogo/hts/bam.newBuffer (25.08s)">
<polygon fill="#f8f8f8" stroke="black" points="909.5,-1179 728.5,-1179 728.5,-1135 909.5,-1135 909.5,-1179"/>
<text text-anchor="middle" x="819" y="-1166.2" font-family="Times,serif" font-size="11.00">github.com/biogo/hts/bam.newBuffer</text>
<text text-anchor="middle" x="819" y="-1154.2" font-family="Times,serif" font-size="11.00">1.96s(0.62%)</text>
<text text-anchor="middle" x="819" y="-1142.2" font-family="Times,serif" font-size="11.00">of 25.08s(7.96%)</text>
</a>
</g>
</g>
<!-- N9&#45;&gt;N15 -->
<g id="edge15" class="edge"><title>N9&#45;&gt;N15</title>
<g id="a_edge15"><a xlink:title="github.com/biogo/hts/bam.(*Reader).Read &#45;&gt; github.com/biogo/hts/bam.newBuffer (25.08s)">
<path fill="none" stroke="black" d="M795.807,-1229.9C799.72,-1217.77 804.705,-1202.31 809.05,-1188.85"/>
<polygon fill="black" stroke="black" points="812.48,-1189.61 812.219,-1179.02 805.818,-1187.46 812.48,-1189.61"/>
</a>
</g>
<g id="a_edge15&#45;label"><a xlink:title="github.com/biogo/hts/bam.(*Reader).Read &#45;&gt; github.com/biogo/hts/bam.newBuffer (25.08s)">
<text text-anchor="middle" x="826" y="-1200.8" font-family="Times,serif" font-size="14.00"> 25.08s</text>
</a>
</g>
</g>
<!-- N24 -->
<g id="node25" class="node"><title>N24</title>
<g id="a_node25"><a xlink:title="github.com/biogo/hts/bam.readCigarOps (1.85s)">
<polygon fill="#f8f8f8" stroke="black" points="1521,-1177.5 1337,-1177.5 1337,-1136.5 1521,-1136.5 1521,-1177.5"/>
<text text-anchor="middle" x="1429" y="-1165.5" font-family="Times,serif" font-size="10.00">github.com/biogo/hts/bam.readCigarOps</text>
<text text-anchor="middle" x="1429" y="-1154.5" font-family="Times,serif" font-size="10.00">0.51s(0.16%)</text>
<text text-anchor="middle" x="1429" y="-1143.5" font-family="Times,serif" font-size="10.00">of 1.85s(0.59%)</text>
</a>
</g>
</g>
<!-- N9&#45;&gt;N24 -->
<g id="edge57" class="edge"><title>N9&#45;&gt;N24</title>
<g id="a_edge57"><a xlink:title="github.com/biogo/hts/bam.(*Reader).Read &#45;&gt; github.com/biogo/hts/bam.readCigarOps (1.85s)">
<path fill="none" stroke="black" d="M891.181,-1231.46C894.152,-1230.96 897.096,-1230.47 900,-1230 1047.79,-1205.98 1219.7,-1183.6 1326.44,-1170.36"/>
<polygon fill="black" stroke="black" points="1327.07,-1173.81 1336.57,-1169.11 1326.21,-1166.87 1327.07,-1173.81"/>
</a>
</g>
<g id="a_edge57&#45;label"><a xlink:title="github.com/biogo/hts/bam.(*Reader).Read &#45;&gt; github.com/biogo/hts/bam.readCigarOps (1.85s)">
<text text-anchor="middle" x="1135" y="-1200.8" font-family="Times,serif" font-size="14.00"> 1.85s</text>
</a>
</g>
</g>
<!-- N26 -->
<g id="node27" class="node"><title>N26</title>
<g id="a_node27"><a xlink:title="runtime.newobject (8.05s)">
<polygon fill="#f8f8f8" stroke="black" points="1803.5,-1084 1710.5,-1084 1710.5,-1043 1803.5,-1043 1803.5,-1084"/>
<text text-anchor="middle" x="1757" y="-1072" font-family="Times,serif" font-size="10.00">runtime.newobject</text>
<text text-anchor="middle" x="1757" y="-1061" font-family="Times,serif" font-size="10.00">0.35s(0.11%)</text>
<text text-anchor="middle" x="1757" y="-1050" font-family="Times,serif" font-size="10.00">of 8.05s(2.55%)</text>
</a>
</g>
</g>
<!-- N9&#45;&gt;N26 -->
<g id="edge28" class="edge"><title>N9&#45;&gt;N26</title>
<g id="a_edge28"><a xlink:title="github.com/biogo/hts/bam.(*Reader).Read &#45;&gt; runtime.newobject (5.01s)">
<path fill="none" stroke="black" d="M891.144,-1231.21C894.126,-1230.78 897.082,-1230.38 900,-1230 1178.6,-1193.98 1254.26,-1232.66 1530,-1179 1622.6,-1160.98 1662.03,-1179.15 1733,-1117 1740.07,-1110.81 1745.18,-1102.12 1748.81,-1093.58"/>
<polygon fill="black" stroke="black" points="1752.11,-1094.75 1752.32,-1084.15 1745.55,-1092.31 1752.11,-1094.75"/>
</a>
</g>
<g id="a_edge28&#45;label"><a xlink:title="github.com/biogo/hts/bam.(*Reader).Read &#45;&gt; runtime.newobject (5.01s)">
<text text-anchor="middle" x="1725" y="-1153.3" font-family="Times,serif" font-size="14.00"> 5.01s</text>
</a>
</g>
</g>
<!-- N27 -->
<g id="node28" class="node"><title>N27</title>
<g id="a_node28"><a xlink:title="runtime.slicebytetostring (3.10s)">
<polygon fill="#f8f8f8" stroke="black" points="1916,-1176 1812,-1176 1812,-1138 1916,-1138 1916,-1176"/>
<text text-anchor="middle" x="1864" y="-1164.8" font-family="Times,serif" font-size="9.00">runtime.slicebytetostring</text>
<text text-anchor="middle" x="1864" y="-1154.8" font-family="Times,serif" font-size="9.00">0.30s(0.095%)</text>
<text text-anchor="middle" x="1864" y="-1144.8" font-family="Times,serif" font-size="9.00">of 3.10s(0.98%)</text>
</a>
</g>
</g>
<!-- N9&#45;&gt;N27 -->
<g id="edge35" class="edge"><title>N9&#45;&gt;N27</title>
<g id="a_edge35"><a xlink:title="github.com/biogo/hts/bam.(*Reader).Read &#45;&gt; runtime.slicebytetostring (3.10s)">
<path fill="none" stroke="black" d="M891.122,-1231.02C894.11,-1230.65 897.074,-1230.3 900,-1230 996.277,-1219.97 1677.8,-1238.13 1771,-1212 1792.89,-1205.86 1815,-1193.34 1832.16,-1181.91"/>
<polygon fill="black" stroke="black" points="1834.41,-1184.61 1840.66,-1176.06 1830.44,-1178.84 1834.41,-1184.61"/>
</a>
</g>
<g id="a_edge35&#45;label"><a xlink:title="github.com/biogo/hts/bam.(*Reader).Read &#45;&gt; runtime.slicebytetostring (3.10s)">
<text text-anchor="middle" x="1823" y="-1200.8" font-family="Times,serif" font-size="14.00"> 3.10s</text>
</a>
</g>
</g>
<!-- N10&#45;&gt;N5 -->
<g id="edge58" class="edge"><title>N10&#45;&gt;N5</title>
<g id="a_edge58"><a xlink:title="compress/flate.(*dictDecoder).writeCopy &#45;&gt; runtime.memmove (1.74s)">
<path fill="none" stroke="black" d="M247.1,-697.987C220.074,-676.06 177.579,-641.583 147.897,-617.502"/>
<polygon fill="black" stroke="black" points="149.86,-614.587 139.889,-611.004 145.449,-620.023 149.86,-614.587"/>
</a>
</g>
<g id="a_edge58&#45;label"><a xlink:title="compress/flate.(*dictDecoder).writeCopy &#45;&gt; runtime.memmove (1.74s)">
<text text-anchor="middle" x="216" y="-647.8" font-family="Times,serif" font-size="14.00"> 1.74s</text>
</a>
</g>
</g>
<!-- N11 -->
<g id="node12" class="node"><title>N11</title>
<g id="a_node12"><a xlink:title="main.main (40.43s)">
<polygon fill="#f8f8f8" stroke="black" points="834,-1369 736,-1369 736,-1325 834,-1325 834,-1369"/>
<text text-anchor="middle" x="785" y="-1356.2" font-family="Times,serif" font-size="11.00">main.main</text>
<text text-anchor="middle" x="785" y="-1344.2" font-family="Times,serif" font-size="11.00">2.44s(0.77%)</text>
<text text-anchor="middle" x="785" y="-1332.2" font-family="Times,serif" font-size="11.00">of 40.43s(12.83%)</text>
</a>
</g>
</g>
<!-- N11&#45;&gt;N9 -->
<g id="edge13" class="edge"><title>N11&#45;&gt;N9</title>
<g id="a_edge13"><a xlink:title="main.main &#45;&gt; github.com/biogo/hts/bam.(*Reader).Read (37.99s)">
<path fill="none" stroke="black" d="M785.908,-1324.9C786.424,-1312.89 787.081,-1297.62 787.656,-1284.24"/>
<polygon fill="black" stroke="black" points="791.163,-1284.16 788.096,-1274.02 784.169,-1283.86 791.163,-1284.16"/>
</a>
</g>
<g id="a_edge13&#45;label"><a xlink:title="main.main &#45;&gt; github.com/biogo/hts/bam.(*Reader).Read (37.99s)">
<text text-anchor="middle" x="808" y="-1295.8" font-family="Times,serif" font-size="14.00"> 37.99s</text>
</a>
</g>
</g>
<!-- N14 -->
<g id="node15" class="node"><title>N14</title>
<g id="a_node15"><a xlink:title="syscall.Syscall (2.12s)">
<polygon fill="#f8f8f8" stroke="black" points="1622.5,-222 1535.5,-222 1535.5,-178 1622.5,-178 1622.5,-222"/>
<text text-anchor="middle" x="1579" y="-209.2" font-family="Times,serif" font-size="11.00">syscall.Syscall</text>
<text text-anchor="middle" x="1579" y="-197.2" font-family="Times,serif" font-size="11.00">2.03s(0.64%)</text>
<text text-anchor="middle" x="1579" y="-185.2" font-family="Times,serif" font-size="11.00">of 2.12s(0.67%)</text>
</a>
</g>
</g>
<!-- N19 -->
<g id="node20" class="node"><title>N19</title>
<g id="a_node20"><a xlink:title="runtime.deferreturn (2.14s)">
<polygon fill="#f8f8f8" stroke="black" points="993.5,-1084 898.5,-1084 898.5,-1043 993.5,-1043 993.5,-1084"/>
<text text-anchor="middle" x="946" y="-1072" font-family="Times,serif" font-size="10.00">runtime.deferreturn</text>
<text text-anchor="middle" x="946" y="-1061" font-family="Times,serif" font-size="10.00">0.90s(0.29%)</text>
<text text-anchor="middle" x="946" y="-1050" font-family="Times,serif" font-size="10.00">of 2.14s(0.68%)</text>
</a>
</g>
</g>
<!-- N15&#45;&gt;N19 -->
<g id="edge56" class="edge"><title>N15&#45;&gt;N19</title>
<g id="a_edge56"><a xlink:title="github.com/biogo/hts/bam.newBuffer &#45;&gt; runtime.deferreturn (2.06s)">
<path fill="none" stroke="black" d="M849.023,-1134.82C857.145,-1129.06 865.922,-1122.81 874,-1117 886.128,-1108.28 899.351,-1098.67 911.117,-1090.08"/>
<polygon fill="black" stroke="black" points="913.382,-1092.76 919.391,-1084.03 909.252,-1087.11 913.382,-1092.76"/>
</a>
</g>
<g id="a_edge56&#45;label"><a xlink:title="github.com/biogo/hts/bam.newBuffer &#45;&gt; runtime.deferreturn (2.06s)">
<text text-anchor="middle" x="911" y="-1105.8" font-family="Times,serif" font-size="14.00"> 2.06s</text>
</a>
</g>
</g>
<!-- N15&#45;&gt;N20 -->
<g id="edge29" class="edge"><title>N15&#45;&gt;N20</title>
<g id="a_edge29"><a xlink:title="github.com/biogo/hts/bam.newBuffer &#45;&gt; runtime.makeslice (4.77s)">
<path fill="none" stroke="black" d="M909.597,-1140.52C1103.36,-1105.5 1548.21,-1014.29 1644,-900 1679.22,-857.972 1683.14,-688.967 1683.22,-619.767"/>
<polygon fill="black" stroke="black" points="1686.72,-619.548 1683.21,-609.553 1679.72,-619.558 1686.72,-619.548"/>
</a>
</g>
<g id="a_edge29&#45;label"><a xlink:title="github.com/biogo/hts/bam.newBuffer &#45;&gt; runtime.makeslice (4.77s)">
<text text-anchor="middle" x="1642" y="-921.8" font-family="Times,serif" font-size="14.00"> 4.77s</text>
</a>
</g>
</g>
<!-- N23 -->
<g id="node24" class="node"><title>N23</title>
<g id="a_node24"><a xlink:title="io.ReadFull (11.22s)">
<polygon fill="#f8f8f8" stroke="black" points="880,-1084 794,-1084 794,-1043 880,-1043 880,-1084"/>
<text text-anchor="middle" x="837" y="-1072" font-family="Times,serif" font-size="10.00">io.ReadFull</text>
<text text-anchor="middle" x="837" y="-1061" font-family="Times,serif" font-size="10.00">0.62s(0.2%)</text>
<text text-anchor="middle" x="837" y="-1050" font-family="Times,serif" font-size="10.00">of 11.22s(3.56%)</text>
</a>
</g>
</g>
<!-- N15&#45;&gt;N23 -->
<g id="edge20" class="edge"><title>N15&#45;&gt;N23</title>
<g id="a_edge20"><a xlink:title="github.com/biogo/hts/bam.newBuffer &#45;&gt; io.ReadFull (11.20s)">
<path fill="none" stroke="black" d="M823.175,-1134.78C825.551,-1122.7 828.565,-1107.38 831.172,-1094.13"/>
<polygon fill="black" stroke="black" points="834.659,-1094.53 833.155,-1084.04 827.791,-1093.18 834.659,-1094.53"/>
</a>
</g>
<g id="a_edge20&#45;label"><a xlink:title="github.com/biogo/hts/bam.newBuffer &#45;&gt; io.ReadFull (11.20s)">
<text text-anchor="middle" x="850" y="-1105.8" font-family="Times,serif" font-size="14.00"> 11.20s</text>
</a>
</g>
</g>
<!-- N15&#45;&gt;N26 -->
<g id="edge37" class="edge"><title>N15&#45;&gt;N26</title>
<g id="a_edge37"><a xlink:title="github.com/biogo/hts/bam.newBuffer &#45;&gt; runtime.newobject (2.95s)">
<path fill="none" stroke="black" d="M909.699,-1152.31C1123.05,-1143.54 1640.16,-1121.88 1658,-1117 1679.41,-1111.14 1701.41,-1100.08 1719.21,-1089.61"/>
<polygon fill="black" stroke="black" points="1721.37,-1092.39 1728.11,-1084.22 1717.74,-1086.4 1721.37,-1092.39"/>
</a>
</g>
<g id="a_edge37&#45;label"><a xlink:title="github.com/biogo/hts/bam.newBuffer &#45;&gt; runtime.newobject (2.95s)">
<text text-anchor="middle" x="1712" y="-1105.8" font-family="Times,serif" font-size="14.00"> 2.95s</text>
</a>
</g>
</g>
<!-- N16 -->
<g id="node17" class="node"><title>N16</title>
<g id="a_node17"><a xlink:title="github.com/biogo/hts/bgzf.(*Reader).Read (9.59s)">
<polygon fill="#f8f8f8" stroke="black" points="1446.5,-879 1241.5,-879 1241.5,-835 1446.5,-835 1446.5,-879"/>
<text text-anchor="middle" x="1344" y="-866.2" font-family="Times,serif" font-size="11.00">github.com/biogo/hts/bgzf.(*Reader).Read</text>
<text text-anchor="middle" x="1344" y="-854.2" font-family="Times,serif" font-size="11.00">1.52s(0.48%)</text>
<text text-anchor="middle" x="1344" y="-842.2" font-family="Times,serif" font-size="11.00">of 9.59s(3.04%)</text>
</a>
</g>
</g>
<!-- N17 -->
<g id="node18" class="node"><title>N17</title>
<g id="a_node18"><a xlink:title="github.com/biogo/hts/bgzf.(*block).Read (2.61s)">
<polygon fill="#f8f8f8" stroke="black" points="1304,-740.5 1118,-740.5 1118,-699.5 1304,-699.5 1304,-740.5"/>
<text text-anchor="middle" x="1211" y="-728.5" font-family="Times,serif" font-size="10.00">github.com/biogo/hts/bgzf.(*block).Read</text>
<text text-anchor="middle" x="1211" y="-717.5" font-family="Times,serif" font-size="10.00">1.10s(0.35%)</text>
<text text-anchor="middle" x="1211" y="-706.5" font-family="Times,serif" font-size="10.00">of 2.61s(0.83%)</text>
</a>
</g>
</g>
<!-- N16&#45;&gt;N17 -->
<g id="edge40" class="edge"><title>N16&#45;&gt;N17</title>
<g id="a_edge40"><a xlink:title="github.com/biogo/hts/bgzf.(*Reader).Read &#45;&gt; github.com/biogo/hts/bgzf.(*block).Read (2.61s)">
<path fill="none" stroke="black" d="M1323.22,-834.906C1300.08,-811.418 1262.62,-773.399 1237.42,-747.817"/>
<polygon fill="black" stroke="black" points="1239.85,-745.297 1230.34,-740.63 1234.86,-750.21 1239.85,-745.297"/>
</a>
</g>
<g id="a_edge40&#45;label"><a xlink:title="github.com/biogo/hts/bgzf.(*Reader).Read &#45;&gt; github.com/biogo/hts/bgzf.(*block).Read (2.61s)">
<text text-anchor="middle" x="1299" y="-784.8" font-family="Times,serif" font-size="14.00"> 2.61s</text>
</a>
</g>
</g>
<!-- N35 -->
<g id="node36" class="node"><title>N35</title>
<g id="a_node36"><a xlink:title="github.com/biogo/hts/bgzf.(*Reader).nextBlock (3.98s)">
<polygon fill="#f8f8f8" stroke="black" points="1506.5,-739 1321.5,-739 1321.5,-701 1506.5,-701 1506.5,-739"/>
<text text-anchor="middle" x="1414" y="-727.8" font-family="Times,serif" font-size="9.00">github.com/biogo/hts/bgzf.(*Reader).nextBlock</text>
<text text-anchor="middle" x="1414" y="-717.8" font-family="Times,serif" font-size="9.00">0.05s(0.016%)</text>
<text text-anchor="middle" x="1414" y="-707.8" font-family="Times,serif" font-size="9.00">of 3.98s(1.26%)</text>
</a>
</g>
</g>
<!-- N16&#45;&gt;N35 -->
<g id="edge31" class="edge"><title>N16&#45;&gt;N35</title>
<g id="a_edge31"><a xlink:title="github.com/biogo/hts/bgzf.(*Reader).Read &#45;&gt; github.com/biogo/hts/bgzf.(*Reader).nextBlock (3.98s)">
<path fill="none" stroke="black" d="M1354.94,-834.906C1367.01,-811.628 1386.48,-774.079 1399.74,-748.507"/>
<polygon fill="black" stroke="black" points="1402.99,-749.836 1404.49,-739.347 1396.78,-746.614 1402.99,-749.836"/>
</a>
</g>
<g id="a_edge31&#45;label"><a xlink:title="github.com/biogo/hts/bgzf.(*Reader).Read &#45;&gt; github.com/biogo/hts/bgzf.(*Reader).nextBlock (3.98s)">
<text text-anchor="middle" x="1399" y="-784.8" font-family="Times,serif" font-size="14.00"> 3.98s</text>
</a>
</g>
</g>
<!-- N17&#45;&gt;N5 -->
<g id="edge59" class="edge"><title>N17&#45;&gt;N5</title>
<g id="a_edge59"><a xlink:title="github.com/biogo/hts/bgzf.(*block).Read &#45;&gt; runtime.memmove (1.51s)">
<path fill="none" stroke="black" d="M1171.36,-699.426C1152.6,-691.06 1129.62,-682.07 1108,-677 807.322,-606.496 722.404,-655.679 415,-626 339.852,-618.745 254.41,-608.317 193.806,-600.55"/>
<polygon fill="black" stroke="black" points="193.909,-597.034 183.544,-599.229 193.016,-603.977 193.909,-597.034"/>
</a>
</g>
<g id="a_edge59&#45;label"><a xlink:title="github.com/biogo/hts/bgzf.(*block).Read &#45;&gt; runtime.memmove (1.51s)">
<text text-anchor="middle" x="1026" y="-647.8" font-family="Times,serif" font-size="14.00"> 1.51s</text>
</a>
</g>
</g>
<!-- N18 -->
<g id="node19" class="node"><title>N18</title>
<g id="a_node19"><a xlink:title="io.ReadAtLeast (10.62s)">
<polygon fill="#f8f8f8" stroke="black" points="1227,-992 1141,-992 1141,-951 1227,-951 1227,-992"/>
<text text-anchor="middle" x="1184" y="-980" font-family="Times,serif" font-size="10.00">io.ReadAtLeast</text>
<text text-anchor="middle" x="1184" y="-969" font-family="Times,serif" font-size="10.00">1.07s(0.34%)</text>
<text text-anchor="middle" x="1184" y="-958" font-family="Times,serif" font-size="10.00">of 10.62s(3.37%)</text>
</a>
</g>
</g>
<!-- N18&#45;&gt;N16 -->
<g id="edge25" class="edge"><title>N18&#45;&gt;N16</title>
<g id="a_edge25"><a xlink:title="io.ReadAtLeast &#45;&gt; github.com/biogo/hts/bgzf.(*Reader).Read (7.23s)">
<path fill="none" stroke="black" d="M1211.87,-950.904C1237.86,-932.626 1276.87,-905.203 1305.76,-884.884"/>
<polygon fill="black" stroke="black" points="1307.84,-887.705 1314,-879.09 1303.81,-881.979 1307.84,-887.705"/>
</a>
</g>
<g id="a_edge25&#45;label"><a xlink:title="io.ReadAtLeast &#45;&gt; github.com/biogo/hts/bgzf.(*Reader).Read (7.23s)">
<text text-anchor="middle" x="1272" y="-921.8" font-family="Times,serif" font-size="14.00"> 7.23s</text>
</a>
</g>
</g>
<!-- N48 -->
<g id="node49" class="node"><title>N48</title>
<g id="a_node49"><a xlink:title="github.com/biogo/hts/bgzf.(*countReader).Read (2.31s)">
<polygon fill="#f8f8f8" stroke="black" points="1635,-875 1465,-875 1465,-839 1635,-839 1635,-875"/>
<text text-anchor="middle" x="1550" y="-859.6" font-family="Times,serif" font-size="8.00">github.com/biogo/hts/bgzf.(*countReader).Read</text>
<text text-anchor="middle" x="1550" y="-850.6" font-family="Times,serif" font-size="8.00">0 of 2.31s(0.73%)</text>
</a>
</g>
</g>
<!-- N18&#45;&gt;N48 -->
<g id="edge60" class="edge"><title>N18&#45;&gt;N48</title>
<g id="a_edge60"><a xlink:title="io.ReadAtLeast &#45;&gt; github.com/biogo/hts/bgzf.(*countReader).Read (1.51s)">
<path fill="none" stroke="black" d="M1227.35,-961.497C1281.4,-949.756 1376.27,-927.441 1455,-900 1471.78,-894.151 1489.72,-886.581 1505.44,-879.482"/>
<polygon fill="black" stroke="black" points="1507.28,-882.491 1514.91,-875.143 1504.36,-876.127 1507.28,-882.491"/>
</a>
</g>
<g id="a_edge60&#45;label"><a xlink:title="io.ReadAtLeast &#45;&gt; github.com/biogo/hts/bgzf.(*countReader).Read (1.51s)">
<text text-anchor="middle" x="1414" y="-921.8" font-family="Times,serif" font-size="14.00"> 1.51s</text>
</a>
</g>
</g>
<!-- N20&#45;&gt;N7 -->
<g id="edge26" class="edge"><title>N20&#45;&gt;N7</title>
<g id="a_edge26"><a xlink:title="runtime.makeslice &#45;&gt; runtime.mallocgc (6.33s)">
<path fill="none" stroke="black" d="M1687.63,-568.331C1691.68,-553.811 1698.57,-534.045 1709,-519 1711.55,-515.317 1714.5,-511.749 1717.65,-508.352"/>
<polygon fill="black" stroke="black" points="1720.2,-510.752 1724.8,-501.208 1715.25,-505.801 1720.2,-510.752"/>
</a>
</g>
<g id="a_edge26&#45;label"><a xlink:title="runtime.makeslice &#45;&gt; runtime.mallocgc (6.33s)">
<text text-anchor="middle" x="1726" y="-522.8" font-family="Times,serif" font-size="14.00"> 6.33s</text>
</a>
</g>
</g>
<!-- N21 -->
<g id="node22" class="node"><title>N21</title>
<g id="a_node22"><a xlink:title="runtime.pcvalue (1.58s)">
<polygon fill="#f8f8f8" stroke="black" points="822.5,-1656 739.5,-1656 739.5,-1615 822.5,-1615 822.5,-1656"/>
<text text-anchor="middle" x="781" y="-1644" font-family="Times,serif" font-size="10.00">runtime.pcvalue</text>
<text text-anchor="middle" x="781" y="-1633" font-family="Times,serif" font-size="10.00">0.67s(0.21%)</text>
<text text-anchor="middle" x="781" y="-1622" font-family="Times,serif" font-size="10.00">of 1.58s(0.5%)</text>
</a>
</g>
</g>
<!-- N22 -->
<g id="node23" class="node"><title>N22</title>
<g id="a_node23"><a xlink:title="compress/flate.(*decompressor).readHuffman (8.42s)">
<polygon fill="#f8f8f8" stroke="black" points="1051,-877.5 851,-877.5 851,-836.5 1051,-836.5 1051,-877.5"/>
<text text-anchor="middle" x="951" y="-865.5" font-family="Times,serif" font-size="10.00">compress/flate.(*decompressor).readHuffman</text>
<text text-anchor="middle" x="951" y="-854.5" font-family="Times,serif" font-size="10.00">0.63s(0.2%)</text>
<text text-anchor="middle" x="951" y="-843.5" font-family="Times,serif" font-size="10.00">of 8.42s(2.67%)</text>
</a>
</g>
</g>
<!-- N22&#45;&gt;N1 -->
<g id="edge49" class="edge"><title>N22&#45;&gt;N1</title>
<g id="a_edge49"><a xlink:title="compress/flate.(*decompressor).readHuffman &#45;&gt; compress/flate.(*decompressor).huffSym (2.15s)">
<path fill="none" stroke="black" d="M900.267,-836.424C881.913,-829.349 861.027,-821.307 842,-814 801.789,-798.558 757.82,-781.717 718.47,-766.661"/>
<polygon fill="black" stroke="black" points="719.69,-763.381 709.1,-763.076 717.189,-769.919 719.69,-763.381"/>
</a>
</g>
<g id="a_edge49&#45;label"><a xlink:title="compress/flate.(*decompressor).readHuffman &#45;&gt; compress/flate.(*decompressor).huffSym (2.15s)">
<text text-anchor="middle" x="806" y="-784.8" font-family="Times,serif" font-size="14.00"> 2.15s</text>
</a>
</g>
</g>
<!-- N22&#45;&gt;N8 -->
<g id="edge27" class="edge"><title>N22&#45;&gt;N8</title>
<g id="a_edge27"><a xlink:title="compress/flate.(*decompressor).readHuffman &#45;&gt; compress/flate.(*huffmanDecoder).init (5.56s)">
<path fill="none" stroke="black" d="M958.125,-836.37C965.998,-814.678 978.804,-779.397 988.184,-753.554"/>
<polygon fill="black" stroke="black" points="991.597,-754.409 991.719,-743.815 985.017,-752.021 991.597,-754.409"/>
</a>
</g>
<g id="a_edge27&#45;label"><a xlink:title="compress/flate.(*decompressor).readHuffman &#45;&gt; compress/flate.(*huffmanDecoder).init (5.56s)">
<text text-anchor="middle" x="994" y="-784.8" font-family="Times,serif" font-size="14.00"> 5.56s</text>
</a>
</g>
</g>
<!-- N23&#45;&gt;N18 -->
<g id="edge22" class="edge"><title>N23&#45;&gt;N18</title>
<g id="a_edge22"><a xlink:title="io.ReadFull &#45;&gt; io.ReadAtLeast (10.60s)">
<path fill="none" stroke="black" d="M880.273,-1045.81C883.213,-1044.82 886.142,-1043.87 889,-1043 972.306,-1017.53 1071.13,-995.541 1130.64,-983.166"/>
<polygon fill="black" stroke="black" points="1131.47,-986.568 1140.56,-981.116 1130.06,-979.712 1131.47,-986.568"/>
</a>
</g>
<g id="a_edge22&#45;label"><a xlink:title="io.ReadFull &#45;&gt; io.ReadAtLeast (10.60s)">
<text text-anchor="middle" x="1030" y="-1013.8" font-family="Times,serif" font-size="14.00"> 10.60s</text>
</a>
</g>
</g>
<!-- N24&#45;&gt;N20 -->
<g id="edge61" class="edge"><title>N24&#45;&gt;N20</title>
<g id="a_edge61"><a xlink:title="github.com/biogo/hts/bam.readCigarOps &#45;&gt; runtime.makeslice (1.34s)">
<path fill="none" stroke="black" d="M1517.75,-1136.5C1520.53,-1135.98 1523.28,-1135.48 1526,-1135 1555.16,-1129.86 1637.3,-1138.16 1658,-1117 1727.07,-1046.41 1697.51,-720.804 1686.48,-619.899"/>
<polygon fill="black" stroke="black" points="1689.94,-619.338 1685.35,-609.787 1682.98,-620.113 1689.94,-619.338"/>
</a>
</g>
<g id="a_edge61&#45;label"><a xlink:title="github.com/biogo/hts/bam.readCigarOps &#45;&gt; runtime.makeslice (1.34s)">
<text text-anchor="middle" x="1718" y="-921.8" font-family="Times,serif" font-size="14.00"> 1.34s</text>
</a>
</g>
</g>
<!-- N25 -->
<g id="node26" class="node"><title>N25</title>
<g id="a_node26"><a xlink:title="runtime.gentraceback (2.82s)">
<polygon fill="#f8f8f8" stroke="black" points="1013,-1272.5 909,-1272.5 909,-1231.5 1013,-1231.5 1013,-1272.5"/>
<text text-anchor="middle" x="961" y="-1260.5" font-family="Times,serif" font-size="10.00">runtime.gentraceback</text>
<text text-anchor="middle" x="961" y="-1249.5" font-family="Times,serif" font-size="10.00">0.44s(0.14%)</text>
<text text-anchor="middle" x="961" y="-1238.5" font-family="Times,serif" font-size="10.00">of 2.82s(0.89%)</text>
</a>
</g>
</g>
<!-- N26&#45;&gt;N7 -->
<g id="edge24" class="edge"><title>N26&#45;&gt;N7</title>
<g id="a_edge24"><a xlink:title="runtime.newobject &#45;&gt; runtime.mallocgc (7.70s)">
<path fill="none" stroke="black" d="M1757,-1042.84C1757,-1024.6 1757,-996.719 1757,-972.5 1757,-972.5 1757,-972.5 1757,-588 1757,-562.331 1757,-533.322 1757,-511.399"/>
<polygon fill="black" stroke="black" points="1760.5,-511.252 1757,-501.252 1753.5,-511.252 1760.5,-511.252"/>
</a>
</g>
<g id="a_edge24&#45;label"><a xlink:title="runtime.newobject &#45;&gt; runtime.mallocgc (7.70s)">
<text text-anchor="middle" x="1774" y="-784.8" font-family="Times,serif" font-size="14.00"> 7.70s</text>
</a>
</g>
</g>
<!-- N31 -->
<g id="node32" class="node"><title>N31</title>
<g id="a_node32"><a xlink:title="runtime.rawstringtmp (2.55s)">
<polygon fill="#f8f8f8" stroke="black" points="1914.5,-1082.5 1821.5,-1082.5 1821.5,-1044.5 1914.5,-1044.5 1914.5,-1082.5"/>
<text text-anchor="middle" x="1868" y="-1071.3" font-family="Times,serif" font-size="9.00">runtime.rawstringtmp</text>
<text text-anchor="middle" x="1868" y="-1061.3" font-family="Times,serif" font-size="9.00">0.21s(0.067%)</text>
<text text-anchor="middle" x="1868" y="-1051.3" font-family="Times,serif" font-size="9.00">of 2.55s(0.81%)</text>
</a>
</g>
</g>
<!-- N27&#45;&gt;N31 -->
<g id="edge41" class="edge"><title>N27&#45;&gt;N31</title>
<g id="a_edge41"><a xlink:title="runtime.slicebytetostring &#45;&gt; runtime.rawstringtmp (2.55s)">
<path fill="none" stroke="black" d="M1864.79,-1137.92C1865.35,-1125.01 1866.12,-1107.4 1866.77,-1092.66"/>
<polygon fill="black" stroke="black" points="1870.27,-1092.68 1867.21,-1082.54 1863.28,-1092.38 1870.27,-1092.68"/>
</a>
</g>
<g id="a_edge41&#45;label"><a xlink:title="runtime.slicebytetostring &#45;&gt; runtime.rawstringtmp (2.55s)">
<text text-anchor="middle" x="1883" y="-1105.8" font-family="Times,serif" font-size="14.00"> 2.55s</text>
</a>
</g>
</g>
<!-- N28 -->
<g id="node29" class="node"><title>N28</title>
<g id="a_node29"><a xlink:title="runtime.rawstring (2.34s)">
<polygon fill="#f8f8f8" stroke="black" points="1876,-990.5 1796,-990.5 1796,-952.5 1876,-952.5 1876,-990.5"/>
<text text-anchor="middle" x="1836" y="-979.3" font-family="Times,serif" font-size="9.00">runtime.rawstring</text>
<text text-anchor="middle" x="1836" y="-969.3" font-family="Times,serif" font-size="9.00">0.26s(0.082%)</text>
<text text-anchor="middle" x="1836" y="-959.3" font-family="Times,serif" font-size="9.00">of 2.34s(0.74%)</text>
</a>
</g>
</g>
<!-- N28&#45;&gt;N7 -->
<g id="edge55" class="edge"><title>N28&#45;&gt;N7</title>
<g id="a_edge55"><a xlink:title="runtime.rawstring &#45;&gt; runtime.mallocgc (2.08s)">
<path fill="none" stroke="black" d="M1832.06,-952.283C1827.61,-930.116 1821,-891.497 1821,-858 1821,-858 1821,-858 1821,-588 1821,-558.543 1803.88,-529.86 1787.34,-509.033"/>
<polygon fill="black" stroke="black" points="1789.91,-506.64 1780.83,-501.17 1784.51,-511.105 1789.91,-506.64"/>
</a>
</g>
<g id="a_edge55&#45;label"><a xlink:title="runtime.rawstring &#45;&gt; runtime.mallocgc (2.08s)">
<text text-anchor="middle" x="1838" y="-716.3" font-family="Times,serif" font-size="14.00"> 2.08s</text>
</a>
</g>
</g>
<!-- N29 -->
<g id="node30" class="node"><title>N29</title>
<g id="a_node30"><a xlink:title="runtime.(*mcentral).cacheSpan (2.21s)">
<polygon fill="#f8f8f8" stroke="black" points="1785,-38 1659,-38 1659,-0 1785,-0 1785,-38"/>
<text text-anchor="middle" x="1722" y="-26.8" font-family="Times,serif" font-size="9.00">runtime.(*mcentral).cacheSpan</text>
<text text-anchor="middle" x="1722" y="-16.8" font-family="Times,serif" font-size="9.00">0.24s(0.076%)</text>
<text text-anchor="middle" x="1722" y="-6.8" font-family="Times,serif" font-size="9.00">of 2.21s(0.7%)</text>
</a>
</g>
</g>
<!-- N30 -->
<g id="node31" class="node"><title>N30</title>
<g id="a_node31"><a xlink:title="runtime.systemstack (6.71s)">
<polygon fill="#f8f8f8" stroke="black" points="1766.5,-311 1677.5,-311 1677.5,-273 1766.5,-273 1766.5,-311"/>
<text text-anchor="middle" x="1722" y="-299.8" font-family="Times,serif" font-size="9.00">runtime.systemstack</text>
<text text-anchor="middle" x="1722" y="-289.8" font-family="Times,serif" font-size="9.00">0.23s(0.073%)</text>
<text text-anchor="middle" x="1722" y="-279.8" font-family="Times,serif" font-size="9.00">of 6.71s(2.13%)</text>
</a>
</g>
</g>
<!-- N47 -->
<g id="node48" class="node"><title>N47</title>
<g id="a_node48"><a xlink:title="runtime.(*mcache).nextFree.func1 (2.24s)">
<polygon fill="#f8f8f8" stroke="black" points="1791,-219 1653,-219 1653,-181 1791,-181 1791,-219"/>
<text text-anchor="middle" x="1722" y="-207.8" font-family="Times,serif" font-size="9.00">runtime.(*mcache).nextFree.func1</text>
<text text-anchor="middle" x="1722" y="-197.8" font-family="Times,serif" font-size="9.00">0.01s(0.0032%)</text>
<text text-anchor="middle" x="1722" y="-187.8" font-family="Times,serif" font-size="9.00">of 2.24s(0.71%)</text>
</a>
</g>
</g>
<!-- N30&#45;&gt;N47 -->
<g id="edge46" class="edge"><title>N30&#45;&gt;N47</title>
<g id="a_edge46"><a xlink:title="runtime.systemstack &#45;&gt; runtime.(*mcache).nextFree.func1 (2.24s)">
<path fill="none" stroke="black" d="M1722,-272.787C1722,-260.344 1722,-243.605 1722,-229.421"/>
<polygon fill="black" stroke="black" points="1725.5,-229.186 1722,-219.186 1718.5,-229.186 1725.5,-229.186"/>
</a>
</g>
<g id="a_edge46&#45;label"><a xlink:title="runtime.systemstack &#45;&gt; runtime.(*mcache).nextFree.func1 (2.24s)">
<text text-anchor="middle" x="1739" y="-243.8" font-family="Times,serif" font-size="14.00"> 2.24s</text>
</a>
</g>
</g>
<!-- N31&#45;&gt;N28 -->
<g id="edge43" class="edge"><title>N31&#45;&gt;N28</title>
<g id="a_edge43"><a xlink:title="runtime.rawstringtmp &#45;&gt; runtime.rawstring (2.34s)">
<path fill="none" stroke="black" d="M1861.52,-1044.29C1857.06,-1031.72 1851.03,-1014.78 1845.96,-1000.5"/>
<polygon fill="black" stroke="black" points="1849.11,-998.935 1842.47,-990.686 1842.52,-1001.28 1849.11,-998.935"/>
</a>
</g>
<g id="a_edge43&#45;label"><a xlink:title="runtime.rawstringtmp &#45;&gt; runtime.rawstring (2.34s)">
<text text-anchor="middle" x="1870" y="-1013.8" font-family="Times,serif" font-size="14.00"> 2.34s</text>
</a>
</g>
</g>
<!-- N32 -->
<g id="node33" class="node"><title>N32</title>
<g id="a_node33"><a xlink:title="bufio.(*Reader).Read (2.31s)">
<polygon fill="#f8f8f8" stroke="black" points="1617.5,-739 1524.5,-739 1524.5,-701 1617.5,-701 1617.5,-739"/>
<text text-anchor="middle" x="1571" y="-727.8" font-family="Times,serif" font-size="9.00">bufio.(*Reader).Read</text>
<text text-anchor="middle" x="1571" y="-717.8" font-family="Times,serif" font-size="9.00">0.09s(0.029%)</text>
<text text-anchor="middle" x="1571" y="-707.8" font-family="Times,serif" font-size="9.00">of 2.31s(0.73%)</text>
</a>
</g>
</g>
<!-- N52 -->
<g id="node53" class="node"><title>N52</title>
<g id="a_node53"><a xlink:title="os.(*File).Read (2.14s)">
<polygon fill="#f8f8f8" stroke="black" points="1616,-607 1542,-607 1542,-571 1616,-571 1616,-607"/>
<text text-anchor="middle" x="1579" y="-591.6" font-family="Times,serif" font-size="8.00">os.(*File).Read</text>
<text text-anchor="middle" x="1579" y="-582.6" font-family="Times,serif" font-size="8.00">0 of 2.14s(0.68%)</text>
</a>
</g>
</g>
<!-- N32&#45;&gt;N52 -->
<g id="edge50" class="edge"><title>N32&#45;&gt;N52</title>
<g id="a_edge50"><a xlink:title="bufio.(*Reader).Read &#45;&gt; os.(*File).Read (2.14s)">
<path fill="none" stroke="black" d="M1564.18,-700.788C1559.37,-685.585 1554.37,-663.353 1558,-644 1559.73,-634.762 1563,-625.074 1566.45,-616.495"/>
<polygon fill="black" stroke="black" points="1569.78,-617.597 1570.5,-607.027 1563.35,-614.844 1569.78,-617.597"/>
</a>
</g>
<g id="a_edge50&#45;label"><a xlink:title="bufio.(*Reader).Read &#45;&gt; os.(*File).Read (2.14s)">
<text text-anchor="middle" x="1575" y="-647.8" font-family="Times,serif" font-size="14.00"> 2.14s</text>
</a>
</g>
</g>
<!-- N33&#45;&gt;N30 -->
<g id="edge34" class="edge"><title>N33&#45;&gt;N30</title>
<g id="a_edge34"><a xlink:title="runtime.(*mcache).nextFree &#45;&gt; runtime.systemstack (3.23s)">
<path fill="none" stroke="black" d="M1722,-361.974C1722,-350.192 1722,-334.561 1722,-321.158"/>
<polygon fill="black" stroke="black" points="1725.5,-321.003 1722,-311.003 1718.5,-321.003 1725.5,-321.003"/>
</a>
</g>
<g id="a_edge34&#45;label"><a xlink:title="runtime.(*mcache).nextFree &#45;&gt; runtime.systemstack (3.23s)">
<text text-anchor="middle" x="1739" y="-332.8" font-family="Times,serif" font-size="14.00"> 3.23s</text>
</a>
</g>
</g>
<!-- N34 -->
<g id="node35" class="node"><title>N34</title>
<g id="a_node35"><a xlink:title="compress/flate.(*decompressor).nextBlock (177.78s)">
<polygon fill="#f8f8f8" stroke="black" points="683,-990.5 515,-990.5 515,-952.5 683,-952.5 683,-990.5"/>
<text text-anchor="middle" x="599" y="-979.3" font-family="Times,serif" font-size="9.00">compress/flate.(*decompressor).nextBlock</text>
<text text-anchor="middle" x="599" y="-969.3" font-family="Times,serif" font-size="9.00">0.05s(0.016%)</text>
<text text-anchor="middle" x="599" y="-959.3" font-family="Times,serif" font-size="9.00">of 177.78s(56.40%)</text>
</a>
</g>
</g>
<!-- N34&#45;&gt;N2 -->
<g id="edge7" class="edge"><title>N34&#45;&gt;N2</title>
<g id="a_edge7"><a xlink:title="compress/flate.(*decompressor).nextBlock &#45;&gt; compress/flate.(*decompressor).huffmanBlock (169.26s)">
<path fill="none" stroke="black" stroke-width="3" d="M599,-952.425C599,-941.02 599,-925.65 599,-910.626"/>
<polygon fill="black" stroke="black" stroke-width="3" points="602.5,-910.334 599,-900.334 595.5,-910.334 602.5,-910.334"/>
</a>
</g>
<g id="a_edge7&#45;label"><a xlink:title="compress/flate.(*decompressor).nextBlock &#45;&gt; compress/flate.(*decompressor).huffmanBlock (169.26s)">
<text text-anchor="middle" x="622.5" y="-921.8" font-family="Times,serif" font-size="14.00"> 169.26s</text>
</a>
</g>
</g>
<!-- N34&#45;&gt;N22 -->
<g id="edge23" class="edge"><title>N34&#45;&gt;N22</title>
<g id="a_edge23"><a xlink:title="compress/flate.(*decompressor).nextBlock &#45;&gt; compress/flate.(*decompressor).readHuffman (8.42s)">
<path fill="none" stroke="black" d="M667.044,-952.434C716.032,-939.022 783.515,-919.712 842,-900 858.868,-894.315 876.983,-887.591 893.506,-881.209"/>
<polygon fill="black" stroke="black" points="894.981,-884.39 903.03,-877.501 892.441,-877.867 894.981,-884.39"/>
</a>
</g>
<g id="a_edge23&#45;label"><a xlink:title="compress/flate.(*decompressor).nextBlock &#45;&gt; compress/flate.(*decompressor).readHuffman (8.42s)">
<text text-anchor="middle" x="800" y="-921.8" font-family="Times,serif" font-size="14.00"> 8.42s</text>
</a>
</g>
</g>
<!-- N40 -->
<g id="node41" class="node"><title>N40</title>
<g id="a_node41"><a xlink:title="github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt (3.58s)">
<polygon fill="#f8f8f8" stroke="black" points="1523.5,-608 1304.5,-608 1304.5,-570 1523.5,-570 1523.5,-608"/>
<text text-anchor="middle" x="1414" y="-596.8" font-family="Times,serif" font-size="9.00">github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt</text>
<text text-anchor="middle" x="1414" y="-586.8" font-family="Times,serif" font-size="9.00">0.03s(0.0095%)</text>
<text text-anchor="middle" x="1414" y="-576.8" font-family="Times,serif" font-size="9.00">of 3.58s(1.14%)</text>
</a>
</g>
</g>
<!-- N35&#45;&gt;N40 -->
<g id="edge32" class="edge"><title>N35&#45;&gt;N40</title>
<g id="a_edge32"><a xlink:title="github.com/biogo/hts/bgzf.(*Reader).nextBlock &#45;&gt; github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt (3.58s)">
<path fill="none" stroke="black" d="M1414,-700.791C1414,-679.279 1414,-643.246 1414,-618.135"/>
<polygon fill="black" stroke="black" points="1417.5,-618.116 1414,-608.116 1410.5,-618.116 1417.5,-618.116"/>
</a>
</g>
<g id="a_edge32&#45;label"><a xlink:title="github.com/biogo/hts/bgzf.(*Reader).nextBlock &#45;&gt; github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt (3.58s)">
<text text-anchor="middle" x="1431" y="-647.8" font-family="Times,serif" font-size="14.00"> 3.58s</text>
</a>
</g>
</g>
<!-- N36 -->
<g id="node37" class="node"><title>N36</title>
<g id="a_node37"><a xlink:title="runtime.newstack (2.74s)">
<polygon fill="#f8f8f8" stroke="black" points="1000.5,-1458 921.5,-1458 921.5,-1420 1000.5,-1420 1000.5,-1458"/>
<text text-anchor="middle" x="961" y="-1446.8" font-family="Times,serif" font-size="9.00">runtime.newstack</text>
<text text-anchor="middle" x="961" y="-1436.8" font-family="Times,serif" font-size="9.00">0.05s(0.016%)</text>
<text text-anchor="middle" x="961" y="-1426.8" font-family="Times,serif" font-size="9.00">of 2.74s(0.87%)</text>
</a>
</g>
</g>
<!-- N44 -->
<g id="node45" class="node"><title>N44</title>
<g id="a_node45"><a xlink:title="runtime.copystack (2.77s)">
<polygon fill="#f8f8f8" stroke="black" points="1001.5,-1366 920.5,-1366 920.5,-1328 1001.5,-1328 1001.5,-1366"/>
<text text-anchor="middle" x="961" y="-1354.8" font-family="Times,serif" font-size="9.00">runtime.copystack</text>
<text text-anchor="middle" x="961" y="-1344.8" font-family="Times,serif" font-size="9.00">0.02s(0.0063%)</text>
<text text-anchor="middle" x="961" y="-1334.8" font-family="Times,serif" font-size="9.00">of 2.77s(0.88%)</text>
</a>
</g>
</g>
<!-- N36&#45;&gt;N44 -->
<g id="edge39" class="edge"><title>N36&#45;&gt;N44</title>
<g id="a_edge39"><a xlink:title="runtime.newstack &#45;&gt; runtime.copystack (2.67s)">
<path fill="none" stroke="black" d="M961,-1419.79C961,-1407.34 961,-1390.61 961,-1376.42"/>
<polygon fill="black" stroke="black" points="964.5,-1376.19 961,-1366.19 957.5,-1376.19 964.5,-1376.19"/>
</a>
</g>
<g id="a_edge39&#45;label"><a xlink:title="runtime.newstack &#45;&gt; runtime.copystack (2.67s)">
<text text-anchor="middle" x="978" y="-1390.8" font-family="Times,serif" font-size="14.00"> 2.67s</text>
</a>
</g>
</g>
<!-- N37 -->
<g id="node38" class="node"><title>N37</title>
<g id="a_node38"><a xlink:title="compress/flate.(*decompressor).Read (258.42s)">
<polygon fill="#f8f8f8" stroke="black" points="674,-1082.5 524,-1082.5 524,-1044.5 674,-1044.5 674,-1082.5"/>
<text text-anchor="middle" x="599" y="-1071.3" font-family="Times,serif" font-size="9.00">compress/flate.(*decompressor).Read</text>
<text text-anchor="middle" x="599" y="-1061.3" font-family="Times,serif" font-size="9.00">0.04s(0.013%)</text>
<text text-anchor="middle" x="599" y="-1051.3" font-family="Times,serif" font-size="9.00">of 258.42s(81.99%)</text>
</a>
</g>
</g>
<!-- N37&#45;&gt;N2 -->
<g id="edge9" class="edge"><title>N37&#45;&gt;N2</title>
<g id="a_edge9"><a xlink:title="compress/flate.(*decompressor).Read &#45;&gt; compress/flate.(*decompressor).huffmanBlock (79.57s)">
<path fill="none" stroke="black" stroke-width="2" d="M534.421,-1044.48C508.434,-1033.71 481.091,-1017.08 466,-992 446.604,-959.766 471.333,-929.501 504.52,-905.918"/>
<polygon fill="black" stroke="black" stroke-width="2" points="506.819,-908.588 513.118,-900.069 502.881,-902.8 506.819,-908.588"/>
</a>
</g>
<g id="a_edge9&#45;label"><a xlink:title="compress/flate.(*decompressor).Read &#45;&gt; compress/flate.(*decompressor).huffmanBlock (79.57s)">
<text text-anchor="middle" x="486" y="-967.8" font-family="Times,serif" font-size="14.00"> 79.57s</text>
</a>
</g>
</g>
<!-- N37&#45;&gt;N5 -->
<g id="edge63" class="edge"><title>N37&#45;&gt;N5</title>
<g id="a_edge63"><a xlink:title="compress/flate.(*decompressor).Read &#45;&gt; runtime.memmove (1.03s)">
<path fill="none" stroke="black" d="M523.766,-1057.43C377.281,-1046.55 68,-1018.17 68,-972.5 68,-972.5 68,-972.5 68,-719 68,-683.58 83.5764,-645.7 96.6012,-620.218"/>
<polygon fill="black" stroke="black" points="99.8478,-621.565 101.43,-611.089 93.6603,-618.292 99.8478,-621.565"/>
</a>
</g>
<g id="a_edge63&#45;label"><a xlink:title="compress/flate.(*decompressor).Read &#45;&gt; runtime.memmove (1.03s)">
<text text-anchor="middle" x="85" y="-853.3" font-family="Times,serif" font-size="14.00"> 1.03s</text>
</a>
</g>
</g>
<!-- N37&#45;&gt;N34 -->
<g id="edge6" class="edge"><title>N37&#45;&gt;N34</title>
<g id="a_edge6"><a xlink:title="compress/flate.(*decompressor).Read &#45;&gt; compress/flate.(*decompressor).nextBlock (177.78s)">
<path fill="none" stroke="black" stroke-width="3" d="M599,-1044.29C599,-1031.84 599,-1015.11 599,-1000.92"/>
<polygon fill="black" stroke="black" stroke-width="3" points="602.5,-1000.69 599,-990.686 595.5,-1000.69 602.5,-1000.69"/>
</a>
</g>
<g id="a_edge6&#45;label"><a xlink:title="compress/flate.(*decompressor).Read &#45;&gt; compress/flate.(*decompressor).nextBlock (177.78s)">
<text text-anchor="middle" x="622.5" y="-1013.8" font-family="Times,serif" font-size="14.00"> 177.78s</text>
</a>
</g>
</g>
<!-- N38 -->
<g id="node39" class="node"><title>N38</title>
<g id="a_node39"><a xlink:title="compress/gzip.(*Reader).Read (269.81s)">
<polygon fill="#f8f8f8" stroke="black" points="661.5,-1176 536.5,-1176 536.5,-1138 661.5,-1138 661.5,-1176"/>
<text text-anchor="middle" x="599" y="-1164.8" font-family="Times,serif" font-size="9.00">compress/gzip.(*Reader).Read</text>
<text text-anchor="middle" x="599" y="-1154.8" font-family="Times,serif" font-size="9.00">0.04s(0.013%)</text>
<text text-anchor="middle" x="599" y="-1144.8" font-family="Times,serif" font-size="9.00">of 269.81s(85.60%)</text>
</a>
</g>
</g>
<!-- N38&#45;&gt;N37 -->
<g id="edge5" class="edge"><title>N38&#45;&gt;N37</title>
<g id="a_edge5"><a xlink:title="compress/gzip.(*Reader).Read &#45;&gt; compress/flate.(*decompressor).Read (258.42s)">
<path fill="none" stroke="black" stroke-width="5" d="M599,-1137.92C599,-1125.01 599,-1107.4 599,-1092.66"/>
<polygon fill="black" stroke="black" stroke-width="5" points="603.375,-1092.54 599,-1082.54 594.625,-1092.54 603.375,-1092.54"/>
</a>
</g>
<g id="a_edge5&#45;label"><a xlink:title="compress/gzip.(*Reader).Read &#45;&gt; compress/flate.(*decompressor).Read (258.42s)">
<text text-anchor="middle" x="622.5" y="-1105.8" font-family="Times,serif" font-size="14.00"> 258.42s</text>
</a>
</g>
</g>
<!-- N39 -->
<g id="node40" class="node"><title>N39</title>
<g id="a_node40"><a xlink:title="hash/crc32.Update (11.28s)">
<polygon fill="#f8f8f8" stroke="black" points="775.5,-1082.5 692.5,-1082.5 692.5,-1044.5 775.5,-1044.5 775.5,-1082.5"/>
<text text-anchor="middle" x="734" y="-1071.3" font-family="Times,serif" font-size="9.00">hash/crc32.Update</text>
<text text-anchor="middle" x="734" y="-1061.3" font-family="Times,serif" font-size="9.00">0.04s(0.013%)</text>
<text text-anchor="middle" x="734" y="-1051.3" font-family="Times,serif" font-size="9.00">of 11.28s(3.58%)</text>
</a>
</g>
</g>
<!-- N38&#45;&gt;N39 -->
<g id="edge18" class="edge"><title>N38&#45;&gt;N39</title>
<g id="a_edge18"><a xlink:title="compress/gzip.(*Reader).Read &#45;&gt; hash/crc32.Update (11.24s)">
<path fill="none" stroke="black" d="M625.672,-1137.92C646.658,-1123.7 676.078,-1103.76 698.964,-1088.25"/>
<polygon fill="black" stroke="black" points="701.07,-1091.05 707.384,-1082.54 697.142,-1085.25 701.07,-1091.05"/>
</a>
</g>
<g id="a_edge18&#45;label"><a xlink:title="compress/gzip.(*Reader).Read &#45;&gt; hash/crc32.Update (11.24s)">
<text text-anchor="middle" x="699" y="-1105.8" font-family="Times,serif" font-size="14.00"> 11.24s</text>
</a>
</g>
</g>
<!-- N51 -->
<g id="node52" class="node"><title>N51</title>
<g id="a_node52"><a xlink:title="hash/crc32.ieeeInit.func1 (11.33s)">
<polygon fill="#f8f8f8" stroke="black" points="997,-989.5 899,-989.5 899,-953.5 997,-953.5 997,-989.5"/>
<text text-anchor="middle" x="948" y="-974.1" font-family="Times,serif" font-size="8.00">hash/crc32.ieeeInit.func1</text>
<text text-anchor="middle" x="948" y="-965.1" font-family="Times,serif" font-size="8.00">0 of 11.33s(3.59%)</text>
</a>
</g>
</g>
<!-- N39&#45;&gt;N51 -->
<g id="edge19" class="edge"><title>N39&#45;&gt;N51</title>
<g id="a_edge19"><a xlink:title="hash/crc32.Update &#45;&gt; hash/crc32.ieeeInit.func1 (11.21s)">
<path fill="none" stroke="black" d="M775.515,-1045.04C810.439,-1030.35 860.485,-1009.31 897.682,-993.662"/>
<polygon fill="black" stroke="black" points="899.466,-996.709 907.327,-989.606 896.752,-990.256 899.466,-996.709"/>
</a>
</g>
<g id="a_edge19&#45;label"><a xlink:title="hash/crc32.Update &#45;&gt; hash/crc32.ieeeInit.func1 (11.21s)">
<text text-anchor="middle" x="874" y="-1013.8" font-family="Times,serif" font-size="14.00"> 11.21s</text>
</a>
</g>
</g>
<!-- N42 -->
<g id="node43" class="node"><title>N42</title>
<g id="a_node43"><a xlink:title="github.com/biogo/hts/bgzf.(*decompressor).readMember (3.05s)">
<polygon fill="#f8f8f8" stroke="black" points="1523.5,-495 1304.5,-495 1304.5,-457 1523.5,-457 1523.5,-495"/>
<text text-anchor="middle" x="1414" y="-483.8" font-family="Times,serif" font-size="9.00">github.com/biogo/hts/bgzf.(*decompressor).readMember</text>
<text text-anchor="middle" x="1414" y="-473.8" font-family="Times,serif" font-size="9.00">0.02s(0.0063%)</text>
<text text-anchor="middle" x="1414" y="-463.8" font-family="Times,serif" font-size="9.00">of 3.05s(0.97%)</text>
</a>
</g>
</g>
<!-- N40&#45;&gt;N42 -->
<g id="edge36" class="edge"><title>N40&#45;&gt;N42</title>
<g id="a_edge36"><a xlink:title="github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt &#45;&gt; github.com/biogo/hts/bgzf.(*decompressor).readMember (3.05s)">
<path fill="none" stroke="black" d="M1414,-569.671C1414,-552.237 1414,-525.748 1414,-505.549"/>
<polygon fill="black" stroke="black" points="1417.5,-505.357 1414,-495.357 1410.5,-505.357 1417.5,-505.357"/>
</a>
</g>
<g id="a_edge36&#45;label"><a xlink:title="github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt &#45;&gt; github.com/biogo/hts/bgzf.(*decompressor).readMember (3.05s)">
<text text-anchor="middle" x="1431" y="-522.8" font-family="Times,serif" font-size="14.00"> 3.05s</text>
</a>
</g>
</g>
<!-- N41 -->
<g id="node42" class="node"><title>N41</title>
<g id="a_node42"><a xlink:title="github.com/biogo/hts/bgzf.(*block).readFrom (269.96s)">
<polygon fill="#f8f8f8" stroke="black" points="688.5,-1366 509.5,-1366 509.5,-1328 688.5,-1328 688.5,-1366"/>
<text text-anchor="middle" x="599" y="-1354.8" font-family="Times,serif" font-size="9.00">github.com/biogo/hts/bgzf.(*block).readFrom</text>
<text text-anchor="middle" x="599" y="-1344.8" font-family="Times,serif" font-size="9.00">0.02s(0.0063%)</text>
<text text-anchor="middle" x="599" y="-1334.8" font-family="Times,serif" font-size="9.00">of 269.96s(85.65%)</text>
</a>
</g>
</g>
<!-- N50 -->
<g id="node51" class="node"><title>N50</title>
<g id="a_node51"><a xlink:title="github.com/biogo/hts/bgzf.readToEOF (269.81s)">
<polygon fill="#f8f8f8" stroke="black" points="669,-1270 529,-1270 529,-1234 669,-1234 669,-1270"/>
<text text-anchor="middle" x="599" y="-1254.6" font-family="Times,serif" font-size="8.00">github.com/biogo/hts/bgzf.readToEOF</text>
<text text-anchor="middle" x="599" y="-1245.6" font-family="Times,serif" font-size="8.00">0 of 269.81s(85.60%)</text>
</a>
</g>
</g>
<!-- N41&#45;&gt;N50 -->
<g id="edge3" class="edge"><title>N41&#45;&gt;N50</title>
<g id="a_edge3"><a xlink:title="github.com/biogo/hts/bgzf.(*block).readFrom &#45;&gt; github.com/biogo/hts/bgzf.readToEOF (269.81s)">
<path fill="none" stroke="black" stroke-width="5" d="M599,-1327.63C599,-1314.17 599,-1295.67 599,-1280.46"/>
<polygon fill="black" stroke="black" stroke-width="5" points="603.375,-1280.08 599,-1270.08 594.625,-1280.08 603.375,-1280.08"/>
</a>
</g>
<g id="a_edge3&#45;label"><a xlink:title="github.com/biogo/hts/bgzf.(*block).readFrom &#45;&gt; github.com/biogo/hts/bgzf.readToEOF (269.81s)">
<text text-anchor="middle" x="622.5" y="-1295.8" font-family="Times,serif" font-size="14.00"> 269.81s</text>
</a>
</g>
</g>
<!-- N43 -->
<g id="node44" class="node"><title>N43</title>
<g id="a_node44"><a xlink:title="runtime.(*mcache).refill (2.23s)">
<polygon fill="#f8f8f8" stroke="black" points="1772.5,-127 1671.5,-127 1671.5,-89 1772.5,-89 1772.5,-127"/>
<text text-anchor="middle" x="1722" y="-115.8" font-family="Times,serif" font-size="9.00">runtime.(*mcache).refill</text>
<text text-anchor="middle" x="1722" y="-105.8" font-family="Times,serif" font-size="9.00">0.02s(0.0063%)</text>
<text text-anchor="middle" x="1722" y="-95.8" font-family="Times,serif" font-size="9.00">of 2.23s(0.71%)</text>
</a>
</g>
</g>
<!-- N43&#45;&gt;N29 -->
<g id="edge48" class="edge"><title>N43&#45;&gt;N29</title>
<g id="a_edge48"><a xlink:title="runtime.(*mcache).refill &#45;&gt; runtime.(*mcentral).cacheSpan (2.21s)">
<path fill="none" stroke="black" d="M1722,-88.9735C1722,-77.1918 1722,-61.5607 1722,-48.1581"/>
<polygon fill="black" stroke="black" points="1725.5,-48.0033 1722,-38.0034 1718.5,-48.0034 1725.5,-48.0033"/>
</a>
</g>
<g id="a_edge48&#45;label"><a xlink:title="runtime.(*mcache).refill &#45;&gt; runtime.(*mcentral).cacheSpan (2.21s)">
<text text-anchor="middle" x="1739" y="-59.8" font-family="Times,serif" font-size="14.00"> 2.21s</text>
</a>
</g>
</g>
<!-- N44&#45;&gt;N25 -->
<g id="edge42" class="edge"><title>N44&#45;&gt;N25</title>
<g id="a_edge42"><a xlink:title="runtime.copystack &#45;&gt; runtime.gentraceback (2.48s)">
<path fill="none" stroke="black" d="M961,-1327.63C961,-1314.85 961,-1297.53 961,-1282.79"/>
<polygon fill="black" stroke="black" points="964.5,-1282.62 961,-1272.62 957.5,-1282.62 964.5,-1282.62"/>
</a>
</g>
<g id="a_edge42&#45;label"><a xlink:title="runtime.copystack &#45;&gt; runtime.gentraceback (2.48s)">
<text text-anchor="middle" x="978" y="-1295.8" font-family="Times,serif" font-size="14.00"> 2.48s</text>
</a>
</g>
</g>
<!-- N45 -->
<g id="node46" class="node"><title>N45</title>
<g id="a_node46"><a xlink:title="runtime.morestack (2.76s)">
<polygon fill="#f8f8f8" stroke="black" points="1002,-1654.5 920,-1654.5 920,-1616.5 1002,-1616.5 1002,-1654.5"/>
<text text-anchor="middle" x="961" y="-1643.3" font-family="Times,serif" font-size="9.00">runtime.morestack</text>
<text text-anchor="middle" x="961" y="-1633.3" font-family="Times,serif" font-size="9.00">0.02s(0.0063%)</text>
<text text-anchor="middle" x="961" y="-1623.3" font-family="Times,serif" font-size="9.00">of 2.76s(0.88%)</text>
</a>
</g>
</g>
<!-- N45&#45;&gt;N36 -->
<g id="edge38" class="edge"><title>N45&#45;&gt;N36</title>
<g id="a_edge38"><a xlink:title="runtime.morestack &#45;&gt; runtime.newstack (2.74s)">
<path fill="none" stroke="black" d="M961,-1616.2C961,-1582.09 961,-1508.57 961,-1468.11"/>
<polygon fill="black" stroke="black" points="964.5,-1468.11 961,-1458.11 957.5,-1468.11 964.5,-1468.11"/>
</a>
</g>
<g id="a_edge38&#45;label"><a xlink:title="runtime.morestack &#45;&gt; runtime.newstack (2.74s)">
<text text-anchor="middle" x="978" y="-1479.8" font-family="Times,serif" font-size="14.00"> 2.74s</text>
</a>
</g>
</g>
<!-- N46 -->
<g id="node47" class="node"><title>N46</title>
<g id="a_node47"><a xlink:title="syscall.read (2.14s)">
<polygon fill="#f8f8f8" stroke="black" points="1616.5,-311 1541.5,-311 1541.5,-273 1616.5,-273 1616.5,-311"/>
<text text-anchor="middle" x="1579" y="-299.8" font-family="Times,serif" font-size="9.00">syscall.read</text>
<text text-anchor="middle" x="1579" y="-289.8" font-family="Times,serif" font-size="9.00">0.02s(0.0063%)</text>
<text text-anchor="middle" x="1579" y="-279.8" font-family="Times,serif" font-size="9.00">of 2.14s(0.68%)</text>
</a>
</g>
</g>
<!-- N46&#45;&gt;N14 -->
<g id="edge54" class="edge"><title>N46&#45;&gt;N14</title>
<g id="a_edge54"><a xlink:title="syscall.read &#45;&gt; syscall.Syscall (2.12s)">
<path fill="none" stroke="black" d="M1579,-272.787C1579,-261.196 1579,-245.876 1579,-232.367"/>
<polygon fill="black" stroke="black" points="1582.5,-232.026 1579,-222.026 1575.5,-232.026 1582.5,-232.026"/>
</a>
</g>
<g id="a_edge54&#45;label"><a xlink:title="syscall.read &#45;&gt; syscall.Syscall (2.12s)">
<text text-anchor="middle" x="1596" y="-243.8" font-family="Times,serif" font-size="14.00"> 2.12s</text>
</a>
</g>
</g>
<!-- N47&#45;&gt;N43 -->
<g id="edge47" class="edge"><title>N47&#45;&gt;N43</title>
<g id="a_edge47"><a xlink:title="runtime.(*mcache).nextFree.func1 &#45;&gt; runtime.(*mcache).refill (2.23s)">
<path fill="none" stroke="black" d="M1722,-180.787C1722,-168.344 1722,-151.605 1722,-137.421"/>
<polygon fill="black" stroke="black" points="1725.5,-137.186 1722,-127.186 1718.5,-137.186 1725.5,-137.186"/>
</a>
</g>
<g id="a_edge47&#45;label"><a xlink:title="runtime.(*mcache).nextFree.func1 &#45;&gt; runtime.(*mcache).refill (2.23s)">
<text text-anchor="middle" x="1739" y="-148.8" font-family="Times,serif" font-size="14.00"> 2.23s</text>
</a>
</g>
</g>
<!-- N48&#45;&gt;N32 -->
<g id="edge44" class="edge"><title>N48&#45;&gt;N32</title>
<g id="a_edge44"><a xlink:title="github.com/biogo/hts/bgzf.(*countReader).Read &#45;&gt; bufio.(*Reader).Read (2.31s)">
<path fill="none" stroke="black" d="M1552.66,-838.902C1556.17,-816.353 1562.39,-776.37 1566.6,-749.284"/>
<polygon fill="black" stroke="black" points="1570.08,-749.67 1568.16,-739.251 1563.17,-748.594 1570.08,-749.67"/>
</a>
</g>
<g id="a_edge44&#45;label"><a xlink:title="github.com/biogo/hts/bgzf.(*countReader).Read &#45;&gt; bufio.(*Reader).Read (2.31s)">
<text text-anchor="middle" x="1578" y="-784.8" font-family="Times,serif" font-size="14.00"> 2.31s</text>
</a>
</g>
</g>
<!-- N49 -->
<g id="node50" class="node"><title>N49</title>
<g id="a_node50"><a xlink:title="github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt.func1 (270.07s)">
<polygon fill="#f8f8f8" stroke="black" points="708,-1457 490,-1457 490,-1421 708,-1421 708,-1457"/>
<text text-anchor="middle" x="599" y="-1441.6" font-family="Times,serif" font-size="8.00">github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt.func1</text>
<text text-anchor="middle" x="599" y="-1432.6" font-family="Times,serif" font-size="8.00">0 of 270.07s(85.68%)</text>
</a>
</g>
</g>
<!-- N49&#45;&gt;N41 -->
<g id="edge2" class="edge"><title>N49&#45;&gt;N41</title>
<g id="a_edge2"><a xlink:title="github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt.func1 &#45;&gt; github.com/biogo/hts/bgzf.(*block).readFrom (269.96s)">
<path fill="none" stroke="black" stroke-width="5" d="M599,-1420.65C599,-1408.07 599,-1390.79 599,-1376.23"/>
<polygon fill="black" stroke="black" stroke-width="5" points="603.375,-1376.23 599,-1366.23 594.625,-1376.23 603.375,-1376.23"/>
</a>
</g>
<g id="a_edge2&#45;label"><a xlink:title="github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt.func1 &#45;&gt; github.com/biogo/hts/bgzf.(*block).readFrom (269.96s)">
<text text-anchor="middle" x="622.5" y="-1390.8" font-family="Times,serif" font-size="14.00"> 269.96s</text>
</a>
</g>
</g>
<!-- N50&#45;&gt;N38 -->
<g id="edge4" class="edge"><title>N50&#45;&gt;N38</title>
<g id="a_edge4"><a xlink:title="github.com/biogo/hts/bgzf.readToEOF &#45;&gt; compress/gzip.(*Reader).Read (269.81s)">
<path fill="none" stroke="black" stroke-width="5" d="M599,-1233.94C599,-1220.65 599,-1201.9 599,-1186.36"/>
<polygon fill="black" stroke="black" stroke-width="5" points="603.375,-1186.22 599,-1176.22 594.625,-1186.22 603.375,-1186.22"/>
</a>
</g>
<g id="a_edge4&#45;label"><a xlink:title="github.com/biogo/hts/bgzf.readToEOF &#45;&gt; compress/gzip.(*Reader).Read (269.81s)">
<text text-anchor="middle" x="622.5" y="-1200.8" font-family="Times,serif" font-size="14.00"> 269.81s</text>
</a>
</g>
</g>
<!-- N51&#45;&gt;N6 -->
<g id="edge17" class="edge"><title>N51&#45;&gt;N6</title>
<g id="a_edge17"><a xlink:title="hash/crc32.ieeeInit.func1 &#45;&gt; hash/crc32.slicingUpdate (11.33s)">
<path fill="none" stroke="black" d="M978.072,-953.414C1008.19,-936.301 1055.21,-909.587 1091.84,-888.773"/>
<polygon fill="black" stroke="black" points="1093.95,-891.601 1100.91,-883.618 1090.49,-885.515 1093.95,-891.601"/>
</a>
</g>
<g id="a_edge17&#45;label"><a xlink:title="hash/crc32.ieeeInit.func1 &#45;&gt; hash/crc32.slicingUpdate (11.33s)">
<text text-anchor="middle" x="1056" y="-921.8" font-family="Times,serif" font-size="14.00"> 11.33s</text>
</a>
</g>
</g>
<!-- N53 -->
<g id="node54" class="node"><title>N53</title>
<g id="a_node54"><a xlink:title="os.(*File).read (2.14s)">
<polygon fill="#f8f8f8" stroke="black" points="1616,-494 1542,-494 1542,-458 1616,-458 1616,-494"/>
<text text-anchor="middle" x="1579" y="-478.6" font-family="Times,serif" font-size="8.00">os.(*File).read</text>
<text text-anchor="middle" x="1579" y="-469.6" font-family="Times,serif" font-size="8.00">0 of 2.14s(0.68%)</text>
</a>
</g>
</g>
<!-- N52&#45;&gt;N53 -->
<g id="edge51" class="edge"><title>N52&#45;&gt;N53</title>
<g id="a_edge51"><a xlink:title="os.(*File).Read &#45;&gt; os.(*File).read (2.14s)">
<path fill="none" stroke="black" d="M1579,-570.656C1579,-552.898 1579,-525.04 1579,-504.317"/>
<polygon fill="black" stroke="black" points="1582.5,-504.222 1579,-494.222 1575.5,-504.222 1582.5,-504.222"/>
</a>
</g>
<g id="a_edge51&#45;label"><a xlink:title="os.(*File).Read &#45;&gt; os.(*File).read (2.14s)">
<text text-anchor="middle" x="1596" y="-522.8" font-family="Times,serif" font-size="14.00"> 2.14s</text>
</a>
</g>
</g>
<!-- N56 -->
<g id="node57" class="node"><title>N56</title>
<g id="a_node57"><a xlink:title="syscall.Read (2.14s)">
<polygon fill="#f8f8f8" stroke="black" points="1616,-399 1542,-399 1542,-363 1616,-363 1616,-399"/>
<text text-anchor="middle" x="1579" y="-383.6" font-family="Times,serif" font-size="8.00">syscall.Read</text>
<text text-anchor="middle" x="1579" y="-374.6" font-family="Times,serif" font-size="8.00">0 of 2.14s(0.68%)</text>
</a>
</g>
</g>
<!-- N53&#45;&gt;N56 -->
<g id="edge52" class="edge"><title>N53&#45;&gt;N56</title>
<g id="a_edge52"><a xlink:title="os.(*File).read &#45;&gt; syscall.Read (2.14s)">
<path fill="none" stroke="black" d="M1579,-457.942C1579,-444.394 1579,-425.18 1579,-409.469"/>
<polygon fill="black" stroke="black" points="1582.5,-409.264 1579,-399.264 1575.5,-409.264 1582.5,-409.264"/>
</a>
</g>
<g id="a_edge52&#45;label"><a xlink:title="os.(*File).read &#45;&gt; syscall.Read (2.14s)">
<text text-anchor="middle" x="1596" y="-421.8" font-family="Times,serif" font-size="14.00"> 2.14s</text>
</a>
</g>
</g>
<!-- N54 -->
<g id="node55" class="node"><title>N54</title>
<g id="a_node55"><a xlink:title="runtime.goexit (311.67s)">
<polygon fill="#f8f8f8" stroke="black" points="642,-1653.5 556,-1653.5 556,-1617.5 642,-1617.5 642,-1653.5"/>
<text text-anchor="middle" x="599" y="-1638.1" font-family="Times,serif" font-size="8.00">runtime.goexit</text>
<text text-anchor="middle" x="599" y="-1629.1" font-family="Times,serif" font-size="8.00">0 of 311.67s(98.88%)</text>
</a>
</g>
</g>
<!-- N54&#45;&gt;N49 -->
<g id="edge1" class="edge"><title>N54&#45;&gt;N49</title>
<g id="a_edge1"><a xlink:title="runtime.goexit &#45;&gt; github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt.func1 (270.07s)">
<path fill="none" stroke="black" stroke-width="5" d="M599,-1617.24C599,-1583.36 599,-1507.91 599,-1467.24"/>
<polygon fill="black" stroke="black" stroke-width="5" points="603.375,-1467.22 599,-1457.22 594.625,-1467.22 603.375,-1467.22"/>
</a>
</g>
<g id="a_edge1&#45;label"><a xlink:title="runtime.goexit &#45;&gt; github.com/biogo/hts/bgzf.(*decompressor).nextBlockAt.func1 (270.07s)">
<text text-anchor="middle" x="622.5" y="-1479.8" font-family="Times,serif" font-size="14.00"> 270.07s</text>
</a>
</g>
</g>
<!-- N55 -->
<g id="node56" class="node"><title>N55</title>
<g id="a_node56"><a xlink:title="runtime.main (40.43s)">
<polygon fill="#f8f8f8" stroke="black" points="810,-1457 728,-1457 728,-1421 810,-1421 810,-1457"/>
<text text-anchor="middle" x="769" y="-1441.6" font-family="Times,serif" font-size="8.00">runtime.main</text>
<text text-anchor="middle" x="769" y="-1432.6" font-family="Times,serif" font-size="8.00">0 of 40.43s(12.83%)</text>
</a>
</g>
</g>
<!-- N54&#45;&gt;N55 -->
<g id="edge11" class="edge"><title>N54&#45;&gt;N55</title>
<g id="a_edge11"><a xlink:title="runtime.goexit &#45;&gt; runtime.main (40.43s)">
<path fill="none" stroke="black" d="M614.086,-1617.24C644.267,-1582.71 712.181,-1505.01 747.201,-1464.94"/>
<polygon fill="black" stroke="black" points="750.002,-1467.05 753.947,-1457.22 744.731,-1462.45 750.002,-1467.05"/>
</a>
</g>
<g id="a_edge11&#45;label"><a xlink:title="runtime.goexit &#45;&gt; runtime.main (40.43s)">
<text text-anchor="middle" x="757" y="-1479.8" font-family="Times,serif" font-size="14.00"> 40.43s</text>
</a>
</g>
</g>
<!-- N55&#45;&gt;N11 -->
<g id="edge12" class="edge"><title>N55&#45;&gt;N11</title>
<g id="a_edge12"><a xlink:title="runtime.main &#45;&gt; main.main (40.43s)">
<path fill="none" stroke="black" d="M772.085,-1420.65C774.169,-1408.92 776.98,-1393.11 779.447,-1379.24"/>
<polygon fill="black" stroke="black" points="782.944,-1379.56 781.249,-1369.1 776.052,-1378.33 782.944,-1379.56"/>
</a>
</g>
<g id="a_edge12&#45;label"><a xlink:title="runtime.main &#45;&gt; main.main (40.43s)">
<text text-anchor="middle" x="798" y="-1390.8" font-family="Times,serif" font-size="14.00"> 40.43s</text>
</a>
</g>
</g>
<!-- N56&#45;&gt;N46 -->
<g id="edge53" class="edge"><title>N56&#45;&gt;N46</title>
<g id="a_edge53"><a xlink:title="syscall.Read &#45;&gt; syscall.read (2.14s)">
<path fill="none" stroke="black" d="M1579,-362.812C1579,-351.011 1579,-335.072 1579,-321.404"/>
<polygon fill="black" stroke="black" points="1582.5,-321.051 1579,-311.051 1575.5,-321.051 1582.5,-321.051"/>
</a>
</g>
<g id="a_edge53&#45;label"><a xlink:title="syscall.Read &#45;&gt; syscall.read (2.14s)">
<text text-anchor="middle" x="1596" y="-332.8" font-family="Times,serif" font-size="14.00"> 2.14s</text>
</a>
</g>
</g>
</g>
</g></svg>
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
// Copyright ©2017 The bíogo Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// This program tabulates statistics on a bam file from the sam flag.
// It replicates functionality in samtools flagstat.
package main
import (
"flag"
"fmt"
"io"
"log"
"os"
"runtime/pprof"
"github.com/biogo/hts/bam"
"github.com/biogo/hts/bgzf"
"github.com/biogo/hts/sam"
)
const (
pass = iota
fail
)
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
func main() {
flag.Parse()
if len(flag.Args()) != 1 {
log.Fatal("Expecting a single bam argument")
}
if *cpuprofile != "" {
f, err := os.Create(*cpuprofile)
if err != nil {
log.Fatal(err)
}
defer f.Close()
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
}
f, err := os.Open(flag.Args()[0])
if err != nil {
log.Fatal(err)
}
defer f.Close()
ok, err := bgzf.HasEOF(f)
if err != nil {
log.Fatal(err)
}
if !ok {
log.Println("EOF block missing")
}
b, err := bam.NewReader(f, 0)
if err != nil {
log.Fatal(err)
}
defer b.Close()
b.Omit(bam.AllVariableLengthData)
// counts is indexed by [pass/fail][sam.Flag] where we have 12 possible sam Flags.
var counts [2][12]uint64
// track mates on different chromosomes.
var mates [2]struct{ allMapQ, highMapQ uint64 }
var good, singletons, paired [2]uint64
var qc int
for {
read, err := b.Read()
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
}
if read.Flags&sam.QCFail == 0 {
qc = pass
} else {
qc = fail
}
for i := Paired; i <= Supplementary; i++ {
if read.Flags&(1<<i) != 0 {
counts[qc][i]++
}
}
const goodMask = sam.ProperPair | sam.Unmapped
if read.Flags&goodMask == sam.ProperPair {
good[qc]++
}
const mapMask = sam.MateUnmapped | sam.Unmapped
switch read.Flags & mapMask {
case sam.MateUnmapped:
singletons[qc]++
case 0:
paired[qc]++
if read.MateRef != read.Ref && read.MateRef != nil && read.Ref != nil {
if read.MapQ > 4 {
mates[qc].highMapQ++
}
mates[qc].allMapQ++
}
}
}
// extract counts to match output from samtools flagstat.
fmt.Printf("%d + %d in total (QC-passed reads + QC-failed reads)\n", counts[pass][Paired], counts[fail][Paired])
fmt.Printf("%d + %d in total secondary\n", counts[pass][Secondary], counts[fail][Secondary])
fmt.Printf("%d + %d in total supplementary\n", counts[pass][Supplementary], counts[fail][Supplementary])
fmt.Printf("%d + %d duplicates\n", counts[pass][Duplicate], counts[fail][Duplicate])
mappedPass := counts[pass][Paired] - counts[pass][Unmapped]
mappedFail := counts[fail][Paired] - counts[fail][Unmapped]
fmt.Printf("%d + %d mapped (%s : %s)\n", mappedPass, mappedFail, percent(mappedPass, counts[pass][Paired]), percent(mappedFail, counts[fail][Paired]))
fmt.Printf("%d + %d paired in sequencing\n", counts[pass][Paired], counts[fail][Paired])
fmt.Printf("%d + %d read1\n", counts[pass][Read1], counts[fail][Read1])
fmt.Printf("%d + %d read2\n", counts[pass][Read2], counts[fail][Read2])
fmt.Printf("%d + %d properly paired (%s : %s)\n", good[pass], good[fail], percent(good[pass], counts[pass][Paired]), percent(good[fail], counts[fail][Paired]))
fmt.Printf("%d + %d with itself and mate mapped\n", paired[pass], paired[fail])
fmt.Printf("%d + %d singletons (%s : %s)\n", singletons[pass], singletons[fail], percent(singletons[pass], counts[pass][Paired]), percent(singletons[fail], counts[fail][Paired]))
fmt.Printf("%d + %d with mate mapped to a different chr\n", mates[pass].allMapQ, mates[fail].allMapQ)
fmt.Printf("%d + %d with mate mapped to a different chr (mapQ>=5)\n", mates[pass].highMapQ, mates[fail].highMapQ)
}
func percent(n, total uint64) string {
if total == 0 {
return "N/A"
}
return fmt.Sprintf("%.2f%%", 100*float64(n)/float64(total))
}
// The flag indexes for SAM flags. Reflects sam.Flag order.
const (
Paired uint = iota // The read is paired in sequencing, no matter whether it is mapped in a pair.
ProperPair // The read is mapped in a proper pair.
Unmapped // The read itself is unmapped; conflictive with ProperPair.
MateUnmapped // The mate is unmapped.
Reverse // The read is mapped to the reverse strand.
MateReverse // The mate is mapped to the reverse strand.
Read1 // This is read1.
Read2 // This is read2.
Secondary // Not primary alignment.
QCFail // QC failure.
Duplicate // Optical or PCR duplicate.
Supplementary // Supplementary alignment, indicates alignment is part of a chimeric alignment.
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment