smith-chem-wisc / MetaMorpheus

Proteomics search software with integrated calibration, PTM discovery, bottom-up, top-down and LFQ capabilities
MIT License
90 stars 46 forks source link

HTML reports #1330

Open rmillikin opened 6 years ago

rmillikin commented 6 years ago

I thought this idea was large enough where it should be it's own issue even though it's part of #1124 .

@acesnik wants some HTML reports and I think a lot of users really want some way to easily/graphically interpret the data coming out of MetaMorpheus/FlashLFQ.

One way to do it is to have static plots that describe things we think the user would want, i.e. ppm error over time or PSMs per file or boxplots of protein abundance.

Another way to do it is to have some kind of dynamic system that would let the user plot things that they want - i.e. define a statistic to make a box plot out of, or plot any x vs y (i.e. ppm error vs RT).

So here is an issue to centralize some ideas of what would be nice for users to have (hopefully with some input from users). I suspect this issue will never really be "closed" but is an open-ended place to suggest improvements.

We are already working on a MS2 spectrum annotator within MetaMorpheus so that particular type of plot probably doesn't belong here. We'd also have to load spectra files which I think isn't really easily doable in HTML.

Some ideas for static plots:

acesnik commented 6 years ago

Another way to think about this is answering typical questions one would have about each task with plots and descriptive statistics: Did calibration work? Did GPTMD add any modifications? Did search find any of those modifications? How many peptides were found in search? What portion of spectra resulted in a PSM? How many peptides were identified in consolation events? How many peptides were quantified? What peptides were elevated or lower in abundance in my condition of interest (volcano plot with tooltip displays)?

acesnik commented 6 years ago

Could use Markdown instead of writing HTML directly https://github.com/Knagis/CommonMark.NET

rmillikin commented 5 years ago

here's some ideas I was thinking.. feel free to contribute

For multifile runs:

lonelu commented 5 years ago

I want to have the same report for crosslink/Glycan.

trishorts commented 5 years ago

some graphs that might be nice to have image

trishorts commented 5 years ago

also: image

acesnik commented 5 years ago

Where's that from?

trishorts commented 5 years ago

That is pFind output.

rmillikin commented 5 years ago

I think we can use OxyPlot (the NuGet package we use for MetaDraw) to generate these plots. @XRSHEERAN got the PDF export working but I had some trouble with it in the installer. But we could generate these plots in OxyPlot and then export them to PDF

rmillikin commented 5 years ago

Alternatively we can turn MetaDraw into a more generic post-processing node and you can drag in any MetaMorpheus .tsv into it to generate the report. that might be nice. we could just do it automatically after each search on AllPSMs.tsv

I'd like to eventually get some protein coverage and mods visualization in there so it might be good to start taking MetaDraw in that direction

acesnik commented 5 years ago

I just started using Jupyter with plotly, and I think it's a great option for generating HTMLs with interactive graphs.

rmillikin commented 5 years ago

I tried plotly when exploring options for making plots for Jenkins daily reports. Last I checked it uploaded plots online to the cloud and you get a hyperlink to the data via your web browser. I think there is a paid version that lets you have locally-stored plots. I seem to recall being able to indirectly make offline plots but I don't remember the details - I think the functions for that type of plotting were not as developed yet.

I really do not want anything cloud-based in MM; some user's data is sensitive and can't be shared. I'm not comfortable uploading data to some random server automatically without permission. I'm cool with making interactive plots with plotly if there is a useful offline version, though

acesnik commented 5 years ago

Jupyter can also run R, so you could use ggplot and avoid the plotly paywall. It's a little more cumbersome to code, but worth it. There's also Shiny, a native R thing like Jupyter.

rmillikin commented 5 years ago

I'd be more open to that

acesnik commented 5 years ago

Just got Jupyter working with matplotlib, and that's pretty slick.

Apparently, ggplot (from R) also has a python wrapper.

rmillikin commented 5 years ago

@ianhirsch added plots to MetaDraw in #1590 . still todo:

trishorts commented 5 years ago

here's another visualization idea from ms amanda image

trishorts commented 5 years ago

like to see ms2pip output added to metadraw for comparision. https://academic.oup.com/bioinformatics/advance-article/doi/10.1093/bioinformatics/btz383/5488123 https://iomics.ugent.be/ms2pip/

rmillikin commented 4 years ago

Brainstorming for new metadraw

IMG_20191022_111206

rmillikin commented 4 years ago

We should investigate the feasibility of using HTML/web browser for this too, rather than OxyPlot. I'm guessing there are more tools for visualizing stuff in HTML but I'm also not sure about how to use those tools in a web browser in WPF.

trishorts commented 4 years ago

asp.net ?

https://acodez.in/choose-php-over-asp-net/

trishorts commented 4 years ago

While that may be true but it does not dismiss the fact that ASP.NET allows parallel programming which lets chunks of code to run all at the same time whereas PHP does not support threading at all.

trishorts commented 4 years ago

we may want to look to this for some inspiration. https://pubs.acs.org/doi/10.1021/acs.jproteome.9b00496?ai=84336

trishorts commented 4 years ago

see also: https://github.com/smith-chem-wisc/MetaMorpheus/issues/1762

trishorts commented 4 years ago

big data visualization ideas. http://www.bam.bio/ https://twitter.com/i/status/1201919419489800192

acesnik commented 4 years ago

You could also check out TypeScript. It's a little closer to C# than JavaScript because it's strongly typed like C#.

rmillikin commented 4 years ago

http://www.instantclue.uni-koeln.de/download.html

trishorts commented 3 years ago

https://scheltemalab.wpcomstaging.com/software/

acesnik commented 3 years ago

Perhaps unrelated, but snakemake could be used for reporting, say after metamorpheus is integrated into conda. https://snakemake.readthedocs.io/en/stable/snakefiles/reporting.html

trishorts commented 2 years ago

alternate file encoding may help with web accessibilty.

https://pubmed.ncbi.nlm.nih.gov/32864978/

trishorts commented 2 years ago

some interesting ideas here: https://support.10xgenomics.com/single-cell-gene-expression/software/visualization/latest/what-is-loupe-cell-browser