Giter Site home page Giter Site logo

gmod / jbrowse Goto Github PK

View Code? Open in Web Editor NEW
460.0 52.0 199.0 67.12 MB

JBrowse 1, a full-featured genome browser built with JavaScript and HTML5. For JBrowse 2, see https://github.com/GMOD/jbrowse-components.

Home Page: http://jbrowse.org

License: Other

CSS 0.28% HTML 0.75% JavaScript 70.13% Perl 24.04% Shell 0.58% Makefile 0.10% AngelScript 0.07% Python 1.33% SCSS 2.71% ActionScript 0.02%
genomics genome-browser genome-annotation protein-annotation bioinformatics biology

jbrowse's Introduction

Build status Contributor Covenant

Note: most of our current development is on JBrowse 2, see our github repo here https://github.com/gmod/jbrowse-components

We will still continue to make bug fix and maintenance releases of JBrowse 1 but most development is on JBrowse 2

Note: if you are using plugins with a dev version of JBrowse or installing from GitHub, you may need to use node <=14 (e.g. node >=15 may fail) due to node-sass not compiling on newer node versions easily. See #1607 for details

Installing JBrowse

To install jbrowse, visit http://jbrowse.org/blog and download the latest JBrowse zip file. See instructions at http://jbrowse.org/docs/installation.html for a tutorial on setting up a sample instance.

Install JBrowse from GitHub (for developers)

To install from GitHub, you can simply clone the repo and run the setup.sh script

git clone https://github.com/GMOD/jbrowse
cd jbrowse
./setup.sh

Develop JBrowse or JBrowse plugins

To obtain a jbrowse development environment, e.g. for jbrowse source code editing or plugin development (or just running jbrowse from the github repo)

git clone https://github.com/GMOD/jbrowse
cd jbrowse
./setup.sh # not strictly necessary if you don't need to sample data

If you are going to edit the jbrowse source code, then also run

yarn watch

And keep yarn watch running in the background as you create changes to your code.

To start a temporary dev server, can also run

yarn start

And keep this running in the background, this will launch a webserver running jbrowse on port 8082.

Alternatively, you can put this jbrowse folder in your webserver (e.g. /var/www/html/) directory. The key is, if you are modifying jbrowse or plugin source code, to run yarn watch in the background, so that webpack incorporates your changes in either the main codebase (src/JBrowse folder) or any plugins (plugins/YourPlugin).

Note for users in China

In order to make downloads faster you can set a mirror for the npm registry

npm config set registry http://r.cnpmjs.org
npm config set puppeteer_download_host=http://cnpmjs.org/mirrors
export ELECTRON_MIRROR="http://cnpmjs.org/mirrors/electron/"

Notes on setting up a JBrowse server

Note: you should avoid using sudo tasks like ./setup.sh and instead use chown/chmod on folders to your own user as necessary.

Also note: After editing a file, you must re-run the webpack build with npm run build or you can keep webpack running in "watch" mode by running npm run watch.

Also also note: by default git clone will clone the master branch which contains the latest stable release. The latest development branch is called dev. Run git checkout dev after clone to retrieve this

Installing as an npm module

To install jbrowse from NPM directly, you can run.

npm install @gmod/jbrowse

To setup a simple instance, you can use

node_modules/.bin/jb_setup.js
node_modules/.bin/jb_run.js

Then visit http://localhost:3000/?data=sample_data/json/volvox

Contributing

Looking for places to contribute to the codebase? Check out the "help wanted" label.

Running the developer test suites

The Travis-CI suite runs Perl, JavaScript, and Selenium automated tests. To run locally, you can use

prove -Isrc/perl5 -lr tests
node tests/js_tests/run-puppeteer.js http://localhost/jbrowse/tests/js_tests/index.html
pip install selenium nose
MOZ_HEADLESS=1 SELENIUM_BROWSER=firefox JBROWSE_URL='http://localhost/jbrowse/index.html' nosetests

Supported browsers for SELENIUM_BROWSER are 'firefox', 'chrome', 'phantom', and 'travis_saucelabs'. The Sauce Labs + Travis one will only work in a properly configured Travis CI build environment.

Manual testing

Browserstack

JBrowse has a free open source account on Browserstack for manual testing. Contact @rbuels for access.

Generating Packaged Builds

You can also optionally run build steps to create the minimized codebase. Extra perl dependencies Text::Markdown and DateTime are required to run the build step.

make -f build/Makefile

To build the Electron app (JBrowse desktop app), run the following

npm install -g electron-packager
make -f build/Makefile release-electron-all

To run the Electron app in debug mode run the following

npm install -g electron
electron browser/main.js

Making a JBrowse release

NOTE: Beginning in 1.12.4,

  1. Run build/release.sh $newReleaseVersion $nextReleaseVersion-alpha.0 notes.txt, where notes.txt is any additional information to add to a blogpost. Then check its work, and then run the git push command it suggests to you. This makes a tag in the repository for the release, named, e.g. 1.6.3-release. This should cause Travis CI to create a release on GitHub under https://github.com/GMOD/jbrowse/releases

  2. Test that the page loads in IE11 on BrowserStack

  3. Add release notes to the new GitHub release that Travis created. Can just paste these from release-notes.md, which is in Markdown format.

  4. Write a twitter post for usejbrowse and JBrowseGossip with the announcement link to the blogpost

  5. Write an email announcing the release, sending to gmod-ajax. If it is a major release, add gmod-announce and make a GMOD news item.

As you can tell, this process could really use some more streamlining and automation.

jbrowse's People

Contributors

abretaud avatar asw12 avatar aswarren avatar bpow avatar cmdcolin avatar deepakunni3 avatar dependabot[bot] avatar dkasenberg avatar enuggetry avatar erik-j-d avatar garrettjstevens avatar gregghelt2 avatar hexylena avatar hkmoon avatar hotdogee avatar ihh avatar j4moon avatar jsmirob avatar justaddcoffee avatar keiranmraine avatar kevin-mohamed avatar loraine-gueguen avatar lukaw3d avatar nathandunn avatar rbuels avatar rdhayes avatar sallustfire avatar skinner avatar vivekkrish avatar zhjilin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jbrowse's Issues

vertical ruler

In Anno-J, there’s a vertical line that follows the mouse cursor and tells you what base it’s on. I’m not sure if we want to do exactly the same thing; should it be on all the time? Or only at high zooms? To me, it feels like it gets in the way sometimes. Would be nice to do some user testing.

original LH ticket

This ticket has 0 attachment(s).

support large numbers of reference sequences

Previous title: minutes to load, and very slow, with fragmented genome assemblies

I wanted to use jBrowse to visualize a genome assembly I have in progress. It has around 400k small scaffolds totaling 2.2gb. With this kind of data, probably due to the sequences not being in an index and the high number of them, the browser takes minutes to load a single small sequence.

This would be a great tool for setting up a quick visualization of an in-progress genome assembly, but until the performance is improved for this type of data it is unusable for this purpose.

Thanks!

Documentation of ImageTrack JSON format

So people can write their own renderers.

People love doing this. Love it. Hacking together your own glyphs for GBrowse is so popular that there was a massive epidemic of it in the 80’s and Nancy Reagan had to go on TV saying that the current glyph set was more than adequate.

original LH ticket

This ticket has 2 attachment(s).

Convert to gff

Hi,
I am trying to convert to json a gff file, and I got:
Not an ARRAY reference at /var/www/jbrowse/bin/../lib/JsonGenerator.pm line 217.

using this:
bin/flatfile-to-json.pl --gff test.gff --tracklabel "gff" --key "gff"

Here is the first line:
chr1 test transcript 69091 70008 1 + .

original LH ticket

This ticket has 0 attachment(s).

gridline spacing should be controllable from client (or they can be hidden)

You should be able to control gridline spacing. Or add "minor" (fainter) gridlines. For example, at the most-zoomed-in view, I may want to have a minor line every 5 nt, and a major line every 10 nt. You should also be able to turn gridlines off completely (the UCSC Browser allows this).

This will be especially handy if you are going to be displaying alignment tracks.

This feature is complementary to #44 but neither one is a substitute for the other long-term -- they both address different parts of the "seeing how things align by eye" problem for different use cases. Controlling gridlines, for example, would be very useful for making publication figures.

original LH ticket

This ticket has 0 attachment(s).

When zooming at sequence level, navigating to another chromosome fetches all the files from the current one

Hello,
I’ve been trying out the demo at http://jbrowse.org/ucsc/hg19, and I noticed that, when zooming at the maximum (until I see the DNA sequence of a given chromosome, let’s say chr1 for instance), navigating to a different chromosome causes a fetch of ALL the individual .txt files composing the sequence of chr1 => my browser gets stuck for a long time until all those - undisplayed - sequences are fetched.
See screenshot.

Best regards,

Philippe

original LH ticket

Problem with dataRoot property in mixed environments (tomcat/apache)

Hi,

I’m integrating JBrowse inside a Grails application. I keep JBrowse .js,.css,images,... inside
the web-app and left the static JSON content in an apache server.

The Grails controller generates the trackInfo.json and refSeq.js files and the html page that
shows the browser object. To make it work together I have to use the dataRoot property and modify
the urls of the {seq}/{track}/trackData.json files, for instance:

with this settings the browsers doesn’t shows the track contents (the track appears but not its content)

Could be the port an issue?
In any place of the program the urls are not builded concatenating dataRoot with the relative urls?

original LH ticket

This ticket has 0 attachment(s).

Html features inaccuracy of percentage based layout

On safari/chrome and IE, percentages are less accurate; this especially shows up in large features at high zoom levels as deviations of a few pixels from the intended feature bounds. Normally not noticeable, but with subfeatures there may be gaps of one or two pixels between subfeatures that should touch, or between a subfeature and the edge of a parent feature that the subfeature should cover exactly.

original LH ticket

This ticket has 0 attachment(s).

Missed optimization gcc option in wig2png makefile

Hi,

I noticed that the makefile for wig2png generation missed the -O2 gcc option for optimization.
Compiling the code with this option could speed up the program 2 or 3 times faster.

The -O2 option could be added to this line:
CXXFLAGS = -I/usr/X11/include -include $(SRCDIR)/config.h -O2

original LH ticket

This ticket has 0 attachment(s).

client-side GUI/functionality for track display configuration

It would be nice to have a richer way of controlling, on the client, how tracks are displayed. I don’t have too many ideas for specific config settings for tracks (the UCSC browser has a ton, though), but at the very least it would be nice to have a stub of a UI that opens a track config panel. For example, click the track title and a little config panel pops up.

Once the stub is implemented, here are some suggestions for what the panel can control:

  • Setting the height of a track in pixels. This is particularly useful for figure prep and makes the most sense for wiggle tracks (probably not for feature tracks, except for histogram view). Sometimes you want to blow it up to show something, sometimes you don’t, but re-generating pre-rendered wiggles on the server to change the height is too time consuming and not suitable for preparing many figures. There should be a toggle, though, to let the browser auto-set it.
  • For feature tracks, change layout algorithm -- cf UCSC Browser’s "pack", "dense", etc. modes.
  • Change other thresholds, e.g. when gene names get displayed (or enable/disable gene names). Once again, for making figures for publications -- sometimes you don’t want to display all the feature names! This is related to the above point.
  • Change threshold for when feature tracks change to histogram density tracks.

I’m sure people can come up with many more, but before implementing them, one needs to have a UI or API or some sort of frame on which other folks can start tacking on whatever crazy track control features they want.

original LH ticket

This ticket has 0 attachment(s).

Add grayscale option to wig2png.cc

Pretty much self-explanatory.

Subclassing MeanRenderer in wig2png.cc might work, but be careful not to conflict with other ways of breaking out this class hierarchy, like introducing alternative aggregate functions other than "mean" -- see ticket #35

Need to change wig2png.pl as well

See also #38 for the Javascript side of this.

original LH ticket

This ticket has 0 attachment(s).

Make browser usable for large next-generation assemblies.

Hello,
I have a few genome assemblies in progress (in the 2-3Gb range). This tool would be great but since these assemblies are highly fragmented (usually 150k to 300k scaffolds not assigned to any higher level group like a chromosome) the browser fails to load. Simply running ls on the ./data/seq directory takes about a minute, and the ./data/refSeqs.js file is 27Mb. This is actually for one of our better assemblies. These types of genomes work fine in browsers like the UCSC genome browser since everything is stored and accessed in a mysql database. Although that is not your model, would there be an alternative, such as making a multi-level directory tree for the scaffolds, and possibly indexing the list of names so that they work reasonably fast?

Anyway I hate having to reload my assemblies into the UCSC genome browser since I am in rapid assembly and re-assembly mode. I would really like a quick light-weight program to view my assemblies in progress, visualize alignments, etc, and this tool seems like it should fit that bill really well. This program seems like it could be a perfect tool for de-novo genome assembly projects which are becoming rapidly more common. A quick, light-weight, server hosted browser like this would be great for this purpose.

Thanks for your time and consideration,
John

original LH ticket

This ticket has 0 attachment(s).

script to remove tracks

Need a short Perl script to remove a track from the JSON file.

Suggested default behavior: remove the relevant clause from data/trackInfo.json, save it in a temporary file with a name like "deletedTrack.json", but do not delete the track subdirectory in data/tracks unless the user specifically requests to. This allows track deletion to be easily ’reversible’.

original LH ticket

This ticket has 0 attachment(s).

Circular Genome Support

Can JBrowse support circular genomes? It would be nice to be able to scroll through the origin, and to have features span the origin.

original LH ticket

This ticket has 0 attachment(s).

support the bioperl multiple-location mechanism

bioperl seqfeatures can have multiple disjoint locations (the SeqFeatureI::location and LocationI interfaces). If we don’t support this, we’ll presumably continue to get questions on the list about it. How often does this show up in the wild?

original LH ticket

This ticket has 0 attachment(s).

Circular Genome Support

Can JBrowse support circular genomes? It would be nice to be able to scroll through the origin, and to have features span the origin.

original LH ticket

This ticket has 0 attachment(s).

FeatureRequest: TextBox instead of Chromosome PullDown

We are trying to use JBrowse for our genome sequencing project. We have 5100 scaffolds. This is unwieldy for the jbrowse chromosome pull-down box (chromList). Any chance there could be an option for a text-box. We are working on trying to make the hack ourself, but we are clumsy javascripters and are far better at annotating genomes. Any help would be greatly appreciated. Thank You!

original LH ticket

This ticket has 0 attachment(s).

Error in flatfile-to-json with bed file

When running flatfile-to-json with the attached bed file I get the following error:

Can’t store CODE items at lib/Storable.pm (autosplit into lib/auto/Storable/_store_fd.al) line 304, line 41397, at lib/ExternalSorter.pm line 92

I used the next command:

flatfile-to-json.pl --out /path-to-out/ --bed /path-to/junctions.bed --tracklabel junctions.bed --key junctions.bed

original LH ticket

This ticket has 1 attachment(s).

LoadHelper.pm DESTROY error

Hi,

I had to change the location of my system tmp dir from a local location to NFS. I then found LoadHelper DESTROY function, which essentially only removes the temporary directory, started giving some errors (can’t remove dir since it’s not empty), although it seems the temp directory was actually completely removed.

I commented out this single rmtree line and everything seems to work fine. N traces are left in the tempdir. Also, I’m not sure why is this rmtree call needed - doesn’t tempdir cleanups after itself?

Shahar

original LH ticket

This ticket has 0 attachment(s).

Local and user-editable wiggle display scales

(was: wig-to-json.pl generates blank tiles)

Hi,

I executed wig-to-json with the attached file (an similar files) and I got blank images in the folder of ’tiles’. This problem didn’t appear in 1.1 version.

I noticed that wig2png hangs with larger wig files.

original LH ticket

This ticket has 1 attachment(s).

multiple states in cookies

If a user has more than one analysis going on at a time, then allow them to save the state (tracks, zoom, location, etc.) for each of them independently, and switch between them

original LH ticket

This ticket has 0 attachment(s).

alignment tracks

hopefully a straightforward[*] extension of sequence tracks

[*] yes i realize this is a potentially fatal word. but really, as long as the tracks don’t get fancy, /shouldn’t/ this be simple?

original LH ticket

This ticket has 0 attachment(s).

write an adaptor allowing Bio::Graphics to produce image tracks

with the TiledImage and other infrastructure we have, it doesn’t seem like this would be too hard.

it would be a huge boon in terms of the diversity of visual representations we could include. GBrowse glyphs are under active development.

for example just in this last year, newly-developed GBrowse tracks included multiple alignments, whiskerplots, XY scatterplots, ternary plots, geographic popup windows (OK this is Javascript but still... might be possible to convert this too)

related to tickets 26, 15, 7 (might make them all a lot easier, or motivate them)

original LH ticket

This ticket has 0 attachment(s).

configure script does not check libpng version

If libpng version is <1.4.0, linking of wig2png fails with the error message "undefined reference to `png_set_longjmp_fn’"

This could be fixed by updating the autoconf script (configure.in) to check the version of libpng, or (alternatively) to test for "png_set_longjmp_fn" in the AC_SEARCH_LIBS macro, rather than the current test for "png_create_write_struct"

original LH ticket

This ticket has 0 attachment(s).

Allow users to set feature density thresholds

The thresholds at which:

  • the feature density histogram gives way to individual features,
  • the features acquire subfeatures, and where
  • the features acquire labels

can be set during data pre-processing on the server, but currently cannot be set by the user in their web browser. Since users will want to alter these thresholds, we should create a UI to set them.

original LH ticket

This ticket has 0 attachment(s).

Allow user to specify label and mouseover

The label is not always terribly informative. It would be nice to use a sub to provide data (as is done for link generation) to generate a label (possibly with a similar template system) and ideally also a mouseover.

original LH ticket

This ticket has 0 attachment(s).

Dragging Zoom

Hi, I was wondering if is possible to add to JBrowse the Drag and ZOOM functionality.

For example in genome-browser (1.x) is possible to drag the mouse in the Details panel, when the user have selected a region, a pop-up give you the chance to zoom the browser in the selected region.

This improvement will increase greatly the usability of the browser....

Best Regards

original LH ticket

This ticket has 0 attachment(s).

xy-plot glyphs

As far as I could say there is no support for xy-plots in jBrowse?
Are there plans to support xy-plots like in GBrowse?

Thanks in advance
Uemit

Generated histogram height scaling

Current State

Auto-generated histogram tracks use a hard-coded scaling y-axis scaling factor of 2 (px per count).

Concept

Histograms should be rescaled based on the data range.

Questions

Should y-axis scaling for histogram tracks by dynamic (via scale +/- buttons or a slider control)?

original LH ticket

This ticket has 0 attachment(s).

Show value where cursor hovers

For me, displaying quantitative data is one of the most important features for a genome browser.
The following basic features will be great:

  • When the cursor hovers on some point on the graph, show the value at that point
  • Allow plotting multiple graphs on the same track

original LH ticket

This ticket has 0 attachment(s).

missing libraries Bio::DB::GFF and SeqFeature

In order to convert GFFs into JSONs, I need to use the flatfile-to-JSON script. Whenever I run this script, I get an error: Can’t locate Bio/DB/SeqFeature/Store.pm in @inc
I have downloaded the sourcecode from GitHub, but only the FeatureIO directory is to be found in the lib/Bio-directory. So where are the other libraries? Or are they a part of bioperl?
Thanks for the help!

original LH ticket

This ticket has 0 attachment(s).

Arrowheads are outside feature boundaries

When using className: transcript and arrowheadClass: transcript-arrowhead, the arrowheads are drawn as being outside the bounds of the feature. This leads to incorrect rendering of features - the attached image shows two features that have identical coordinates on opposite strands, but the position of the arrowheads makes that look like that is not the case.

If there’s a different way to render these please let me know; I didn’t see one in my first readthrough of the available facilities.

Thank you,
--bob

original LH ticket

This ticket has 3 attachment(s).

Configurable track label colors

I was wondering if there is a way to change the color of the track labels (the rectangles containing the tracklabel names on the left of the screen). Sorry if the answer is already out there -- I couldn’t find it!
-Kerry

original LH ticket

This ticket has 0 attachment(s).

click and drag to select a zoom region

It would be nice if you could drag and select a region to zoom in on, so that bounds control of the new zoom area is precise. The UCSC Genome Browser has that feature and I use it a lot. You can click and drag on the coordinates line, and a blue box appears that clearly delineates the new view that you will zoom to. It is very, VERY useful.

This may conflict with the click-and-drag to pan feature. Right now, you click on the coordinates bar to drag the view around. I am asking that when you click and drag there, you define a region to select. I think maybe the click-and-drag by the coordinate bar can be disabled -- after all, you can drag by pretty much any other part of the view -- and its function (other than display coords) would be to draw a view selection on it.

Granted, you could say that JBrowse’s fluid motion allows you to reposition the view much more rapidly than UCSC’s browser, so this feature is not needed -- you can just zoom and drag around a bunch, and if you really must, edit coordinates by hand. However, I disagree. I frequently like to select areas specifically containing exactly one gene, or gene region, that I identify for a further-out zoom. Being able to precisely define a region to display visually would be very nice.

original LH ticket

This ticket has 0 attachment(s).

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.