
Security News
Vite+ Joins the Push to Consolidate JavaScript Tooling
Evan You announces Vite+, a commercial, Rust-powered toolchain built on the Vite ecosystem to unify JavaScript development and fund open source.
pileup.js is an interactive in-browser track viewer. Try a demo!
It is built from the ground up to take advantage of the modern JavaScript ecosystem, e.g. ES2015, static type analysis, React.js and Promises. Read more about the motivations behind pileup.js in our paper.
Showing a structural variant (large deletion):
To use pileup.js in a project, install it via NPM:
npm install --save pileup
And then source either node_modules/pileup/dist/pileup.min.js
or pileup.js
.
To create a pileup, use pileup.create()
. You specify a container DOM element,
an initial range and a list of tracks:
var div = document.getElementById('your-id');
var p = pileup.create(div, {
range: {contig: 'chr17', start: 7512384, stop: 7512544},
tracks: [
{
viz: pileup.viz.genome(),
isReference: true,
data: pileup.formats.twoBit({
url: 'http://www.biodalliance.org/datasets/hg19.2bit'
}),
name: 'Reference'
},
{
viz: pileup.viz.pileup(),
data: pileup.formats.bam({
url: '/test-data/synth3.normal.17.7500000-7515000.bam',
indexUrl: '/test-data/synth3.normal.17.7500000-7515000.bam.bai'
}),
cssClass: 'normal',
name: 'Alignments'
}
// ...
]
});
Each track has a name, a data source and a visualization. See
/examples/playground.js
for a complete set of
track types.
To style the track viewer, use CSS! pileup.js uses flexbox for track layout. You can view this codepen for a simple demo of the skeleton. For example, to allocate 1/3 of the space to a variant track and 2/3 to a pileup track, you could use this CSS:
.track.variants { flex: 1; }
.track.pileup { flex: 2; }
To style multiple tracks of the same type, you can use the cssClass
property.
The pileup object returned by pileup.create
has these methods:
setRange
: Update the visible range in the pileup. This takes a
GenomeRange
object, e.g. {contig: "chr17", start: 123, stop: 456}
. The
coordinates are 1-based and the range is inclusive on both ends.getRange
: Returns the currently-visible range. This is a GenomeRange
object (see description in setRange
).zoomIn
: Zooms current range in by a factor of 2.zoomOut
: Zooms current range out by a factor of 2.toSvg
: Converts pileup object to SVG data URL.destroy
: Tears down the pileup and releases references to allow proper
garbage collection.If you want to change the set of tracks in a pileup, tear it down and create a
new one. The caches are stored on the individual source and visualization
objects so, as long as you reuse these, the destroy
/ create
cycle is
relatively cheap and will not incur extra trips to the network.
git clone https://github.com/hammerlab/pileup.js.git
cd pileup.js
npm install
npm run build
To play with the demo, start an http-server:
npm run http-server
Then open http://localhost:8080/examples/index.html in your browser of choice.
To view integration with GA4GH schemas, view http://localhost:8080/examples/ga4gh-example.html.
Run the tests from the command line:
npm run test
Run the tests in a real browser:
npm run http-server
open http://localhost:8080/src/test/runner.html
To continuously regenerate the combined pileup and test JS, run:
npm run watch
To run a single test from the command line, use:
npm run test -- --grep=pileuputils
To do the same in the web UI, pass in a ?grep=
URL parameter.
To typecheck the code, run
npm run flow
For best results, use one of the flowtype editor integrations.
See DESIGN.md.
If you're looking for ideas, see ROADMAP.md
To cut a new release:
version
in both package.json
and pileup.js
. Commit this change.scripts/publish.sh
npm publish
pileup.js is Apache v2 licensed.
FAQs
JavaScript track viewer
We found that pileup demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Evan You announces Vite+, a commercial, Rust-powered toolchain built on the Vite ecosystem to unify JavaScript development and fund open source.
Security News
Ruby Central’s incident report on the RubyGems.org access dispute sparks backlash from former maintainers and renewed debate over project governance.
Research
/Security News
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.