1.3.3 • Published 9 years ago

cyto-chromosome-vis v1.3.3

Weekly downloads
2
License
Apache-2.0
Repository
github
Last release
9 years ago

cyto-chromosome-vis

npm version Dependency Status devDependency Status

Interactive visual representation/ web visualization tool for chromosome ideograms

This is a web component built with D3.js to render chromosome representations in SVG. Each chromosome has interactive features such as clicking a band, picking a specific cyto-location (base pair), or removing a specific selection. A convenient API is included to integrate user actions on the chromosomes with other js components.

This can be used in plain JavaScript (as a global namespace object), in Angular.js (as a directive or a service), or in CommonJS environments such as Node.js.

Demo

A demo is available here: http://linjoey.github.io/cyto-chromosome-vis/ npm.io

Usage

Install with npm: npm install --save cyto-chromosome-vis

Install with bower: bower install --save cyto-chromosome-vis

Use in plain JavaScript, Angular, or Node.js

Plain JavaScript

  • Include D3 and the project source: cyto-chromosome.js or cyto-chromosome.min.js from the project root.

  • Create a target div to host the chromosome

<div id="chrY"></div>
  • Instantiate a chromosome object.
var chromosomeFactory = cyto_chr.chromosome;
var x = chromosomeFactory()
        .segment("X")
        .target('#chrX')
        .render();

CommonJS

<div id="test"></div>
<script src="bundle.js"></script>
/*src.js*/
var chromosomeFactory = require('../cyto-chromosome-vis').chromosome;
chromosomeFactory()
  .target('#test')
  .render();

Here bundle.js is compiled with Browserify, e.g. browserify src.js > bundle.js

Angular.js

  • Include the module cyto-chromosome-vis as a project dependency
angular.module('demoApp',['cyto-chromosome-vis'])
  • Simply use the directive cytochromosome
<cytochromosome segment="X" width="1000" show-axis="true" use-relative="true" resolution="400"></cytochromosome>
  • If you require interacting with the chromosome instance from a controller, inject the service cytochromosome and instantiate manually:
<div id="chr3"></div>
var app = angular.module('demoApp',['cyto-chromosome-vis'])
        .config(['cytochromosomeProvider', function(cytochr) {
            cytochr.setDataDir('data/');
        }])

        .controller('main', function($scope, cytochromosome) {

            var c = cytochromosome.build()
                    .target("#chr3")
                    .segment(3)
                    .showAxis(true)
                    .render();


        })

If the data directory is moved from the default node_modules/cyto-chromosome-vis/data/, inject cytochromosomeProvider and configure the data path relative to the html page.

Once a chromosome is drawn, click a band to add a selector, alt/option click to add multiple selectors. Drag the edges of the selector to change the selection; click the red button on a selector to delete it.

Configurations API

Configure chromosomes with chromosome.config(type, value) or chromosome.type(value). chromosome.type() (no arguments) will return the current configuration. The default values for each configuration is shown below.

var s = cyto_chr.chromosome()
    .config('segment', "2")
    .config('target', '#chrX') 
    .config('resolution', "850") //400, 550, or 850
    .config('width', 1200)
    .config('useRelative', false)
    .config('showAxis', false)
    .render();
    
s.resolution(); //850
s.width(); //1200

chromosome.segment(string) The chromosome number to draw, e.g. "1" or "X" Default: 1

chromosome.target(string) id of a div to append the chromosome svg. Specify as string, e.g "#that-div" or a d3 selection Default: the root html document

chromosome.resolution(number) g-band resolutions Default: 550

chromosome.height(number) Height of the chromosome to draw. This is not the total svg height rendered. Default: 17

chromosome.width(number) Total width on the page to render Default: parent's width

chromosome.useRelative(bool) Render each chromosome relative to their real sizes. Setting this to false will draw the chromosome to the full width. Default: true

chromosome.showAxis(bool) Display the basepair axis below the chromosome Default: false

chromosome.selectionMode(string) Allow single or multiple selectors on each chromosome. 'multi' or 'single'. To add additional selectors, press and hold the alt/option key while clicking a new band. Default: 'single'

API

cyto_chr.chromosome() Create a new chromosome instance

chromosome.render() A call to render() will update the svg with the current configurations. If something is changed later, call to render() again to re-draw the chromosome.

chromosome.getSelections() Get an list of all the selections on the chromosome

chromosome.newSelector(start, stop) Create a new selector on the start and stop basepair of the chromosome

chromosome.moveSelectorTo(start, stop) Move the first selector to the start and stop basepair of the chromosome

chromosome.getSVGTarget() Get the current DOM SVG. This is a d3 selection.

chromosome.on(event, callback) Capture events from user interactions. Events emmited are: bandclick, selectorchange, selectorend, and selectordelete.

chromosome.on('bandclick', function(e) {
    //e contains contextual data
})

If the data directory is changed relative to the source, updated it with:

cyto_chr.modelLoader.setDataDir('../data/');

Date source:

Data is loaded from static files in the data/ directory. G-banding resolutions included are 400, 550, and 850.

ftp://ftp.ncbi.nlm.nih.gov/pub/gdp/

License

Apache License 2.0

1.3.3

9 years ago

1.3.2

9 years ago

1.3.1

9 years ago

1.3.0

9 years ago

1.1.0

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago