Skip to content

Instantly share code, notes, and snippets.

@SunTzunami
Last active November 23, 2023 19:14
Show Gist options
  • Save SunTzunami/a46467157483b798342016b1f77903ae to your computer and use it in GitHub Desktop.
Save SunTzunami/a46467157483b798342016b1f77903ae to your computer and use it in GitHub Desktop.
GSoC 2021 final work product
gsoc fury

Google Summer of Code 2021 Final Work Product

Proposed Objectives

  • Ribbon Representation
  • Molecular Surface Representation
  • Stretch Goals:
    • Stick Representation
    • Ball and stick Representation
    • Wire Representation
    • Pipes and Planks Representation
    • Sphere Representation

Objectives Completed

1. Ribbon Representation

Ribbon diagrams, also known as Richardson diagrams, are 3D schematic representations of protein structure. Ribbon diagrams are generated by interpolating a smooth curve through the polypeptide backbone. α-helices are shown as coiled ribbons. β-strands as sheets, and non-repetitive coils or loops as lines or thin strips. It was implemented by using vtkProteinRibbonFilter. Generating a vtkPolyData of appropriate format required by vtkProteinRibbonFilter was initially unclear due to lack of examples. I was able to understand what kind of output the filter required after a meeting with mentors. Tests were added and a demo was created.

Pull Requests:

2. Ball and Stick Representation

The ball-and-stick model is a molecular model of a chemical substance which displays both the three-dimensional position of the atoms and the bonds between them. The atoms are typically represented by spheres, connected by tubes which represent the bonds. It was created by using vtkOpenGLMoleculeMapper. Added vtkSimpleBondPerceiver for detection of bonds. Tests were added and a demo was created.

Pull Requests:

3. Stick Representation

Stick model is a special case of Ball and Stick model where atomic radius of all molecules is set equal to the radius of tubes used to create bonds. It was created by using vtkOpenGLMoleculeMapper. Tests were added and a demo was created.

Pull Requests:

4. Sphere Representation

In chemistry, a space-filling model, also known as a calotte or sphere model, is a type of three-dimensional (3D) molecular model where the atoms are represented by spheres whose radii are proportional to the radii of the atoms. It was created by using vtkOpenGLMoleculeMapper. Tests were added and a demo was created.

Pull Requests:

Objectives in Progress

  • Molecular Surfaces

    There are three types of molecular surfaces:

    • Van der Waals
    • Solvent Accessible
    • Solvent Excluded

    Currently the first two molecular surfaces i.e. Van der Waals and Solvent Accessible are implemented. The code is based on the paper "Generating Triangulated Macromolecular Surfaces by Euclidean Distance Transform" by Dong Xu and Yang Zhang.

    Pull Requests:

Other Objectives

1. 2D Animated Surfaces

This was a simple demonstration that animated Two-Dimensional (2D) functions using FURY. Created a grid of x-y coordinates and mapped the heights (z-values) to the corresponding x, y coordinates to generate the surfaces. Used colormaps to color the surfaces.

Pull Requests:

2. Updated miscellaneous animations

  • Updated the demo of helical motion to stop using multiple line actors as discussed in the meeting.

  • Updated the demo of brownian motion to make it more scientifically useful (removed unnecessary rotation of camera during animation and box actor).

  • Display simulation data for brownian motion and helical motion animations (number of simulated steps for brownian motion and velocity of the particle for helical motion).

  • Created utility functions to make the code understandable and used these in emwave, helical and brownian animations.

Pull Requests:

3. GSoC weekly Blogs

Weekly blogs were added for FURY's Website.

Pull Requests:

Timeline

Date Description Blog Link
Week 1
(08-06-2021)
Welcome to my GSoC Blog! Weekly Check-in #1
Week 2
(14-06-2021)
First week of coding: sphere model. Weekly Check-in #2
Week 3
(21-06-2021)
Research about bonding algorithms for ball and stick models. Weekly Check-in #3
Week 4
(28-06-2020)
Research about molecular visualization tools present in VTK. Weekly Check-in #4
Week 5
(05-07-2021)
Genesis of molecular module (based on VTK's
molecular visualiztion libraries).
Weekly Check-in #5
Week 6
(12-07-2020)
1. Ribbon model success with vtkProteinRibbonFilter.
2. Updated molecular module (more pythonic).
Weekly Check-in #6
Week 7
(19-07-2020)
1. Updated molecular module (support for numpy arrays,
more customisation options for users).
2. Updated helical, brownian and emwave animations.
Weekly Check-in #7
Week 8
(26-07-2020)
1. Added Ribbon model to molecular module.
2, Added tests for molecular module.
3. Updated animated surfaces.
Weekly Check-in #8
Week 9
(02-08-2020)
1. Optimized molecular module with mentors.
2. Added GSoC Blogs to FURY docs.
Weekly Check-in #9
Week 10
(09-08-2020)
1. Bounding Box for molecules.
2. Tutorial for molecular.
3. Read molecular surfaces research papers.
Weekly Check-in #10
Week 11
(16-08-2020)
Molecular Surfaces (VDW, SAS) implementation. Weekly Check-in #11

Detailed weekly tasks, progress and work done can be found here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment