Git Product home page Git Product logo

q2view's Introduction

qiime2 (the QIIME 2 framework)

Source code repository for the QIIME 2 framework.

QIIME 2™ is a powerful, extensible, and decentralized microbiome bioinformatics platform that is free, open source, and community developed. With a focus on data and analysis transparency, QIIME 2 enables researchers to start an analysis with raw DNA sequence data and finish with publication-quality figures and statistical results.

Visit https://qiime2.org to learn more about the QIIME 2 project.

Installation

Detailed instructions are available in the documentation.

Users

Head to the user docs for help getting started, core concepts, tutorials, and other resources.

Just have a question? Please ask it in our forum.

Developers

Please visit the contributing page for more information on contributions, documentation links, and more.

Citing QIIME 2

If you use QIIME 2 for any published research, please include the following citation:

Bolyen E, Rideout JR, Dillon MR, Bokulich NA, Abnet CC, Al-Ghalith GA, Alexander H, Alm EJ, Arumugam M, Asnicar F, Bai Y, Bisanz JE, Bittinger K, Brejnrod A, Brislawn CJ, Brown CT, Callahan BJ, Caraballo-Rodríguez AM, Chase J, Cope EK, Da Silva R, Diener C, Dorrestein PC, Douglas GM, Durall DM, Duvallet C, Edwardson CF, Ernst M, Estaki M, Fouquier J, Gauglitz JM, Gibbons SM, Gibson DL, Gonzalez A, Gorlick K, Guo J, Hillmann B, Holmes S, Holste H, Huttenhower C, Huttley GA, Janssen S, Jarmusch AK, Jiang L, Kaehler BD, Kang KB, Keefe CR, Keim P, Kelley ST, Knights D, Koester I, Kosciolek T, Kreps J, Langille MGI, Lee J, Ley R, Liu YX, Loftfield E, Lozupone C, Maher M, Marotz C, Martin BD, McDonald D, McIver LJ, Melnik AV, Metcalf JL, Morgan SC, Morton JT, Naimey AT, Navas-Molina JA, Nothias LF, Orchanian SB, Pearson T, Peoples SL, Petras D, Preuss ML, Pruesse E, Rasmussen LB, Rivers A, Robeson MS, Rosenthal P, Segata N, Shaffer M, Shiffer A, Sinha R, Song SJ, Spear JR, Swafford AD, Thompson LR, Torres PJ, Trinh P, Tripathi A, Turnbaugh PJ, Ul-Hasan S, van der Hooft JJJ, Vargas F, Vázquez-Baeza Y, Vogtmann E, von Hippel M, Walters W, Wan Y, Wang M, Warren J, Weber KC, Williamson CHD, Willis AD, Xu ZZ, Zaneveld JR, Zhang Y, Zhu Q, Knight R, and Caporaso JG. 2019. Reproducible, interactive, scalable and extensible microbiome data science using QIIME 2. Nature Biotechnology 37:852–857. https://doi.org/10.1038/s41587-019-0209-9

q2view's People

Contributors

david-rod avatar ebolyen avatar eldeveloper avatar fedarko avatar jairideout avatar jakereps avatar lizgehret avatar q2d2 avatar thermokarst avatar turanoo avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

q2view's Issues

Allow view.qiime2.org to open Dropbox files

It would be awesome If artifacts hosted in Dropbox could be linked using view.qiime2.org. Right now, the message you get on screen is:

Something went wrong!
TypeError: Failed to fetch

Alternatively a different error message would also be useful.

Improved Open/Upload Page UX

The open/upload page is a bit confusing right now, maybe using an alternative UX we can make this more clear. Perhaps some kind of toggle element that shows either the URL form OR the upload form.

make gallery dynamic

Current Behavior
Right now updating the gallery requires the entire app to be recompiled which is a little silly.

References
There are some data links which look like the files we'd ideally use, but data.qiime2.org doesn't set the right kind of headers, so q2view can't actually follow the redirect.

Using a different starting layout for the provenance graph

Improvement Description
This change would involve using a different Cytoscape.js layout method for the provenance graph—in particular, one that is aware of the graph's DAG structure.

This is a relatively minor issue, but I think it could improve the user experience with view.qiime2.org a decent amount (especially since changes to the provenance graph layout get reset on switching to the visualization/peek tabs, as described in #74).

Current Behavior
The current layout used is the built-in grid layout, with precomputed (?) row and column positions for nodes in the graph.

layout: {
name: 'grid',
fit: false,
condense: true,
avoidOverlapPadding: 75,
position: node => ({
row: node.data('row'),
col: node.data('col')
})
},

This can lead to some mildly funky layouts that require manual fixing to see node/edge details—see e.g. the following screenshot, which I just took today:

Screen Shot 2019-09-17 at 4 32 59 PM

Proposed Behavior
Using a Cytoscape.js layout extension like Dagre (example, GitHub) or Klay (example, GitHub) to lay out the graph in a more appealing way. Something like the built-in breadthfirst layout (example) might also be usable.

It may also be worth adjusting the edges to be normal bezier curves, instead of using the current "segments" style: (this might be worth creating a separate issue, though)

{
selector: 'edge',
css: {
content: 'data(param)',
'target-arrow-shape': 'triangle',
'curve-style': 'segments'
}
},

Comments
I tried to implement this in a clone of q2view a while back, but I couldn't figure out how to get Dagre to play nicely with React. (granted: I don't have a lot of experience with React.) I'm sure there's a way to get that working, though...

References

  1. List of Cytoscape.js built-in layouts (includes grid, the currently-used layout)
  2. List of Cytoscape.js layout extensions

Thanks!

Handle upgrades gracefully

Bug Description
Right now it seems to occur that the bundle is upgraded, but the service worker isn't unregistered and reinstalled (which feels out of spec to me, it should be fetched whenever the cache has expired). So there is probably something off with the registration lifecycle (i.e. I need to reread that spec).

Expected Behavior
In any case, the service worker should be "version aware" and deactivate itself while loading a page that indicates the user should restart their session (showing this page until the versions match again).

New "Gallery Card" react component

source comment: #93 (comment)

For training purposes (and got gallery maintenance), it would be beneficial to consider creating a "Gallery Card" component, rather than repeating the same HTML elements over and over again.

automatically link .qza and .qzv files posted on the QIIME 2 Forum to view.qiime2.org

Improvement Description
Clicking on an artifact uploaded to the forum causes it to download. It would be awesome if it were easy to open on view.qiime2.org.

Current Behavior
Clicking a file causes it to download. Copying the URL and pasting into view.qiime2.org produces a TypeError.

Proposed Behavior
It would be pleasant to be able to copy and paste a QIIME 2 Forum URL into view.qiime2.org. I believe it would still be advantageous to retain the implicit download from the forum that happens when a file is clicked on (as sometimes that's what you want to do).

References
1.
this_would_be_awesome

Incomplete `manifest` object in provenance

Loaded up some test data from q2-quality-filter, peeked at the provenance:

screen shot 2017-09-28 at 7 41 09 am

Cracked open the QZA, peeked at the provenance:

screen shot 2017-09-28 at 7 40 14 am

The q2view rendering of the provenance is missing the entry forUndetermined_S0_L001_R1_001.fastq.gz

misc improvements

Ported from project page. May have duplicates with existing issues (I decided to keep this list intact in case it is helpful).

  • title/tab fix
  • simplified dropbox loading
  • add share link
  • improve repo docs
  • add live site docs, including demo data
  • multicast instead of polling

It would be nice if the toolbar had iframe navigation

Browser forward and back work, but given that the visualization URLs are only real as long as the parent frame is open, we should probably provide navigation elements in the toolbar as a backup and to reinforce the idea that the toolbar really does control the page.

Add a share-link icon

This would only be accessible when viewing an external artifact/visualization (and is a hint that the current URL is shareable)

Switching between provenance visualization, peek and provenance resets elements

Bug Description
Switching between the Visualization, Peek and Provenance tabs resets the elements. This is not a problem for the Peek tab, but it is for the Visualization and for the Provenance tabs.

Say I have setup a plot to highlight something I'm interested, but then want to look at the provenance, switching back to the visualization shows me the default plot i.e. without the things I had just made. The same happens with Provenance where if I'm trying to debug the origin of an artifact, and I've re-arranged the layout of the provenance graph, switching over to a visualization will reset the graph back to its default layout.

Use service worker to cache default pages so that the app works offline.

Improvement Description
Ideally it would always fetch from the network, but if that failed it would retrieve from cache. We need to disambiguate network failure from 404 so that we don't continue serving stale locations. If the network request succeeds we just overwrite the cache. So it's used strictly as a fallback mechanism.

Add ability to change plot label to identify different plots in view

Improvement Description
When creating multiple instances of different qzv files in qiime2, it is very useful to leave the names the same (for instance fatih-pd-group-significance.qzv) in each category or sampling depth. This facilitates faster commands and the ability to easily copy and paste commands. However, when plotting multiple visualizations using q2view there is no way to discern which plot you are looking at. I have been woking around this by doing a google search for my category (as a way to tell each window apart) and opening multiple windows.

Proposed Behavior
It would be very useful to have the ability to adjust the plot label name to allow distinction between two (or more) plots and offer the ability to compare similar plots in the same window without having to memorize their position or manipulate the name of the files in your file path. Having an adjustable plot name would allow easy labeling of the plot name to better illustrate the source of the files.

Screenshots
image

Resize Provenance Graph

I have an qza artifact with relatively many nodes when looking at the provenance. The space for the graph is too small to display all nodes and I cannot find a way how to zoom out. Would it therefore make sense to offer the user either the ability to zoom out or the chance to resize the element on the webpage as e.g. the textbox in which I am typing here on github?

image

Issue with scrolling to left or going back causing loss of visualization (taxonomy bar plots)

Bug Description

  1. When using a scroll left or back feature the taxonomy bar plot visualization will disappear and you will be prompted to stay or leave. If you click stay you visualization will revert to the original taxonomy visualization and will need to reorganize your taxa plots according to level and/or additional sorting options you may have requested prior to requesting to stay or when using the back button. This is using the chrome browser specifically, but one would imagine there are issues with using other browsers as well.

  2. This is also an issue when switching back and forth between peek, provenance, and visualization. It would be nice to not have to regenerate your visualization each time you click back, peek(etc), or scroll left.

  3. Additionally, this may be a separate issue, but if you were to organize your provenance and click away it also reverts back to the original configuration (which may not be optimal for visualizing your data stream)

Screenshots
image

Add mention of adblockers breaking the fetch sometimes

Current Behavior
@fedarko discovered that his adblocker prevented q2view from loading a visualization hosted on GitHub. It's unclear why an adblocker would care about a fetch to GitHub, but in any case, it does make sense that this could go wrong for other people sometimes.

Comments
A note about this would be worth adding to the about/troubleshooting section.

References
forum x-ref

enable viewing of .qza / .qzv files hosted on FigShare

Improvement Description
It would be useful if q2view could display files hosted in FigShare.

Current Behavior
Currently FigShare doesn't provide a direct download link,

Proposed Behavior
Instead I think q2view would have to resolve the download (kinda like what it does with DropBox).

Support "folder view"

Current Behavior
Like in nbviewer when you specify a git repo you can navigate through the notebooks contained in folders and through the folder structure.

References

  1. For an example, see this link.
  2. I'm unclear if this is the same issue as #16, not very familiar with the project's terminology.

Automate deployments via github actions/apps

Improvement Description
Right now deployments of q2view require a manual building step, and then pushing up one or more commit to https://github.com/qiime2/view.qiime2.org. It would be neat to automate this, perhaps when new commits to the master branch on this repo are created, a GitHub Action could build the source, then open a PR up on the https://github.com/qiime2/view.qiime2.org repo, for our review. Maybe that last part isn't necessary, though - let's discuss.

Factor out components for reuse in other interfaces

Proposed Behavior
Obvious things would be just turning the provenance graph into it's own react-library.

Other options include redesigning the initialization to make service worker optional and let other systems swap in their own archive/loopback server.

Create a mechanism to handle service-worker upgrades

Cloudflare/GitHub Pages means we don't get to control the max-age header of our response which impacts how the service-worker is updated.

Chrome and Firefox are working on implementing an API that would provide a no-cache option to registration, which makes this easy.

In the meanwhile however, we need a way for the service worker and codebase to keep working (or at least explain why the user may need to wait ~4 hours until they actually update).

Analytics

Google, Piwik, something else? Would be nice to have before PHX

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.