Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gsoc blog 2021 #475

Merged
merged 33 commits into from Jul 30, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
e8b72f8
Create 2021-06-07-week-1-sajag.rst
SunTzunami Jul 27, 2021
e958099
Update and rename 2021-06-07-week-1-sajag.rst to 2021-06-08-week-1-sa…
SunTzunami Jul 27, 2021
ac44221
Create 2021-06-14-week-2-sajag.rst
SunTzunami Jul 27, 2021
8de2883
Update 2021-06-14-week-2-sajag.rst
SunTzunami Jul 27, 2021
86b0e2b
Create 2021-06-21-week-3-sajag.rst
SunTzunami Jul 27, 2021
7ae8a11
Update 2021-06-14-week-2-sajag.rst
SunTzunami Jul 27, 2021
2573f01
Update 2021-06-14-week-2-sajag.rst
SunTzunami Jul 27, 2021
f398d0e
Create 2021-06-28-week-4-sajag.rst
SunTzunami Jul 27, 2021
9729700
Create 2021-07-05-week-5-sajag.rst
SunTzunami Jul 27, 2021
c0fd213
Create 2021-07-12-week-5-sajag.rst
SunTzunami Jul 27, 2021
81c43d1
Rename 2021-07-12-week-5-sajag.rst to 2021-07-12-week-6-sajag.rst
SunTzunami Jul 27, 2021
dd11324
Create 2021-07-19-week-7-sajag.rst
SunTzunami Jul 27, 2021
ed4ea45
Create 2021-07-26-week-5-sajag.rst
SunTzunami Jul 27, 2021
5e2f8a7
Rename 2021-07-26-week-5-sajag.rst to 2021-07-26-week-8-sajag.rst
SunTzunami Jul 27, 2021
ed58d95
Update 2021-07-05-week-5-sajag.rst
SunTzunami Jul 27, 2021
1d329b1
Update 2021-07-12-week-6-sajag.rst
SunTzunami Jul 27, 2021
7c79a4a
Update 2021-07-19-week-7-sajag.rst
SunTzunami Jul 27, 2021
bd973dc
Update 2021-07-26-week-8-sajag.rst
SunTzunami Jul 27, 2021
9c05062
updated week 1 blog
SunTzunami Jul 28, 2021
a625e7f
updated week 2 blog
SunTzunami Jul 28, 2021
8432a0a
updated week 2 blog
SunTzunami Jul 28, 2021
2eff7cc
updated week 3 blog
SunTzunami Jul 28, 2021
c26429d
updated week 4 blog
SunTzunami Jul 28, 2021
97ca8b1
updated week 5 blog
SunTzunami Jul 28, 2021
c73bcc8
updated week 6 blog
SunTzunami Jul 28, 2021
30d7714
updated week 7 blog
SunTzunami Jul 28, 2021
0f4ccc6
updated week 8 blog
SunTzunami Jul 28, 2021
73cfd1c
updated week 7 blog
SunTzunami Jul 28, 2021
e3308da
updated week 6 blog
SunTzunami Jul 28, 2021
59cf551
Update docs/source/posts/2021/2021-06-28-week-4-sajag.rst
SunTzunami Jul 29, 2021
e46a8f4
updated week 4 blog
SunTzunami Jul 29, 2021
589d92b
updated week 8 blog
SunTzunami Jul 29, 2021
f88430c
updated week 1 blog
SunTzunami Jul 29, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
41 changes: 41 additions & 0 deletions docs/source/posts/2021/2021-06-08-week-1-sajag.rst
@@ -0,0 +1,41 @@
Welcome to my GSoC Blog!
========================

.. post:: June 8 2021
:author: Sajag Swami
:tags: google
:category: gsoc

Hi all!
I'm Sajag Swami, a sophomore at Indian Institute of Technology, Roorkee. This summer, I will be working on adding a new functionality to **FURY** which shall enable users to
visualise various types of proteins via different representations like Richardson aka Ribbon diagrams and molecular surface diagrams.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice. Everything looks good for me. How about putting some references about molecular representations?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @devmessias ! Thanks for review! No paper/blog was used as such yet in the project so I've used no references.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah ok, but I was talking about this 1mb0 protein. For anyone which doesn't work with this topic, this can sound cryptic

As a part of my stretch goals, I’ll try to expand protein diagrams via other representations including:

1. Stick
2. Ball and stick
3. Wire
4. Pipes and Planks
5. Sphere

What did you do during the Community Bonding Period?
----------------------------------------------------
I had weekly meetings with my mentors and other core team members. In the first meeting I got acquainted with the team members and learnt about the organisation and its goal/vision.
In the later meetings we discussed about various representations of proteins and how to go about implementing them in FURY.
We discussed about various libraries which can be used to parse PDB and PDBx files.
I made a `document <https://docs.google.com/document/d/1mSoAWyXlLNrCa3hN-hiP35Lj7rURYMk5jFnWZbZp70s>`_ for the same to list pros and cons of using each library.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might need to put this google document in rst and somewhere else.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any suggestions as to where should I put it?

I worked upon my `previous PR <https://github.com/fury-gl/fury/pull/404>`_ too during the community bonding period and fixed its docstring syntax.

As my college ended early courtesy covid, I had extra time during which I experimented and learnt more about PDB and PDBx files - the details they contain and how to parse them.
A small backbone visualisation of 1mb0 protein made on FURY by extracting coordinate data of its alpha carbons:

.. figure:: https://github.com/SunTzunami/gsoc2021_blog_data/blob/master/visuals/week1_backbone.png?raw=true
:align: center

What is coming up next week?
----------------------------
I have two major goals for the next week:

1. Make an actor for the space filling model of the proteins and make PR for the same which will also include the unit tests and a small tutorial for the users.
2. Try to understand the documentation of vtkProteinRibbonFilter which will prove beneficial in generating Ribbon diagrams.

``Au Revoir!``
42 changes: 42 additions & 0 deletions docs/source/posts/2021/2021-06-14-week-2-sajag.rst
@@ -0,0 +1,42 @@
First week of coding!
=====================

.. post:: June 14 2021
:author: Sajag Swami
:tags: google
:category: gsoc

Welcome to the second weekly check-in. I'll be sharing my progress for the first week of coding.

What did you do this week?
--------------------------
I implemented the space filling model for proteins and created a PR for the same. Preview:

.. figure:: https://user-images.githubusercontent.com/65067354/121518963-b92cb580-ca0e-11eb-8232-3512edc04670.png

(protein rendered: `3pgk <https://www.rcsb.org/structure/3pgk>`_)

The PR has:

1. Actor for space_filling_model.

2. Two examples where I show how to visualize the proteins:

a. In `example 1 <https://github.com/fury-gl/fury/pull/439/files#diff-2c9d065c4d4873b6ce534137cfd990cea495faffd249ff35cf51e36749883534>`_, I parse a PDBx file myself and extract the atomic info essential for constructing the model which is then used by the actor to visualize it.

b. In `example 2 <https://github.com/fury-gl/fury/pull/439/files#diff-68e69b9f24731ed981cd91763f3dd078aa2bf9a4da638d561352a9cf37cfd29c>`_, I parse a PDB file by using `Biopython module <http://biopython.org/>`_ and extract the atomic info essential for constructing the model which is then used by the actor to visualize it.

I created a basic test for the actor which needs to be improved. I'll discuss how to improve the test with the mentors.

What is coming up next week?
----------------------------
I have two major goals for the next week:

1. Make an actor for the space filling model of the proteins and make PR for the same which will also include the unit tests and a small tutorial for the users.
2. Try to understand the documentation of vtkProteinRibbonFilter which will prove beneficial in generating Ribbon diagrams.

Did you get stuck anywhere?
---------------------------
I tried to create a class in python which inherits from a vtk class called vtkMoleculeReaderBase but was unsucessful in this endeavour. I'll try to find a workaround.

``Au Revoir!``
49 changes: 49 additions & 0 deletions docs/source/posts/2021/2021-06-21-week-3-sajag.rst
@@ -0,0 +1,49 @@
Second week of coding!
======================

.. post:: June 21 2021
:author: Sajag Swami
:tags: google
:category: gsoc

Welcome to the third weekly check-in. I'll be sharing my progress for the second week of coding.

What did you do this week?
--------------------------
I created an example to demonstrate how one can render multiple bonds (double and triple). This required me to write an algorithm to detect bonding.
I used `this blog <https://www.kaggle.com/aekoch95/bonds-from-structure-data>`_ as a reference and made a few tweaks of my own to detect the presence of double/triple bonds from interatomic distances.
The math involved in generating the coordinates of bonds was quite intriguing. Preview:

.. figure:: https://user-images.githubusercontent.com/65067354/122672109-7d040c80-d1e7-11eb-815d-1d07fe47bbc4.png
:width: 300
:height: 300

molecules rendered: Ethane, Ethene, Ethyne (from left to right)

In addition to this, I tried understanding the codebase of vtkMolecule, vtkSimpleBondPerceiver, vtkMoleculeMapper, vtkPeriodicTable and was able to render bond-stick models and stick models using it.
This will be of great help although it's rather slow in rendering large molecules (using shaders to improve its speed will be crucial if it's to be utilised).
SunTzunami marked this conversation as resolved.
Show resolved Hide resolved


.. figure:: https://github.com/SunTzunami/gsoc2021_blog_data/blob/master/visuals/week2_wire_rep.png?raw=true
:width: 300
:height: 300

Stick representation using vtkMoleculeMapper



.. figure:: https://raw.githubusercontent.com/SunTzunami/gsoc2021_blog_data/master/visuals/week2_bs_rep.png
:width: 300
:height: 300

Ball and Stick representation using vtkMoleculeMapper

What is coming up next week?
----------------------------
Try to see if the above models can be implemented using shaders. Try implementing the ribbon model using the vtkProteinRibbonFilter. The rest will be decided in the meeting with the mentors.

Did you get stuck anywhere?
---------------------------
Predicting bonds had been a problem since the past few weeks, it was resolved to a large extent by vtkSimpleBondPerceiver (the only limitation of vtkSimpleBondPerceiver being its inability to predict multiple bonds).

``Au Revoir!``
48 changes: 48 additions & 0 deletions docs/source/posts/2021/2021-06-28-week-4-sajag.rst
@@ -0,0 +1,48 @@
Third week of coding!
=====================

.. post:: June 28 2021
:author: Sajag Swami
:tags: google
:category: gsoc

Welcome to the fourth weekly check-in. I'll be sharing my progress for the third week of coding.

What did you do this week?
--------------------------

I made a document with code snippets and visuals to show how one can use
some vtk classes in python for molecular visualization. Classes of
interest:

- vtkMolecule (store atomic information about the molecule).
- vtkSimpleBondPerceiver (calculate bonding info for a vtkMolecule).
- vtkMoleculeMapper (mapper to draw vtkMolecule object).
- vtkPeriodicTable (stores chemical data sourced from the Blue Obelisk
Data).

Link to the document: `Molecular_viz_vtk`_. In addition to the
document, I read some research papers recommended by my mentors to
understand some other (and potentially better) methods of ribbon
visualization. Tried to implement vtkProteinRibbonFilter usage without
using vtkPDBReader but was unsuccessful in this endeavor.

What is coming up next week?
----------------------------

Three goals for next week:

#. Implement vtkProteinRibbonFilter usage without using vtkPDBReader.
#. Make a class for vtkMolecule which can store molecular data and pass
it on to different function for rendering purposes.
#. Read papers on surface model.

Did you get stuck anywhere?
---------------------------

Implementing vtkProteinRibbonFilter usage via vtkPolyData without using
vtkPDBReader has confounded me for some time now.

.. _Molecular_viz_vtk: https://docs.google.com/document/d/1LC2MgT9mUQK0Yo9hsI4lWqaTXHWAkSNxyBKWGAqHqe8/edit

``Au Revoir!``
35 changes: 35 additions & 0 deletions docs/source/posts/2021/2021-07-05-week-5-sajag.rst
@@ -0,0 +1,35 @@
Fourth week of coding!
======================

.. post:: July 5 2021
:author: Sajag Swami
:tags: google
:category: gsoc

Welcome to the fifth weekly check-in. I'll be sharing my progress for the fourth week of coding.

What did you do this week?
--------------------------

Created a `PR`_ for the molecular module. Enables the ability to create
three types of molecular representations:

#. Space-filling model aka calotte model and CPK model.
#. Stick model.
#. Ball and Stick model.

What is coming up next week?
----------------------------

Mentors suggested changes to be made to the molecular module which I
shall make. Other goals to be decided post mid-week meeting.

Did you get stuck anywhere?
---------------------------

Sending protein data to ProteinRibbonFilter via a vtkPolyData has been
unsuccessful so far.

.. _PR: https://github.com/fury-gl/fury/pull/452

``Au Revoir!``
44 changes: 44 additions & 0 deletions docs/source/posts/2021/2021-07-12-week-6-sajag.rst
@@ -0,0 +1,44 @@
Fifth week of coding!
=====================

.. post:: July 12 2021
:author: Sajag Swami
:tags: google
:category: gsoc

Welcome to the sixth weekly check-in. I'll be sharing my progress for the fifth week of coding.

What did you do this week?
--------------------------

1. Generalised the vtkProteinRibbonFilter implementation.
SunTzunami marked this conversation as resolved.
Show resolved Hide resolved
2. Updated the molecular module based on suggestions of team members
and mentors (`PR #452`_).
3. Updated wave function animation (`PR #362`_).

.. figure:: https://user-images.githubusercontent.com/65067354/125155195-d4105800-e17b-11eb-9e6d-2b66ba7a8f6e.gif
:width: 300
:height: 300

an animation


What is coming up next week?
----------------------------

1. Update molecular module based on team members' suggestions and add
tests for the same.
2. Add protein ribbon implementation to the molecular module.
3. Begin working on molecular surface model.

Did you get stuck anywhere?
---------------------------

No! **I was finally able to generalise the vtkProteinRibbonFilter implementation!!** I'm
SunTzunami marked this conversation as resolved.
Show resolved Hide resolved
grateful to the mentors for keeping a meeting and for helping me debug
the code. I figured out most of the stuff courtesy the meeting.

.. _PR #452: https://github.com/fury-gl/fury/pull/452
.. _PR #362: https://github.com/fury-gl/fury/pull/362

``Au Revoir!``
65 changes: 65 additions & 0 deletions docs/source/posts/2021/2021-07-19-week-7-sajag.rst
@@ -0,0 +1,65 @@
Sixth week of coding!
=====================

.. post:: July 19 2021
:author: Sajag Swami
:tags: google
:category: gsoc

Welcome to the seventh weekly check-in. I'll be sharing my progress for the sixth week of coding.

What did you do this week?
--------------------------

#. Updated `Molecular module`_: made it more pythonic, implemented
ribbon actor, added support to pass numpy arrays (earlier, atomic
data could only be added by using the add_atom).
#. Created `PR #462`_ to:

- Update the helical motion animation to use a single line actor,
added textblocks to display velocity of the particle.

|image1|

- For brownian motion animation, I removed rotation(azimuth) and box
actor, added textblock to display the number of particles and to
show the simulation steps.

|image2|

#. Updated surface animation (used gridUI, added multiple animations).

|image3|

#. Created a `topic`_ on vtk discourse forum to query about gaps in
bonds (tried resolving it by manipulating vtkProperties:
BackfaceCulling, FrontfaceCulling but was unsuccessful).
#. Read about molecular surface (theory behind it).

What is coming up next week?
----------------------------

#. Update molecular module by adding tests, ribbon actor.
#. Try to implement molecular surface representation.
#. Interactivity of the molecules.

Did you get stuck anywhere?
---------------------------

I didn't get stuck anywhere this week.

.. _Molecular module: https://github.com/fury-gl/fury/pull/452
.. _PR #462: https://github.com/fury-gl/fury/pull/462
.. _topic: https://discourse.vtk.org/t/vtkmoleculemapper-gaps-in-bonds-on-zooming-in/6183

.. |image1| image:: https://user-images.githubusercontent.com/65067354/126033284-882ed6fd-fcc3-4a1c-8dfd-3220908859b1.png
:width: 400px
:height: 300px
.. |image2| image:: https://user-images.githubusercontent.com/65067354/126033291-da68cb0d-b856-48ad-9aa4-c46621052267.png
:width: 400px
:height: 400px
.. |image3| image:: https://user-images.githubusercontent.com/65067354/126061012-b183a47d-ed5e-4026-938b-4124da291524.png
:width: 400px
:height: 400px

``Au Revoir!``
47 changes: 47 additions & 0 deletions docs/source/posts/2021/2021-07-26-week-8-sajag.rst
@@ -0,0 +1,47 @@
Seventh week of coding!
=======================

.. post:: July 26 2021
:author: Sajag Swami
:tags: google
:category: gsoc

Welcome to the eighth weekly check-in. I'll be sharing my progress for the seventh week of coding.

What did you do this week?
--------------------------

#. Updated `PR #452`_:

- Added ribbon actor to the molecular module.
- Added tests for all functions in the molecular module.

#. Updated `PR #462`_: Addressed the reviews of team members and
mentors, added new features.

|image1|

#. Updated `PR #362`_: Addressed the feedbacks of team members and
mentors.

What is coming up next week?
----------------------------

#. Work more on molecular module, meeting with mentors and core team on
Thursday to optimize the module and merge `PR #452`_.
#. Start working upon molecular surface model.

Did you get stuck anywhere?
---------------------------

No.

.. _PR #452: https://github.com/fury-gl/fury/pull/452
.. _PR #462: https://github.com/fury-gl/fury/pull/462
.. _PR #362: https://github.com/fury-gl/fury/pull/362

.. |image1| image:: https://user-images.githubusercontent.com/65067354/126382288-b755c01d-8010-43ab-87db-2f1a4fb5b015.png
:width: 300px
:height: 300px

``Au Revoir!``