Open alisman opened 5 months ago
Hey, @alisman @inodb I would like to work on this issue. I have understood the requirement and have also done some updates in the code regarding the issue. For now:
Looking forward to your feedback on the PR! and moving forward together.
Hi Aaron Lisman I would like to work for this
@Manasarai2009 someone else has started work and made good progress. sorry!
Background: Users of cBioPortal may want to perform further custom analaysis and visualization of data they have queried/filtered in the cBioPortal. cBioPortal already gives users the ability to export data and visualizations. This project would allow users to directly spawn code notebook environments (e.g. JupyterLite) from numerous points within the application.
Goal: To add an interface where data from features in the cBioPortal can be passed directly to code notebook tools (e.g. a browser-based Jupyter notebook).
Approach: Using javascript/React, buttons will be added to various export points in the cBioPortal UI. These buttons might be simple buttons or perhaps dropdowns if we want to export to multiple tools. On click, our code will need to marshal the data in the format required by the target tool, spawn the tool (e.g. in a new browser window) and pass the data to it. The way this works will be different for each tool. In the case of JupyterLite, we can open up a new window with a self-hosted JupyerLite application and use its api to feed it the json exported from our app. Other apps will have different methods of data ingestion.
Need skills: Familiarity with data analysis and the workings of code notebooks. Javascript to integrate/spawn these external tools from within cBioPortal and feed them the necessary data.
Possible mentors: Aaron Lisman @walleXD
This project can be either 175 hours or 350 hours. For the latter, requirements may grow: e.g. we may add session management to JupyterLite instance so that it remembers previously exported data and analysis. We may export data from more points in the application. We may add more tools to choose from.