Giter Club home page Giter Club logo

angularjs-genoverse's Introduction

AngularJS - Genoverse

Build Status npm version Bower version

An AngularJS (1.x) directive, wrapping the Genoverse genome browser version 3.

Read more about how to use the browser here: http://wtsi-web.github.io/Genoverse/.

Example

A complete example is available at: https://RNAcentral.github.io/angularjs-genoverse/

Use this directive as a "web component" in your HTML:

<genoverse genome="genome" chromosome="chromosome" start="start" end="end" example-locations="exampleLocations">
    <genoverse-track name="'Sequence'" model="Genoverse.Track.Model.Sequence.Ensembl" view="Genoverse.Track.View.Sequence" controller="Genoverse.Track.Controller.Sequence" url="urls.sequence" resizable="'auto'" auto-height="true" extra="{100000: false}"></genoverse-track>
    <genoverse-track name="'Genes'" labels="true" info="'Ensembl API genes'" model="Genoverse.Track.Model.Gene.Ensembl" view="Genoverse.Track.View.Gene.Ensembl" url="urls.genes" resizable="'auto'" auto-height="true"></genoverse-track>
    <genoverse-track name="'Transcripts'" labels="true" info="'Ensembl API transcripts'" model="Genoverse.Track.Model.Transcript.Ensembl" view="Genoverse.Track.View.Transcript.Ensembl" url="urls.transcripts" resizable="'auto'" auto-height="true"></genoverse-track>
</genoverse>

Installation and requirements

This package is available at NPM and Bower.

We don't provide wrappers for AMD, CommonJS or ECMA6 modules, so you might need a shim for Webpack, Browserify, SystemJS or RequireJS.

To include the script with this directive in your HTML, use:

<!-- Uglified version -->
<script src=".../angularjs-genoverse/dist/angularjs-genoverse.min.js"></script>

<!-- Concatenated, but non-obfuscated source -->
<script src=".../angularjs-genoverse/dist/angularjs-genoverse.all.js"></script>

You'll also need the Genoverse browser itself (both JS and CSS). You can either download it directly from github, or use the version, included in this repository's lib folder:

<!-- CSS -->
<link rel="stylesheet" href="/lib/Genoverse/css/genoverse.css">
<link rel="stylesheet" href="/lib/Genoverse/css/controlPanel.css">
<link rel="stylesheet" href="/lib/Genoverse/css/fileDrop.css">
<link rel="stylesheet" href="/lib/Genoverse/css/karyotype.css">
<link rel="stylesheet" href="/lib/Genoverse/css/resizer.css">
<link rel="stylesheet" href="/lib/Genoverse/css/trackControls.css">
<link rel="stylesheet" href="/lib/Genoverse/css/tooltips.css">

<!-- Javascript -->
<script src=".../angularjs-genoverse/lib/Genoverse/js/genoverse.combined.js"></script>
<script src=".../angularjs-genoverse/lib/Genoverse/js/genomes/grch38.js"></script>

To use it in your AngularJS module, you need to specify Genoverse module as a dependency, e.g.

angular.module("Example", ["Genoverse"]);

AngularJS-Genoverse depends on angular.js and jquery. Don't forget to include them as well.

Configuration

We have 2 directives in this package: <genoverse> and <genoverse-track>.

Below is the full description of their attributes that you can use to configure them.

Note that all attributes are interpolated, i.e. use 2-way data-binding. So if you try passing an attribute as <genoverse attr="val">, angular will look for variable, called "val", not a string "val". If you want just to pass a literal, use another pair of quotes like: <genoverse attr="'literal'".

genoverse

Global configuration of the browser. To specify tracks, use nested <genoverse-track> tags within genoverse.

For more details, see: https://github.com/simonbrent/Genoverse/blob/master/docs/configuration.md (:warning: This fork of Genoverse contains latest documentation, but obsolete codebase).

Attribute Type Required Default Description
genome Object true Name of genome to display with lowercase letters and underscore, e.g. 'homo_sapiens'
chr String true Ensembl-style chromosome name, e.g. 'X' or '1' or '3R' or 'III'
start Number true Current genome location, where viewport starts
end Number true Current genome location, where viewport ends
example-locations Object false What location to display, when switching to another species e.g. {'homo_sapiens': {'chr': 'X', 'start': 73819307, 'end': 73856333}}
highlights Array false [] Array of regions to highlight, in the form { "start": 100, "end", 200, "label": "My highlight", "removable": false }
plugins Array false ['controlPanel', 'karyotype', 'resizer', 'fileDrop'] Array of plugins to use (chosen from Genoverse/js/plugins) ! Default different from original Genoverse
url-param-template String/Boolean false false Replace url upon browser drags with this template interpolation ! Default different from original Genoverse
useHash Boolean/undefined false undefined How URL is updated upon navigation (options: true=window.location.hash, false=window.history.pushState, undefined=HTML5history if available or fallback to hash, if not)
drag-action String false "scroll" Action performed on mouse drag (options: "scroll", "select", "off")
wheel-action String false "off" Action performed on wheel spin (options: "zoom", "off")
is-static Boolean false false If true, will stop drag, select and zoom actions occuring
saveable Boolean false false If true, track configuration and ordering will be saved in sessionStorage/localStorage
storage-type String false "sessionStorage" Storage to use to save track configuration (options: "sessionStorage", "localStorage")
save-key String false undefined Default key, used in configuration storage is "genoverse". saveKey will be appended to it, if defined
auto-hide-messages Boolean false true Determines, whether to collapse popups with messages on tracks by default
track-auto-height Boolean/undefined false true Determines, whether to auto-resize tracks to show all feauteres (can be overridden per-track by track's auto-height)
hide-empty-tracks Boolean/undefined false true Determines, whether to auto-hide tracks with no features in viewport (can be overridden per-track with track's hide-empty)

genoverseTrack

Configuration of a single track. Note that you don't have to create Scalebar track - it's present by default.

For more details, see: https://github.com/simonbrent/Genoverse/blob/master/docs/tracks/configuration.md (:warning: This fork of Genoverse contains latest documentation, but obsolete codebase).

Attribute Type Required Default Description
model Object true Genoverse.Track.Model subclass
model-extra Object false Extra parameters to extend your model with: model.extend(modelExtra)
view Object true Genoverse.Track.View subclass
view-extra Object false Extra parameters to extend your view with: view.extend(viewExtra)
controller Object false Genoverse.Track.Controller subclass
controller-extra Object false Extra parameters to extend your controller with: controller.extend(controllerExtra)
extra Object false Extra parameters to extend your track's configuration, e.g. track.extend(extra)
name String true Track name
height Number false 12 Initial height of track in pixels
resizable Boolean/String false true If track's able to change height (options: true, false, "auto")
auto-height Boolean/undefined false browser.trackAutoHeight If track automatically resizes to keep features visible (options: true, false, undefined for default)
hide-empty Boolean/undefined false browser.hideEmptyTracks If track is hidden if there are no features to display in viewport (options: true, false, undefined for default)
margin Number false 2 Space in pixels below the track and next track
border Boolean false true If true, track has a border under it
unsortable Boolean false false If true, track re-ordering can't touch this track
url String/Function true ! Different from original Genoverse: String template OR function that returns string template that track uses to download features data to display.

E.g. 'https://rest.ensemblgenomes.org/sequence/region/homo_sapiens/__CHR__:__START__-__END__?content-type=text/plain'.

Note that it uses __ASSEMBLY__, __CHR__, __START__ and __END__ variables, but doesn't support a variable for species/genome.
url-params Object false undefined Object of query params, added to url, e.g. {'foo': 'bar', 'x': 'y'} -> /?foo=bar&x=y
data false undefined Instead of loading feautures with AJAX, pass them pre-defined.
all-data Boolean false false If all data are loaded in a single request and consequent AJAX calls are not required upon scrolling.
data-request-limit Number false undefined
data-type String false undefined dataType setting to be used in the jQuery.ajax for getting data ! Different from original Genoverse: default undefined, not "json"
xhr-fields PlainObject false undefined xhrFieds setting to be used in the jQuery.ajax for getting data
feature-height Number false track.height Height of each feature
feature-margin Object false { top: 3, right: 1, bottom: 1, left: 0 } Space in pixels around each feature, when positioning on canvas and for bumping
color String false "#000000" Color of each feature
font-color String false feature.color (if any) or track.color Default color for feature labels
font-weight String/Number false "normal" Font weight
font-height Number false 10 Font height
font-family String false "sans-serif" Font family
labels Boolean/String false true Determines, how labels are drawn (options: true, "overlay", "separate" or false)
repeat-labels Boolean false false If true, label is repeated along the length of feature
bump Boolean/String false false If features are moved vertically within the track so that they don't overlap (options: true, false, "labels")
depth Number false undefined Maximum bumping depth for features in track, if required depth for a features is greater, it's not drawn
threshold Number false Infinity If threshold is exceeded, features on track are not drawn
click-tolerance Number false 0 By how many pixels at most you can drag the mouse, so that it's still considered a click (showing a popup), not a drag.
id String false

angularjs-genoverse's People

Contributors

burkovba avatar simonbrent avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

krisgray

angularjs-genoverse's Issues

Isolated scope

I should create an isolated scope for this directive and pass all the arguments as tag attributes, instead of sharing the scope with parental controller.

Nested directives for tracks

I should implement genoverseTrack directive, representing configuration parameters of each Track as its tag attributes.

use my own data (from a local mysql server)?

thank you for this wonderful too.

I am new to Genoverse and this might be a dumb question: instead of loading data from Ensembl, is there a way to load my own data from a local MySQL server?

Please kindly provide some example codes.

Thank you very much.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.