nrnb / GoogleSummerOfCode

Main documentation site for NRNB GSoC project ideas and resources
114 stars 38 forks source link

App Store for Cytoscape #122

Closed AlexanderPico closed 2 years ago

AlexanderPico commented 6 years ago

Background

The Cytoscape App Store is an interactive website for browsing, submitting and installing Cytoscape apps. Cytoscape is a free, open source data visualization tool for biomedical research, focused on molecular networks. There are over 330 apps in the App Store that bring specialized functionality to Cytoscape, including database access, data-driven visualization and novel analysis capabilities. The site sees over 1000 downloads per day from users of the Cytoscape research tool. The Cytoscape App Store has been running successfully for a few years, but the list of requests for new features has been accumulating. A motivated student with an interest in advanced web development could make major enhancements to the site.

Goal

We have a list of features to implement for the site, ranging from entry-level to advanced. Per your interests and skill, propose to us which of these features you think you could complete in the time you have. Additional features can be suggested as well.

Difficulty Level 1

Technically, this is an easy project. However, advanced user-centric design skills, UI/UX skills and deployment skills will be needed.

Skills

Django, Python, JavaScript (essential)

Public Repository

GitHub repo: cytoscape/appstore Issue tracker: cytoscape/appstore/issues

Potential Mentors

vnyk commented 6 years ago

Hi I want to work on it.

AlexanderPico commented 6 years ago

Hi vnyk. Thanks for your interest. The GSoC program is driven by self-motivated students. Can you browse the code, brainstorm on solutions and ideas, and then introduce yourself, including more about your background, skills and interests?

souravsingh commented 6 years ago

Hello, I am interested in the project.

I am currently a final year undergraduate student and a certified software carpentry instructor and I am interested in the field of Phylogenetics, Proteomics, High-Throughput sequencing and Machine Learning. I have a working knowledge of Django and Javascript.

About some of the ideas for the project, the uploading part can be done simply by adding a FileField in forms and putting the views for uploads.

For reviews, I suggest using django-reviews package for putting reviews.

And for icons, I suggest storing them as static files and linking them in the corresponding HTML files.

These are some thoughts I have in my mind.

AlexanderPico commented 6 years ago

I'm getting some great questions and suggestions for this project! (thanks @souravsingh and Maria) I'll try to answer them here and share updates with all potential applicants.

  1. django-reviews package for adding review support. Can you describe how user identification is handled by this package? For example, we would like to support anonymous reviews, rating and issue report, but at the same time provide an option for specifying email if they want to be contacted. We do not want to require login accounts for users of the app store since these accounts are not currently required for typical usage (except app submission and page editing). Also, what kind of API is provided for reviews? Can we support issuing reviews from the Cytoscape Java application (i.e., where the user is actually using the app) and then send and collect the reviews on the app store page?

  2. Using FileField to support file upload is the easy part. What we'll need to see in good proposal will be a design for how uploaded scripts would be presented, i.e., in a way that is distinct from apps and clear about how they might be used. This requires taking sometime to understand how apps and scripts work in the Cytoscape ecosystem.

  3. The goals are not in any particular order. It's up to you to propose which of these you can complete during the program, how you would implement them, and how the final product would function/look. If you have more in depth questions about particular issues, just ask.

  4. You are at liberty to propose icons, UI/UX and implementation plans. In fact, that is precisely what we expect in your applications. The more details and independent ideas your propose the better we can assess your level of interest and capabilities.

  5. The CyBrowser related ideas are probably the most intricate (in terms of concept), but not necessarily the most difficult (in terms of implementation). Take some time to read the linked resources about CyBrowser. Realize that it is essentially a browser in Cytoscape, which supports HTML and JS, like most any browser. In addition, CyBrowser supports a special protocol type cycmd that allows you to trigger Cytoscape Commands. Putting it all together, you can design simple web pages that have links and buttons that control Cytoscape when viewed in CyBrowser!

Keep the questions coming!

souravsingh commented 6 years ago

@AlexanderPico django-reviews handles user identification through their account info. In case, the user is anonymous, there is a setting called REVIEWS_IS_NAME_REQUIRED and REVIEWS_IS_EMAIL_REQUIRED for storing their names and e-mail for future contact.

As for FileField, I propose displaying the scripts as a Notebook(if they are Python scripts) or as color-highlighted code once the upload is done.

soccerdroid commented 6 years ago

Hello again! I'm Maria. I have a couple of questions in order to make my proposal. I am planning to implement the first, second and sixth features listed in the project idea. In your repo I saw the App model, which has attributes like tags. Are the tags the ones you use to generate the icons? What can a tag tell me about an app? How do you categorize the apps? When you mention to extract structured information, what attributes of the App model can give me that information? I don't have clear that part. I also checked the cytoscape-automation repo, because I wanted to see if it exists a method for knowing when cytoscape is running, but I could not find it. Does such method exist? If not, how can I detect if Cytoscape is opened with Javascript? In order to be able to implement the sixth feature mentioned, which is about support user reviews and comments from within Cytoscape. Thanks in advanced for your help

AlexanderPico commented 6 years ago

Hi @soccerdroid (Maria),

In the App model, tags correspond to the categories that app authors can manually assign (or "tag") their apps with. These categories are listed on the left side of the main page for the app store and as "Categories:" on each app page. The icons are currently associated with specific model attributes for each case, such as competition_winner_dec_2012, which leads to the trophy icon.

Currently, tags (categories) and icons are manually added by authors and editors. The part about "extracting structured information" is really just about identifying useful information from structured sources (like the pom.xml) provided by app authors already and using that to automatically set certain tags and icons to help reduce the manual labor.

Cytoscape opens a dedicate port for the App Manager when it's running, so this is the simplest way to check that by js: https://github.com/cytoscape/appstore/blob/master/static/apps/js/app_page.js#L10

Thanks for the questions!

soccerdroid commented 6 years ago

Oh ok. I checked about what automation means for cytoscape apps, could you consider an app as automated if it submits an api? I say this because here https://docs.google.com/document/d/1QTrT-9ylhI4OX5DkauMo2ujLIqeg3WDUDwl77KLtfVY/edit it says that automation functionalities are built with CyREST. I think a tag of automation or CyREST use in the pom.xml file could be used to detect automated apps. About the geolocation entry bugs, could you give me an example? In the example given, only stats about downloads are displayed in plots. And finally, about the web app builder, what will be the use of these apps? They can be displayed in the same way as apps, right? Except for the fact that they only have an url, but an icon and tags could be added in order to categorize them too, right?

AlexanderPico commented 6 years ago

@soccerdroid Yes, precisely.

soccerdroid commented 6 years ago

Hello, I have somo troubles with the dependencies installation for running the repo in my computer. I cannot install PIL, because it is now donwloaded its fork Pillow. I also have troubles with xaniap installation and the libpng library. I want to see the templates after someone submits an app, this is, to see the form where you edit the app and add a description, tags, etc. I have already made a prototype, but I would like to attach it to the existing template in order to be consistent.

soccerdroid commented 6 years ago

I have Ubuntu 16.04

matthiaskoenig commented 6 years ago

Hi @soccerdroid,

I got this project working in a local virtualenv. See the changes in the following pull request. https://github.com/cytoscape/appstore/pull/32

I documented the requirements in requirements.txt and the necessary installation instructions to run this locally in INSTALL.md

https://github.com/cytoscape/appstore/pull/32/commits/065f130a2daad11d53738b7776d857575a299fca

Main issue for me is that the problem is only python 2 and relies on a very old django version django < 1.9. This has many security issues. Probably a good idea to update the codebase to python 3 and django>2.0.

Important thing is to force the old requirements to get this working and install xapian (I added an install script for that).

Here some proof that it runs locally: screenshot from 2018-03-26 12-02-56

Hope this helps. Best M

khanspers commented 6 years ago

GSoC 2018

somesh1234567 commented 5 years ago

hi,I am interested in this project.

bangpradyumna commented 5 years ago

Hello @AlexanderPico , I'm Pradyumna from BITS Pilani. I would love to work on this project but I notice that some of the ideas mentioned in this post must have already implemented by Sarthak Shrivastava in last year's GSoC (As i could see in his proposal document).

The issues that i am talking about are : 1.Implement a web app for viewing the App Store from within CyBrowser. This could be an app manager replacement. 2.Support user reviews and comments from within Cytoscape (i.e., when they are using the app). Optionally send these to the registered app authors. 3.Add support for submitting, browsing, downloading R and Python scripts.

Please clarify whether these ideas need to worked upon or not.

AlexanderPico commented 5 years ago

These aims are still active. They are sort of a laundry list of possible features and we don't expect to complete them all in a summer.

The primary goal will be to streamline the deployment through to production.

ksvkabra commented 5 years ago

Hello @AlexanderPico , I am Keshav Kabra from JECRC, Jaipur. I am interested in working on this project

AlexanderPico commented 5 years ago

@ksvkabra Great. Explore the links provided in the project description, review the materials at https://nrnb.org/gsoc.html, then start a Google Doc with your proposal. Mentors will provide feedback on your proposal prior to the submission date if there is time.

khanspers commented 5 years ago

Active GSoC 2019 project.

AlexanderPico commented 3 years ago

Editing and reopening for 2021

spursbyte commented 3 years ago

I want to work on this issue. Can you please give more info on this?

AlexanderPico commented 3 years ago

The description above includes links. Research as deeply as you can and then ask questions that are as specific as possible. The way you approach problems and new learning is part of the evaluation process.

khanspers commented 2 years ago

Cleanup in preparation for GSoC 2022.