-
Notifications
You must be signed in to change notification settings - Fork 182
Google Summer of Code 2021
FURY is a free and open source software library for scientific visualization and 3D animations. FURY contains many tools for visualizing a series of scientific data including graph and imaging data. FURY is participating in GSoC this year for the first time under the umbrella of the Python Software Foundation (PSF).
GSoC is a program the allows students to learn by contributing to an open-source project while receiving a fellowship from Google, and mentorship from open-source software developers. For details about this year's GSoC, please refer to this page.
Before considering becoming part of the FURY GSoC, please read about our expectations.
All participants should have basic knowledge of computer graphics, scientific computing, and development in Python. For a comprehensive introduction to these topics, please refer to these 2 books:
- Interactive Computer Graphics - 6th / 7th Edition by Edward Angel and Dave Shreiner
- Effective Computation in Physics by Katy Huff and Anthony Scopatz.
However, you should be already familiar with data analysis using Python and Numpy before applying.
Be happy to ask questions directly by subscribing to our mailing list and sending a message to [email protected] or by opening a discussion and Select GSOC Request or by joining our discord community.
Potential candidates should follow all these steps before applying for the GSoC:
- Take a look at the guidelines on how to contribute to FURY.
- Go through the tutorials and examples on the website, make sure you're familiar with the library.
- Run the tests. FURY has unit tests that are at about 90% coverage (amount of lines of code tested). Make sure you know how to run them, and if you've never done Python unit tests before you might want to read up on Pytest library.
- Figure out how to run a single test! Running one test instead of all of them will speed up your workflow when you are writing your tests! (hint, it's in the contributing docs!)
- Make your first contribution to FURY !!! Making a small enhancement/bugfix/documentation fix/etc to FURY is really important! It shows your understanding of the library and your Github knowledge. The fix does not need to be related to your proposal. We have and will continue adding some beginner-friendly issues in Github. You can see some of them here
This a requirement from the PSF; it can help you get some idea of how things would work during the GSoC.
Notice: We want to provide the best mentoring to our students, only 2 or 3 of these projects will be selected. Not more!
If you have any questions or if you want to contact a mentor:
- open a new discussion with GSOC as a category.
- join our discord community and ask them to our GSOC channel.
Description:
The structure of proteins is the amino acid composition. Understanding the properties and conformations of proteins requires the determination of their 3D structure. Among 3D molecular representations that depict protein structures, ribbon and molecular surface models are very popular. Ribbon model of protein presents the visual basics of a molecular structure (twist, fold, and unfold). Molecular surface representation of protein helps us in analyzing protein folding and predicting protein-ligand and protein-protein interactions. The students will be able to implement protein ribbon and molecular surface models in FURY. This is a great opportunity for students who are interested in both biology and coding to visualize the 3D structure of proteins and become members and contributors to the FURY community.
Here are the different steps to achieve:
- Step 1: Add Ribbon Model to FURY codebase
- Step 2: Create a tutorial/demo and explain the ribbon Model.
- Step 3: Expand Protein representation via other models.
Difficulty: Intermediate
Skills required: Biology (basic), Python, Algorithms
Potential Mentors: TBD (Nasim Anousheh, Eleftherios Garyfallidis)
Description:
Networks are everywhere [1], from social media to the physics of the cosmos. They can be used to model the functioning of the brain, the spreading of diseases, the dissemination of misinformation and memes on the internet, among several other applications. Visualizing such structures is a crucial area of research in Network Science [2]. This usually requires three main components: Layouting, which is basically determining the positions of nodes; rendering; and interactivity. FURY is panned to have its own network analysis pipeline, allowing the visualization of huge datasets. The student will implement and integrate a set of layout algorithms to FURY and, in the process, learn all about the amazing things we can do with networks.
- Step 1: Understand how FURY works and the basics of Network Science
- Step 2: Implement or combine code from other sources to a python component having the ForceAtlas2 [3] algorithm and Gradient descent-based layouts [4] (which can be implemented using Scipy or Tensorflow).
- Step 3: Integrate the code with FURY network rendering pipeline
- Step 4: Use it to visualize a huge real-world network as an example
Difficulty: Advanced
Skills required: Python, FURY, Network Science (basics), Scipy (and/or Tensorflow)
Potential Mentors: TBD (Filipi Nascimiento, Javier Guaje)
Description:
In this project, you will build scifi-like 3D and 2D user interfaces inspired by Guardians of the Galaxy video. FURY provides many visualization capabilities. However, we were not happy with interactive capabilities found in existing GUIs. For this reason, we built our own UI engine. No Qt! Everything is integrated into the VTK scene. In this project, you will extend this work and add more futuristic widgets. The motto of this project is to make everything interactive without performance issues.
Here are the different steps to achieve:
- Step 1: Get familiar with the library by fixing some issues with some previous UI.
- Step 2: Create SpinBox UI, Accordion UI
- Step 3: Select, Explore, and develop one of these 2 subjects: Tree UI, Layout management.
Difficulty: intermediate
Skills required: Python and VTK
Potential Mentors: TBD (Serge Koudoro, Soham Biswas)
Description: Our new visualization engine supports GLSL shading language. Join our effort to built stunning effects of scientific datasets. You will have to program vertex and fragment shaders to generate different effects on FURY primitives. Below, an example of a disco horse:
Here are the different steps to achieve:
- Step 1: Pick 2 effects between Fur, Glow, glass, fire, water and start to study/implement them
- Step 2: Create a tutorial/demo and explain those effects.
- Step 3: Select one new effect proposed above and start to implement it.
- Step 4: Propose and develop your own new effects.
Difficulty: high
Skills required: GLSL, Python, OpenGL, and VTK
Potential Mentors: TBD (Serge Koudoro, Javier Guaje)
Description: Photorealistic rendering is the key to improve the scientific visualization field. The student will need to understand the Physically Based Rendering concept and have some notion of GLSL to allow FURY to use this feature in its visualization engine.
Here are the different steps to achieve:
- Step 1: Study and list all PBR models.
- Step 2: Smooth integration of PBR model already available in VTK to FURY.
- Step 3: Develop a new PBR model.
- Step 4: Test and validate this model.
Difficulty: Advanced
Skills required: Python, VTK, FURY, Love of opengl
Potential Mentors: TBD (Nasim Anousheh, Javier Guaje)
Description: FURY has an optional physics engine available. The student will need to understand PyBullet and build a realistic simulation that uses the engine to simulate physics but use FURY to do the visualization.
Here are the different steps to achieve:
- Step 1: Understand how PyBullet and FURY work
- Step 2: Build desired physics simulations (TBD) that integrate both engines
- Step 3: Build a larger animation that showcases physics simulations
Difficulty: Advanced
Skills required: Python, PyBullet, FURY, Love of physics
Potential Mentors: TBD (Soham Biswas, Serge Koudoro)
Description: If you've got a brilliant idea you'd like to propose, please, open a new discussion with GSOC as a category to discuss it!
Difficulty: Easy/Intermediate/Advanced
Skills required: Python, 3D Visualization
Potential Mentors: TBD